Revert "Use primary constructors in `dart:core`." This reverts commit a4ca07ec6f2009f399d85c8c1e981529f045bfb3 as it breaks dart->flutter roller. The revert had two conflicts with cbba25a that required manual merging and updating line number expectations. BUG=https://github.com/dart-lang/sdk/issues/63589 CoreLibraryReviewExempt: revert Change-Id: I6eabac0af3612b3b5b4d00ae326b3b7494162163 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/513821 Reviewed-by: Slava Egorov <vegorov@google.com> SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com> Commit-Queue: Alexander Aprelev <aam@google.com>
diff --git a/DEPS b/DEPS index ce257b3..70a7752 100644 --- a/DEPS +++ b/DEPS
@@ -135,7 +135,7 @@ # 'tools/rev_sdk_deps.dart' will rev pkg dependencies to their latest; put an # EOL comment after a dependency to instead pin at the current revision. "core_rev": "be0b1531c445a185d3e93887b8d0355fc766c314", - "dartdoc_rev": "d0fac90eb4213db3d5f8d8ff360a4f4bcb4b7ae2", + "dartdoc_rev": "77a52b6125ce8cc8a88a8a399d80701254e43838", "ecosystem_rev": "319ff812d463fc194999a0d4b682097450279332", "flute_rev": "b84119fba67016a80c3eb80765762bcc4d0d0b8d", "http_rev": "c140dc012da1df74b0fb99230b8736438b8eba6a",
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect index 814039b..00f0d10 100644 --- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect +++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.expect
@@ -13,8 +13,8 @@ // final class LegacyImplementFinal implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'. // Try adding 'base', 'final', or 'sealed' to the type. @@ -32,8 +32,8 @@ // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // import self as self; import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect index 814039b..00f0d10 100644 --- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect +++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.modular.expect
@@ -13,8 +13,8 @@ // final class LegacyImplementFinal implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'. // Try adding 'base', 'final', or 'sealed' to the type. @@ -32,8 +32,8 @@ // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // import self as self; import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect index 98f2d11..282f5fc 100644 --- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect +++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.outline.expect
@@ -13,8 +13,8 @@ // final class LegacyImplementFinal implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'. // Try adding 'base', 'final', or 'sealed' to the type. @@ -32,8 +32,8 @@ // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // import self as self; import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect index 814039b..00f0d10 100644 --- a/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/class_modifiers/issue52115/main.dart.strong.transformed.expect
@@ -13,8 +13,8 @@ // final class LegacyImplementFinal implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // // pkg/front_end/testcases/class_modifiers/issue52115/main.dart:20:16: Error: The type 'LegacyImplementBaseNoModifier' must be 'base', 'final' or 'sealed' because the supertype 'LinkedList' is 'base'. // Try adding 'base', 'final', or 'sealed' to the type. @@ -32,8 +32,8 @@ // class LegacyImplementFinalNoModifier implements LegacyImplementFinalCore { // ^ // sdk/lib/core/map.dart:*: Context: The type 'LegacyImplementFinalCore' is a subtype of 'MapEntry', and 'MapEntry' is defined here. -// final class const MapEntry<K, V>( -// ^ +// final class MapEntry<K, V> { +// ^ // import self as self; import "dart:collection" as col;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect index 58763cb..1961a0b 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.expect
@@ -10,8 +10,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin. // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect index 58763cb..1961a0b 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.modular.expect
@@ -10,8 +10,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin. // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect index 2cc883d..21fa588 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.outline.expect
@@ -10,8 +10,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin. // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect index 34606d7..ec91c12 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart.strong.transformed.expect
@@ -10,8 +10,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // // pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries.dart:12:14: Error: The class 'Error' can't be used as a mixin because it isn't a mixin class nor a mixin. // class B with Error {} /* Error */
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect index dce711a..7f72225 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.expect
@@ -6,8 +6,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // import self as self; import "dart:core" as core;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect index dce711a..7f72225 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.modular.expect
@@ -6,8 +6,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // import self as self; import "dart:core" as core;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect index d0755d93..2b7a7b2 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.outline.expect
@@ -6,8 +6,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // import self as self; import "dart:core" as core;
diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect index 44494a5..7b4bf1d 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_core_libraries_legacy.dart.strong.transformed.expect
@@ -6,8 +6,8 @@ // class B with Error {} /* Error */ // ^ // sdk/lib/core/errors.dart:*: Context: This constructor prevents using 'Error' as a mixin. -// class Error() { -// ^ +// Error(); // Prevent use as mixin. +// ^ // import self as self; import "dart:core" as core;
diff --git a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect index 7fffbfb..caaec5e 100644 --- a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect +++ b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.expect
@@ -33,7 +33,7 @@ return "field"; } abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with mai::HasSomeField /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → mai::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → mai::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get someField() → core::String; -> mai::HasSomeField::someField
diff --git a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect index 835296f..5ccb869 100644 --- a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect +++ b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.outline.expect
@@ -26,7 +26,7 @@ ; } abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self2::HasSomeField /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self2::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → self2::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get someField() → core::String; -> self2::HasSomeField::someField
diff --git a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect index a436ffe..da2bf04 100644 --- a/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/dartdevc/issue56681/main.dart.strong.transformed.expect
@@ -33,7 +33,7 @@ return "field"; } abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with mai::HasSomeField /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → mai::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → mai::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get someField() → core::String; -> mai::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect index 8536bb2..03ba447 100644 --- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.expect
@@ -145,7 +145,7 @@ abstract method foo() → void; } abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method foo() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect index 8536bb2..03ba447 100644 --- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.modular.expect
@@ -145,7 +145,7 @@ abstract method foo() → void; } abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method foo() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect index 3d3a032..df533e9 100644 --- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.outline.expect
@@ -143,7 +143,7 @@ abstract method foo() → void; } abstract class _E7&_Enum&MethodImplementation = core::_Enum with self::MethodImplementation /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method foo() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect index 139a3b0..83f7fd9 100644 --- a/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/abstract_members.dart.strong.transformed.expect
@@ -145,7 +145,7 @@ abstract method foo() → void; } abstract class _E7&_Enum&MethodImplementation extends core::_Enum implements self::MethodImplementation /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&MethodImplementation + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&MethodImplementation : super core::_Enum::•(index, _name) ; method foo() → void {}
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect index 3874ac6..4cbb41c 100644 --- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
@@ -173,14 +173,14 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub set element(dynamic value) → void return super.{self::A8::element} = value; } abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ { - synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get element() → core::int @@ -189,7 +189,7 @@ return super.{self::A9::element} = value; } abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method element() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect index 3874ac6..4cbb41c 100644 --- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.modular.expect
@@ -173,14 +173,14 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub set element(dynamic value) → void return super.{self::A8::element} = value; } abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ { - synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get element() → core::int @@ -189,7 +189,7 @@ return super.{self::A9::element} = value; } abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method element() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect index 7d99f2b..2034d6a 100644 --- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.outline.expect
@@ -176,14 +176,14 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub set element(dynamic value) → void return super.{self::A8::element} = value; } abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ { - synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get element() → core::int @@ -192,7 +192,7 @@ return super.{self::A9::element} = value; } abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method element() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect index f4447d5..f801f78 100644 --- a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
@@ -173,19 +173,19 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E8&_Enum&A8 extends core::_Enum implements self::A8 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&A8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8 : super core::_Enum::•(index, _name) ; set element(dynamic value) → void {} } abstract class _E9&_Enum&A9 extends core::_Enum implements self::A9 /*isAnonymousMixin,isEliminatedMixin*/ { field core::int element = 42; - synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; } abstract class _E10&_Enum&A10 extends core::_Enum implements self::A10 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&A10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10 : super core::_Enum::•(index, _name) ; method element() → void {}
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect index 5e4de73..50f515a 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
@@ -76,28 +76,28 @@ return "EN.${this.{core::_Enum::_name}{core::String}}"; } abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::A::foo}; } abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B + const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::B::foo}; } abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::M::foo}; } abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N + const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect index 5e4de73..50f515a 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.modular.expect
@@ -76,28 +76,28 @@ return "EN.${this.{core::_Enum::_name}{core::String}}"; } abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::A::foo}; } abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B + const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::B::foo}; } abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::M::foo}; } abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N + const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect index f08b5cb..f862626 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.outline.expect
@@ -74,28 +74,28 @@ return "EN.${this.{core::_Enum::_name}{core::String}}"; } abstract class _EA&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::A::foo}; } abstract class _EB&_Enum&B = core::_Enum with self::B /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B + const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::B::foo}; } abstract class _EM&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int return super.{self::M::foo}; } abstract class _EN&_Enum&N = core::_Enum with self::N /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N + const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect index ec6fd5e..ec955e9b 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
@@ -76,28 +76,28 @@ return "EN.${this.{core::_Enum::_name}{core::String}}"; } abstract class _EA&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EA&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_EA&_Enum&A : super core::_Enum::•(index, _name) ; get foo() → core::int return this.{core::Enum::index}{core::int}; } abstract class _EB&_Enum&B extends core::_Enum implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EB&_Enum&B + const synthetic constructor •(core::int index, core::String _name) → self::_EB&_Enum&B : super core::_Enum::•(index, _name) ; get foo() → core::int return this.{core::Enum::index}{core::int}; } abstract class _EM&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EM&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_EM&_Enum&M : super core::_Enum::•(index, _name) ; get foo() → core::int return this.{core::Enum::index}{core::int}; } abstract class _EN&_Enum&N extends core::_Enum implements self::N /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EN&_Enum&N + const synthetic constructor •(core::int index, core::String _name) → self::_EN&_Enum&N : super core::_Enum::•(index, _name) ; get foo() → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect index 9e059b3..91f62cb 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.expect
@@ -27,7 +27,7 @@ return "NormalEnum.${this.{core::_Enum::_name}{core::String}}"; } abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self::HasSomeField /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get someField() → core::String; -> self::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect index 9e059b3..91f62cb 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.modular.expect
@@ -27,7 +27,7 @@ return "NormalEnum.${this.{core::_Enum::_name}{core::String}}"; } abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self::HasSomeField /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get someField() → core::String; -> self::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect index a6edbeba..2582f51 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.outline.expect
@@ -27,7 +27,7 @@ return "NormalEnum.${this.{core::_Enum::_name}{core::String}}"; } abstract class _SomeEnum&_Enum&HasSomeField = core::_Enum with self::HasSomeField /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get someField() → core::String; -> self::HasSomeField::someField
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect index a14cc15..5a82abb 100644 --- a/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/enum_with_mixin.dart.strong.transformed.expect
@@ -27,7 +27,7 @@ return "NormalEnum.${this.{core::_Enum::_name}{core::String}}"; } abstract class _SomeEnum&_Enum&HasSomeField extends core::_Enum implements self::HasSomeField /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_SomeEnum&_Enum&HasSomeField + const synthetic constructor •(core::int index, core::String _name) → self::_SomeEnum&_Enum&HasSomeField : super core::_Enum::•(index, _name) ; abstract get someField() → core::String;
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect index f1d80b1..cec525e 100644 --- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.expect
@@ -223,63 +223,63 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&A1 = core::_Enum with self::A1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get hashCode() → core::int return super.{self::A1::hashCode}; } abstract class _E2&_Enum&A2 = core::_Enum with self::A2 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get values() → core::int return super.{self::A2::values}; } abstract class _E3&_Enum&A3 = core::_Enum with self::A3 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get index() → core::int return super.{self::A3::index}; } abstract class _E4&_Enum&A4 = core::_Enum with self::A4 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4 + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub operator ==(core::Object other) → core::bool return super.{self::A4::==}(other); } abstract class _E5&_Enum&M5 = core::_Enum with self::M5 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5 + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get hashCode() → core::int return super.{self::M5::hashCode}; } abstract class _E6&_Enum&M6 = core::_Enum with self::M6 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6 + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get values() → core::int return super.{self::M6::values}; } abstract class _E7&_Enum&M7 = core::_Enum with self::M7 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7 + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get index() → core::int return super.{self::M7::index}; } abstract class _E8&_Enum&M8 = core::_Enum with self::M8 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub operator ==(core::Object other) → core::bool return super.{self::M8::==}(other); } abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get index() → core::int; -> self::A9::index @@ -287,7 +287,7 @@ abstract synthetic mixin-stub operator ==(core::Object other) → core::bool; -> self::A9::== } abstract class _E10&_Enum&M10 = core::_Enum with self::M10 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10 : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get index() → core::int; -> self::M10::index
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect index f1d80b1..cec525e 100644 --- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.modular.expect
@@ -223,63 +223,63 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&A1 = core::_Enum with self::A1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get hashCode() → core::int return super.{self::A1::hashCode}; } abstract class _E2&_Enum&A2 = core::_Enum with self::A2 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get values() → core::int return super.{self::A2::values}; } abstract class _E3&_Enum&A3 = core::_Enum with self::A3 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get index() → core::int return super.{self::A3::index}; } abstract class _E4&_Enum&A4 = core::_Enum with self::A4 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4 + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub operator ==(core::Object other) → core::bool return super.{self::A4::==}(other); } abstract class _E5&_Enum&M5 = core::_Enum with self::M5 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5 + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get hashCode() → core::int return super.{self::M5::hashCode}; } abstract class _E6&_Enum&M6 = core::_Enum with self::M6 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6 + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get values() → core::int return super.{self::M6::values}; } abstract class _E7&_Enum&M7 = core::_Enum with self::M7 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7 + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get index() → core::int return super.{self::M7::index}; } abstract class _E8&_Enum&M8 = core::_Enum with self::M8 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub operator ==(core::Object other) → core::bool return super.{self::M8::==}(other); } abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get index() → core::int; -> self::A9::index @@ -287,7 +287,7 @@ abstract synthetic mixin-stub operator ==(core::Object other) → core::bool; -> self::A9::== } abstract class _E10&_Enum&M10 = core::_Enum with self::M10 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10 : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get index() → core::int; -> self::M10::index
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect index 02d5918..ec91be4 100644 --- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.outline.expect
@@ -218,63 +218,63 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&A1 = core::_Enum with self::A1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get hashCode() → core::int return super.{self::A1::hashCode}; } abstract class _E2&_Enum&A2 = core::_Enum with self::A2 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get values() → core::int return super.{self::A2::values}; } abstract class _E3&_Enum&A3 = core::_Enum with self::A3 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get index() → core::int return super.{self::A3::index}; } abstract class _E4&_Enum&A4 = core::_Enum with self::A4 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4 + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub operator ==(core::Object other) → core::bool return super.{self::A4::==}(other); } abstract class _E5&_Enum&M5 = core::_Enum with self::M5 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5 + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get hashCode() → core::int return super.{self::M5::hashCode}; } abstract class _E6&_Enum&M6 = core::_Enum with self::M6 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6 + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get values() → core::int return super.{self::M6::values}; } abstract class _E7&_Enum&M7 = core::_Enum with self::M7 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7 + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get index() → core::int return super.{self::M7::index}; } abstract class _E8&_Enum&M8 = core::_Enum with self::M8 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub operator ==(core::Object other) → core::bool return super.{self::M8::==}(other); } abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get index() → core::int; -> self::A9::index @@ -282,7 +282,7 @@ abstract synthetic mixin-stub operator ==(core::Object other) → core::bool; -> self::A9::== } abstract class _E10&_Enum&M10 = core::_Enum with self::M10 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10 : super core::_Enum::•(index, _name) ; abstract synthetic mixin-stub get index() → core::int; -> self::M10::index
diff --git a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect index 97b1e07..4eb636d 100644 --- a/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/inherited_restricted_members.dart.strong.transformed.expect
@@ -223,63 +223,63 @@ return "E10.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&A1 extends core::_Enum implements self::A1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&A1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&A1 : super core::_Enum::•(index, _name) ; get hashCode() → core::int return 42; } abstract class _E2&_Enum&A2 extends core::_Enum implements self::A2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&A2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A2 : super core::_Enum::•(index, _name) ; get values() → core::int return 42; } abstract class _E3&_Enum&A3 extends core::_Enum implements self::A3 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&A3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&A3 : super core::_Enum::•(index, _name) ; get index() → core::int return 42; } abstract class _E4&_Enum&A4 extends core::_Enum implements self::A4 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&A4 + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&A4 : super core::_Enum::•(index, _name) ; operator ==(core::Object other) → core::bool return true; } abstract class _E5&_Enum&M5 extends core::_Enum implements self::M5 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&M5 + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&M5 : super core::_Enum::•(index, _name) ; get hashCode() → core::int return 42; } abstract class _E6&_Enum&M6 extends core::_Enum implements self::M6 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&M6 + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&M6 : super core::_Enum::•(index, _name) ; get values() → core::int return 42; } abstract class _E7&_Enum&M7 extends core::_Enum implements self::M7 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&M7 + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&M7 : super core::_Enum::•(index, _name) ; get index() → core::int return 42; } abstract class _E8&_Enum&M8 extends core::_Enum implements self::M8 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&M8 + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&M8 : super core::_Enum::•(index, _name) ; operator ==(core::Object other) → core::bool return true; } abstract class _E9&_Enum&A9 extends core::_Enum implements self::A9 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E9&_Enum&A9 + const synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9 : super core::_Enum::•(index, _name) ; abstract get index() → core::int; @@ -287,7 +287,7 @@ abstract operator ==(core::Object other) → core::bool; } abstract class _E10&_Enum&M10 extends core::_Enum implements self::M10 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E10&_Enum&M10 + const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&M10 : super core::_Enum::•(index, _name) ; abstract get index() → core::int;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect index ee9b40b..d871a09 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
@@ -18,7 +18,7 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect index ee9b40b..d871a09 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.modular.expect
@@ -18,7 +18,7 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect index df05fbd..a95ace1f 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.outline.expect
@@ -18,7 +18,7 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect index 107021e..d14db7f 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
@@ -18,7 +18,7 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1 : super core::_Enum::•(index, _name) ; method mixedInMethod1(core::int v) → core::int
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect index 5cc0483..d3ed093 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.expect
@@ -92,28 +92,28 @@ return "E7"; } abstract class _E1&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::M::toString}(); } abstract class _E2&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::M::toString}(); } abstract class _E6&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::A::toString}(); } abstract class _E7&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect index 5cc0483..d3ed093 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.modular.expect
@@ -92,28 +92,28 @@ return "E7"; } abstract class _E1&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::M::toString}(); } abstract class _E2&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::M::toString}(); } abstract class _E6&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::A::toString}(); } abstract class _E7&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect index 1bf5c44..80de42a 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.outline.expect
@@ -90,28 +90,28 @@ ; } abstract class _E1&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::M::toString}(); } abstract class _E2&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::M::toString}(); } abstract class _E6&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String return super.{self::A::toString}(); } abstract class _E7&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect index 2a780fc..5fcef09 100644 --- a/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/issue49236.dart.strong.transformed.expect
@@ -92,28 +92,28 @@ return "E7"; } abstract class _E1&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M : super core::_Enum::•(index, _name) ; method toString() → core::String return "M"; } abstract class _E2&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M : super core::_Enum::•(index, _name) ; method toString() → core::String return "M"; } abstract class _E6&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&A : super core::_Enum::•(index, _name) ; method toString() → core::String return "A"; } abstract class _E7&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&A + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&A : super core::_Enum::•(index, _name) ; method toString() → core::String
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect index 7e34a60..58c350e 100644 --- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.expect
@@ -46,28 +46,28 @@ return "E3.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::String return super.{self::M1::foo}; } abstract class _E2&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::String return super.{self::M1::foo}; } abstract class _E2&_Enum&M1&M2 = self::_E2&_Enum&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2 : super self::_E2&_Enum&M1::•(index, _name) ; synthetic mixin-super-stub method bar() → core::int return super.{self::M2::bar}(); } abstract class _E3&_Enum&M3 = core::_Enum with self::M3 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub set callOnAssignment(() → void f) → void
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect index 7e34a60..58c350e 100644 --- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.modular.expect
@@ -46,28 +46,28 @@ return "E3.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::String return super.{self::M1::foo}; } abstract class _E2&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::String return super.{self::M1::foo}; } abstract class _E2&_Enum&M1&M2 = self::_E2&_Enum&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2 : super self::_E2&_Enum&M1::•(index, _name) ; synthetic mixin-super-stub method bar() → core::int return super.{self::M2::bar}(); } abstract class _E3&_Enum&M3 = core::_Enum with self::M3 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub set callOnAssignment(() → void f) → void
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect index e559ae3..c13eae6 100644 --- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.outline.expect
@@ -45,28 +45,28 @@ return "E3.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::String return super.{self::M1::foo}; } abstract class _E2&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub get foo() → core::String return super.{self::M1::foo}; } abstract class _E2&_Enum&M1&M2 = self::_E2&_Enum&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2 : super self::_E2&_Enum&M1::•(index, _name) ; synthetic mixin-super-stub method bar() → core::int return super.{self::M2::bar}(); } abstract class _E3&_Enum&M3 = core::_Enum with self::M3 /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3 : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub set callOnAssignment(() → void f) → void
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect index 5bb1293..ed529ec 100644 --- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.strong.transformed.expect
@@ -46,28 +46,28 @@ return "E3.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E1&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E1&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E1&_Enum&M1 : super core::_Enum::•(index, _name) ; get foo() → core::String return "foo"; } abstract class _E2&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1 : super core::_Enum::•(index, _name) ; get foo() → core::String return "foo"; } abstract class _E2&_Enum&M1&M2 extends self::_E2&_Enum&M1 implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E2&_Enum&M1&M2 + const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&M1&M2 : super self::_E2&_Enum&M1::•(index, _name) ; method bar() → core::int return 42; } abstract class _E3&_Enum&M3 extends core::_Enum implements self::M3 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E3&_Enum&M3 + const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M3 : super core::_Enum::•(index, _name) ; set callOnAssignment(() → void f) → void {
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect index 08be341..98ee489 100644 --- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.expect
@@ -26,12 +26,12 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&GM<S extends core::num, T extends core::num> = core::_Enum with self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> : super core::_Enum::•(index, _name) ; } abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> = self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> : super self::_E&_Enum&GM::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect index 08be341..98ee489 100644 --- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.modular.expect
@@ -26,12 +26,12 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&GM<S extends core::num, T extends core::num> = core::_Enum with self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> : super core::_Enum::•(index, _name) ; } abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> = self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> : super self::_E&_Enum&GM::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect index 9d34f6d..3b352d4 100644 --- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.outline.expect
@@ -24,12 +24,12 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&GM<S extends core::num, T extends core::num> = core::_Enum with self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> : super core::_Enum::•(index, _name) ; } abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> = self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> : super self::_E&_Enum&GM::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect index 8ab54ee..c20d849 100644 --- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.strong.transformed.expect
@@ -26,12 +26,12 @@ return "E.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&GM<S extends core::num, T extends core::num> extends core::_Enum implements self::GM<self::_E&_Enum&GM::T> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM<self::_E&_Enum&GM::S, self::_E&_Enum&GM::T> : super core::_Enum::•(index, _name) ; } abstract class _E&_Enum&GM&M<S extends core::num, T extends core::num> extends self::_E&_Enum&GM<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&GM&M<self::_E&_Enum&GM&M::S, self::_E&_Enum&GM&M::T> : super self::_E&_Enum&GM::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect index a8050a3..06fef70 100644 --- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect +++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.expect
@@ -39,7 +39,7 @@ return "G.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method mixinMethod() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect index a8050a3..06fef70 100644 --- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect +++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.modular.expect
@@ -39,7 +39,7 @@ return "G.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method mixinMethod() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect index 463b4be..c38c37e 100644 --- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect +++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.outline.expect
@@ -40,7 +40,7 @@ return "G.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M : super core::_Enum::•(index, _name) ; synthetic mixin-super-stub method mixinMethod() → void
diff --git a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect index 1c4a5e1..3f41571 100644 --- a/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/enhanced_enums/synthetic_enum_constructor.dart.strong.transformed.expect
@@ -39,7 +39,7 @@ return "G.${this.{core::_Enum::_name}{core::String}}"; } abstract class _E&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&M + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M : super core::_Enum::•(index, _name) ; method mixinMethod() → void {}
diff --git a/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect b/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect index 59aeaea..d675128 100644 --- a/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect +++ b/pkg/front_end/testcases/extension_types/annotations.dart.strong.expect
@@ -42,5 +42,4 @@ Constructor coverage from constants: org-dartlang-testcase:///annotations.dart: - Deprecated. (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Deprecated._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
diff --git a/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect b/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect index 59aeaea..d675128 100644 --- a/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect +++ b/pkg/front_end/testcases/extension_types/annotations.dart.strong.modular.expect
@@ -42,5 +42,4 @@ Constructor coverage from constants: org-dartlang-testcase:///annotations.dart: - Deprecated. (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Deprecated._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
diff --git a/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect index 59aeaea..d675128 100644 --- a/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extension_types/annotations.dart.strong.transformed.expect
@@ -42,5 +42,4 @@ Constructor coverage from constants: org-dartlang-testcase:///annotations.dart: - Deprecated. (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) -- Deprecated._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart) - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect index f49450e..bf03966 100644 --- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect +++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.expect
@@ -1360,82 +1360,82 @@ ; } abstract class _EnumWithT1&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT2&_Enum&F = core::_Enum with self::Class<dynamic> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT3&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT4&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT5&_Enum&F = core::_Enum with self::Class<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT6&_Enum&F = core::_Enum with self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT7&_Enum&F = core::_Enum with self::Class<core::Object> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT8&_Enum&F = core::_Enum with self::Class<core::int> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS1&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS2&_Enum&G = core::_Enum with self::G<dynamic> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS3&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS4&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS5&_Enum&G = core::_Enum with self::G<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS6&_Enum&G = core::_Enum with self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS7&_Enum&G = core::_Enum with self::G<core::Object> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS8&_Enum&G = core::_Enum with self::G<core::int> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect index f49450e..bf03966 100644 --- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect +++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.modular.expect
@@ -1360,82 +1360,82 @@ ; } abstract class _EnumWithT1&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT2&_Enum&F = core::_Enum with self::Class<dynamic> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT3&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT4&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT5&_Enum&F = core::_Enum with self::Class<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT6&_Enum&F = core::_Enum with self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT7&_Enum&F = core::_Enum with self::Class<core::Object> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT8&_Enum&F = core::_Enum with self::Class<core::int> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS1&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS2&_Enum&G = core::_Enum with self::G<dynamic> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS3&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS4&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS5&_Enum&G = core::_Enum with self::G<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS6&_Enum&G = core::_Enum with self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS7&_Enum&G = core::_Enum with self::G<core::Object> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS8&_Enum&G = core::_Enum with self::G<core::int> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect index 17bf884..4860fd7 100644 --- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect +++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.outline.expect
@@ -1309,82 +1309,82 @@ ; } abstract class _EnumWithT1&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT2&_Enum&F = core::_Enum with self::Class<dynamic> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT3&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT4&_Enum&F = core::_Enum with self::Class<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT5&_Enum&F = core::_Enum with self::Class<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT6&_Enum&F = core::_Enum with self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT7&_Enum&F = core::_Enum with self::Class<core::Object> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT8&_Enum&F = core::_Enum with self::Class<core::int> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS1&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS2&_Enum&G = core::_Enum with self::G<dynamic> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS3&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS4&_Enum&G = core::_Enum with self::G<self::Class<dynamic>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS5&_Enum&G = core::_Enum with self::G<self::ConcreteClass> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS6&_Enum&G = core::_Enum with self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS7&_Enum&G = core::_Enum with self::G<core::Object> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS8&_Enum&G = core::_Enum with self::G<core::int> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect index ce1e78b..a19c3fa 100644 --- a/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/bounds_supertypes.dart.strong.transformed.expect
@@ -1360,82 +1360,82 @@ ; } abstract class _EnumWithT1&_Enum&F extends core::_Enum implements self::Class<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT1&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT1&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT2&_Enum&F extends core::_Enum implements self::Class<dynamic> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT2&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT2&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT3&_Enum&F extends core::_Enum implements self::Class<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT3&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT3&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT4&_Enum&F extends core::_Enum implements self::Class<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT4&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT4&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT5&_Enum&F extends core::_Enum implements self::Class<self::ConcreteClass> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT5&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT5&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT6&_Enum&F extends core::_Enum implements self::Class<self::Class<self::ConcreteClass>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT6&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT6&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT7&_Enum&F extends core::_Enum implements self::Class<core::Object> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT7&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT7&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithT8&_Enum&F extends core::_Enum implements self::Class<core::int> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithT8&_Enum&F + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithT8&_Enum&F : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS1&_Enum&G extends core::_Enum implements self::G<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS1&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS1&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS2&_Enum&G extends core::_Enum implements self::G<dynamic> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS2&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS2&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS3&_Enum&G extends core::_Enum implements self::G<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS3&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS3&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS4&_Enum&G extends core::_Enum implements self::G<self::Class<dynamic>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS4&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS4&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS5&_Enum&G extends core::_Enum implements self::G<self::ConcreteClass> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS5&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS5&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS6&_Enum&G extends core::_Enum implements self::G<self::Class<self::ConcreteClass>> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS6&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS6&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS7&_Enum&G extends core::_Enum implements self::G<core::Object> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS7&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS7&_Enum&G : super core::_Enum::•(index, _name) ; } abstract class _EnumWithS8&_Enum&G extends core::_Enum implements self::G<core::int> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_EnumWithS8&_Enum&G + const synthetic constructor •(core::int index, core::String _name) → self::_EnumWithS8&_Enum&G : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect index 3a11aff..1893aeb 100644 --- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect +++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.expect
@@ -1986,62 +1986,62 @@ ; } abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D + const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D : super core::_Enum::•(index, _name) ; } abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect index 3a11aff..1893aeb 100644 --- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect +++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.modular.expect
@@ -1986,62 +1986,62 @@ ; } abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D + const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D : super core::_Enum::•(index, _name) ; } abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect index 3bf5f7d7..313d6db 100644 --- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect +++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.outline.expect
@@ -1929,62 +1929,62 @@ ; } abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D + const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D : super core::_Enum::•(index, _name) ; } abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect index 3a11aff..1893aeb 100644 --- a/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/error_recovery/class_header.dart.strong.transformed.expect
@@ -1986,62 +1986,62 @@ ; } abstract class _E&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E4&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E4&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E4&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E5&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E5&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E5&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E6&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E6&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E6&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E7&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E7&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E7&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E8&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E8&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E13&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E13&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E13&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E14&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E14&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E14&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E15&_Enum&D extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E15&_Enum&D + const synthetic constructor •(core::int index, core::String _name) → self::_E15&_Enum&D : super core::_Enum::•(index, _name) ; } abstract class _E21&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E21&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E21&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E22&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E22&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E22&_Enum&C : super core::_Enum::•(index, _name) ; } abstract class _E25&_Enum&C extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_E25&_Enum&C + const synthetic constructor •(core::int index, core::String _name) → self::_E25&_Enum&C : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect index efcc22c..b880311 100644 --- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect +++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.expect
@@ -127,7 +127,7 @@ ; } abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void + const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect index efcc22c..b880311 100644 --- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect +++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.modular.expect
@@ -127,7 +127,7 @@ ; } abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void + const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect index 62dd0b7..3104c1d 100644 --- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect +++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.outline.expect
@@ -124,7 +124,7 @@ ; } abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void + const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect index efcc22c..b880311 100644 --- a/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/extends_implements_void.dart.strong.transformed.expect
@@ -127,7 +127,7 @@ ; } abstract class _G&_Enum&void extends core::_Enum /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_G&_Enum&void + const synthetic constructor •(core::int index, core::String _name) → self::_G&_Enum&void : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/issue40744.dart.strong.expect b/pkg/front_end/testcases/general/issue40744.dart.strong.expect index 14c0b3d..eea1981 100644 --- a/pkg/front_end/testcases/general/issue40744.dart.strong.expect +++ b/pkg/front_end/testcases/general/issue40744.dart.strong.expect
@@ -7,7 +7,7 @@ core::print(input); } static method main() → void { - final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::•<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>}); + final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>}); self::helper(nullValueMap); }
diff --git a/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect b/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect index 14c0b3d..eea1981 100644 --- a/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect +++ b/pkg/front_end/testcases/general/issue40744.dart.strong.modular.expect
@@ -7,7 +7,7 @@ core::print(input); } static method main() → void { - final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::•<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>}); + final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>}); self::helper(nullValueMap); }
diff --git a/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect index 14c0b3d..eea1981 100644 --- a/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/issue40744.dart.strong.transformed.expect
@@ -7,7 +7,7 @@ core::print(input); } static method main() → void { - final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::•<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>}); + final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>}); self::helper(nullValueMap); }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.expect index ffa0ab0..5a389b1 100644 --- a/pkg/front_end/testcases/general/type_scopes.dart.strong.expect +++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.expect
@@ -92,7 +92,7 @@ ; } abstract class _Enum&_Enum&M<T10 extends dynamic> = core::_Enum with self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> + const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect index ffa0ab0..5a389b1 100644 --- a/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect +++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.modular.expect
@@ -92,7 +92,7 @@ ; } abstract class _Enum&_Enum&M<T10 extends dynamic> = core::_Enum with self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> + const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect index ce181e1..e5e5679 100644 --- a/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect +++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.outline.expect
@@ -95,7 +95,7 @@ ; } abstract class _Enum&_Enum&M<T10 extends dynamic> = core::_Enum with self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> + const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect index 24616eb..4293fe6 100644 --- a/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/type_scopes.dart.strong.transformed.expect
@@ -88,7 +88,7 @@ ; } abstract class _Enum&_Enum&M<T10 extends dynamic> extends core::_Enum implements self::M<self::_Enum&_Enum&M::T10%> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ { - const synthetic constructor •(final core::int index, final core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> + const synthetic constructor •(core::int index, core::String _name) → self::_Enum&_Enum&M<self::_Enum&_Enum&M::T10%> : super core::_Enum::•(index, _name) ; }
diff --git a/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect index 70fff15..f69a4d5 100644 --- a/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
@@ -651,8 +651,8 @@ } Extra constant evaluation status: -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) Extra constant evaluation: evaluated: 1232, effectively constant: 4
diff --git a/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect index fe997bd..90dfa29 100644 --- a/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
@@ -610,8 +610,8 @@ } Extra constant evaluation status: -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) Extra constant evaluation: evaluated: 1208, effectively constant: 4
diff --git a/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect index 862b931..d9085f6 100644 --- a/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
@@ -98,7 +98,7 @@ } } get /* from org-dartlang-sdk:///sdk/lib/collection/maps.dart */ entries() → core::Iterable<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>> { - return this.{col::MapBase::keys}{core::Iterable<self::_MyMap&Object&MapMixin::K%>}.{core::Iterable::map}<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>((self::_MyMap&Object&MapMixin::K% key) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%> => new core::MapEntry::•<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>(key, let self::_MyMap&Object&MapMixin::V? #t22 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t22 == null ?{self::_MyMap&Object&MapMixin::V%} let self::_MyMap&Object&MapMixin::V? #t23 = #t22 in #t23 == null ?{self::_MyMap&Object&MapMixin::V%} #t23 as self::_MyMap&Object&MapMixin::V% : #t23{self::_MyMap&Object&MapMixin::V%} : #t22{self::_MyMap&Object&MapMixin::V%})){((self::_MyMap&Object&MapMixin::K%) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>) → core::Iterable<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>}; + return this.{col::MapBase::keys}{core::Iterable<self::_MyMap&Object&MapMixin::K%>}.{core::Iterable::map}<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>((self::_MyMap&Object&MapMixin::K% key) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%> => new core::MapEntry::_<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>(key, let self::_MyMap&Object&MapMixin::V? #t22 = this.{col::MapBase::[]}(key){(core::Object?) → self::_MyMap&Object&MapMixin::V?} in #t22 == null ?{self::_MyMap&Object&MapMixin::V%} let self::_MyMap&Object&MapMixin::V? #t23 = #t22 in #t23 == null ?{self::_MyMap&Object&MapMixin::V%} #t23 as self::_MyMap&Object&MapMixin::V% : #t23{self::_MyMap&Object&MapMixin::V%} : #t22{self::_MyMap&Object&MapMixin::V%})){((self::_MyMap&Object&MapMixin::K%) → core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>) → core::Iterable<core::MapEntry<self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%>>}; } method /* from org-dartlang-sdk:///sdk/lib/collection/maps.dart */ map<K2 extends core::Object? = dynamic, V2 extends core::Object? = dynamic>((self::_MyMap&Object&MapMixin::K%, self::_MyMap&Object&MapMixin::V%) → core::MapEntry<self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%> transform) → core::Map<self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%> { core::Map<self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%> result = <self::_MyMap&Object&MapMixin::map::K2%, self::_MyMap&Object&MapMixin::map::V2%>{};
diff --git a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect index 732b761..ab9e2c9 100644 --- a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
@@ -563,8 +563,8 @@ } Extra constant evaluation status: -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) Extra constant evaluation: evaluated: 1101, effectively constant: 4
diff --git a/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect index faccb43..349e51b 100644 --- a/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
@@ -582,8 +582,8 @@ Extra constant evaluation status: Evaluated: InstanceInvocation @ org-dartlang-testcase:///negative_length.dart:12:41 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:452:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:460:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:469:12 -> IntConstant(-1) -Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:478:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:454:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:462:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:471:12 -> IntConstant(-1) +Evaluated: InstanceInvocation @ org-dartlang-sdk:///sdk/lib/collection/list.dart:480:12 -> IntConstant(-1) Extra constant evaluation: evaluated: 1121, effectively constant: 5
diff --git a/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops b/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops index fa73f62..fe5d7d9 100644 --- a/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops +++ b/pkg/vm_service/test/sdk_break_with_mixin_test.dart.stops
@@ -1,3 +1,3 @@ // This file is generated by running the associated test with --update-goldens. Do not edit this file directly. -set.dart:141:21 (sdk_break_with_mixin_lib.dart:19:5) +set.dart:142:21 (sdk_break_with_mixin_lib.dart:19:5)
diff --git a/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops b/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops index ac9af73..226213b 100644 --- a/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops +++ b/pkg/vm_service/test/step_through_mixin_from_sdk_test.dart.stops
@@ -3,19 +3,19 @@ step_through_mixin_from_sdk_lib.dart:10:13 step_through_mixin_from_sdk_lib.dart:10:15 step_through_mixin_from_sdk_lib.dart:11:11 -list.dart:87:25 -list.dart:88:16 -list.dart:88:23 -list.dart:89:16 -list.dart:89:23 -list.dart:90:15 +list.dart:89:25 +list.dart:90:16 +list.dart:90:23 +list.dart:91:16 +list.dart:91:23 +list.dart:92:15 step_through_mixin_from_sdk_lib.dart:23:23 step_through_mixin_from_sdk_lib.dart:24:5 -list.dart:90:19 -list.dart:91:26 -list.dart:91:18 -list.dart:89:34 -list.dart:89:23 -list.dart:95:5 +list.dart:92:19 +list.dart:93:26 +list.dart:93:18 +list.dart:91:34 +list.dart:91:23 +list.dart:97:5 step_through_mixin_from_sdk_lib.dart:14:5 step_through_mixin_from_sdk_lib.dart:16:1
diff --git a/sdk/lib/async/future.dart b/sdk/lib/async/future.dart index 17e1b90..490b12d 100644 --- a/sdk/lib/async/future.dart +++ b/sdk/lib/async/future.dart
@@ -252,7 +252,7 @@ /// /// If a non-future value is returned, the returned future is completed /// with that value. - factory(FutureOr<T> computation()) { + factory Future(FutureOr<T> computation()) { _Future<T> result = _Future<T>(); Timer.run(() { FutureOr<T> computationResult; @@ -279,7 +279,7 @@ /// /// If calling [computation] returns a non-future value, /// the returned future is completed with that value. - factory microtask(FutureOr<T> computation()) { + factory Future.microtask(FutureOr<T> computation()) { _Future<T> result = _Future<T>(); scheduleMicrotask(() { FutureOr<T> computationResult; @@ -319,7 +319,7 @@ /// /// To create a future with a known value, use [Future.syncValue] instead, /// as `Future.syncValue(12)`. - factory sync(FutureOr<T> computation()) { + factory Future.sync(FutureOr<T> computation()) { FutureOr<T> result; try { result = computation(); @@ -339,7 +339,7 @@ /// a `try`/`catch`, you can use [Future.sync] which catches an error /// into its returned future, as `Future.sync(() => computation())`. @Since("3.10") - factory syncValue(T value) => _Future<T>().._setValue(value); + factory Future.syncValue(T value) => _Future<T>().._setValue(value); /// Creates a future completed with [value]. /// @@ -368,7 +368,7 @@ /// ``` @pragma("vm:entry-point") @pragma("vm:prefer-inline") - factory value([FutureOr<T>? value]) { + factory Future.value([FutureOr<T>? value]) { return _Future<T>.immediate(value == null ? value as T : value); } @@ -389,7 +389,7 @@ /// /// final error = await getFuture(); // Throws. /// ``` - factory error(Object error, [StackTrace? stackTrace]) => + factory Future.error(Object error, [StackTrace? stackTrace]) => _Future<T>.immediateError(_interceptUserError(error, stackTrace)); /// Creates a future that runs its computation after a delay. @@ -427,7 +427,10 @@ /// }); /// print(now.difference(later)); // At least a second. /// ``` - factory delayed(Duration duration, [FutureOr<T> Function()? computation]) { + factory Future.delayed( + Duration duration, [ + FutureOr<T> Function()? computation, + ]) { if (computation == null && !typeAcceptsNull<T>()) { throw ArgumentError.value( null, @@ -1232,7 +1235,7 @@ /// completer.complete('completion value'); /// } /// ``` - factory() => _AsyncCompleter<T>(); + factory Completer() => _AsyncCompleter<T>(); /// Completes the future synchronously. /// @@ -1283,7 +1286,7 @@ /// foo(); // In this case, foo() runs after bar(). /// }); /// ``` - factory sync() => _SyncCompleter<T>(); + factory Completer.sync() => _SyncCompleter<T>(); /// The future that is completed by this completer. ///
diff --git a/sdk/lib/async/future_impl.dart b/sdk/lib/async/future_impl.dart index d3be5f9..bddb11d 100644 --- a/sdk/lib/async/future_impl.dart +++ b/sdk/lib/async/future_impl.dart
@@ -70,7 +70,7 @@ return AsyncError._(error, stackTrace); } -abstract class _Completer<T>() implements Completer<T> { +abstract class _Completer<T> implements Completer<T> { @pragma("vm:entry-point") final _Future<T> future = _Future<T>(); @@ -92,7 +92,7 @@ /// Completer which completes future asynchronously. @pragma("vm:entry-point") -class _AsyncCompleter<T>() extends _Completer<T> { +class _AsyncCompleter<T> extends _Completer<T> { void complete([FutureOr<T>? value]) { if (!future._mayComplete) throw StateError("Future already completed"); future._asyncComplete(value == null ? value as dynamic : value); @@ -107,7 +107,7 @@ /// /// Created by [Completer.sync]. Use with caution. @pragma("vm:entry-point") -class _SyncCompleter<T>() extends _Completer<T> { +class _SyncCompleter<T> extends _Completer<T> { void complete([FutureOr<T>? value]) { if (!future._mayComplete) throw StateError("Future already completed"); future._complete(value == null ? value as dynamic : value);
diff --git a/sdk/lib/async/schedule_microtask.dart b/sdk/lib/async/schedule_microtask.dart index 34aeb3d..9728677 100644 --- a/sdk/lib/async/schedule_microtask.dart +++ b/sdk/lib/async/schedule_microtask.dart
@@ -164,7 +164,7 @@ Zone.current.scheduleMicrotask(Zone.current.bindCallbackGuarded(callback)); } -abstract interface class _AsyncRun { +class _AsyncRun { /// Schedule the given callback before any other event in the event-loop. external static void _scheduleImmediate(void Function() callback); }
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart index 8dc86f8..f400c84 100644 --- a/sdk/lib/async/stream.dart +++ b/sdk/lib/async/stream.dart
@@ -134,7 +134,9 @@ /// to return `true` if it wants to signal that it behaves like a broadcast /// stream. @vmIsolateUnsendable -abstract mixin class const Stream<T>() { +abstract mixin class Stream<T> { + const Stream(); + /// Creates an empty broadcast stream. /// /// This is a stream which does nothing except sending a done event @@ -160,7 +162,7 @@ /// /// The stream can be listened to more than once, /// whether it reports itself as broadcast or not. - const factory empty({@Since("3.2") bool broadcast}) = _EmptyStream<T>; + const factory Stream.empty({@Since("3.2") bool broadcast}) = _EmptyStream<T>; /// Creates a stream which emits a single data event before closing. /// @@ -179,7 +181,7 @@ /// /// The returned stream is effectively equivalent to one created by /// `(() async* { yield value; } ())` or `Future<T>.value(value).asStream()`. - factory value(T value) => + factory Stream.value(T value) => (_AsyncStreamController<T>(null, null, null, null) .._add(value) .._closeUnchecked()) @@ -207,7 +209,7 @@ /// `Future<T>.error(error, stackTrace).asStream()`, by or /// `(() async* { throw error; } ())`, except that you can control the /// stack trace as well. - factory error(Object error, [StackTrace? stackTrace]) { + factory Stream.error(Object error, [StackTrace? stackTrace]) { AsyncError(:error, :stackTrace) = _interceptUserError(error, stackTrace); return (_AsyncStreamController<T>(null, null, null, null) .._addError(error, stackTrace) @@ -235,7 +237,7 @@ /// // "Future complete" after 'futureTask' finished. /// // "Done" when stream completed. /// ``` - factory fromFuture(Future<T> future) { + factory Stream.fromFuture(Future<T> future) { // Use the controller's buffering to fill in the value even before // the stream has a listener. For a single value, it's not worth it // to wait for a listener before doing the `then` on the future. @@ -292,7 +294,7 @@ /// // "Future complete" after 'doneTask' finished. /// // "Done" when stream completed. /// ``` - factory fromFutures(Iterable<Future<T>> futures) { + factory Stream.fromFutures(Iterable<Future<T>> futures) { _StreamController<T> controller = _SyncStreamController<T>( null, null, @@ -349,60 +351,61 @@ /// final numbers = [1, 2, 3, 5, 6, 7]; /// final stream = Stream.fromIterable(numbers); /// ``` - factory fromIterable(Iterable<T> elements) => Stream<T>.multi((controller) { - Iterator<T> iterator; - try { - iterator = elements.iterator; - } catch (e, s) { - var error = _interceptCaughtError(e, s); - controller.addError(error.error, error.stackTrace); - controller.close(); - return; - } - var zone = Zone.current; - var isScheduled = true; - - void next() { - if (!controller.hasListener || controller.isPaused) { - // Cancelled or paused since scheduled. - isScheduled = false; - return; - } - bool hasNext; - try { - hasNext = iterator.moveNext(); - } catch (e, s) { - var error = _interceptCaughtError(e, s); - controller.addErrorSync(error.error, error.stackTrace); - controller.closeSync(); - return; - } - if (hasNext) { + factory Stream.fromIterable(Iterable<T> elements) => + Stream<T>.multi((controller) { + Iterator<T> iterator; try { - controller.addSync(iterator.current); + iterator = elements.iterator; } catch (e, s) { var error = _interceptCaughtError(e, s); - controller.addErrorSync(error.error, error.stackTrace); + controller.addError(error.error, error.stackTrace); + controller.close(); + return; } - if (controller.hasListener && !controller.isPaused) { - zone.scheduleMicrotask(next); - } else { - isScheduled = false; - } - } else { - controller.closeSync(); - } - } + var zone = Zone.current; + var isScheduled = true; - controller.onResume = () { - if (!isScheduled) { - isScheduled = true; + void next() { + if (!controller.hasListener || controller.isPaused) { + // Cancelled or paused since scheduled. + isScheduled = false; + return; + } + bool hasNext; + try { + hasNext = iterator.moveNext(); + } catch (e, s) { + var error = _interceptCaughtError(e, s); + controller.addErrorSync(error.error, error.stackTrace); + controller.closeSync(); + return; + } + if (hasNext) { + try { + controller.addSync(iterator.current); + } catch (e, s) { + var error = _interceptCaughtError(e, s); + controller.addErrorSync(error.error, error.stackTrace); + } + if (controller.hasListener && !controller.isPaused) { + zone.scheduleMicrotask(next); + } else { + isScheduled = false; + } + } else { + controller.closeSync(); + } + } + + controller.onResume = () { + if (!isScheduled) { + isScheduled = true; + zone.scheduleMicrotask(next); + } + }; + zone.scheduleMicrotask(next); - } - }; - - zone.scheduleMicrotask(next); - }); + }); /// Creates a multi-subscription stream. /// @@ -467,7 +470,7 @@ /// } /// } /// ``` - factory multi( + factory Stream.multi( void Function(MultiStreamController<T>) onListen, { bool isBroadcast = false, }) { @@ -495,7 +498,10 @@ /// /// stream.forEach(print); // Outputs event values 0,1,4,9,16. /// ``` - factory periodic(Duration period, [T computation(int computationCount)?]) { + factory Stream.periodic( + Duration period, [ + T computation(int computationCount)?, + ]) { if (computation == null && !typeAcceptsNull<T>()) { throw ArgumentError.value( null, @@ -585,7 +591,7 @@ /// stringStream.transform(DuplicationTransformer()); /// ``` /// The resulting stream is a broadcast stream if [source] is. - factory eventTransformed( + factory Stream.eventTransformed( Stream<dynamic> source, EventSink<dynamic> mapSink(EventSink<T> sink), ) { @@ -2303,7 +2309,7 @@ class StreamView<T> extends Stream<T> { final Stream<T> _stream; - const new(Stream<T> stream) : _stream = stream; + const StreamView(Stream<T> stream) : _stream = stream; bool get isBroadcast => _stream.isBroadcast; @@ -2509,7 +2515,7 @@ /// // Use as follows: /// intStream.transform(duplicator); /// ``` - const factory( + const factory StreamTransformer( StreamSubscription<T> onListen(Stream<S> stream, bool cancelOnError), ) = _StreamSubscriptionTransformer<S, T>; @@ -2597,7 +2603,7 @@ /// // Error 5: Worst /// // Error 6: Worst /// ``` - factory fromHandlers({ + factory StreamTransformer.fromHandlers({ void handleData(S data, EventSink<T> sink)?, void handleError(Object error, StackTrace stackTrace, EventSink<T> sink)?, void handleDone(EventSink<T> sink)?, @@ -2613,7 +2619,7 @@ /// final splitDecoded = StreamTransformer<List<int>, String>.fromBind( /// (stream) => stream.transform(utf8.decoder).transform(LineSplitter())); /// ``` - factory fromBind(Stream<T> Function(Stream<S>) bind) = + factory StreamTransformer.fromBind(Stream<T> Function(Stream<S>) bind) = _StreamBindTransformer<S, T>; /// Adapts [source] to be a `StreamTransformer<TS, TT>`. @@ -2671,8 +2677,9 @@ /// Base class for implementing [StreamTransformer]. /// /// Contains default implementations of every method except [bind]. -abstract class const StreamTransformerBase<S, T>() - implements StreamTransformer<S, T> { +abstract class StreamTransformerBase<S, T> implements StreamTransformer<S, T> { + const StreamTransformerBase(); + StreamTransformer<RS, RT> cast<RS, RT>() => StreamTransformer.castFrom<S, T, RS, RT>(this); } @@ -2689,7 +2696,7 @@ /// has completed with `true`, and only until [moveNext] is called again. abstract interface class StreamIterator<T> { /// Create a [StreamIterator] on [stream]. - factory(Stream<T> stream) => + factory StreamIterator(Stream<T> stream) => // TODO(lrn): use redirecting factory constructor when type // arguments are supported. _StreamIterator<T>(stream);
diff --git a/sdk/lib/async/stream_controller.dart b/sdk/lib/async/stream_controller.dart index 453fcc3..23068cb 100644 --- a/sdk/lib/async/stream_controller.dart +++ b/sdk/lib/async/stream_controller.dart
@@ -108,7 +108,7 @@ /// /// If the stream is canceled before the controller needs data the /// [onResume] call might not be executed. - factory({ + factory StreamController({ void onListen()?, void onPause()?, void onResume()?, @@ -169,7 +169,11 @@ /// and the [onCancel] is called when there are no longer any active listeners. /// If a listener is added again later, after the [onCancel] was called, /// the [onListen] will be called again. - factory broadcast({void onListen()?, void onCancel()?, bool sync = false}) { + factory StreamController.broadcast({ + void onListen()?, + void onCancel()?, + bool sync = false, + }) { return sync ? _SyncBroadcastStreamController<T>(onListen, onCancel) : _AsyncBroadcastStreamController<T>(onListen, onCancel); @@ -398,25 +402,25 @@ Future close(); } -abstract interface class _StreamControllerLifecycle<T> { +abstract class _StreamControllerLifecycle<T> { StreamSubscription<T> _subscribe( void onData(T data)?, Function? onError, void onDone()?, bool cancelOnError, ); - void _recordPause(StreamSubscription<T> subscription); - void _recordResume(StreamSubscription<T> subscription); - Future<void>? _recordCancel(StreamSubscription<T> subscription); + void _recordPause(StreamSubscription<T> subscription) {} + void _recordResume(StreamSubscription<T> subscription) {} + Future<void>? _recordCancel(StreamSubscription<T> subscription) => null; } // Base type for implementations of stream controllers. -abstract interface class _StreamControllerBase<T> +abstract class _StreamControllerBase<T> implements StreamController<T>, _StreamControllerLifecycle<T>, _EventSink<T>, - _EventDispatch<T>; + _EventDispatch<T> {} /// Default implementation of [StreamController]. ///
diff --git a/sdk/lib/async/stream_impl.dart b/sdk/lib/async/stream_impl.dart index ee65a0d..9bb5a9a 100644 --- a/sdk/lib/async/stream_impl.dart +++ b/sdk/lib/async/stream_impl.dart
@@ -5,7 +5,7 @@ part of "dart:async"; /// Abstract and private interface for a place to put events. -abstract interface class _EventSink<T> { +abstract class _EventSink<T> { void _add(T data); void _addError(Object error, StackTrace stackTrace); void _close(); @@ -16,7 +16,7 @@ /// Used by event buffering to finally dispatch the pending event, where /// [_EventSink] is where the event first enters the stream subscription, /// and may yet be buffered. -abstract interface class _EventDispatch<T> { +abstract class _EventDispatch<T> { void _sendData(T data); void _sendError(Object error, StackTrace stackTrace); void _sendDone(); @@ -502,7 +502,7 @@ // ------------------------------------------------------------------- // Common base class for single and multi-subscription streams. // ------------------------------------------------------------------- -abstract class _StreamImpl<T>() extends Stream<T> { +abstract class _StreamImpl<T> extends Stream<T> { // ------------------------------------------------------------------ // Stream interface. @@ -557,7 +557,7 @@ void _nullDoneHandler() {} /// A delayed event on a buffering stream subscription. -abstract class _DelayedEvent<T>() { +abstract class _DelayedEvent<T> { /// Added as a linked list on the [StreamController]. _DelayedEvent? next; @@ -566,22 +566,28 @@ } /// A delayed data event. -class _DelayedData<T>(final T value) extends _DelayedEvent<T> { +class _DelayedData<T> extends _DelayedEvent<T> { + final T value; + _DelayedData(this.value); void perform(_EventDispatch<T> dispatch) { dispatch._sendData(value); } } /// A delayed error event. -class _DelayedError(final Object error, final StackTrace stackTrace) - extends _DelayedEvent { +class _DelayedError extends _DelayedEvent { + final Object error; + final StackTrace stackTrace; + + _DelayedError(this.error, this.stackTrace); void perform(_EventDispatch dispatch) { dispatch._sendError(error, stackTrace); } } /// A delayed done event. -class const _DelayedDone() implements _DelayedEvent { +class _DelayedDone implements _DelayedEvent { + const _DelayedDone(); void perform(_EventDispatch dispatch) { dispatch._sendDone(); } @@ -594,7 +600,7 @@ } /// Container and manager of pending events for a stream subscription. -class _PendingEvents<T>() { +class _PendingEvents<T> { // No async event has been scheduled. static const int stateUnscheduled = 0; // An async event has been scheduled to run a function.
diff --git a/sdk/lib/async/timer.dart b/sdk/lib/async/timer.dart index 599fdf5..413b164 100644 --- a/sdk/lib/async/timer.dart +++ b/sdk/lib/async/timer.dart
@@ -39,7 +39,7 @@ /// Timer(const Duration(seconds: 5), () => print('Timer finished')); /// // Outputs after 5 seconds: "Timer finished". /// ``` - factory(Duration duration, void Function() callback) { + factory Timer(Duration duration, void Function() callback) { if (Zone.current == Zone.root) { // No need to bind the callback. We know that the root's timer will // be invoked in the root zone. @@ -85,7 +85,7 @@ /// // 3 /// // "Cancel timer" /// ``` - factory periodic(Duration duration, void callback(Timer timer)) { + factory Timer.periodic(Duration duration, void callback(Timer timer)) { if (Zone.current == Zone.root) { // No need to bind the callback. We know that the root's timer will // be invoked in the root zone.
diff --git a/sdk/lib/async/zone_specification.dart b/sdk/lib/async/zone_specification.dart index e224092..41deec2 100644 --- a/sdk/lib/async/zone_specification.dart +++ b/sdk/lib/async/zone_specification.dart
@@ -31,7 +31,7 @@ /// If the [handleUncaughtError] is provided, the new zone will be a new /// "error zone" which will prevent errors from flowing into other /// error zones (see [Zone.errorZone], [Zone.inSameErrorZone]). - const factory({ + const factory ZoneSpecification({ HandleUncaughtErrorHandler? handleUncaughtError, RunHandler? run, RunUnaryHandler? runUnary, @@ -53,7 +53,7 @@ /// and any individually provided handlers. /// If a handler is provided both through [other] and individually, /// the individually provided handler overrides the one from [other]. - factory from( + factory ZoneSpecification.from( ZoneSpecification other, { HandleUncaughtErrorHandler? handleUncaughtError, RunHandler? run,
diff --git a/sdk/lib/collection/hash_map.dart b/sdk/lib/collection/hash_map.dart index fb70e31..12e7713 100644 --- a/sdk/lib/collection/hash_map.dart +++ b/sdk/lib/collection/hash_map.dart
@@ -178,7 +178,7 @@ /// and `isValidKey` is omitted, the resulting map is identity based, /// and the `isValidKey` defaults to accepting all keys. /// Such a map can be created directly using [HashMap.identity]. - external factory({ + external factory HashMap({ bool Function(K, K)? equals, int Function(K)? hashCode, bool Function(dynamic)? isValidKey, @@ -193,7 +193,7 @@ /// ```dart /// HashMap<K, V>(equals: identical, hashCode: identityHashCode) /// ``` - external factory identity(); + external factory HashMap.identity(); /// Creates a [HashMap] that contains all key/value pairs of [other]. /// @@ -204,7 +204,7 @@ /// final fromBaseMap = HashMap<int, String>.from(baseMap); /// print(fromBaseMap); // {1: A, 2: B, 3: C} /// ``` - factory from(Map<dynamic, dynamic> other) { + factory HashMap.from(Map<dynamic, dynamic> other) { HashMap<K, V> result = HashMap<K, V>(); other.forEach((dynamic k, dynamic v) { result[k as K] = v as V; @@ -219,7 +219,7 @@ /// final mapOf = HashMap<num, Object>.of(baseMap); /// print(mapOf); // {1: A, 2: B, 3: C} /// ``` - factory of(Map<K, V> other) => HashMap<K, V>()..addAll(other); + factory HashMap.of(Map<K, V> other) => HashMap<K, V>()..addAll(other); /// Creates a [HashMap] where the keys and values are computed from the /// [iterable]. @@ -239,7 +239,7 @@ /// key: (i) => i, value: (i) => i * i); /// print(mapFromIterable); // {11: 121, 12: 144, 13: 169, 14: 196} /// ``` - factory fromIterable( + factory HashMap.fromIterable( Iterable iterable, { K Function(dynamic element)? key, V Function(dynamic element)? value, @@ -266,7 +266,7 @@ /// print(mapFromIterables); /// // {Earth: 1, Mercury: 0.06, Mars: 0.11, Venus: 0.81} /// ``` - factory fromIterables(Iterable<K> keys, Iterable<V> values) { + factory HashMap.fromIterables(Iterable<K> keys, Iterable<V> values) { HashMap<K, V> map = HashMap<K, V>(); MapBase._fillMapWithIterables(map, keys, values); return map; @@ -286,6 +286,6 @@ /// final map = HashMap.fromEntries(numbers.map((i) => MapEntry(i, i * i))); /// print(map); // {11: 121, 12: 144, 13: 169, 14: 196} /// ``` - factory fromEntries(Iterable<MapEntry<K, V>> entries) => + factory HashMap.fromEntries(Iterable<MapEntry<K, V>> entries) => HashMap<K, V>()..addEntries(entries); }
diff --git a/sdk/lib/collection/hash_set.dart b/sdk/lib/collection/hash_set.dart index f397767..4abe2a2 100644 --- a/sdk/lib/collection/hash_set.dart +++ b/sdk/lib/collection/hash_set.dart
@@ -132,7 +132,7 @@ /// and `isValidKey` is omitted, the resulting set is identity based, /// and the `isValidKey` defaults to accepting all keys. /// Such a map can be created directly using [HashSet.identity]. - external factory({ + external factory HashSet({ bool Function(E, E)? equals, int Function(E)? hashCode, bool Function(dynamic)? isValidKey, @@ -144,7 +144,7 @@ /// ```dart /// HashSet<E>(equals: identical, hashCode: identityHashCode) /// ``` - external factory identity(); + external factory HashSet.identity(); /// Create a hash set containing all [elements]. /// @@ -167,7 +167,7 @@ /// final hashSetFrom = HashSet<int>.from(numbers); /// print(hashSetFrom); // fx {20, 10, 30} /// ``` - factory from(Iterable<dynamic> elements) { + factory HashSet.from(Iterable<dynamic> elements) { HashSet<E> result = HashSet<E>(); for (final e in elements) { result.add(e as E); @@ -187,7 +187,7 @@ /// final hashSetOf = HashSet<num>.of(baseSet); /// print(hashSetOf); // fx {3, 1, 2} /// ``` - factory of(Iterable<E> elements) => HashSet<E>()..addAll(elements); + factory HashSet.of(Iterable<E> elements) => HashSet<E>()..addAll(elements); /// Provides an iterator that iterates over the elements of this set. ///
diff --git a/sdk/lib/collection/linked_hash_map.dart b/sdk/lib/collection/linked_hash_map.dart index 10511a6..42cacce 100644 --- a/sdk/lib/collection/linked_hash_map.dart +++ b/sdk/lib/collection/linked_hash_map.dart
@@ -162,7 +162,7 @@ /// and `isValidKey` is omitted, the resulting map is identity based, /// and the `isValidKey` defaults to accepting all keys. /// Such a map can be created directly using [LinkedHashMap.identity]. - external factory({ + external factory LinkedHashMap({ bool Function(K, K)? equals, int Function(K)? hashCode, bool Function(dynamic)? isValidKey, @@ -175,7 +175,7 @@ /// LinkedHashMap<K, V>(equals: identical, /// hashCode: identityHashCode) /// ``` - external factory identity(); + external factory LinkedHashMap.identity(); /// Creates a [LinkedHashMap] that contains all key value pairs of [other]. /// @@ -187,7 +187,7 @@ /// final fromBaseMap = LinkedHashMap<int, String>.from(baseMap); /// print(fromBaseMap); // {1: A, 2: B, 3: C} /// ``` - factory from(Map<dynamic, dynamic> other) { + factory LinkedHashMap.from(Map<dynamic, dynamic> other) { LinkedHashMap<K, V> result = LinkedHashMap<K, V>(); other.forEach((dynamic k, dynamic v) { result[k as K] = v as V; @@ -202,7 +202,8 @@ /// final mapOf = LinkedHashMap<num, Object>.of(baseMap); /// print(mapOf); // {3: A, 2: B, 1: C, 4: D} /// ``` - factory of(Map<K, V> other) => LinkedHashMap<K, V>()..addAll(other); + factory LinkedHashMap.of(Map<K, V> other) => + LinkedHashMap<K, V>()..addAll(other); /// Creates a [LinkedHashMap] where the keys and values are computed from the /// [iterable]. @@ -222,7 +223,7 @@ /// LinkedHashMap.fromIterable(numbers, key: (i) => i, value: (i) => i * i); /// print(mapFromIterable); // {11: 121, 12: 144, 13: 169, 14: 196} /// ``` - factory fromIterable( + factory LinkedHashMap.fromIterable( Iterable iterable, { K Function(dynamic element)? key, V Function(dynamic element)? value, @@ -249,7 +250,7 @@ /// print(mapFromIterables); /// // {Mercury: 0.06, Venus: 0.81, Earth: 1, Mars: 0.11} /// ``` - factory fromIterables(Iterable<K> keys, Iterable<V> values) { + factory LinkedHashMap.fromIterables(Iterable<K> keys, Iterable<V> values) { LinkedHashMap<K, V> map = LinkedHashMap<K, V>(); MapBase._fillMapWithIterables(map, keys, values); return map; @@ -268,6 +269,6 @@ /// final map = LinkedHashMap.fromEntries(numbers.map((i) => MapEntry(i, i * i))); /// print(map); // {11: 121, 12: 144, 13: 169, 14: 196} /// ``` - factory fromEntries(Iterable<MapEntry<K, V>> entries) => + factory LinkedHashMap.fromEntries(Iterable<MapEntry<K, V>> entries) => LinkedHashMap<K, V>()..addEntries(entries); }
diff --git a/sdk/lib/collection/linked_hash_set.dart b/sdk/lib/collection/linked_hash_set.dart index e4fbd87..67fdf12 100644 --- a/sdk/lib/collection/linked_hash_set.dart +++ b/sdk/lib/collection/linked_hash_set.dart
@@ -138,7 +138,7 @@ /// and `isValidKey` is omitted, the resulting set is identity based, /// and the `isValidKey` defaults to accepting all keys. /// Such a map can be created directly using [LinkedHashSet.identity]. - external factory({ + external factory LinkedHashSet({ bool Function(E, E)? equals, int Function(E)? hashCode, bool Function(dynamic)? isValidKey, @@ -150,7 +150,7 @@ /// ```dart /// LinkedHashSet<E>(equals: identical, hashCode: identityHashCode) /// ``` - external factory identity(); + external factory LinkedHashSet.identity(); /// Create a linked hash set containing all [elements]. /// @@ -171,7 +171,7 @@ /// final setFrom = LinkedHashSet<int>.from(numbers); /// print(setFrom); // {10, 20, 30} /// ``` - factory from(Iterable<dynamic> elements) { + factory LinkedHashSet.from(Iterable<dynamic> elements) { LinkedHashSet<E> result = LinkedHashSet<E>(); for (final element in elements) { result.add(element as E); @@ -189,7 +189,8 @@ /// final setOf = LinkedHashSet<num>.of(baseSet); /// print(setOf); // {1, 2, 3} /// ``` - factory of(Iterable<E> elements) => LinkedHashSet<E>()..addAll(elements); + factory LinkedHashSet.of(Iterable<E> elements) => + LinkedHashSet<E>()..addAll(elements); /// Executes a function on each element of the set. ///
diff --git a/sdk/lib/collection/linked_list.dart b/sdk/lib/collection/linked_list.dart index ab8e1db..87e3d93 100644 --- a/sdk/lib/collection/linked_list.dart +++ b/sdk/lib/collection/linked_list.dart
@@ -270,7 +270,7 @@ /// linked list, and otherwise the `list` property is `null`. /// /// When created, an entry is not in any linked list. -abstract base mixin class LinkedListEntry<E extends LinkedListEntry<E>>() { +abstract base mixin class LinkedListEntry<E extends LinkedListEntry<E>> { LinkedList<E>? _list; E? _next; E? _previous;
diff --git a/sdk/lib/collection/list.dart b/sdk/lib/collection/list.dart index d45ac99..5a70115 100644 --- a/sdk/lib/collection/list.dart +++ b/sdk/lib/collection/list.dart
@@ -31,7 +31,9 @@ /// to the growable list, or, if possible, use `DelegatingList` from /// "package:collection/collection.dart" instead of a `ListMixin`. // TODO: @Deprecated("Use List instead") -abstract mixin class const ListBase<E>() implements List<E> { +abstract mixin class ListBase<E> implements List<E> { + const ListBase(); + // Iterable interface. // TODO(lrn): When we get composable mixins, reuse IterableMixin instead // of redeclaring everything.
diff --git a/sdk/lib/collection/maps.dart b/sdk/lib/collection/maps.dart index 9902236..252608d 100644 --- a/sdk/lib/collection/maps.dart +++ b/sdk/lib/collection/maps.dart
@@ -18,7 +18,9 @@ /// /// A more efficient implementation is usually possible by overriding /// some of the other members as well. -abstract mixin class const MapBase<K, V>() implements Map<K, V> { +abstract mixin class MapBase<K, V> implements Map<K, V> { + const MapBase(); + Iterable<K> get keys; V? operator [](Object? key); operator []=(K key, V value); @@ -324,7 +326,7 @@ final Map<K, V> _map; /// Creates a view which forwards operations to [map]. - const new(Map<K, V> map) : _map = map; + const MapView(Map<K, V> map) : _map = map; Map<RK, RV> cast<RK, RV>() => _map.cast<RK, RV>(); V? operator [](Object? key) => _map[key];
diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart index 8963f88..7dff245 100644 --- a/sdk/lib/collection/queue.dart +++ b/sdk/lib/collection/queue.dart
@@ -6,8 +6,8 @@ /// Helper interface to hide [EfficientLengthIterable] from the public /// declaration of [Queue]. -abstract interface class _QueueIterable<E> - implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E>; +abstract class _QueueIterable<E> + implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E> {} /// A [Queue] is a collection that can be manipulated at both ends. One /// can iterate over the elements of a queue through [forEach] or with @@ -39,7 +39,7 @@ /// ``` abstract interface class Queue<E> implements Iterable<E>, _QueueIterable<E> { /// Creates a queue. - factory() = ListQueue<E>; + factory Queue() = ListQueue<E>; /// Creates a queue containing all [elements]. /// @@ -54,13 +54,13 @@ /// Queue<SubType> subQueue = /// Queue<SubType>.from(superQueue.whereType<SubType>()); /// ``` - factory from(Iterable elements) = ListQueue<E>.from; + factory Queue.from(Iterable elements) = ListQueue<E>.from; /// Creates a queue from [elements]. /// /// The element order in the queue is as if the elements were added using /// [addLast] in the order provided by [elements].iterator. - factory of(Iterable<E> elements) = ListQueue<E>.of; + factory Queue.of(Iterable<E> elements) = ListQueue<E>.of; /// Adapts [source] to be a `Queue<T>`. /// @@ -145,7 +145,7 @@ /// /// Both the [_DoubleLinkedQueueElement] and [_DoubleLinkedQueueSentinel] /// implement this interface. -abstract class _DoubleLinkedQueueEntry<E>() { +abstract class _DoubleLinkedQueueEntry<E> { _DoubleLinkedQueueEntry<E>? _previousLink; _DoubleLinkedQueueEntry<E>? _nextLink; @@ -290,7 +290,7 @@ /// Queue<SubType> subQueue = /// DoubleLinkedQueue<SubType>.from(superQueue.whereType<SubType>()); /// ``` - factory from(Iterable<dynamic> elements) { + factory DoubleLinkedQueue.from(Iterable<dynamic> elements) { DoubleLinkedQueue<E> list = DoubleLinkedQueue<E>(); for (final e in elements) { list.addLast(e as E); @@ -302,7 +302,8 @@ /// /// The element order in the queue is as if the elements were added using /// [addLast] in the order provided by [elements].iterator. - factory of(Iterable<E> elements) => DoubleLinkedQueue<E>()..addAll(elements); + factory DoubleLinkedQueue.of(Iterable<E> elements) => + DoubleLinkedQueue<E>()..addAll(elements); Queue<R> cast<R>() => Queue.castFrom<E, R>(this); @@ -634,7 +635,7 @@ /// final queue = ListQueue<int>.from(numbers); /// print(queue); // {10, 20, 30} /// ``` - factory from(Iterable<dynamic> elements) { + factory ListQueue.from(Iterable<dynamic> elements) { if (elements is List<dynamic>) { int length = elements.length; ListQueue<E> queue = ListQueue<E>(length + 1); @@ -667,7 +668,8 @@ /// final numQueue = ListQueue<num>.of(baseQueue); /// print(numQueue); // {1.0, 2.0, 3.0} /// ``` - factory of(Iterable<E> elements) => ListQueue<E>()..addAll(elements); + factory ListQueue.of(Iterable<E> elements) => + ListQueue<E>()..addAll(elements); // Iterable interface.
diff --git a/sdk/lib/collection/set.dart b/sdk/lib/collection/set.dart index 0c6b81d..68c0f30 100644 --- a/sdk/lib/collection/set.dart +++ b/sdk/lib/collection/set.dart
@@ -20,10 +20,11 @@ /// Implementations of `Set` using this base should consider also implementing /// `clear` in constant time. The default implementation works by removing every /// element. -abstract mixin class const SetBase<E>() implements Set<E> { +abstract mixin class SetBase<E> implements Set<E> { // This class reimplements all of [IterableMixin]. // If/when Dart mixins get more powerful, we should just create a single // Mixin class from IterableMixin and the new methods of this class. + const SetBase(); bool add(E value);
diff --git a/sdk/lib/collection/splay_tree.dart b/sdk/lib/collection/splay_tree.dart index 33e55db..e61c6c8 100644 --- a/sdk/lib/collection/splay_tree.dart +++ b/sdk/lib/collection/splay_tree.dart
@@ -35,7 +35,7 @@ /// are expected to be quick to access again. /// It performs basic operations such as insertion, look-up and /// removal, in O(log(n)) expected amortized time. -abstract class _SplayTree<K, Node extends _SplayTreeNode<K, Node>>() { +abstract class _SplayTree<K, Node extends _SplayTreeNode<K, Node>> { // The root node of the splay tree. It will contain either the last // element inserted or the last element looked up. abstract Node? _root; @@ -431,7 +431,7 @@ /// final fromBaseMap = SplayTreeMap<int, String>.from(baseMap); /// print(fromBaseMap); // {1: A, 2: B, 3: C} /// ``` - factory from( + factory SplayTreeMap.from( Map<Object?, Object?> other, [ int Function(K key1, K key2)? compare, bool Function(dynamic potentialKey)? isValidKey, @@ -453,7 +453,7 @@ /// final mapOf = SplayTreeMap<num, Object>.of(baseMap); /// print(mapOf); // {1: C, 2: B, 3: A, 4: D} /// ``` - factory of( + factory SplayTreeMap.of( Map<K, V> other, [ int Function(K key1, K key2)? compare, bool Function(dynamic potentialKey)? isValidKey, @@ -478,7 +478,7 @@ /// key: (i) => i, value: (i) => i * i); /// print(mapFromIterable); // {11: 121, 12: 144, 13: 169, 14: 196} /// ``` - factory fromIterable( + factory SplayTreeMap.fromIterable( Iterable iterable, { K Function(dynamic element)? key, V Function(dynamic element)? value, @@ -506,7 +506,7 @@ /// final mapFromIterables = SplayTreeMap.fromIterables(keys, values); /// print(mapFromIterables); // {1: A, 2: B, 3: C, 4: D} /// ``` - factory fromIterables( + factory SplayTreeMap.fromIterables( Iterable<K> keys, Iterable<V> values, [ int Function(K key1, K key2)? compare, @@ -1049,7 +1049,7 @@ /// final setFrom = SplayTreeSet<int>.from(numbers); /// print(setFrom); // {10, 20, 30} /// ``` - factory from( + factory SplayTreeSet.from( Iterable elements, [ int Function(E key1, E key2)? compare, bool Function(dynamic potentialKey)? isValidKey, @@ -1075,7 +1075,7 @@ /// final setOf = SplayTreeSet<num>.of(baseSet); /// print(setOf); // {1, 2, 3} /// ``` - factory of( + factory SplayTreeSet.of( Iterable<E> elements, [ int Function(E key1, E key2)? compare, bool Function(dynamic potentialKey)? isValidKey,
diff --git a/sdk/lib/convert/ascii.dart b/sdk/lib/convert/ascii.dart index e12f299..842be02 100644 --- a/sdk/lib/convert/ascii.dart +++ b/sdk/lib/convert/ascii.dart
@@ -27,8 +27,9 @@ /// /// Treats any non-ASCII character (U+0080..U+10FFFF) as an invalid input /// to endcoding, and any byte ≥ 128 as an invalid input to decoding. -final class const AsciiCodec({final bool _allowInvalid = false}) - extends Encoding { +final class AsciiCodec extends Encoding { + final bool _allowInvalid; + /// Instantiates a new [AsciiCodec]. /// /// If [_allowInvalid] is `true`, the [decode] method and the converter @@ -39,7 +40,7 @@ /// Calls to the [decode] method can choose to override this default. /// /// Encoders will not accept invalid (non-ASCII) characters. - this; + const AsciiCodec({this._allowInvalid = false}); /// The name of this codec is "us-ascii". String get name => "us-ascii"; @@ -71,8 +72,11 @@ // Superclass for [AsciiEncoder] and [Latin1Encoder]. // Generalizes common operations that only differ by a mask; -class const _UnicodeSubsetEncoder(final int _subsetMask) - extends Converter<String, List<int>> { +class _UnicodeSubsetEncoder extends Converter<String, List<int>> { + final int _subsetMask; + + const _UnicodeSubsetEncoder(this._subsetMask); + /// Converts the [String] into a list of its code units. /// /// If [start] and [end] are provided, only the substring @@ -120,8 +124,8 @@ /// final asciiValues = asciiEncoder.convert(sample); /// print(asciiValues); // [68, 97, 114, 116] /// ``` -final class const AsciiEncoder() extends _UnicodeSubsetEncoder { - this : super(_asciiMask); +final class AsciiEncoder extends _UnicodeSubsetEncoder { + const AsciiEncoder() : super(_asciiMask); } /// This class encodes chunked strings to bytes (unsigned 8-bit @@ -236,7 +240,8 @@ /// print(result.codeUnits.last.toRadixString(16)); // fffd /// ``` final class AsciiDecoder extends _UnicodeSubsetDecoder { - const new({bool allowInvalid = false}) : super(allowInvalid, _asciiMask); + const AsciiDecoder({bool allowInvalid = false}) + : super(allowInvalid, _asciiMask); /// Starts a chunked conversion. ///
diff --git a/sdk/lib/convert/base64.dart b/sdk/lib/convert/base64.dart index a56e74a..b9e8ab6 100644 --- a/sdk/lib/convert/base64.dart +++ b/sdk/lib/convert/base64.dart
@@ -64,10 +64,10 @@ /// It does not allow invalid characters when decoding and it requires, /// and generates, padding so that the input is always a multiple of four /// characters. -final class const Base64Codec._(final Base64Encoder _encoder) - extends Codec<List<int>, String> { - const new() : this._(const Base64Encoder()); - const new urlSafe() : this._(const Base64Encoder.urlSafe()); +final class Base64Codec extends Codec<List<int>, String> { + final Base64Encoder _encoder; + const Base64Codec() : _encoder = const Base64Encoder(); + const Base64Codec.urlSafe() : _encoder = const Base64Encoder.urlSafe(); Base64Encoder get encoder => _encoder; @@ -254,10 +254,11 @@ /// final encodedSample = base64Encoder.convert(sample.codeUnits); /// print(encodedSample); // RGFydCBpcyBvcGVuIHNvdXJjZQ== /// ``` -final class const Base64Encoder._(final bool _urlSafe) - extends Converter<List<int>, String> { - const new() : this._(false); - const new urlSafe() : this._(true); +final class Base64Encoder extends Converter<List<int>, String> { + final bool _urlSafe; + + const Base64Encoder() : _urlSafe = false; + const Base64Encoder.urlSafe() : _urlSafe = true; String convert(List<int> input) { if (input.isEmpty) return ""; @@ -461,7 +462,7 @@ } } -abstract class _Base64EncoderSink() extends ByteConversionSink { +abstract class _Base64EncoderSink extends ByteConversionSink { void add(List<int> source) { _add(source, 0, source.length, false); } @@ -535,7 +536,9 @@ /// // Print as string using UTF-8 decoder /// print(utf8.decode(decodedBytes)); // Dart is open source /// ``` -final class const Base64Decoder() extends Converter<String, List<int>> { +final class Base64Decoder extends Converter<String, List<int>> { + const Base64Decoder(); + /// Decodes the characters of [input] from [start] to [end] as base64. /// /// If [start] is omitted, it defaults to the start of [input]. @@ -559,7 +562,7 @@ } /// Helper class implementing base64 decoding with intermediate state. -class _Base64Decoder() { +class _Base64Decoder { /// Shift-count to extract the values stored in [_state]. static const int _valueShift = 2;
diff --git a/sdk/lib/convert/byte_conversion.dart b/sdk/lib/convert/byte_conversion.dart index a59e743..7b2bc15 100644 --- a/sdk/lib/convert/byte_conversion.dart +++ b/sdk/lib/convert/byte_conversion.dart
@@ -9,11 +9,14 @@ /// /// Instead of limiting the interface to one non-chunked list of bytes it /// accepts its input in chunks (themselves being lists of bytes). -abstract mixin class const ByteConversionSink() +abstract mixin class ByteConversionSink implements ChunkedConversionSink<List<int>> { - factory withCallback(void Function(List<int> accumulated) callback) = - _ByteCallbackSink; - factory from(Sink<List<int>> sink) = _ByteAdapterSink; + const ByteConversionSink(); + + factory ByteConversionSink.withCallback( + void Function(List<int> accumulated) callback, + ) = _ByteCallbackSink; + factory ByteConversionSink.from(Sink<List<int>> sink) = _ByteAdapterSink; /// Adds the next [chunk] to `this`. ///
diff --git a/sdk/lib/convert/chunked_conversion.dart b/sdk/lib/convert/chunked_conversion.dart index 1e12aff..b95a010 100644 --- a/sdk/lib/convert/chunked_conversion.dart +++ b/sdk/lib/convert/chunked_conversion.dart
@@ -12,8 +12,9 @@ /// specialized types of `ChunkedConversionSink`. abstract interface class ChunkedConversionSink<T> implements Sink<T> { ChunkedConversionSink(); - factory withCallback(void Function(List<T> accumulated) callback) = - _SimpleCallbackSink<T>; + factory ChunkedConversionSink.withCallback( + void Function(List<T> accumulated) callback, + ) = _SimpleCallbackSink<T>; /// Adds chunked data to this sink. ///
diff --git a/sdk/lib/convert/codec.dart b/sdk/lib/convert/codec.dart index e694c78..55c0666 100644 --- a/sdk/lib/convert/codec.dart +++ b/sdk/lib/convert/codec.dart
@@ -16,7 +16,9 @@ /// The [Codec] class provides a default implementation of /// [encode], [decode], [fuse] and [inverted]. /// Subclasses can choose to provide more efficient implementations of these. -abstract mixin class const Codec<S, T>() { +abstract mixin class Codec<S, T> { + const Codec(); + /// Encodes [input]. /// /// The input is encoded as if by `encoder.convert`.
diff --git a/sdk/lib/convert/converter.dart b/sdk/lib/convert/converter.dart index be00727..9f20422 100644 --- a/sdk/lib/convert/converter.dart +++ b/sdk/lib/convert/converter.dart
@@ -8,8 +8,9 @@ /// /// The [Converter] class provides a default implementation for every method /// other than [convert]. -abstract mixin class const Converter<S, T>() - implements StreamTransformerBase<S, T> { +abstract mixin class Converter<S, T> implements StreamTransformerBase<S, T> { + const Converter(); + /// Adapts [source] to be a `Converter<TS, TT>`. /// /// This allows [source] to be used at the new type, but at run-time it
diff --git a/sdk/lib/convert/encoding.dart b/sdk/lib/convert/encoding.dart index 545f9bd..a659ea3 100644 --- a/sdk/lib/convert/encoding.dart +++ b/sdk/lib/convert/encoding.dart
@@ -12,7 +12,9 @@ /// which is not incremental. It collects the entire input before /// decoding. Subclasses can choose to use that implementation, /// or implement a more efficient stream decoding. -abstract class const Encoding() extends Codec<String, List<int>> { +abstract class Encoding extends Codec<String, List<int>> { + const Encoding(); + /// Returns the encoder from `String` to `List<int>`. /// /// It may be stateful and should not be reused.
diff --git a/sdk/lib/convert/html_escape.dart b/sdk/lib/convert/html_escape.dart index 7824162..e6744c1 100644 --- a/sdk/lib/convert/html_escape.dart +++ b/sdk/lib/convert/html_escape.dart
@@ -70,24 +70,24 @@ /// escaped = htmlEscape.convert(unescaped); /// print(escaped); // Path: /system/ /// ``` -final class const HtmlEscapeMode._( - final String _name, +final class HtmlEscapeMode { + final String _name; /// Whether to escape '<' and '>'. - final bool escapeLtGt, + final bool escapeLtGt; /// Whether to escape '"' (quote). - final bool escapeQuot, + final bool escapeQuot; /// Whether to escape "'" (apostrophe). - final bool escapeApos, + final bool escapeApos; /// Whether to escape "/" (forward slash, solidus). /// /// Escaping a slash is recommended to avoid cross-site scripting attacks by /// [the Open Web Application Security Project](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content) - final bool escapeSlash, -) { + final bool escapeSlash; + /// Default escaping mode, which escapes all characters. /// /// The result of such an escaping is usable both in element content and @@ -151,6 +151,14 @@ false, ); + const HtmlEscapeMode._( + this._name, + this.escapeLtGt, + this.escapeQuot, + this.escapeApos, + this.escapeSlash, + ); + /// Create a custom escaping mode. /// /// The [_name] is only used as the result of [toString], @@ -159,13 +167,13 @@ /// All modes escape `&`. /// The mode can further be set to escape `<` and `>` ([escapeLtGt]), /// `"` ([escapeQuot]), `'` ([escapeApos]), and/or `/` ([escapeSlash]). - const new({ - String name = "custom", - bool escapeLtGt = false, - bool escapeQuot = false, - bool escapeApos = false, - bool escapeSlash = false, - }) : this._(name, escapeLtGt, escapeQuot, escapeApos, escapeSlash); + const HtmlEscapeMode({ + this._name = "custom", + this.escapeLtGt = false, + this.escapeQuot = false, + this.escapeApos = false, + this.escapeSlash = false, + }); String toString() => _name; } @@ -223,7 +231,7 @@ /// [HtmlEscapeMode.element], only the corresponding subset of HTML /// characters is escaped. /// The default is to escape all HTML characters. - const new([this.mode = HtmlEscapeMode.unknown]); + const HtmlEscape([this.mode = HtmlEscapeMode.unknown]); String convert(String text) { var val = _convert(text, 0, text.length);
diff --git a/sdk/lib/convert/json.dart b/sdk/lib/convert/json.dart index 2d69604..6e530a7 100644 --- a/sdk/lib/convert/json.dart +++ b/sdk/lib/convert/json.dart
@@ -192,7 +192,7 @@ /// /// If [_toEncodable] is omitted, it defaults to a function that returns the /// result of calling `.toJson()` on the unencodable object. - const new({this._reviver, this._toEncodable}); + const JsonCodec({this._reviver, this._toEncodable}); /// Creates a `JsonCodec` with the given reviver. /// @@ -297,7 +297,7 @@ /// /// If [toEncodable] is omitted, it defaults to calling `.toJson()` on /// the object. - const new([Object? Function(dynamic object)? toEncodable]) + const JsonEncoder([Object? Function(dynamic object)? toEncodable]) : indent = null, _toEncodable = toEncodable; @@ -317,7 +317,7 @@ /// /// If [toEncodable] is omitted, it defaults to calling `.toJson()` on /// the object. - const new withIndent( + const JsonEncoder.withIndent( this.indent, [ Object? Function(dynamic object)? toEncodable, ]) : _toEncodable = toEncodable; @@ -621,7 +621,7 @@ /// Constructs a new JsonDecoder. /// /// The [reviver] may be `null`. - const new([Object? Function(Object? key, Object? value)? reviver]) + const JsonDecoder([Object? Function(Object? key, Object? value)? reviver]) : _reviver = reviver; /// Converts the given JSON-string [input] to its corresponding object.
diff --git a/sdk/lib/convert/latin1.dart b/sdk/lib/convert/latin1.dart index 789c1ee..9e5607e 100644 --- a/sdk/lib/convert/latin1.dart +++ b/sdk/lib/convert/latin1.dart
@@ -21,8 +21,9 @@ /// A [Latin1Codec] encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes /// and decodes Latin-1 bytes to strings. -final class const Latin1Codec({final bool _allowInvalid = false}) - extends Encoding { +final class Latin1Codec extends Encoding { + final bool _allowInvalid; + /// Instantiates a new [Latin1Codec]. /// /// If [_allowInvalid] is true, the [decode] method and the converter @@ -31,7 +32,7 @@ /// Calls to the [decode] method can override this default. /// /// Encoders will not accept invalid (non Latin-1) characters. - this; + const Latin1Codec({this._allowInvalid = false}); /// The name of this codec, "iso-8859-1". String get name => "iso-8859-1"; @@ -71,8 +72,8 @@ /// final encoded = latin1Encoder.convert(sample); /// print(encoded); // [224, 225, 226, 227, 228, 229] /// ``` -final class const Latin1Encoder() extends _UnicodeSubsetEncoder { - this : super(_latin1Mask); +final class Latin1Encoder extends _UnicodeSubsetEncoder { + const Latin1Encoder() : super(_latin1Mask); } /// This class converts Latin-1 bytes (lists of unsigned 8-bit integers) @@ -113,7 +114,8 @@ /// If it is `true`, [convert] replaces invalid bytes with the Unicode /// Replacement character `U+FFFD` (�). /// Otherwise it throws a [FormatException]. - const new({bool allowInvalid = false}) : super(allowInvalid, _latin1Mask); + const Latin1Decoder({bool allowInvalid = false}) + : super(allowInvalid, _latin1Mask); /// Starts a chunked conversion. ///
diff --git a/sdk/lib/convert/line_splitter.dart b/sdk/lib/convert/line_splitter.dart index 7a87bc9..c27deaf 100644 --- a/sdk/lib/convert/line_splitter.dart +++ b/sdk/lib/convert/line_splitter.dart
@@ -35,7 +35,9 @@ /// // 3: garbage-collected /// // 4: language with C-style syntax /// ``` -final class const LineSplitter() extends StreamTransformerBase<String, String> { +final class LineSplitter extends StreamTransformerBase<String, String> { + const LineSplitter(); + /// Split [lines] into individual lines. /// /// If [start] and [end] are provided, only split the contents of
diff --git a/sdk/lib/convert/string_conversion.dart b/sdk/lib/convert/string_conversion.dart index f694a31..1aeedab 100644 --- a/sdk/lib/convert/string_conversion.dart +++ b/sdk/lib/convert/string_conversion.dart
@@ -12,18 +12,21 @@ /// /// The [StringConversionSink] class provides a default implementation of /// [add], [asUtf8Sink] and [asStringSink]. -abstract mixin class const StringConversionSink() +abstract mixin class StringConversionSink implements ChunkedConversionSink<String> { - factory withCallback(void Function(String accumulated) callback) = - _StringCallbackSink; - factory from(Sink<String> sink) = _StringAdapterSink; + const StringConversionSink(); + + factory StringConversionSink.withCallback( + void Function(String accumulated) callback, + ) = _StringCallbackSink; + factory StringConversionSink.from(Sink<String> sink) = _StringAdapterSink; /// Creates a new instance wrapping the given [sink]. /// /// Every string that is added to the returned instance is forwarded to /// the [sink]. The instance is allowed to buffer and is not required to /// forward immediately. - factory fromStringSink(StringSink sink) = + factory StringConversionSink.fromStringSink(StringSink sink) = _StringSinkConversionSink<StringSink>; /// Adds the next [chunk] to `this`. @@ -59,8 +62,10 @@ abstract interface class ClosableStringSink implements StringSink { /// Creates a new instance combining a [StringSink] [sink] and a callback /// [onClose] which is invoked when the returned instance is closed. - factory fromStringSink(StringSink sink, void Function() onClose) = - _ClosableStringSink; + factory ClosableStringSink.fromStringSink( + StringSink sink, + void Function() onClose, + ) = _ClosableStringSink; /// Closes `this` and flushes any outstanding data. void close();
diff --git a/sdk/lib/convert/utf.dart b/sdk/lib/convert/utf.dart index bb9e988..8015e68 100644 --- a/sdk/lib/convert/utf.dart +++ b/sdk/lib/convert/utf.dart
@@ -25,8 +25,9 @@ /// A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes /// UTF-8 code units to strings. -final class const Utf8Codec({final bool _allowMalformed = false}) - extends Encoding { +final class Utf8Codec extends Encoding { + final bool _allowMalformed; + /// Instantiates a new [Utf8Codec]. /// /// The optional [_allowMalformed] argument defines how [decoder] (and [decode]) @@ -36,7 +37,7 @@ /// the [decoder] replace invalid (or unterminated) octet /// sequences with the Unicode Replacement character `U+FFFD` (�). Otherwise /// they throw a [FormatException]. - this; + const Utf8Codec({this._allowMalformed = false}); /// The name of this codec is "utf-8". String get name => "utf-8"; @@ -85,7 +86,9 @@ /// final encodedSample = utf8Encoder.convert(sample); /// print(encodedSample); /// ``` -final class const Utf8Encoder() extends Converter<String, List<int>> { +final class Utf8Encoder extends Converter<String, List<int>> { + const Utf8Encoder(); + /// Converts [string] to its UTF-8 code units (a list of /// unsigned 8-bit integers). /// @@ -331,7 +334,7 @@ /// If it is `true`, [convert] replaces invalid (or unterminated) character /// sequences with the Unicode Replacement character `U+FFFD` (�). Otherwise /// it throws a [FormatException]. - const new({this._allowMalformed = false}); + const Utf8Decoder({this._allowMalformed = false}); /// Converts the UTF-8 [codeUnits] (a list of unsigned 8-bit integers) to the /// corresponding string.
diff --git a/sdk/lib/core/annotations.dart b/sdk/lib/core/annotations.dart index e807807..545dea6 100644 --- a/sdk/lib/core/annotations.dart +++ b/sdk/lib/core/annotations.dart
@@ -60,16 +60,16 @@ /// If the deprecated use is inside a library, class or method which is itself /// deprecated, the tool should not bother the user about it. /// A deprecated feature is expected to use other deprecated features. -class const Deprecated._( +class Deprecated { /// Message provided to the user when they use the deprecated feature. /// /// The message should explain how to migrate away from the feature if an /// alternative is available, and when the deprecated feature is expected to be /// removed. - final String? message, + final String? message; - final _DeprecationKind _kind, -) { + final _DeprecationKind _kind; + /// Creates a deprecation annotation which specifies the migration path and /// expiration of the annotated feature. /// @@ -77,7 +77,7 @@ /// aimed at the programmer using the annotated feature, and should recommend /// an alternative (if available), and say when this feature is expected to /// be removed if that is sooner or later than the next major version. - const new(String? message) : this._(message, _DeprecationKind.use); + const Deprecated(this.message) : _kind = _DeprecationKind.use; /// Creates an annotation which deprecates implementing a class or mixin. /// @@ -101,8 +101,8 @@ /// should recommend an alternative (if available), and say when this /// functionality is expected to be removed if that is sooner or later than /// the next major version. - const new implement([String? message]) - : this._(message, _DeprecationKind.implement); + const Deprecated.implement([this.message]) + : _kind = _DeprecationKind.implement; /// Creates an annotation which deprecates extending a class. /// @@ -125,8 +125,7 @@ /// should recommend an alternative (if available), and say when this /// functionality is expected to be removed if that is sooner or later than /// the next major version. - const new extend([String? message]) - : this._(message, _DeprecationKind.extend); + const Deprecated.extend([this.message]) : _kind = _DeprecationKind.extend; /// Creates an annotation which deprecates subclassing (implementing or /// extending) a class. @@ -150,8 +149,7 @@ /// should recommend an alternative (if available), and say when this /// functionality is expected to be removed if that is sooner or later than /// the next major version. - const new subclass([String? message]) - : this._(message, _DeprecationKind.subclass); + const Deprecated.subclass([this.message]) : _kind = _DeprecationKind.subclass; /// Creates an annotation which deprecates instantiating a class. /// @@ -167,8 +165,8 @@ /// should recommend an alternative (if available), and say when this /// functionality is expected to be removed if that is sooner or later than /// the next major version. - const new instantiate([String? message]) - : this._(message, _DeprecationKind.instantiate); + const Deprecated.instantiate([this.message]) + : _kind = _DeprecationKind.instantiate; /// Creates an annotation which deprecates mixing in a class. /// @@ -186,7 +184,7 @@ /// annotated class, and should recommend an alternative (if available), and /// say when this functionality is expected to be removed if that is sooner /// or later than the next major version. - const new mixin([String? message]) : this._(message, _DeprecationKind.mixin); + const Deprecated.mixin([this.message]) : _kind = _DeprecationKind.mixin; /// Creates an annotation which deprecates omitting an argument for the /// annotated parameter. @@ -205,8 +203,7 @@ /// annotated parameter, and should recommend an alternative (if available), /// and say when this functionality is expected to be removed if that is /// sooner or later than the next major version. - const new optional([String? message]) - : this._(message, _DeprecationKind.optional); + const Deprecated.optional([this.message]) : _kind = _DeprecationKind.optional; String toString() => "Deprecated feature: $message"; } @@ -222,17 +219,19 @@ /// /// This enum can be private because the information is only intended for /// static tooling, such as the analyzer. Values may be added. -enum _DeprecationKind() { +enum _DeprecationKind { use, implement, extend, subclass, instantiate, mixin, - optional + optional, } -class const _Override(); +class _Override { + const _Override(); +} /// Annotation on instance members which override an interface member. /// @@ -295,20 +294,20 @@ /// function `foo` is annotated with a pragma 'other-pragma' /// specific to OtherTool. @pragma('vm:entry-point') -final class const pragma._( +final class pragma { /// The name of the hint. /// /// A string that is recognized by one or more tools, or such a string prefixed /// by a tool identifier and a colon, which is only recognized by that /// particular tool. - final String name, [ + final String name; /// Optional extra data parameterizing the hint. - final Object? options, -]) { - /// Creates a hint named [name] with optional [options]. - @pragma('dyn-module:language-impl:callable') - this; + final Object? options; + /// Creates a hint named [name] with optional [options]. const factory pragma(String name, [Object? options]) = pragma._; + + @pragma('dyn-module:language-impl:callable') + const pragma._(this.name, [this.options]); }
diff --git a/sdk/lib/core/bigint.dart b/sdk/lib/core/bigint.dart index d01ae5a..3f76720 100644 --- a/sdk/lib/core/bigint.dart +++ b/sdk/lib/core/bigint.dart
@@ -140,7 +140,7 @@ /// bigInteger = BigInt.from(0.9999); // 0 /// bigInteger = BigInt.from(-10.99); // -10 /// ``` - external factory from(num value); + external factory BigInt.from(num value); /// Returns the absolute value of this integer. ///
diff --git a/sdk/lib/core/duration.dart b/sdk/lib/core/duration.dart index 020aef5..29d88ac 100644 --- a/sdk/lib/core/duration.dart +++ b/sdk/lib/core/duration.dart
@@ -171,7 +171,7 @@ /// milliseconds: 30, microseconds: 10); /// print(duration); // 32:56:59.030010 /// ``` - const new({ + const Duration({ int days = 0, int hours = 0, int minutes = 0, @@ -190,7 +190,7 @@ // Fast path internal direct constructor to avoids the optional arguments // and [_microseconds] recomputation. // The `+ 0` prevents -0.0 on the web, if the incoming duration happens to be -0.0. - const new _microseconds(int duration) : _duration = duration + 0; + const Duration._microseconds(int duration) : _duration = duration + 0; /// Adds this Duration and [other] and /// returns the sum as a new Duration object.
diff --git a/sdk/lib/core/enum.dart b/sdk/lib/core/enum.dart index d624c7d..2d058ad 100644 --- a/sdk/lib/core/enum.dart +++ b/sdk/lib/core/enum.dart
@@ -102,23 +102,18 @@ /// Superclass of all enum class implementations. @pragma('dyn-module:language-impl:extendable') @pragma('dyn-module:language-impl:callable') -abstract class const _Enum( - this.index, // Dart2JS does not understand annotation on declaring parameter. - this._name, // VM does not understand annotation on declaring parameter. -) implements Enum { +abstract class _Enum implements Enum { // See http://dartbug.com/51657 for discussion of dart2js pragma. - @pragma('dart2js:noElision') // Does not work if declaring parameter. + @pragma('dart2js:noElision') @pragma('wasm:entry-point') final int index; - @pragma( - 'dyn-module:language-impl:callable', - ) // Does not work if declaring parameter. + @pragma('dyn-module:language-impl:callable') @pragma('wasm:entry-point') final String _name; @pragma('dyn-module:language-impl:callable') - this; + const _Enum(this.index, this._name); /// The result of [toString]. ///
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart index 0f64b35..9c88ec5e 100644 --- a/sdk/lib/core/errors.dart +++ b/sdk/lib/core/errors.dart
@@ -69,7 +69,9 @@ /// Catching specific subclasses of [Error] is not intended, /// and shouldn't happen outside of testing your own code. @pragma('flutter:keep-to-string-in-subtypes') -class Error() { +class Error { + Error(); // Prevent use as mixin. + /// Safely convert a value to a [String] description. /// /// The conversion is guaranteed to not throw, so it won't use the object's @@ -123,12 +125,12 @@ } /// Error thrown by the runtime system when an assert statement fails. -class AssertionError([ +class AssertionError extends Error { /// Message describing the assertion error. - final Object? message, -]) extends Error { + final Object? message; + /// Creates an assertion error with the provided [message]. - this; + AssertionError([this.message]); String toString() { if (message != null) { @@ -139,7 +141,7 @@ } /// Error thrown by the runtime system when a dynamic type error happens. -class TypeError() extends Error; +class TypeError extends Error {} /// Error thrown when a function is passed an unacceptable argument. /// @@ -294,7 +296,7 @@ /// /// The [length] is the length of [indexable] at the time of the error. /// If `length` is omitted, it defaults to `indexable.length`. - factory index( + factory RangeError.index( int index, dynamic indexable, [ String? name, @@ -560,7 +562,10 @@ /// /// The [invocation] represents the method call that failed. It /// should not be `null`. - external factory withInvocation(Object? receiver, Invocation invocation); + external factory NoSuchMethodError.withInvocation( + Object? receiver, + Invocation invocation, + ); external String toString(); } @@ -572,12 +577,10 @@ /// For example, it's used by unmodifiable versions of collections, /// when someone calls a modifying method. @pragma("vm:entry-point") -class UnsupportedError(String this.message) extends Error { +class UnsupportedError extends Error { final String? message; - @pragma("vm:entry-point") - this; - + UnsupportedError(String this.message); String toString() => "Unsupported operation: $message"; } @@ -589,9 +592,9 @@ /// If the class does not intend to implement the feature, it should throw /// an [UnsupportedError] instead. This error is only intended for /// use during development. -class UnimplementedError([final String? message]) - extends Error - implements UnsupportedError { +class UnimplementedError extends Error implements UnsupportedError { + final String? message; + UnimplementedError([this.message]); String toString() { var message = this.message; return (message != null) @@ -613,10 +616,10 @@ /// /// This is a generic error used for a variety of different erroneous /// actions. The message should be descriptive. -class StateError(final String message) extends Error { +class StateError extends Error { + final String message; @pragma("vm:entry-point") - this; - + StateError(this.message); String toString() => "Bad state: $message"; } @@ -625,10 +628,12 @@ /// Some modifications may be allowed for some collections, so each collection /// ([Iterable] or similar collection of values) should declare which operations /// are allowed during an iteration. -class ConcurrentModificationError([ +class ConcurrentModificationError extends Error { /// The object that was modified in an incompatible way. - final Object? modifiedObject, -]) extends Error { + final Object? modifiedObject; + + ConcurrentModificationError([this.modifiedObject]); + String toString() { if (modifiedObject == null) { return "Concurrent modification during iteration."; @@ -639,20 +644,18 @@ } /// Error that the platform can use in case of memory shortage. -final class const OutOfMemoryError() implements Error { +final class OutOfMemoryError implements Error { @pragma("vm:entry-point") - this; - + const OutOfMemoryError(); String toString() => "Out of Memory"; StackTrace? get stackTrace => null; } /// Error that the platform can use in case of stack overflow. -final class const StackOverflowError() implements Error { +final class StackOverflowError implements Error { @pragma("vm:entry-point") - this; - + const StackOverflowError(); String toString() => "Stack Overflow"; StackTrace? get stackTrace => null;
diff --git a/sdk/lib/core/exceptions.dart b/sdk/lib/core/exceptions.dart index ee369f6..6f317d6 100644 --- a/sdk/lib/core/exceptions.dart +++ b/sdk/lib/core/exceptions.dart
@@ -21,11 +21,15 @@ /// and its subclasses. @pragma('flutter:keep-to-string-in-subtypes') abstract interface class Exception { - factory([message]) => _Exception(message); + factory Exception([message]) => _Exception(message); } /// Default implementation of [Exception] which carries a message. -class _Exception([final dynamic message]) implements Exception { +class _Exception implements Exception { + final dynamic message; + + _Exception([this.message]); + String toString() { Object? message = this.message; if (message == null) return "Exception"; @@ -36,9 +40,9 @@ /// Exception thrown when a string or some other data does not have an expected /// format and cannot be parsed or processed. @pragma("vm:entry-point") -class const FormatException([ +class FormatException implements Exception { /// A message describing the format error. - final String message = "", + final String message; /// The actual source input which caused the error. /// @@ -46,7 +50,7 @@ /// If it is a string, parts of it may be included in the [toString] message. /// /// The source is `null` if omitted or unknown. - final dynamic source, + final dynamic source; /// The offset in [source] where the error was detected. /// @@ -59,14 +63,14 @@ /// or at the end of the string. /// /// May be omitted. If present, [source] should also be present if possible. - final int? offset, -]) implements Exception { + final int? offset; + /// Creates a new `FormatException` with an optional error [message]. /// /// Optionally also supply the actual [source] with the incorrect format, /// and the [offset] in the format where a problem was detected. @pragma("vm:entry-point") - this; + const FormatException([this.message = "", this.source, this.offset]); /// Returns a description of the format exception. /// @@ -169,11 +173,10 @@ // TODO(30743): Should be removed, and division by zero should just throw an // [UnsupportedError]. @Deprecated("Use UnsupportedError instead") -class const IntegerDivisionByZeroException() - implements Exception, UnsupportedError { +class IntegerDivisionByZeroException implements Exception, UnsupportedError { String? get message => "Division resulted in non-finite value"; StackTrace? get stackTrace => null; @pragma("vm:entry-point") - this; + const IntegerDivisionByZeroException(); String toString() => "IntegerDivisionByZeroException"; }
diff --git a/sdk/lib/core/invocation.dart b/sdk/lib/core/invocation.dart index 7e657db..ee11f95 100644 --- a/sdk/lib/core/invocation.dart +++ b/sdk/lib/core/invocation.dart
@@ -9,15 +9,15 @@ /// This is the type of objects passed to [Object.noSuchMethod] when /// an object doesn't support the member invocation that was attempted /// on it. -// TODO: Deprecated extending. There is no implementation to inherit, -// so just implement. -abstract class Invocation() { +abstract class Invocation { + Invocation(); + /// Creates an invocation corresponding to a method invocation. /// /// The method invocation has no type arguments. /// If the named arguments are omitted, they default to no named arguments. @pragma("wasm:entry-point") - factory method( + factory Invocation.method( Symbol memberName, Iterable<Object?>? positionalArguments, [ Map<Symbol, Object?>? namedArguments, @@ -32,7 +32,7 @@ /// /// If the named arguments are omitted, they default to no named arguments. @pragma("wasm:entry-point") - factory genericMethod( + factory Invocation.genericMethod( Symbol memberName, Iterable<Type>? typeArguments, Iterable<Object?>? positionalArguments, [ @@ -46,7 +46,7 @@ /// Creates an invocation corresponding to a getter invocation. @pragma("wasm:entry-point") - factory getter(Symbol name) = _Invocation.getter; + factory Invocation.getter(Symbol name) = _Invocation.getter; /// Creates an invocation corresponding to a setter invocation. /// @@ -57,7 +57,8 @@ /// Invocation.setter(const Symbol("member="), value) /// ``` @pragma("wasm:entry-point") - factory setter(Symbol memberName, Object? argument) = _Invocation.setter; + factory Invocation.setter(Symbol memberName, Object? argument) = + _Invocation.setter; /// The name of the invoked member. Symbol get memberName;
diff --git a/sdk/lib/core/iterable.dart b/sdk/lib/core/iterable.dart index 091c06c..6f46b44 100644 --- a/sdk/lib/core/iterable.dart +++ b/sdk/lib/core/iterable.dart
@@ -89,11 +89,13 @@ /// An implementation of the `Iterable` interface should /// provide a more efficient implementation of the members of `Iterable` /// when it can do so. -abstract mixin class const Iterable<E>() { +abstract mixin class Iterable<E> { // This class has methods copied verbatim into: // - SetMixin // If changing a method here, also change other copies. + const Iterable(); + /// Creates an `Iterable` which generates its elements dynamically. /// /// The generated iterable has [count] elements, @@ -107,7 +109,7 @@ /// /// As an `Iterable`, `Iterable.generate(n, generator))` is equivalent to /// `const [0, ..., n - 1].map(generator)`. - factory generate(int count, [E generator(int index)?]) { + factory Iterable.generate(int count, [E generator(int index)?]) { // Always OK to omit generator when count is zero. if (count <= 0) return EmptyIterable<E>(); if (generator == null) { @@ -140,14 +142,14 @@ /// print(numbers.toList()); // [1, 2, 3] /// ``` @Since("3.8") - factory withIterator(Iterator<E> Function() iteratorFactory) = + factory Iterable.withIterator(Iterator<E> Function() iteratorFactory) = _WithIteratorIterable<E>; /// Creates an empty iterable. /// /// The empty iterable has no elements, and iterating it always stops /// immediately. - const factory empty() = EmptyIterable<E>; + const factory Iterable.empty() = EmptyIterable<E>; /// Adapts [source] to be an `Iterable<T>`. /// @@ -909,16 +911,19 @@ } } -class _GeneratorIterable<E>( - /// The length of the generated iterable. - final int length, - - /// The function mapping indices to values. - final E Function(int) _generator, -) extends ListIterable<E> { +class _GeneratorIterable<E> extends ListIterable<E> { // Methods have efficient implementations from `ListIterable`, // based on `length` and `elementAt`. + /// The length of the generated iterable. + final int length; + + /// The function mapping indices to values. + final E Function(int) _generator; + + /// Creates the generated iterable. + _GeneratorIterable(this.length, this._generator); + E elementAt(int index) { IndexError.check(index, length, indexable: this); return _generator(index); @@ -932,8 +937,13 @@ /// /// This class implements [Iterable] by delegating the iterator creation /// to the provided function. -class _WithIteratorIterable<E>(final Iterator<E> Function() _iteratorFactory) - extends Iterable<E> { +class _WithIteratorIterable<E> extends Iterable<E> { + final Iterator<E> Function() _iteratorFactory; + + /// Creates an iterable that gets its elements from iterators created by + /// the provided factory function. + _WithIteratorIterable(this._iteratorFactory); + Iterator<E> get iterator => _iteratorFactory(); }
diff --git a/sdk/lib/core/list.dart b/sdk/lib/core/list.dart index 5b105a9..c898dfe 100644 --- a/sdk/lib/core/list.dart +++ b/sdk/lib/core/list.dart
@@ -6,8 +6,8 @@ /// Helper interface to hide [EfficientLengthIterable] from the public /// declaration of [List]. -abstract interface class _ListIterable<E> - implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E>; +abstract class _ListIterable<E> + implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E> {} /// An indexable collection of objects with a length. /// @@ -148,7 +148,7 @@ /// unique[0].add(499); /// print(unique); // [[499], [], []] /// ``` - external factory filled(int length, E fill, {bool growable = false}); + external factory List.filled(int length, E fill, {bool growable = false}); /// Creates a new empty list. /// @@ -162,7 +162,7 @@ /// final fixedLengthList = List.empty(growable: false); /// fixedLengthList.add(1); // error /// ``` - external factory empty({bool growable = false}); + external factory List.empty({bool growable = false}); /// Creates a list containing all [elements]. /// @@ -191,7 +191,10 @@ /// /// This constructor creates a growable list when [growable] is true; /// otherwise, it returns a fixed-length list. - external factory from(Iterable<Object?> elements, {bool growable = true}); + external factory List.from( + Iterable<Object?> elements, { + bool growable = true, + }); /// Creates a list from [elements]. /// @@ -204,7 +207,7 @@ /// final listOf = List<num>.of(numbers); /// print(listOf); // [1, 2, 3] /// ``` - external factory of(Iterable<E> elements, {bool growable = true}); + external factory List.of(Iterable<E> elements, {bool growable = true}); /// Generates a list of values. /// @@ -223,7 +226,7 @@ /// The created list is fixed-length if [growable] is set to false. /// /// The [length] must be non-negative. - external factory generate( + external factory List.generate( int length, E generator(int index), { bool growable = true, @@ -242,7 +245,7 @@ /// unmodifiableList[1] = 87; // Throws. /// ``` // @Deprecated("Use List.unmodifiableOf instead") - external factory unmodifiable(Iterable elements); + external factory List.unmodifiable(Iterable elements); /// Creates an unmodifiable list containing all [elements]. /// @@ -257,7 +260,7 @@ /// unmodifiableList[1] = 87; // Throws. /// ``` @Since("3.13") - factory unmodifiableOf(Iterable<E> elements) = List<E>.unmodifiable; + factory List.unmodifiableOf(Iterable<E> elements) = List<E>.unmodifiable; /// Adapts [source] to be a `List<T>`. ///
diff --git a/sdk/lib/core/map.dart b/sdk/lib/core/map.dart index e32e1ae..42bc4f5 100644 --- a/sdk/lib/core/map.dart +++ b/sdk/lib/core/map.dart
@@ -40,7 +40,7 @@ /// `operator==` and `hashCode`. /// It iterates in key insertion order. // TODO: @Deprecated("Use literal <K, V>{} instead") - external factory(); + external factory Map(); /// Creates a [LinkedHashMap] with the same keys and values as [other]. /// @@ -61,7 +61,7 @@ /// final mapFrom = Map<int, String>.from(planets); /// print(mapFrom); // {1: Mercury, 2: Venus, 3: Earth, 4: Mars} /// ``` - factory from(Map other) = LinkedHashMap<K, V>.from; + factory Map.from(Map other) = LinkedHashMap<K, V>.from; /// Creates a [LinkedHashMap] with the same keys and values as [other]. /// @@ -73,7 +73,7 @@ /// final mapOf = Map<num, String>.of(planets); /// print(mapOf); // {1: Mercury, 2: Venus, 3: Earth} /// ``` - factory of(Map<K, V> other) = LinkedHashMap<K, V>.of; + factory Map.of(Map<K, V> other) = LinkedHashMap<K, V>.of; /// Creates an unmodifiable hash-based map containing the entries of [other]. /// @@ -93,7 +93,7 @@ /// unmodifiableMap[4] = 'Mars'; // Throws /// ``` // @Deprecated("Use Map.unmodifiableOf instead") - external factory unmodifiable(Map<dynamic, dynamic> other); + external factory Map.unmodifiable(Map<dynamic, dynamic> other); /// Creates an unmodifiable hash-based map containing the entries of [other]. /// @@ -110,7 +110,7 @@ /// unmodifiableMap[4] = 'Mars'; // Throws /// ``` @Since("3.13") - factory unmodifiableOf(Map<K, V> other) = Map<K, V>.unmodifiable; + factory Map.unmodifiableOf(Map<K, V> other) = Map<K, V>.unmodifiable; /// Creates an identity map with the default implementation, [LinkedHashMap]. /// @@ -119,7 +119,7 @@ /// [Object.hashCode] of the keys. /// /// The map iterates in key insertion order. - factory identity() = LinkedHashMap<K, V>.identity; + factory Map.identity() = LinkedHashMap<K, V>.identity; /// Creates a Map instance in which the keys and values are computed from the /// [iterable]. @@ -164,7 +164,7 @@ /// A `LinkedHashMap` requires the keys to implement compatible /// `operator==` and `hashCode`. /// It iterates in key insertion order. - factory fromIterable( + factory Map.fromIterable( Iterable iterable, { K key(dynamic element)?, V value(dynamic element)?, @@ -189,7 +189,7 @@ /// A `LinkedHashMap` requires the keys to implement compatible /// `operator==` and `hashCode`. /// It iterates in key insertion order. - factory fromIterables(Iterable<K> keys, Iterable<V> values) = + factory Map.fromIterables(Iterable<K> keys, Iterable<V> values) = LinkedHashMap<K, V>.fromIterables; /// Adapts [source] to be a `Map<K2, V2>`. @@ -230,7 +230,7 @@ /// 'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14}; /// final map = Map.fromEntries(moonCount.entries); /// ``` - factory fromEntries(Iterable<MapEntry<K, V>> entries) => + factory Map.fromEntries(Iterable<MapEntry<K, V>> entries) => <K, V>{}..addEntries(entries); /// Provides a view of this map as having [RK] keys and [RV] instances, @@ -502,7 +502,7 @@ /// the `MapEntry` class will be changed to such a type, /// and will likely no longer be able to be implemented or extended /// by classes. -final class const MapEntry<K, V>( +final class MapEntry<K, V> { /// The key of the entry. /// /// ```dart @@ -510,7 +510,7 @@ /// var entry = map.entries.first; // MapEntry<String, String> /// print(entry.key); // 'theKey' /// ``` - final K key, + final K key; /// The value associated to [key] in a map. /// @@ -519,10 +519,12 @@ /// var entry = map.entries.first; // MapEntry<String, String> /// print(entry.value); // 'theValue' /// ``` - final V value, -) { + final V value; + /// Creates an entry with [key] and [value]. - this; + const factory MapEntry(K key, V value) = MapEntry<K, V>._; + + const MapEntry._(this.key, this.value); /// String representation intended for debugging only. ///
diff --git a/sdk/lib/core/null.dart b/sdk/lib/core/null.dart index 37f6902..45bafe2 100644 --- a/sdk/lib/core/null.dart +++ b/sdk/lib/core/null.dart
@@ -22,7 +22,7 @@ /// ``` @pragma("vm:entry-point") final class Null { - factory _uninstantiable() { + factory Null._uninstantiable() { throw UnsupportedError('class Null cannot be instantiated'); }
diff --git a/sdk/lib/core/object.dart b/sdk/lib/core/object.dart index 7208bce..7be8a4e 100644 --- a/sdk/lib/core/object.dart +++ b/sdk/lib/core/object.dart
@@ -16,14 +16,14 @@ /// section of the [introduction to `dart:core`](https://dart.dev/libraries/dart-core). @pragma("vm:entry-point") @pragma('dyn-module:language-impl:extendable') -class const Object() { +class Object { /// Creates a new [Object] instance. /// /// [Object] instances have no meaningful state, and are only useful /// through their identity. An [Object] instance is equal to itself /// only. @pragma("vm:recognized", "other") - this; + const Object(); /// The equality operator. ///
diff --git a/sdk/lib/core/regexp.dart b/sdk/lib/core/regexp.dart index cfea755..6b10339 100644 --- a/sdk/lib/core/regexp.dart +++ b/sdk/lib/core/regexp.dart
@@ -271,7 +271,7 @@ /// Pattern keyValuePattern(String anyStringKey) => /// RegExp('${RegExp.escape(anyStringKey)}=(\\w+)'); /// ``` - external factory( + external factory RegExp( String source, { bool multiLine = false, bool caseSensitive = true,
diff --git a/sdk/lib/core/set.dart b/sdk/lib/core/set.dart index bf1074d..3ddd5df 100644 --- a/sdk/lib/core/set.dart +++ b/sdk/lib/core/set.dart
@@ -6,8 +6,8 @@ /// Helper interface to hide [EfficientLengthIterable] from the public /// declaration of [Set]. -abstract interface class _SetIterable<E> - implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E>; +abstract class _SetIterable<E> + implements EfficientLengthIterable<E>, HideEfficientLengthIterable<E> {} /// A collection of objects in which each object can occur only once. /// @@ -48,7 +48,7 @@ /// /// The set is equivalent to one created by `LinkedHashSet<E>()`. // TODO: @Deprecated("Use literal <E>{} instead") - factory() = LinkedHashSet<E>; + factory Set() = LinkedHashSet<E>; /// Creates an empty identity [Set]. /// @@ -56,7 +56,7 @@ /// relation. /// /// The set is equivalent to one created by `LinkedHashSet<E>.identity()`. - factory identity() = LinkedHashSet<E>.identity; + factory Set.identity() = LinkedHashSet<E>.identity; /// Creates a [Set] that contains all [elements]. /// @@ -79,7 +79,7 @@ /// final setFrom = Set<int>.from(numbers); /// print(setFrom); // {10, 20, 30} /// ``` - factory from(Iterable elements) = LinkedHashSet<E>.from; + factory Set.from(Iterable elements) = LinkedHashSet<E>.from; /// Creates a [Set] from [elements]. /// @@ -94,7 +94,7 @@ /// final setOf = Set<num>.of(baseSet); /// print(setOf); // {1, 2, 3} /// ``` - factory of(Iterable<E> elements) = LinkedHashSet<E>.of; + factory Set.of(Iterable<E> elements) = LinkedHashSet<E>.of; /// Creates an unmodifiable [Set] from [elements]. /// @@ -104,7 +104,7 @@ /// final characters = <String>{'A', 'B', 'C'}; /// final unmodifiableSet = Set.unmodifiable(characters); /// ``` - factory unmodifiable(Iterable<E> elements) => + factory Set.unmodifiable(Iterable<E> elements) => UnmodifiableSetView<E>(<E>{...elements}); /// Adapts [source] to be a `Set<T>`.
diff --git a/sdk/lib/core/stacktrace.dart b/sdk/lib/core/stacktrace.dart index 5a8f86b..80bb1a4 100644 --- a/sdk/lib/core/stacktrace.dart +++ b/sdk/lib/core/stacktrace.dart
@@ -11,13 +11,15 @@ /// /// These objects are created by the runtime, it is not possible to create /// them programmatically. -abstract interface class StackTrace() { +abstract interface class StackTrace { /// A stack trace object with no information. /// /// This stack trace is used as the default in situations where /// a stack trace is required, but the user has not supplied one. static const empty = _StringStackTrace(""); + StackTrace(); // In case existing classes extend StackTrace. + /// Create a `StackTrace` object from [stackTraceString]. /// /// The created stack trace will have a `toString` method returning @@ -28,7 +30,7 @@ /// If the string doesn't look like a stack trace, code that interprets /// stack traces is likely to fail, so fake stack traces should be used /// with care. - factory fromString(String stackTraceString) = _StringStackTrace; + factory StackTrace.fromString(String stackTraceString) = _StringStackTrace; /// Returns a representation of the current stack trace. /// @@ -48,6 +50,8 @@ String toString(); } -class const _StringStackTrace(final String _stackTrace) implements StackTrace { +class _StringStackTrace implements StackTrace { + final String _stackTrace; + const _StringStackTrace(this._stackTrace); String toString() => _stackTrace; }
diff --git a/sdk/lib/core/string.dart b/sdk/lib/core/string.dart index 49750bd..06b7534 100644 --- a/sdk/lib/core/string.dart +++ b/sdk/lib/core/string.dart
@@ -128,7 +128,7 @@ /// and if [end] is omitted, all char-codes after [start] are included. /// If [charCodes] does not have [end], or even [start], elements, /// the specified char-codes may be shorter than `end - start`, or even empty. - external factory fromCharCodes( + external factory String.fromCharCodes( Iterable<int> charCodes, [ int start = 0, int? end, @@ -142,7 +142,7 @@ /// [fromCharCodes]. /// /// Creating a [String] with one half of a surrogate pair is allowed. - external factory fromCharCode(int charCode); + external factory String.fromCharCode(int charCode); /// Value for [name] in the compilation configuration environment declaration. /// @@ -185,7 +185,7 @@ /// The compilation configuration environment is not the same as the /// environment variables of a POSIX process. Those can be accessed on /// native platforms using `Platform.environment` from the `dart:io` library. - external const factory fromEnvironment( + external const factory String.fromEnvironment( String name, { String defaultValue = "", });
diff --git a/sdk/lib/core/symbol.dart b/sdk/lib/core/symbol.dart index ad3ea11..f0a9d2c 100644 --- a/sdk/lib/core/symbol.dart +++ b/sdk/lib/core/symbol.dart
@@ -59,7 +59,7 @@ /// ``` /// /// The created instance overrides [Object.==]. - const factory(String name) = internal.Symbol; + const factory Symbol(String name) = internal.Symbol; /// Returns a hash code compatible with [operator==]. ///
diff --git a/sdk/lib/core/uri.dart b/sdk/lib/core/uri.dart index e3acd50..eacd198 100644 --- a/sdk/lib/core/uri.dart +++ b/sdk/lib/core/uri.dart
@@ -204,7 +204,7 @@ /// queryParameters: {'subject': 'Example'}); /// print(mailtoUri); // mailto:John.Doe@example.com?subject=Example /// ``` - factory({ + factory Uri({ String? scheme, String? userInfo, String? host, @@ -247,7 +247,7 @@ /// /// The `query` component is set from the optional [queryParameters] /// argument. - factory http( + factory Uri.http( String authority, [ String unencodedPath, Map<String, dynamic /*String?|Iterable<String>*/>? queryParameters, @@ -272,7 +272,7 @@ /// uri = Uri.https('example.org', '/a%2F'); /// print(uri); // https://example.org/a%252F /// ``` - factory https( + factory Uri.https( String authority, [ String unencodedPath, Map<String, dynamic>? queryParameters, @@ -357,7 +357,7 @@ /// ``` /// /// If the path passed is not a valid file path, an error is thrown. - factory file(String path, {bool? windows}) = _Uri.file; + factory Uri.file(String path, {bool? windows}) = _Uri.file; /// Like [Uri.file] except that a non-empty URI path ends in a slash. /// @@ -374,7 +374,7 @@ /// Uri.directory(r'C:\data\images', windows: true); /// print(fileDirectoryWindows); // file:///C:/data/images/ /// ``` - factory directory(String path, {bool? windows}) = _Uri.directory; + factory Uri.directory(String path, {bool? windows}) = _Uri.directory; /// Creates a `data:` URI containing the [content] string. /// @@ -412,7 +412,7 @@ /// ); /// print(uri); // data:;search=name;max=10,example%20content /// ``` - factory dataFromString( + factory Uri.dataFromString( String content, { String? mimeType, Encoding? encoding, @@ -449,7 +449,7 @@ /// final uri = Uri.dataFromBytes([68, 97, 114, 116]); /// print(uri); // data:application/octet-stream;base64,RGFydA== /// ``` - factory dataFromBytes( + factory Uri.dataFromBytes( List<int> bytes, { String mimeType = "application/octet-stream", Map<String, String>? parameters, @@ -1794,7 +1794,7 @@ } // Superclass of the two implementation types. -sealed class _PlatformUri implements Uri; +sealed class _PlatformUri implements Uri {} final class _Uri implements _PlatformUri { // We represent the missing scheme as an empty string. @@ -3742,7 +3742,7 @@ /// /// Equivalent to `Uri.dataFromString(...).data`, but may /// be more efficient if the [uri] itself isn't used. - factory fromString( + factory UriData.fromString( String content, { String? mimeType, Encoding? encoding, @@ -3779,7 +3779,7 @@ /// /// Equivalent to `Uri.dataFromBytes(...).data`, but may /// be more efficient if the [uri] itself isn't used. - factory fromBytes( + factory UriData.fromBytes( List<int> bytes, { String mimeType = "application/octet-stream", Map<String, String>? parameters, @@ -3808,7 +3808,7 @@ /// The [uri] must have scheme `data` and no authority or fragment, /// and the path (concatenated with the query, if there is one) must be valid /// as data URI content with the same rules as [parse]. - factory fromUri(Uri uri) { + factory UriData.fromUri(Uri uri) { if (!uri.isScheme("data")) { throw ArgumentError.value(uri, "uri", "Scheme must be 'data'"); }
diff --git a/sdk/lib/core/weak.dart b/sdk/lib/core/weak.dart index 1fab503..91ac32f 100644 --- a/sdk/lib/core/weak.dart +++ b/sdk/lib/core/weak.dart
@@ -129,7 +129,7 @@ /// The [target] must be an object supported as an [Expando] key, /// which means [target] cannot be a number, a string, a boolean, a record, /// the `null` value, or certain other types of special objects. - external factory(T target); + external factory WeakReference(T target); /// The current object weakly referenced by this [WeakReference], if any. /// @@ -225,7 +225,7 @@ /// /// The [callback] is bound to the current zone /// when the [Finalizer] is created, and will run in that zone when called. - external factory(void Function(T) callback); + external factory Finalizer(void Function(T) callback); /// Attaches this finalizer to [value]. ///
diff --git a/sdk/lib/internal/bytes_builder.dart b/sdk/lib/internal/bytes_builder.dart index 552d2a3..5a9ba42 100644 --- a/sdk/lib/internal/bytes_builder.dart +++ b/sdk/lib/internal/bytes_builder.dart
@@ -176,7 +176,7 @@ /// /// Accumulates lists of integers and lazily builds /// a collected list with all the bytes when requested. -class _BytesBuilder() implements BytesBuilder { +class _BytesBuilder implements BytesBuilder { int _length = 0; final List<Uint8List> _chunks = [];
diff --git a/sdk/lib/internal/cast.dart b/sdk/lib/internal/cast.dart index 6621e6b..659710f 100644 --- a/sdk/lib/internal/cast.dart +++ b/sdk/lib/internal/cast.dart
@@ -6,7 +6,7 @@ // Casting wrappers for collection classes. -abstract class _CastIterableBase<S, T>() extends Iterable<T> { +abstract class _CastIterableBase<S, T> extends Iterable<T> { Iterable<S> get _source; Iterator<T> get iterator => CastIterator<S, T>(_source.iterator); @@ -57,13 +57,18 @@ String toString() => _source.toString(); } -class CastIterator<S, T>(final Iterator<S> _source) implements Iterator<T> { +class CastIterator<S, T> implements Iterator<T> { + Iterator<S> _source; + CastIterator(this._source); bool moveNext() => _source.moveNext(); T get current => _source.current as T; } -class CastIterable<S, T>._(final Iterable<S> _source) - extends _CastIterableBase<S, T> { +class CastIterable<S, T> extends _CastIterableBase<S, T> { + final Iterable<S> _source; + + CastIterable._(this._source); + factory CastIterable(Iterable<S> source) { if (source is EfficientLengthIterable<S>) { return _EfficientLengthCastIterable<S, T>(source); @@ -74,17 +79,15 @@ Iterable<R> cast<R>() => CastIterable<S, R>(_source); } -class _EfficientLengthCastIterable<S, T>( - EfficientLengthIterable<S> super.source, -) extends CastIterable<S, T> +class _EfficientLengthCastIterable<S, T> extends CastIterable<S, T> implements EfficientLengthIterable<T>, HideEfficientLengthIterable<T> { - this : super._(); + _EfficientLengthCastIterable(EfficientLengthIterable<S> source) + : super._(source); } -class CastList<S, T>(final List<S> _source) - extends _CastIterableBase<S, T> +abstract class _CastListBase<S, T> extends _CastIterableBase<S, T> with ListMixin<T> { - List<R> cast<R>() => CastList<S, R>(_source); + List<S> get _source; // Using the default implementation from ListMixin: // * reversed @@ -169,9 +172,23 @@ } } -class CastSet<S, T>(final Set<S> _source, final Set<R> Function<R>()? _emptySet) - extends _CastIterableBase<S, T> - implements Set<T> { +class CastList<S, T> extends _CastListBase<S, T> { + final List<S> _source; + CastList(this._source); + + List<R> cast<R>() => CastList<S, R>(_source); +} + +class CastSet<S, T> extends _CastIterableBase<S, T> implements Set<T> { + final Set<S> _source; + + /// Creates a new empty set of the same *kind* as [_source], + /// but with `<R>` as type argument. + /// Used by [toSet] and [union]. + final Set<R> Function<R>()? _emptySet; + + CastSet(this._source, this._emptySet); + Set<R> cast<R>() => CastSet<S, R>(_source, _emptySet); bool add(T value) => _source.add(value as S); @@ -237,7 +254,11 @@ T lookup(Object? key) => _source.lookup(key) as T; } -class CastMap<SK, SV, K, V>(final Map<SK, SV> _source) extends MapBase<K, V> { +class CastMap<SK, SV, K, V> extends MapBase<K, V> { + final Map<SK, SV> _source; + + CastMap(this._source); + Map<RK, RV> cast<RK, RV>() => CastMap<SK, SV, RK, RV>(_source); bool containsValue(Object? value) => _source.containsValue(value); @@ -308,9 +329,9 @@ } } -class CastQueue<S, T>(final Queue<S> _source) - extends _CastIterableBase<S, T> - implements Queue<T> { +class CastQueue<S, T> extends _CastIterableBase<S, T> implements Queue<T> { + final Queue<S> _source; + CastQueue(this._source); Queue<R> cast<R>() => CastQueue<S, R>(_source); T removeFirst() => _source.removeFirst() as T;
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart index cbc9d6c..adbaa54 100644 --- a/sdk/lib/internal/internal.dart +++ b/sdk/lib/internal/internal.dart
@@ -33,7 +33,8 @@ part 'sort.dart'; part 'symbol.dart'; -// Whether `null as T` will succeed based on the execution mode. +// Returns true iff `null as T` will succeed based on the +// execution mode. external bool typeAcceptsNull<T>(); /// Unsafely treats [value] as type [T]. @@ -133,9 +134,7 @@ assert(index + 2 <= source.length); int digit1 = hexDigitValue(source.codeUnitAt(index)); int digit2 = hexDigitValue(source.codeUnitAt(index + 1)); - return digit1 * 16 + - digit2 - - (digit2 & 256); // Could use `| digit2` on native. + return digit1 * 16 + digit2 - (digit2 & 256); } /// A reusable `null`-valued future used by `dart:async`. @@ -737,7 +736,10 @@ } /// Sentinel values that should never be exposed outside of platform libraries. -class const SentinelValue(final int id); +class SentinelValue { + final int id; + const SentinelValue(this.id); +} /// A default value to use when only one sentinel is needed. const Object sentinelValue = SentinelValue(0); @@ -750,7 +752,7 @@ /// Example: /// /// ```dart template:top -/// class Two<A, B>(); +/// class Two<A, B> {} /// /// print(extractTypeArguments<List>(<int>[], <T>() => new Set<T>())); /// // Prints: Instance of 'Set<int>'. @@ -764,12 +766,12 @@ /// list in [instance]'s type hierarchy is being extracted. Consider: /// /// ```dart template:top -/// class A<T>(); -/// class B<T>(); +/// class A<T> {} +/// class B<T> {} /// -/// class C() implements A<int>, B<String>; +/// class C implements A<int>, B<String> {} /// -/// void main() { +/// main() { /// var c = new C(); /// print(extractTypeArguments<A>(c, <T>() => <T>[])); /// // Prints: Instance of 'List<int>'. @@ -827,7 +829,10 @@ /// or the first two numbers of a semantic version (like `1.0` or `2.2`), /// representing a stable release, and equivalent to the semantic version /// you get by appending a `.0`. -class const Since(final String version); +class Since { + final String version; + const Since(this.version); +} /// A null-check function for function parameters in Null Safety enabled code. /// @@ -847,9 +852,9 @@ } /// A [TypeError] thrown by [checkNotNullable]. -class NotNullableError<T>(final String _name) - extends Error - implements TypeError { +class NotNullableError<T> extends Error implements TypeError { + final String _name; + NotNullableError(this._name); String toString() => "Null is not a valid value for '$_name' of type '$T'"; } @@ -874,7 +879,7 @@ /** * HTTP status codes. Exported in dart:io and dart:html. */ -abstract interface class HttpStatus { +abstract class HttpStatus { static const int continue_ = 100; static const int switchingProtocols = 101; static const int processing = 102; @@ -1052,15 +1057,15 @@ // this publicly visible type. // // TODO: @Deprecated("Will be removed in a future release") -class DoubleLinkedQueueEntry<E>( - /// The element of the entry in the queue. - var E element, -) { +class DoubleLinkedQueueEntry<E> { DoubleLinkedQueueEntry<E>? _previousLink; DoubleLinkedQueueEntry<E>? _nextLink; + /// The element of the entry in the queue. + E element; + /// Creates a new entry with the given [element]. - this; + DoubleLinkedQueueEntry(this.element); void _link( DoubleLinkedQueueEntry<E>? previous, @@ -1145,7 +1150,7 @@ /// perform an `v is T` type test. /// /// Intended use: `TypeTest<T>().test`. -final class const TypeTest<T>() { +class TypeTest<T> { bool test(Object? v) => v is T; }
diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart index 3110ec5..ec53266 100644 --- a/sdk/lib/internal/iterable.dart +++ b/sdk/lib/internal/iterable.dart
@@ -4,13 +4,18 @@ part of "dart:_internal"; -/// Marker interface for [Iterable] subclasses that have an efficient -/// [length] implementation. -abstract class const EfficientLengthIterable<T>() extends Iterable<T> { - /// The number of elements in the iterable. - /// - /// This is an efficient operation that doesn't require iterating through - /// the elements. +/** + * Marker interface for [Iterable] subclasses that have an efficient + * [length] implementation. + */ +abstract class EfficientLengthIterable<T> extends Iterable<T> { + const EfficientLengthIterable(); + /** + * Returns the number of elements in the iterable. + * + * This is an efficient operation that doesn't require iterating through + * the elements. + */ int get length; } @@ -20,7 +25,8 @@ /// this interface, and they have the same *depth*, so it's impossible /// for the upper-bound algorithm to get [EfficientLengthIterable] /// as the result. -abstract interface class HideEfficientLengthIterable<T> implements Iterable<T>; +abstract interface class HideEfficientLengthIterable<T> + implements Iterable<T> {} /** * An [Iterable] for classes that have efficient [length] and [elementAt]. @@ -1066,8 +1072,10 @@ : (throw IterableElementError.noElement()); } -/// Creates errors throw by [Iterable] when the element count is wrong. -abstract interface class IterableElementError { +/** + * Creates errors throw by [Iterable] when the element count is wrong. + */ +abstract class IterableElementError { /** Error thrown by, e.g., [Iterable.first] when there is no result. */ static StateError noElement() => StateError("No element"); /** Error thrown by, e.g., [Iterable.single] if there are too many results. */
diff --git a/sdk/lib/internal/linked_list.dart b/sdk/lib/internal/linked_list.dart index b185bf4..1dc53fc 100644 --- a/sdk/lib/internal/linked_list.dart +++ b/sdk/lib/internal/linked_list.dart
@@ -5,7 +5,7 @@ part of "dart:_internal"; /// A rudimentary linked list. -class LinkedList<T extends LinkedListEntry<T>>() extends Iterable<T> { +class LinkedList<T extends LinkedListEntry<T>> extends Iterable<T> { T get first => _first as T; T? _first; @@ -78,7 +78,7 @@ Iterator<T> get iterator => _LinkedListIterator<T>(this); } -class LinkedListEntry<T extends LinkedListEntry<T>>() { +class LinkedListEntry<T extends LinkedListEntry<T>> { T? _next; T? _previous; LinkedList<T>? _list;
diff --git a/sdk/lib/internal/list.dart b/sdk/lib/internal/list.dart index 8ecf73a..09b73a1 100644 --- a/sdk/lib/internal/list.dart +++ b/sdk/lib/internal/list.dart
@@ -254,10 +254,12 @@ E elementAt(int index) => _source.elementAt(_source.length - 1 - index); } -/// Creates errors thrown by unmodifiable lists when they are attempted modified. -/// -/// This class creates [UnsupportedError]s with specialized messages. -abstract interface class UnmodifiableListError { +/** + * Creates errors thrown by unmodifiable lists when they are attempted modified. + * + * This class creates [UnsupportedError]s with specialized messages. + */ +abstract class UnmodifiableListError { /** Error thrown when trying to add elements to an unmodifiable list. */ static UnsupportedError add() => UnsupportedError("Cannot add to unmodifiable List"); @@ -275,10 +277,12 @@ UnsupportedError("Cannot remove from unmodifiable List"); } -/// Creates errors thrown by non-growable lists when attempted modified. -/// -/// This class creates [UnsupportedError]s with specialized messages. -abstract interface class NonGrowableListError { +/** + * Creates errors thrown by non-growable lists when they are attempted modified. + * + * This class creates [UnsupportedError]s with specialized messages. + */ +abstract class NonGrowableListError { /** Error thrown when trying to add elements to an non-growable list. */ static UnsupportedError add() => UnsupportedError("Cannot add to non-growable List");
diff --git a/sdk/lib/internal/sort.dart b/sdk/lib/internal/sort.dart index b2d665d..1452406 100644 --- a/sdk/lib/internal/sort.dart +++ b/sdk/lib/internal/sort.dart
@@ -12,7 +12,7 @@ * * Some improvements have been copied from Android's implementation. */ -abstract interface class Sort { +class Sort { // When a list has less than [:_INSERTION_SORT_THRESHOLD:] elements it will // be sorted by an insertion sort. static const int _INSERTION_SORT_THRESHOLD = 32;
diff --git a/sdk/lib/math/point.dart b/sdk/lib/math/point.dart index b0ddaf4..f636244 100644 --- a/sdk/lib/math/point.dart +++ b/sdk/lib/math/point.dart
@@ -40,7 +40,7 @@ /// /// **Legacy:** New usages of [Point] are discouraged. /// To learn more, check out the [Point] class API docs. - const new(T x, T y) : this.x = x, this.y = y; + const Point(T x, T y) : this.x = x, this.y = y; String toString() => 'Point($x, $y)';
diff --git a/sdk/lib/math/random.dart b/sdk/lib/math/random.dart index 0eb9194..014aec3 100644 --- a/sdk/lib/math/random.dart +++ b/sdk/lib/math/random.dart
@@ -34,13 +34,13 @@ /// The optional parameter [seed] is used to initialize the /// internal state of the generator. The implementation of the /// random stream can change between releases of the library. - external factory([int? seed]); + external factory Random([int? seed]); /// Creates a cryptographically secure random number generator. /// /// If the program cannot provide a cryptographically secure /// source of random numbers, it throws an [UnsupportedError]. - external factory secure(); + external factory Random.secure(); /// Generates a non-negative random integer uniformly distributed in the range /// from 0, inclusive, to [max], exclusive.
diff --git a/sdk/lib/math/rectangle.dart b/sdk/lib/math/rectangle.dart index d059c6a..2b1b8f3 100644 --- a/sdk/lib/math/rectangle.dart +++ b/sdk/lib/math/rectangle.dart
@@ -176,7 +176,7 @@ /// /// **Legacy:** New usages of [Rectangle] are discouraged. /// To learn more, check out the [Rectangle] class API docs. - const new(this.left, this.top, T width, T height) + const Rectangle(this.left, this.top, T width, T height) : width = (width < 0) ? (width == double.negativeInfinity ? 0.0 : (-width * 0)) as dynamic : (width + 0 as dynamic), // Inline _clampToZero<num>. @@ -207,7 +207,7 @@ /// print(rectangle.right); // 300 /// print(rectangle.bottom); // 600 /// ``` - factory fromPoints(Point<T> a, Point<T> b) { + factory Rectangle.fromPoints(Point<T> a, Point<T> b) { T left = min(a.x, b.x); T width = (max(a.x, b.x) - left) as T; T top = min(a.y, b.y); @@ -318,7 +318,7 @@ /// print(rectangle.right); // 300 /// print(rectangle.bottom); // 600 /// ``` - factory fromPoints(Point<T> a, Point<T> b) { + factory MutableRectangle.fromPoints(Point<T> a, Point<T> b) { T left = min(a.x, b.x); T width = (max(a.x, b.x) - left) as T; T top = min(a.y, b.y);
diff --git a/sdk/lib/typed_data/typed_data.dart b/sdk/lib/typed_data/typed_data.dart index a4866fc..45e39a9 100644 --- a/sdk/lib/typed_data/typed_data.dart +++ b/sdk/lib/typed_data/typed_data.dart
@@ -359,7 +359,7 @@ /// A [TypedData] fixed-length [List]-view on the bytes of [buffer]. @Since("3.5") -abstract final class TypedDataList<E> implements TypedData, List<E>; +abstract final class TypedDataList<E> implements TypedData, List<E> {} abstract final class _TypedIntList implements TypedDataList<int> { /// The concatenation of this list and [other]. @@ -398,7 +398,10 @@ /// /// It is a compile-time error for a class to attempt to extend or implement /// `Endian`. -final class const Endian._(final bool _littleEndian) { +final class Endian { + final bool _littleEndian; + const Endian._(this._littleEndian); + static const Endian big = Endian._(false); static const Endian little = Endian._(true); static final Endian host = @@ -445,7 +448,7 @@ /// Creates a [ByteData] of the specified length (in elements), all of /// whose bytes are initially zero. @pragma("vm:entry-point") - external factory(int length); + external factory ByteData(int length); /// Creates an [ByteData] _view_ of the specified region in [buffer]. /// @@ -476,7 +479,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory ByteData.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asByteData(offsetInBytes, length); } @@ -496,7 +503,7 @@ /// is the same as the [List.length] of a typed data list. /// /// If omitted, [start] defaults to zero and [end] to *elementCount*. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory ByteData.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -739,7 +746,7 @@ /// whose elements are initially zero. /// /// The list is backed by a [ByteBuffer] containing precisely [length] bytes. - external factory(int length); + external factory Int8List(int length); /// Creates a [Int8List] with the same length as the [elements] list /// and copies over the elements. @@ -749,7 +756,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely `elements.length` /// bytes. - external factory fromList(List<int> elements); + external factory Int8List.fromList(List<int> elements); /// Creates an [Int8List] _view_ of the specified region in [buffer]. /// @@ -780,7 +787,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Int8List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asInt8List(offsetInBytes, length); } @@ -800,7 +811,7 @@ /// is the same as the [List.length] of a typed data list. /// /// If omitted, [start] defaults to zero and [end] to *elementCount*. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Int8List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -859,7 +870,7 @@ /// whose elements are initially zero. /// /// The list is backed by a [ByteBuffer] containing precisely [length] bytes. - external factory(int length); + external factory Uint8List(int length); /// Creates a [Uint8List] with the same length as the [elements] list /// and copies over the elements. @@ -869,7 +880,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely `elements.length` /// bytes. - external factory fromList(List<int> elements); + external factory Uint8List.fromList(List<int> elements); /// Creates a [Uint8List] _view_ of the specified region in [buffer]. /// @@ -900,7 +911,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Uint8List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asUint8List(offsetInBytes, length); } @@ -920,7 +935,7 @@ /// is the same as the [List.length] of a typed data list. /// /// If omitted, [start] defaults to zero and [end] to *elementCount*. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Uint8List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -986,7 +1001,7 @@ /// whose elements are initially zero. /// /// The list is backed by a [ByteBuffer] containing precisely [length] bytes. - external factory(int length); + external factory Uint8ClampedList(int length); /// Creates a [Uint8ClampedList] of the same size as the [elements] /// list and copies over the values clamping when needed. @@ -996,7 +1011,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely `elements.length` /// bytes. - external factory fromList(List<int> elements); + external factory Uint8ClampedList.fromList(List<int> elements); /// Creates a [Uint8ClampedList] _view_ of the specified region in the /// specified byte [buffer]. @@ -1028,7 +1043,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Uint8ClampedList.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asUint8ClampedList(offsetInBytes, length); } @@ -1049,7 +1068,11 @@ /// /// If omitted, [start] defaults to zero and [end] to *elementCount*. @Since("3.3") - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Uint8ClampedList.sublistView( + TypedData data, [ + int start = 0, + int? end, + ]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1110,7 +1133,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 2 bytes. - external factory(int length); + external factory Int16List(int length); /// Creates a [Int16List] with the same length as the [elements] list /// and copies over the elements. @@ -1120,7 +1143,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 2 bytes. - external factory fromList(List<int> elements); + external factory Int16List.fromList(List<int> elements); /// Creates an [Int16List] _view_ of the specified region in [buffer]. /// @@ -1153,7 +1176,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Int16List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asInt16List(offsetInBytes, length); } @@ -1176,7 +1203,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of two. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Int16List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1244,7 +1271,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 2 bytes. - external factory(int length); + external factory Uint16List(int length); /// Creates a [Uint16List] with the same length as the [elements] list /// and copies over the elements. @@ -1254,7 +1281,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 2 bytes. - external factory fromList(List<int> elements); + external factory Uint16List.fromList(List<int> elements); /// Creates a [Uint16List] _view_ of the specified region in /// the specified byte buffer. @@ -1288,7 +1315,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Uint16List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asUint16List(offsetInBytes, length); } @@ -1311,7 +1342,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of two. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Uint16List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1379,7 +1410,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 4 bytes. - external factory(int length); + external factory Int32List(int length); /// Creates a [Int32List] with the same length as the [elements] list /// and copies over the elements. @@ -1389,7 +1420,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 4 bytes. - external factory fromList(List<int> elements); + external factory Int32List.fromList(List<int> elements); /// Creates an [Int32List] _view_ of the specified region in [buffer]. /// @@ -1422,7 +1453,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Int32List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asInt32List(offsetInBytes, length); } @@ -1445,7 +1480,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of four. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Int32List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1513,7 +1548,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 4 bytes. - external factory(int length); + external factory Uint32List(int length); /// Creates a [Uint32List] with the same length as the [elements] list /// and copies over the elements. @@ -1523,7 +1558,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 4 bytes. - external factory fromList(List<int> elements); + external factory Uint32List.fromList(List<int> elements); /// Creates a [Uint32List] _view_ of the specified region in /// the specified byte buffer. @@ -1557,7 +1592,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Uint32List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asUint32List(offsetInBytes, length); } @@ -1580,7 +1619,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of four. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Uint32List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1648,7 +1687,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 8 bytes. - external factory(int length); + external factory Int64List(int length); /// Creates a [Int64List] with the same length as the [elements] list /// and copies over the elements. @@ -1658,7 +1697,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 8 bytes. - external factory fromList(List<int> elements); + external factory Int64List.fromList(List<int> elements); /// Creates an [Int64List] _view_ of the specified region in [buffer]. /// @@ -1691,7 +1730,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Int64List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asInt64List(offsetInBytes, length); } @@ -1714,7 +1757,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of eight. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Int64List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1782,7 +1825,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 8 bytes. - external factory(int length); + external factory Uint64List(int length); /// Creates a [Uint64List] with the same length as the [elements] list /// and copies over the elements. @@ -1792,7 +1835,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 8 bytes. - external factory fromList(List<int> elements); + external factory Uint64List.fromList(List<int> elements); /// Creates an [Uint64List] _view_ of the specified region in /// the specified byte buffer. @@ -1826,7 +1869,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Uint64List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asUint64List(offsetInBytes, length); } @@ -1849,7 +1896,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of eight. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Uint64List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -1918,7 +1965,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 4 bytes. - external factory(int length); + external factory Float32List(int length); /// Creates a [Float32List] with the same length as the [elements] list /// and copies over the elements. @@ -1928,7 +1975,7 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 4 bytes. - external factory fromList(List<double> elements); + external factory Float32List.fromList(List<double> elements); /// Creates a [Float32List] _view_ of the specified region in [buffer]. /// @@ -1961,7 +2008,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Float32List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asFloat32List(offsetInBytes, length); } @@ -1984,7 +2035,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of four. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Float32List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -2049,14 +2100,14 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 8 bytes. - external factory(int length); + external factory Float64List(int length); /// Creates a [Float64List] with the same length as the [elements] list /// and copies over the elements. /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 8 bytes. - external factory fromList(List<double> elements); + external factory Float64List.fromList(List<double> elements); /// Creates a [Float64List] _view_ of the specified region in [buffer]. /// @@ -2089,7 +2140,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Float64List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asFloat64List(offsetInBytes, length); } @@ -2112,7 +2167,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of eight. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Float64List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -2177,14 +2232,14 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 16 bytes. - external factory(int length); + external factory Float32x4List(int length); /// Creates a [Float32x4List] with the same length as the [elements] list /// and copies over the elements. /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 16 bytes. - external factory fromList(List<Float32x4> elements); + external factory Float32x4List.fromList(List<Float32x4> elements); /// Creates a [Float32x4List] _view_ of the specified region in [buffer]. /// @@ -2217,7 +2272,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Float32x4List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asFloat32x4List(offsetInBytes, length); } @@ -2240,7 +2299,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of sixteen. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Float32x4List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -2313,14 +2372,14 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 16 bytes. - external factory(int length); + external factory Int32x4List(int length); /// Creates a [Int32x4List] with the same length as the [elements] list /// and copies over the elements. /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 16 bytes. - external factory fromList(List<Int32x4> elements); + external factory Int32x4List.fromList(List<Int32x4> elements); /// Creates a [Int32x4List] _view_ of the specified region in [buffer]. /// @@ -2353,7 +2412,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Int32x4List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asInt32x4List(offsetInBytes, length); } @@ -2376,7 +2439,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of sixteen. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Int32x4List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -2453,14 +2516,14 @@ /// /// The list is backed by a [ByteBuffer] containing precisely /// [length] times 16 bytes. - external factory(int length); + external factory Float64x2List(int length); /// Creates a [Float64x2List] with the same length as the [elements] list /// and copies over the elements. /// /// The list is backed by a [ByteBuffer] containing precisely /// `elements.length` times 16 bytes. - external factory fromList(List<Float64x2> elements); + external factory Float64x2List.fromList(List<Float64x2> elements); /// The concatenation of this list and [other]. /// @@ -2499,7 +2562,11 @@ /// (The third argument is an end index rather than a length, so if /// you start from a position greater than zero, you need not /// reduce the count correspondingly). - factory view(ByteBuffer buffer, [int offsetInBytes = 0, int? length]) { + factory Float64x2List.view( + ByteBuffer buffer, [ + int offsetInBytes = 0, + int? length, + ]) { return buffer.asFloat64x2List(offsetInBytes, length); } @@ -2522,7 +2589,7 @@ /// /// The start and end indices of the range of bytes being viewed must be /// multiples of sixteen. - factory sublistView(TypedData data, [int start = 0, int? end]) { + factory Float64x2List.sublistView(TypedData data, [int start = 0, int? end]) { int elementSize = data.elementSizeInBytes; end = RangeError.checkValidRange( start, @@ -2600,7 +2667,7 @@ /// The conversion from 64-bit float to 32-bit float loses significant /// precision, and may become zero or infinite even if the original 64-bit /// floating point value was non-zero and finite. - external factory(double x, double y, double z, double w); + external factory Float32x4(double x, double y, double z, double w); /// Creates a `Float32x4` with the same 32-bit float value four times. /// @@ -2612,13 +2679,13 @@ /// The conversion from 64-bit float to 32-bit float loses significant /// precision, and may become zero or infinite even if the original 64-bit /// floating point value was non-zero and finite. - external factory splat(double value); + external factory Float32x4.splat(double value); /// Creates a `Float32x4` with all values being zero. /// /// The created value has the same [Float32x4.x], [Float32x4.y], [Float32x4.z] /// and [Float32x4.w] value, which is the 32-bit floating point zero value. - external factory zero(); + external factory Float32x4.zero(); /// Creates a `Float32x4` with 32-bit float values from the provided bits. /// @@ -2628,7 +2695,7 @@ /// /// The conversion is performed using the *platform endianness* for both /// 32-bit integers and 32-bit floating point numbers. - external factory fromInt32x4Bits(Int32x4 bits); + external factory Float32x4.fromInt32x4Bits(Int32x4 bits); /// Creates a `Float32x4` with its [x] and [y] lanes set to values from [xy]. /// @@ -2636,7 +2703,7 @@ /// which are the conversions of the [Float64x2.x] and [Float64x2.y] lanes /// of [xy] to 32-bit floating point values. /// The [Float32x4.z] and [Float32x4.w] lanes are set to the zero value. - external factory fromFloat64x2(Float64x2 xy); + external factory Float32x4.fromFloat64x2(Float64x2 xy); /// Lane-wise addition. /// @@ -4262,9 +4329,9 @@ /// Int32x4 stores 4 32-bit bit-masks in "lanes". /// The lanes are "x", "y", "z", and "w" respectively. abstract final class Int32x4 { - external factory(int x, int y, int z, int w); - external factory bool(bool x, bool y, bool z, bool w); - external factory fromFloat32x4Bits(Float32x4 x); + external factory Int32x4(int x, int y, int z, int w); + external factory Int32x4.bool(bool x, bool y, bool z, bool w); + external factory Int32x4.fromFloat32x4Bits(Float32x4 x); /// The bit-wise or operator. Int32x4 operator |(Int32x4 other); @@ -4616,12 +4683,12 @@ /// It is a compile-time error for a class to attempt to extend or implement /// `Float64x2`. abstract final class Float64x2 { - external factory(double x, double y); - external factory splat(double v); - external factory zero(); + external factory Float64x2(double x, double y); + external factory Float64x2.splat(double v); + external factory Float64x2.zero(); /// Uses the "x" and "y" lanes from [v]. - external factory fromFloat32x4(Float32x4 v); + external factory Float64x2.fromFloat32x4(Float32x4 v); /// Addition operator. Float64x2 operator +(Float64x2 other);