Version 2.17.0-101.0.dev
Merge commit '4dbd35f04d47ccdcb14086054941c610f2bae82d' into 'dev'
diff --git a/pkg/compiler/test/analyses/api_allowed.json b/pkg/compiler/test/analyses/api_allowed.json
index 7fe7b5a..c54c832 100644
--- a/pkg/compiler/test/analyses/api_allowed.json
+++ b/pkg/compiler/test/analyses/api_allowed.json
@@ -1,4 +1,19 @@
{
+ "org-dartlang-sdk:///lib/_http/http_impl.dart": {
+ "Dynamic access of 'message'.": 3,
+ "Dynamic invocation of 'destroy'.": 1,
+ "Dynamic access of 'address'.": 2,
+ "Dynamic access of 'host'.": 2,
+ "Dynamic access of 'port'.": 2,
+ "Dynamic access of 'remoteAddress'.": 1,
+ "Dynamic access of 'remotePort'.": 1,
+ "Dynamic invocation of 'dart._http::_toJSON'.": 3,
+ "Dynamic invocation of 'listen'.": 1,
+ "Dynamic invocation of 'close'.": 1
+ },
+ "org-dartlang-sdk:///lib/_http/websocket_impl.dart": {
+ "Dynamic invocation of 'dart._http::_toJSON'.": 1
+ },
"org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart": {
"Dynamic invocation of '[]'.": 5
},
@@ -9,6 +24,12 @@
"Dynamic access of 'iterator'.": 1,
"Dynamic invocation of 'then'.": 1
},
+ "org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart": {
+ "Dynamic invocation of 'clear'.": 1
+ },
+ "org-dartlang-sdk:///lib/convert/json.dart": {
+ "Dynamic invocation of 'toJson'.": 1
+ },
"org-dartlang-sdk:///lib/html/dart2js/html_dart2js.dart": {
"Dynamic access of 'style'.": 1,
"Dynamic invocation of 'remove'.": 2,
@@ -87,28 +108,5 @@
},
"org-dartlang-sdk:///lib/core/errors.dart": {
"Dynamic access of 'length'.": 2
- },
- "org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart": {
- "Dynamic invocation of 'clear'.": 1
- },
- "org-dartlang-sdk:///lib/convert/json.dart": {
- "Dynamic invocation of 'toJson'.": 1
- },
- "org-dartlang-sdk:///lib/_http/http_impl.dart": {
- "Dynamic access of 'message'.": 3,
- "Dynamic invocation of 'destroy'.": 2,
- "Dynamic access of 'address'.": 3,
- "Dynamic access of 'type'.": 1,
- "Dynamic invocation of 'setOption'.": 1,
- "Dynamic access of 'host'.": 2,
- "Dynamic access of 'port'.": 2,
- "Dynamic access of 'remoteAddress'.": 1,
- "Dynamic access of 'remotePort'.": 1,
- "Dynamic invocation of 'dart._http::_toJSON'.": 3,
- "Dynamic invocation of 'listen'.": 1,
- "Dynamic invocation of 'close'.": 1
- },
- "org-dartlang-sdk:///lib/_http/websocket_impl.dart": {
- "Dynamic invocation of 'dart._http::_toJSON'.": 1
}
}
\ No newline at end of file
diff --git a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
index d23c72b..1eed920 100644
--- a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
@@ -335,6 +335,15 @@
members["toString"] = toStringBuilder;
}
String className = name;
+ final int startCharOffsetComputed =
+ metadata == null ? startCharOffset : metadata.first.charOffset;
+ scope.forEachLocalMember((name, member) {
+ members[name] = member as MemberBuilder;
+ });
+ scope.forEachLocalSetter((name, member) {
+ setters[name] = member;
+ });
+
if (enumConstantInfos != null) {
for (int i = 0; i < enumConstantInfos.length; i++) {
EnumConstantInfo enumConstantInfo = enumConstantInfos[i]!;
@@ -345,6 +354,18 @@
// The existing declaration is synthetic if it has the same
// charOffset as the enclosing enum.
bool isSynthetic = existing.charOffset == charOffset;
+
+ // Report the error on the member that occurs later in the code.
+ int existingOffset;
+ int duplicateOffset;
+ if (existing.charOffset < enumConstantInfo.charOffset) {
+ existingOffset = existing.charOffset;
+ duplicateOffset = enumConstantInfo.charOffset;
+ } else {
+ existingOffset = enumConstantInfo.charOffset;
+ duplicateOffset = existing.charOffset;
+ }
+
List<LocatedMessage> context = isSynthetic
? <LocatedMessage>[
templateDuplicatedDeclarationSyntheticCause
@@ -355,11 +376,10 @@
: <LocatedMessage>[
templateDuplicatedDeclarationCause
.withArguments(name)
- .withLocation(
- parent.fileUri, existing.charOffset, name.length)
+ .withLocation(parent.fileUri, existingOffset, name.length)
];
parent.addProblem(templateDuplicatedDeclaration.withArguments(name),
- enumConstantInfo.charOffset, name.length, parent.fileUri,
+ duplicateOffset, name.length, parent.fileUri,
context: context);
enumConstantInfos[i] = null;
} else if (name == className) {
@@ -396,14 +416,7 @@
members[name] = fieldBuilder..next = existing;
}
}
- final int startCharOffsetComputed =
- metadata == null ? startCharOffset : metadata.first.charOffset;
- scope.forEachLocalMember((name, member) {
- members[name] = member as MemberBuilder;
- });
- scope.forEachLocalSetter((name, member) {
- setters[name] = member;
- });
+
SourceEnumBuilder enumBuilder = new SourceEnumBuilder.internal(
metadata,
name,
@@ -461,14 +474,7 @@
@override
TypeBuilder? get mixedInTypeBuilder => null;
- @override
- Class build(SourceLibraryBuilder libraryBuilder, LibraryBuilder coreLibrary) {
- cls.isEnum = true;
- intType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
- stringType.resolveIn(
- coreLibrary.scope, charOffset, fileUri, libraryBuilder);
- objectType.resolveIn(
- coreLibrary.scope, charOffset, fileUri, libraryBuilder);
+ NamedTypeBuilder? _computeEnumSupertype() {
TypeBuilder? supertypeBuilder = this.supertypeBuilder;
NamedTypeBuilder? enumType;
@@ -482,6 +488,18 @@
}
}
assert(enumType is NamedTypeBuilder && enumType.name == "_Enum");
+ return enumType;
+ }
+
+ @override
+ Class build(SourceLibraryBuilder libraryBuilder, LibraryBuilder coreLibrary) {
+ cls.isEnum = true;
+ intType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
+ stringType.resolveIn(
+ coreLibrary.scope, charOffset, fileUri, libraryBuilder);
+ objectType.resolveIn(
+ coreLibrary.scope, charOffset, fileUri, libraryBuilder);
+ NamedTypeBuilder? enumType = _computeEnumSupertype();
enumType!.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
listType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
@@ -682,21 +700,20 @@
SourceProcedureBuilder toStringBuilder =
firstMemberNamed("toString") as SourceProcedureBuilder;
- TypeBuilder supertypeBuilder = this.supertypeBuilder!;
- ClassBuilder enumClass = supertypeBuilder.declaration as ClassBuilder;
+ ClassBuilder enumClass =
+ _computeEnumSupertype()!.declaration as ClassBuilder;
MemberBuilder? nameFieldBuilder =
enumClass.lookupLocalMember("_name") as MemberBuilder?;
- if (nameFieldBuilder != null) {
- Field nameField = nameFieldBuilder.member as Field;
+ assert(nameFieldBuilder != null);
+ Field nameField = nameFieldBuilder!.member as Field;
- toStringBuilder.body = new ReturnStatement(new StringConcatenation([
- new StringLiteral("${cls.demangledName}."),
- new InstanceGet.byReference(
- InstanceAccessKind.Instance, new ThisExpression(), nameField.name,
- interfaceTargetReference: nameField.getterReference,
- resultType: nameField.getterType),
- ]));
- }
+ toStringBuilder.body = new ReturnStatement(new StringConcatenation([
+ new StringLiteral("${cls.demangledName}."),
+ new InstanceGet.byReference(
+ InstanceAccessKind.Instance, new ThisExpression(), nameField.name,
+ interfaceTargetReference: nameField.getterReference,
+ resultType: nameField.getterType),
+ ]));
super.buildOutlineExpressions(library, classHierarchy,
delayedActionPerformers, synthesizedFunctionNodes);
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index 766d631..3130c75 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -2514,9 +2514,11 @@
}
abstract class Enum {
+ String get _name;
}
abstract class _Enum {
+ final String _name;
}
class String {}
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart
new file mode 100644
index 0000000..ad84c08
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart
@@ -0,0 +1,69 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+enum E1 {
+ element;
+ final int element = 42; // Error.
+}
+
+enum E2 {
+ element,
+ element; // Error.
+}
+
+enum E3 {
+ element;
+
+ void element() {} // Error.
+}
+
+enum E4 {
+ element;
+
+ static void element() {} // Error.
+}
+
+enum E5 {
+ element;
+
+ static int element = 42; // Error.
+}
+
+enum E6 {
+ element; // Error.
+
+ void set element(E6 value) {}
+}
+
+enum E7 {
+ element; // Ok.
+
+ static void set element(E7 value) {}
+}
+
+class A8 {
+ void set element(dynamic value) {}
+}
+
+enum E8 with A8 {
+ element // Error.
+}
+
+class A9 {
+ int element = 42;
+}
+
+enum E9 with A9 {
+ element // Error.
+}
+
+class A10 {
+ void element() {}
+}
+
+enum E10 with A10 {
+ element // Error.
+}
+
+main() {}
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
new file mode 100644
index 0000000..bac3cd9
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.expect
@@ -0,0 +1,241 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:7:13: Error: 'element' is already declared in this scope.
+// final int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:6:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:12:3: Error: 'element' is already declared in this scope.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:11:3: Context: Previous declaration of 'element'.
+// element,
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:18:8: Error: 'element' is already declared in this scope.
+// void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:16:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:24:15: Error: 'element' is already declared in this scope.
+// static void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:22:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:30:14: Error: 'element' is already declared in this scope.
+// static int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:28:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:34:3: Error: This static member conflicts with an instance member.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:36:12: Context: This is the instance member.
+// void set element(E6 value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:50:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:46:12: Context: This is the inherited member.
+// void set element(dynamic value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:58:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:54:7: Context: This is the inherited member.
+// int element = 42;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:66:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:62:8: Context: This is the inherited member.
+// void element() {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:57:6: Error: A constant constructor can't call a non-constant super constructor.
+// enum E9 with A9 {
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C1;
+ final field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E1
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C5;
+ static const field self::E2 element = #C4;
+ const constructor •(core::int index, core::String name) → self::E2
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C6;
+ const constructor •(core::int index, core::String name) → self::E3
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
+ method element() → void {}
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C7;
+ const constructor •(core::int index, core::String name) → self::E4
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E4.${this.{core::_Enum::_name}{core::String}}";
+ static method element() → void {}
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C8;
+ static field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E5
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E5.${this.{core::_Enum::_name}{core::String}}";
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C10;
+ static const field self::E6 element = #C9;
+ const constructor •(core::int index, core::String name) → self::E6
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E6.${this.{core::_Enum::_name}{core::String}}";
+ set element(self::E6 value) → void {}
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C12;
+ static const field self::E7 element = #C11;
+ const constructor •(core::int index, core::String name) → self::E7
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E7.${this.{core::_Enum::_name}{core::String}}";
+ static set element(self::E7 value) → void {}
+}
+class A8 extends core::Object {
+ synthetic constructor •() → self::A8
+ : super core::Object::•()
+ ;
+ set element(dynamic value) → void {}
+}
+abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub set element(dynamic value) → void
+ return super.{self::A8::element} = value;
+}
+class E8 extends self::_E8&_Enum&A8 /*isEnum*/ {
+ static const field core::List<self::E8> values = #C14;
+ static const field self::E8 element = #C13;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super self::_E8&_Enum&A8::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+}
+class A9 extends core::Object {
+ field core::int element = 42;
+ synthetic constructor •() → self::A9
+ : super core::Object::•()
+ ;
+}
+abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ {
+ synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub get element() → core::int
+ return super.{self::A9::element};
+ mixin-super-stub set element(core::int value) → void
+ return super.{self::A9::element} = value;
+}
+class E9 extends self::_E9&_Enum&A9 /*isEnum*/ {
+ static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ const constructor •(core::int index, core::String name) → self::E9
+ : super self::_E9&_Enum&A9::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+}
+class A10 extends core::Object {
+ synthetic constructor •() → self::A10
+ : super core::Object::•()
+ ;
+ method element() → void {}
+}
+abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method element() → void
+ return super.{self::A10::element}();
+}
+class E10 extends self::_E10&_Enum&A10 /*isEnum*/ {
+ static const field core::List<self::E10> values = #C16;
+ static const field self::E10 element = #C15;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super self::_E10&_Enum&A10::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = <self::E1>[]
+ #C2 = 0
+ #C3 = "element"
+ #C4 = self::E2 {index:#C2, _name:#C3}
+ #C5 = <self::E2>[#C4]
+ #C6 = <self::E3>[]
+ #C7 = <self::E4>[]
+ #C8 = <self::E5>[]
+ #C9 = self::E6 {index:#C2, _name:#C3}
+ #C10 = <self::E6>[#C9]
+ #C11 = self::E7 {index:#C2, _name:#C3}
+ #C12 = <self::E7>[#C11]
+ #C13 = self::E8 {index:#C2, _name:#C3}
+ #C14 = <self::E8>[#C13]
+ #C15 = self::E10 {index:#C2, _name:#C3}
+ #C16 = <self::E10>[#C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///conflicting_elements.dart:
+- E2. (from org-dartlang-testcase:///conflicting_elements.dart:10:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- E6. (from org-dartlang-testcase:///conflicting_elements.dart:33:6)
+- E7. (from org-dartlang-testcase:///conflicting_elements.dart:39:6)
+- E8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- _E8&_Enum&A8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- E9. (from org-dartlang-testcase:///conflicting_elements.dart:57:6)
+- E10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
+- _E10&_Enum&A10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
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
new file mode 100644
index 0000000..37fade4
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.strong.transformed.expect
@@ -0,0 +1,236 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:7:13: Error: 'element' is already declared in this scope.
+// final int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:6:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:12:3: Error: 'element' is already declared in this scope.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:11:3: Context: Previous declaration of 'element'.
+// element,
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:18:8: Error: 'element' is already declared in this scope.
+// void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:16:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:24:15: Error: 'element' is already declared in this scope.
+// static void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:22:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:30:14: Error: 'element' is already declared in this scope.
+// static int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:28:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:34:3: Error: This static member conflicts with an instance member.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:36:12: Context: This is the instance member.
+// void set element(E6 value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:50:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:46:12: Context: This is the inherited member.
+// void set element(dynamic value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:58:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:54:7: Context: This is the inherited member.
+// int element = 42;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:66:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:62:8: Context: This is the inherited member.
+// void element() {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:57:6: Error: A constant constructor can't call a non-constant super constructor.
+// enum E9 with A9 {
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C1;
+ final field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E1
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C5;
+ static const field self::E2 element = #C4;
+ const constructor •(core::int index, core::String name) → self::E2
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C6;
+ const constructor •(core::int index, core::String name) → self::E3
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
+ method element() → void {}
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C7;
+ const constructor •(core::int index, core::String name) → self::E4
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E4.${this.{core::_Enum::_name}{core::String}}";
+ static method element() → void {}
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C8;
+ static field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E5
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E5.${this.{core::_Enum::_name}{core::String}}";
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C10;
+ static const field self::E6 element = #C9;
+ const constructor •(core::int index, core::String name) → self::E6
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E6.${this.{core::_Enum::_name}{core::String}}";
+ set element(self::E6 value) → void {}
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C12;
+ static const field self::E7 element = #C11;
+ const constructor •(core::int index, core::String name) → self::E7
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E7.${this.{core::_Enum::_name}{core::String}}";
+ static set element(self::E7 value) → void {}
+}
+class A8 extends core::Object {
+ synthetic constructor •() → self::A8
+ : super core::Object::•()
+ ;
+ set element(dynamic value) → void {}
+}
+abstract class _E8&_Enum&A8 extends core::_Enum implements self::A8 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
+ : super core::_Enum::•(index, _name)
+ ;
+ set element(dynamic value) → void {}
+}
+class E8 extends self::_E8&_Enum&A8 /*isEnum*/ {
+ static const field core::List<self::E8> values = #C14;
+ static const field self::E8 element = #C13;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super self::_E8&_Enum&A8::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+}
+class A9 extends core::Object {
+ field core::int element = 42;
+ synthetic constructor •() → self::A9
+ : super core::Object::•()
+ ;
+}
+abstract class _E9&_Enum&A9 extends core::_Enum implements self::A9 /*isAnonymousMixin,isEliminatedMixin*/ {
+ field core::int element = 42;
+ synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
+ : super core::_Enum::•(index, _name)
+ ;
+}
+class E9 extends self::_E9&_Enum&A9 /*isEnum*/ {
+ static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ const constructor •(core::int index, core::String name) → self::E9
+ : super self::_E9&_Enum&A9::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+}
+class A10 extends core::Object {
+ synthetic constructor •() → self::A10
+ : super core::Object::•()
+ ;
+ method element() → void {}
+}
+abstract class _E10&_Enum&A10 extends core::_Enum implements self::A10 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
+ : super core::_Enum::•(index, _name)
+ ;
+ method element() → void {}
+}
+class E10 extends self::_E10&_Enum&A10 /*isEnum*/ {
+ static const field core::List<self::E10> values = #C16;
+ static const field self::E10 element = #C15;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super self::_E10&_Enum&A10::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = <self::E1>[]
+ #C2 = 0
+ #C3 = "element"
+ #C4 = self::E2 {index:#C2, _name:#C3}
+ #C5 = <self::E2>[#C4]
+ #C6 = <self::E3>[]
+ #C7 = <self::E4>[]
+ #C8 = <self::E5>[]
+ #C9 = self::E6 {index:#C2, _name:#C3}
+ #C10 = <self::E6>[#C9]
+ #C11 = self::E7 {index:#C2, _name:#C3}
+ #C12 = <self::E7>[#C11]
+ #C13 = self::E8 {index:#C2, _name:#C3}
+ #C14 = <self::E8>[#C13]
+ #C15 = self::E10 {index:#C2, _name:#C3}
+ #C16 = <self::E10>[#C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///conflicting_elements.dart:
+- E2. (from org-dartlang-testcase:///conflicting_elements.dart:10:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- E6. (from org-dartlang-testcase:///conflicting_elements.dart:33:6)
+- E7. (from org-dartlang-testcase:///conflicting_elements.dart:39:6)
+- E8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- _E8&_Enum&A8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- E9. (from org-dartlang-testcase:///conflicting_elements.dart:57:6)
+- E10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
+- _E10&_Enum&A10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.textual_outline.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.textual_outline.expect
new file mode 100644
index 0000000..aa6cb56
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.textual_outline.expect
@@ -0,0 +1,20 @@
+enum E1 { element; final int element = 42; }
+enum E2 { element, element; }
+enum E3 { element; void element() {} }
+enum E4 { element; static void element() {} }
+enum E5 { element; static int element = 42; }
+enum E6 { element; void set element(E6 value) {} }
+enum E7 { element; static void set element(E7 value) {} }
+class A8 {
+ void set element(dynamic value) {}
+}
+enum E8 with A8 { element }
+class A9 {
+ int element = 42;
+}
+enum E9 with A9 { element }
+class A10 {
+ void element() {}
+}
+enum E10 with A10 { element }
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect
new file mode 100644
index 0000000..a1dbcac
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.expect
@@ -0,0 +1,241 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:7:13: Error: 'element' is already declared in this scope.
+// final int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:6:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:12:3: Error: 'element' is already declared in this scope.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:11:3: Context: Previous declaration of 'element'.
+// element,
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:18:8: Error: 'element' is already declared in this scope.
+// void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:16:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:24:15: Error: 'element' is already declared in this scope.
+// static void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:22:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:30:14: Error: 'element' is already declared in this scope.
+// static int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:28:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:34:3: Error: This static member conflicts with an instance member.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:36:12: Context: This is the instance member.
+// void set element(E6 value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:50:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:46:12: Context: This is the inherited member.
+// void set element(dynamic value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:58:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:54:7: Context: This is the inherited member.
+// int element = 42;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:66:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:62:8: Context: This is the inherited member.
+// void element() {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:57:6: Error: A constant constructor can't call a non-constant super constructor.
+// enum E9 with A9 {
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C1;
+ final field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E1
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C5;
+ static const field self::E2 element = #C4;
+ const constructor •(core::int index, core::String name) → self::E2
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C6;
+ const constructor •(core::int index, core::String name) → self::E3
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
+ method element() → void {}
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C7;
+ const constructor •(core::int index, core::String name) → self::E4
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E4.${this.{core::_Enum::_name}{core::String}}";
+ static method element() → void {}
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C8;
+ static field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E5
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E5.${this.{core::_Enum::_name}{core::String}}";
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C10;
+ static const field self::E6 element = #C9;
+ const constructor •(core::int index, core::String name) → self::E6
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E6.${this.{core::_Enum::_name}{core::String}}";
+ set element(self::E6 value) → void {}
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C12;
+ static const field self::E7 element = #C11;
+ const constructor •(core::int index, core::String name) → self::E7
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E7.${this.{core::_Enum::_name}{core::String}}";
+ static set element(self::E7 value) → void {}
+}
+class A8 extends core::Object {
+ synthetic constructor •() → self::A8
+ : super core::Object::•()
+ ;
+ set element(dynamic value) → void {}
+}
+abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub set element(dynamic value) → void
+ return super.{self::A8::element} = value;
+}
+class E8 extends self::_E8&_Enum&A8 /*isEnum*/ {
+ static const field core::List<self::E8> values = #C14;
+ static const field self::E8 element = #C13;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super self::_E8&_Enum&A8::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+}
+class A9 extends core::Object {
+ field core::int element = 42;
+ synthetic constructor •() → self::A9
+ : super core::Object::•()
+ ;
+}
+abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ {
+ synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub get element() → core::int
+ return super.{self::A9::element};
+ mixin-super-stub set element(core::int value) → void
+ return super.{self::A9::element} = value;
+}
+class E9 extends self::_E9&_Enum&A9 /*isEnum*/ {
+ static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ const constructor •(core::int index, core::String name) → self::E9
+ : super self::_E9&_Enum&A9::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+}
+class A10 extends core::Object {
+ synthetic constructor •() → self::A10
+ : super core::Object::•()
+ ;
+ method element() → void {}
+}
+abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method element() → void
+ return super.{self::A10::element}();
+}
+class E10 extends self::_E10&_Enum&A10 /*isEnum*/ {
+ static const field core::List<self::E10> values = #C16;
+ static const field self::E10 element = #C15;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super self::_E10&_Enum&A10::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = <self::E1*>[]
+ #C2 = 0
+ #C3 = "element"
+ #C4 = self::E2 {index:#C2, _name:#C3}
+ #C5 = <self::E2*>[#C4]
+ #C6 = <self::E3*>[]
+ #C7 = <self::E4*>[]
+ #C8 = <self::E5*>[]
+ #C9 = self::E6 {index:#C2, _name:#C3}
+ #C10 = <self::E6*>[#C9]
+ #C11 = self::E7 {index:#C2, _name:#C3}
+ #C12 = <self::E7*>[#C11]
+ #C13 = self::E8 {index:#C2, _name:#C3}
+ #C14 = <self::E8*>[#C13]
+ #C15 = self::E10 {index:#C2, _name:#C3}
+ #C16 = <self::E10*>[#C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///conflicting_elements.dart:
+- E2. (from org-dartlang-testcase:///conflicting_elements.dart:10:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- E6. (from org-dartlang-testcase:///conflicting_elements.dart:33:6)
+- E7. (from org-dartlang-testcase:///conflicting_elements.dart:39:6)
+- E8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- _E8&_Enum&A8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- E9. (from org-dartlang-testcase:///conflicting_elements.dart:57:6)
+- E10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
+- _E10&_Enum&A10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect
new file mode 100644
index 0000000..a1dbcac
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.modular.expect
@@ -0,0 +1,241 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:7:13: Error: 'element' is already declared in this scope.
+// final int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:6:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:12:3: Error: 'element' is already declared in this scope.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:11:3: Context: Previous declaration of 'element'.
+// element,
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:18:8: Error: 'element' is already declared in this scope.
+// void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:16:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:24:15: Error: 'element' is already declared in this scope.
+// static void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:22:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:30:14: Error: 'element' is already declared in this scope.
+// static int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:28:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:34:3: Error: This static member conflicts with an instance member.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:36:12: Context: This is the instance member.
+// void set element(E6 value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:50:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:46:12: Context: This is the inherited member.
+// void set element(dynamic value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:58:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:54:7: Context: This is the inherited member.
+// int element = 42;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:66:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:62:8: Context: This is the inherited member.
+// void element() {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:57:6: Error: A constant constructor can't call a non-constant super constructor.
+// enum E9 with A9 {
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C1;
+ final field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E1
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C5;
+ static const field self::E2 element = #C4;
+ const constructor •(core::int index, core::String name) → self::E2
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C6;
+ const constructor •(core::int index, core::String name) → self::E3
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
+ method element() → void {}
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C7;
+ const constructor •(core::int index, core::String name) → self::E4
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E4.${this.{core::_Enum::_name}{core::String}}";
+ static method element() → void {}
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C8;
+ static field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E5
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E5.${this.{core::_Enum::_name}{core::String}}";
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C10;
+ static const field self::E6 element = #C9;
+ const constructor •(core::int index, core::String name) → self::E6
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E6.${this.{core::_Enum::_name}{core::String}}";
+ set element(self::E6 value) → void {}
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C12;
+ static const field self::E7 element = #C11;
+ const constructor •(core::int index, core::String name) → self::E7
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E7.${this.{core::_Enum::_name}{core::String}}";
+ static set element(self::E7 value) → void {}
+}
+class A8 extends core::Object {
+ synthetic constructor •() → self::A8
+ : super core::Object::•()
+ ;
+ set element(dynamic value) → void {}
+}
+abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub set element(dynamic value) → void
+ return super.{self::A8::element} = value;
+}
+class E8 extends self::_E8&_Enum&A8 /*isEnum*/ {
+ static const field core::List<self::E8> values = #C14;
+ static const field self::E8 element = #C13;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super self::_E8&_Enum&A8::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+}
+class A9 extends core::Object {
+ field core::int element = 42;
+ synthetic constructor •() → self::A9
+ : super core::Object::•()
+ ;
+}
+abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ {
+ synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub get element() → core::int
+ return super.{self::A9::element};
+ mixin-super-stub set element(core::int value) → void
+ return super.{self::A9::element} = value;
+}
+class E9 extends self::_E9&_Enum&A9 /*isEnum*/ {
+ static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ const constructor •(core::int index, core::String name) → self::E9
+ : super self::_E9&_Enum&A9::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+}
+class A10 extends core::Object {
+ synthetic constructor •() → self::A10
+ : super core::Object::•()
+ ;
+ method element() → void {}
+}
+abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method element() → void
+ return super.{self::A10::element}();
+}
+class E10 extends self::_E10&_Enum&A10 /*isEnum*/ {
+ static const field core::List<self::E10> values = #C16;
+ static const field self::E10 element = #C15;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super self::_E10&_Enum&A10::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = <self::E1*>[]
+ #C2 = 0
+ #C3 = "element"
+ #C4 = self::E2 {index:#C2, _name:#C3}
+ #C5 = <self::E2*>[#C4]
+ #C6 = <self::E3*>[]
+ #C7 = <self::E4*>[]
+ #C8 = <self::E5*>[]
+ #C9 = self::E6 {index:#C2, _name:#C3}
+ #C10 = <self::E6*>[#C9]
+ #C11 = self::E7 {index:#C2, _name:#C3}
+ #C12 = <self::E7*>[#C11]
+ #C13 = self::E8 {index:#C2, _name:#C3}
+ #C14 = <self::E8*>[#C13]
+ #C15 = self::E10 {index:#C2, _name:#C3}
+ #C16 = <self::E10*>[#C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///conflicting_elements.dart:
+- E2. (from org-dartlang-testcase:///conflicting_elements.dart:10:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- E6. (from org-dartlang-testcase:///conflicting_elements.dart:33:6)
+- E7. (from org-dartlang-testcase:///conflicting_elements.dart:39:6)
+- E8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- _E8&_Enum&A8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- E9. (from org-dartlang-testcase:///conflicting_elements.dart:57:6)
+- E10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
+- _E10&_Enum&A10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect
new file mode 100644
index 0000000..2f845e4
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.outline.expect
@@ -0,0 +1,225 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:7:13: Error: 'element' is already declared in this scope.
+// final int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:6:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:12:3: Error: 'element' is already declared in this scope.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:11:3: Context: Previous declaration of 'element'.
+// element,
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:18:8: Error: 'element' is already declared in this scope.
+// void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:16:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:24:15: Error: 'element' is already declared in this scope.
+// static void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:22:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:30:14: Error: 'element' is already declared in this scope.
+// static int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:28:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:34:3: Error: This static member conflicts with an instance member.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:36:12: Context: This is the instance member.
+// void set element(E6 value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:50:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:46:12: Context: This is the inherited member.
+// void set element(dynamic value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:58:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:54:7: Context: This is the inherited member.
+// int element = 42;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:66:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:62:8: Context: This is the inherited member.
+// void element() {}
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = const <self::E1>[];
+ final field core::int element;
+ const constructor •(core::int index, core::String name) → self::E1
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = const <self::E2>[self::E2::element];
+ static const field self::E2 element = const self::E2::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E2
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = const <self::E3>[];
+ const constructor •(core::int index, core::String name) → self::E3
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
+ method element() → void
+ ;
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = const <self::E4>[];
+ const constructor •(core::int index, core::String name) → self::E4
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E4.${this.{core::_Enum::_name}{core::String}}";
+ static method element() → void
+ ;
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = const <self::E5>[];
+ static field core::int element;
+ const constructor •(core::int index, core::String name) → self::E5
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E5.${this.{core::_Enum::_name}{core::String}}";
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
+ static const field self::E6 element = const self::E6::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E6
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E6.${this.{core::_Enum::_name}{core::String}}";
+ set element(self::E6 value) → void
+ ;
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = const <self::E7>[self::E7::element];
+ static const field self::E7 element = const self::E7::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E7
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E7.${this.{core::_Enum::_name}{core::String}}";
+ static set element(self::E7 value) → void
+ ;
+}
+class A8 extends core::Object {
+ synthetic constructor •() → self::A8
+ ;
+ set element(dynamic value) → void
+ ;
+}
+abstract class _E8&_Enum&A8 = core::_Enum with self::A8 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub set element(dynamic value) → void
+ return super.{self::A8::element} = value;
+}
+class E8 extends self::_E8&_Enum&A8 /*isEnum*/ {
+ static const field core::List<self::E8> values = const <self::E8>[self::E8::element];
+ static const field self::E8 element = const self::E8::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E8
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+}
+class A9 extends core::Object {
+ field core::int element;
+ synthetic constructor •() → self::A9
+ ;
+}
+abstract class _E9&_Enum&A9 = core::_Enum with self::A9 /*isAnonymousMixin*/ {
+ synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub get element() → core::int
+ return super.{self::A9::element};
+ mixin-super-stub set element(core::int value) → void
+ return super.{self::A9::element} = value;
+}
+class E9 extends self::_E9&_Enum&A9 /*isEnum*/ {
+ static const field core::List<self::E9> values = const <self::E9>[self::E9::element];
+ static const field self::E9 element = const self::E9::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E9
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+}
+class A10 extends core::Object {
+ synthetic constructor •() → self::A10
+ ;
+ method element() → void
+ ;
+}
+abstract class _E10&_Enum&A10 = core::_Enum with self::A10 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method element() → void
+ return super.{self::A10::element}();
+}
+class E10 extends self::_E10&_Enum&A10 /*isEnum*/ {
+ static const field core::List<self::E10> values = const <self::E10>[self::E10::element];
+ static const field self::E10 element = const self::E10::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E10
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic
+ ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:5:6 -> ListConstant(const <E1*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:10:6 -> ListConstant(const <E2*>[const E2{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///conflicting_elements.dart:11:3 -> InstanceConstant(const E2{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:15:6 -> ListConstant(const <E3*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:21:6 -> ListConstant(const <E4*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:27:6 -> ListConstant(const <E5*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:33:6 -> ListConstant(const <E6*>[const E6{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///conflicting_elements.dart:34:3 -> InstanceConstant(const E6{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:39:6 -> ListConstant(const <E7*>[const E7{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///conflicting_elements.dart:40:3 -> InstanceConstant(const E7{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:49:6 -> ListConstant(const <E8*>[const E8{}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///conflicting_elements.dart:50:3 -> InstanceConstant(const E8{})
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:57:6 -> ListConstant(const <E9*>[const E9{}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///conflicting_elements.dart:58:3 -> InstanceConstant(const E9{})
+Evaluated: ListLiteral @ org-dartlang-testcase:///conflicting_elements.dart:65:6 -> ListConstant(const <E10*>[const E10{}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///conflicting_elements.dart:66:3 -> InstanceConstant(const E10{})
+Extra constant evaluation: evaluated: 72, effectively constant: 16
diff --git a/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect
new file mode 100644
index 0000000..00f7ff2
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart.weak.transformed.expect
@@ -0,0 +1,236 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:7:13: Error: 'element' is already declared in this scope.
+// final int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:6:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:12:3: Error: 'element' is already declared in this scope.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:11:3: Context: Previous declaration of 'element'.
+// element,
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:18:8: Error: 'element' is already declared in this scope.
+// void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:16:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:24:15: Error: 'element' is already declared in this scope.
+// static void element() {} // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:22:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:30:14: Error: 'element' is already declared in this scope.
+// static int element = 42; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:28:3: Context: Previous declaration of 'element'.
+// element;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:34:3: Error: This static member conflicts with an instance member.
+// element; // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:36:12: Context: This is the instance member.
+// void set element(E6 value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:50:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:46:12: Context: This is the inherited member.
+// void set element(dynamic value) {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:58:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:54:7: Context: This is the inherited member.
+// int element = 42;
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:66:3: Error: Can't declare a member that conflicts with an inherited one.
+// element // Error.
+// ^^^^^^^
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:62:8: Context: This is the inherited member.
+// void element() {}
+// ^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/conflicting_elements.dart:57:6: Error: A constant constructor can't call a non-constant super constructor.
+// enum E9 with A9 {
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C1;
+ final field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E1
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C5;
+ static const field self::E2 element = #C4;
+ const constructor •(core::int index, core::String name) → self::E2
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C6;
+ const constructor •(core::int index, core::String name) → self::E3
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
+ method element() → void {}
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C7;
+ const constructor •(core::int index, core::String name) → self::E4
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E4.${this.{core::_Enum::_name}{core::String}}";
+ static method element() → void {}
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C8;
+ static field core::int element = null;
+ const constructor •(core::int index, core::String name) → self::E5
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E5.${this.{core::_Enum::_name}{core::String}}";
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C10;
+ static const field self::E6 element = #C9;
+ const constructor •(core::int index, core::String name) → self::E6
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E6.${this.{core::_Enum::_name}{core::String}}";
+ set element(self::E6 value) → void {}
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C12;
+ static const field self::E7 element = #C11;
+ const constructor •(core::int index, core::String name) → self::E7
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E7.${this.{core::_Enum::_name}{core::String}}";
+ static set element(self::E7 value) → void {}
+}
+class A8 extends core::Object {
+ synthetic constructor •() → self::A8
+ : super core::Object::•()
+ ;
+ set element(dynamic value) → void {}
+}
+abstract class _E8&_Enum&A8 extends core::_Enum implements self::A8 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E8&_Enum&A8
+ : super core::_Enum::•(index, _name)
+ ;
+ set element(dynamic value) → void {}
+}
+class E8 extends self::_E8&_Enum&A8 /*isEnum*/ {
+ static const field core::List<self::E8> values = #C14;
+ static const field self::E8 element = #C13;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super self::_E8&_Enum&A8::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+}
+class A9 extends core::Object {
+ field core::int element = 42;
+ synthetic constructor •() → self::A9
+ : super core::Object::•()
+ ;
+}
+abstract class _E9&_Enum&A9 extends core::_Enum implements self::A9 /*isAnonymousMixin,isEliminatedMixin*/ {
+ field core::int element = 42;
+ synthetic constructor •(core::int index, core::String _name) → self::_E9&_Enum&A9
+ : super core::_Enum::•(index, _name)
+ ;
+}
+class E9 extends self::_E9&_Enum&A9 /*isEnum*/ {
+ static const field core::List<self::E9> values = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ static const field self::E9 element = invalid-expression "A constant constructor can't call a non-constant super constructor.";
+ const constructor •(core::int index, core::String name) → self::E9
+ : super self::_E9&_Enum&A9::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+}
+class A10 extends core::Object {
+ synthetic constructor •() → self::A10
+ : super core::Object::•()
+ ;
+ method element() → void {}
+}
+abstract class _E10&_Enum&A10 extends core::_Enum implements self::A10 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E10&_Enum&A10
+ : super core::_Enum::•(index, _name)
+ ;
+ method element() → void {}
+}
+class E10 extends self::_E10&_Enum&A10 /*isEnum*/ {
+ static const field core::List<self::E10> values = #C16;
+ static const field self::E10 element = #C15;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super self::_E10&_Enum&A10::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = <self::E1*>[]
+ #C2 = 0
+ #C3 = "element"
+ #C4 = self::E2 {index:#C2, _name:#C3}
+ #C5 = <self::E2*>[#C4]
+ #C6 = <self::E3*>[]
+ #C7 = <self::E4*>[]
+ #C8 = <self::E5*>[]
+ #C9 = self::E6 {index:#C2, _name:#C3}
+ #C10 = <self::E6*>[#C9]
+ #C11 = self::E7 {index:#C2, _name:#C3}
+ #C12 = <self::E7*>[#C11]
+ #C13 = self::E8 {index:#C2, _name:#C3}
+ #C14 = <self::E8*>[#C13]
+ #C15 = self::E10 {index:#C2, _name:#C3}
+ #C16 = <self::E10*>[#C15]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///conflicting_elements.dart:
+- E2. (from org-dartlang-testcase:///conflicting_elements.dart:10:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- E6. (from org-dartlang-testcase:///conflicting_elements.dart:33:6)
+- E7. (from org-dartlang-testcase:///conflicting_elements.dart:39:6)
+- E8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- _E8&_Enum&A8. (from org-dartlang-testcase:///conflicting_elements.dart:49:6)
+- E9. (from org-dartlang-testcase:///conflicting_elements.dart:57:6)
+- E10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
+- _E10&_Enum&A10. (from org-dartlang-testcase:///conflicting_elements.dart:65:6)
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 162a26b..bf189d3 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
@@ -23,7 +23,7 @@
: super self::_EA&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "EA.${this.{core::_Enum::_name}{core::String}}";
}
abstract class B extends core::Object implements core::Enum {
synthetic constructor •() → self::B
@@ -46,7 +46,7 @@
: super self::_EB&_Enum&B::•(index, name)
;
method toString() → core::String
- ;
+ return "EB.${this.{core::_Enum::_name}{core::String}}";
}
abstract class M extends core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -66,7 +66,7 @@
: super self::_EM&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "EM.${this.{core::_Enum::_name}{core::String}}";
}
abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -86,7 +86,7 @@
: super self::_EN&_Enum&N::•(index, name)
;
method toString() → core::String
- ;
+ return "EN.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
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 1444aa0..ce0af0b 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
@@ -23,7 +23,7 @@
: super self::_EA&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "EA.${this.{core::_Enum::_name}{core::String}}";
}
abstract class B extends core::Object implements core::Enum {
synthetic constructor •() → self::B
@@ -46,7 +46,7 @@
: super self::_EB&_Enum&B::•(index, name)
;
method toString() → core::String
- ;
+ return "EB.${this.{core::_Enum::_name}{core::String}}";
}
abstract class M extends core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -66,7 +66,7 @@
: super self::_EM&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "EM.${this.{core::_Enum::_name}{core::String}}";
}
abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -86,7 +86,7 @@
: super self::_EN&_Enum&N::•(index, name)
;
method toString() → core::String
- ;
+ return "EN.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
index 6d6adb6..3b7f732 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
@@ -23,7 +23,7 @@
: super self::_EA&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "EA.${this.{core::_Enum::_name}{core::String}}";
}
abstract class B extends core::Object implements core::Enum {
synthetic constructor •() → self::B
@@ -46,7 +46,7 @@
: super self::_EB&_Enum&B::•(index, name)
;
method toString() → core::String
- ;
+ return "EB.${this.{core::_Enum::_name}{core::String}}";
}
abstract class M extends core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -66,7 +66,7 @@
: super self::_EM&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "EM.${this.{core::_Enum::_name}{core::String}}";
}
abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -86,7 +86,7 @@
: super self::_EN&_Enum&N::•(index, name)
;
method toString() → core::String
- ;
+ return "EN.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
index 6d6adb6..3b7f732 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
@@ -23,7 +23,7 @@
: super self::_EA&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "EA.${this.{core::_Enum::_name}{core::String}}";
}
abstract class B extends core::Object implements core::Enum {
synthetic constructor •() → self::B
@@ -46,7 +46,7 @@
: super self::_EB&_Enum&B::•(index, name)
;
method toString() → core::String
- ;
+ return "EB.${this.{core::_Enum::_name}{core::String}}";
}
abstract class M extends core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -66,7 +66,7 @@
: super self::_EM&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "EM.${this.{core::_Enum::_name}{core::String}}";
}
abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -86,7 +86,7 @@
: super self::_EN&_Enum&N::•(index, name)
;
method toString() → core::String
- ;
+ return "EN.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
index dbfdd01..37f7523 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
@@ -21,7 +21,7 @@
const constructor •(core::int index, core::String name) → self::EA
;
method toString() → core::String
- ;
+ return "EA.${this.{core::_Enum::_name}{core::String}}";
}
abstract class B extends core::Object implements core::Enum {
synthetic constructor •() → self::B
@@ -42,7 +42,7 @@
const constructor •(core::int index, core::String name) → self::EB
;
method toString() → core::String
- ;
+ return "EB.${this.{core::_Enum::_name}{core::String}}";
}
abstract class M extends core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -61,7 +61,7 @@
const constructor •(core::int index, core::String name) → self::EM
;
method toString() → core::String
- ;
+ return "EM.${this.{core::_Enum::_name}{core::String}}";
}
abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -80,7 +80,7 @@
const constructor •(core::int index, core::String name) → self::EN
;
method toString() → core::String
- ;
+ return "EN.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic
;
@@ -97,4 +97,4 @@
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_as_supertype.dart:21:18 -> InstanceConstant(const EM{})
Evaluated: ListLiteral @ org-dartlang-testcase:///enum_as_supertype.dart:27:6 -> ListConstant(const <EN*>[const EN{}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum_as_supertype.dart:27:18 -> InstanceConstant(const EN{})
-Extra constant evaluation: evaluated: 20, effectively constant: 8
+Extra constant evaluation: evaluated: 32, effectively constant: 8
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
index d61d9a5..99d70ca 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
: super self::_EA&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "EA.${this.{core::_Enum::_name}{core::String}}";
}
abstract class B extends core::Object implements core::Enum {
synthetic constructor •() → self::B
@@ -46,7 +46,7 @@
: super self::_EB&_Enum&B::•(index, name)
;
method toString() → core::String
- ;
+ return "EB.${this.{core::_Enum::_name}{core::String}}";
}
abstract class M extends core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -66,7 +66,7 @@
: super self::_EM&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "EM.${this.{core::_Enum::_name}{core::String}}";
}
abstract class N extends core::Object implements core::Enum /*isMixinDeclaration*/ {
get foo() → core::int
@@ -86,7 +86,7 @@
: super self::_EN&_Enum&N::•(index, name)
;
method toString() → core::String
- ;
+ return "EN.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect
index 07b42df..9ea4317 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.expect
@@ -49,9 +49,9 @@
class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E<dynamic>> values = #C8;
+ final field self::E::X% field;
static const field self::E<core::int> one = #C4;
static const field self::E<core::String> two = #C7;
- final field self::E::X% field;
const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect
index 07b42df..9ea4317 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.strong.transformed.expect
@@ -49,9 +49,9 @@
class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E<dynamic>> values = #C8;
+ final field self::E::X% field;
static const field self::E<core::int> one = #C4;
static const field self::E<core::String> two = #C7;
- final field self::E::X% field;
const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect
index 8ce162b..c23f2d4 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.expect
@@ -49,9 +49,9 @@
class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E<dynamic>> values = #C8;
+ final field self::E::X% field;
static const field self::E<core::int> one = #C4;
static const field self::E<core::String> two = #C7;
- final field self::E::X% field;
const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect
index 8ce162b..c23f2d4 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.modular.expect
@@ -49,9 +49,9 @@
class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E<dynamic>> values = #C8;
+ final field self::E::X% field;
static const field self::E<core::int> one = #C4;
static const field self::E<core::String> two = #C7;
- final field self::E::X% field;
const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect
index 0f67ffa..cb1e18e 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.outline.expect
@@ -4,9 +4,9 @@
class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E<dynamic>> values = const <self::E<dynamic>>[self::E::one, self::E::two];
+ final field self::E::X% field;
static const field self::E<core::int> one = const self::E::•<core::int>(0, "one", 1);
static const field self::E<core::String> two = const self::E::•<core::String>(1, "two", "2");
- final field self::E::X% field;
const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect
index 8ce162b..c23f2d4 100644
--- a/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/instantiated_generic_enum_types.dart.weak.transformed.expect
@@ -49,9 +49,9 @@
class E<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E<dynamic>> values = #C8;
+ final field self::E::X% field;
static const field self::E<core::int> one = #C4;
static const field self::E<core::String> two = #C7;
- final field self::E::X% field;
const constructor •(core::int index, core::String name, self::E::X% field) → self::E<self::E::X%>
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect
index cbaf5c4..d250b38 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.expect
@@ -4,9 +4,9 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
+ final field core::String field;
static const field self::E one = #C4;
static const field self::E two = #C8;
- final field core::String field;
const constructor •(core::int index, core::String name, core::String field) → self::E
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect
index cbaf5c4..d250b38 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.strong.transformed.expect
@@ -4,9 +4,9 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
+ final field core::String field;
static const field self::E one = #C4;
static const field self::E two = #C8;
- final field core::String field;
const constructor •(core::int index, core::String name, core::String field) → self::E
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect
index 8ce5ddc..87ec425 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.expect
@@ -4,9 +4,9 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
+ final field core::String field;
static const field self::E one = #C4;
static const field self::E two = #C8;
- final field core::String field;
const constructor •(core::int index, core::String name, core::String field) → self::E
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect
index 8ce5ddc..87ec425 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.modular.expect
@@ -4,9 +4,9 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
+ final field core::String field;
static const field self::E one = #C4;
static const field self::E two = #C8;
- final field core::String field;
const constructor •(core::int index, core::String name, core::String field) → self::E
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect
index 1419d47..264ede3 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.outline.expect
@@ -4,9 +4,9 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = const <self::E>[self::E::one, self::E::two];
+ final field core::String field;
static const field self::E one = const self::E::•(0, "one", "foo");
static const field self::E two = const self::E::•(1, "two", "bar");
- final field core::String field;
const constructor •(core::int index, core::String name, core::String field) → self::E
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect
index 8ce5ddc..87ec425 100644
--- a/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/issue48084.dart.weak.transformed.expect
@@ -4,9 +4,9 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
+ final field core::String field;
static const field self::E one = #C4;
static const field self::E two = #C8;
- final field core::String field;
const constructor •(core::int index, core::String name, core::String field) → self::E
: self::E::field = field, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart b/pkg/front_end/testcases/enhanced_enums/issue48303.dart
new file mode 100644
index 0000000..a5a178f
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+mixin M1 on Enum {
+ int mixedInMethod1(int v) => v;
+}
+
+enum E with M1 {
+ e1,
+ e2,
+ e3;
+}
+
+expectEquals(x, y) {
+ if (x != y) {
+ throw "Expected $x to be equal to $y.";
+ }
+}
+
+main() {
+ expectEquals(E.e1.toString(), "E.e1");
+}
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
new file mode 100644
index 0000000..bd7335d
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+abstract class M1 extends core::Enum /*isMixinDeclaration*/ {
+ method mixedInMethod1(core::int v) → core::int
+ return v;
+}
+abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method mixedInMethod1(core::int v) → core::int
+ return super.{self::M1::mixedInMethod1}(v);
+}
+class E extends self::_E&_Enum&M1 /*isEnum*/ {
+ static const field core::List<self::E> values = #C10;
+ static const field self::E e1 = #C3;
+ static const field self::E e2 = #C6;
+ static const field self::E e3 = #C9;
+ const constructor •(core::int index, core::String name) → self::E
+ : super self::_E&_Enum&M1::•(index, name)
+ ;
+ method toString() → core::String
+ return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method expectEquals(dynamic x, dynamic y) → dynamic {
+ if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+ throw "Expected ${x} to be equal to ${y}.";
+ }
+}
+static method main() → dynamic {
+ self::expectEquals(#C3.{self::E::toString}(){() → core::String}, "E.e1");
+}
+
+constants {
+ #C1 = 0
+ #C2 = "e1"
+ #C3 = self::E {index:#C1, _name:#C2}
+ #C4 = 1
+ #C5 = "e2"
+ #C6 = self::E {index:#C4, _name:#C5}
+ #C7 = 2
+ #C8 = "e3"
+ #C9 = self::E {index:#C7, _name:#C8}
+ #C10 = <self::E>[#C3, #C6, #C9]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue48303.dart:
+- E. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _E&_Enum&M1. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
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
new file mode 100644
index 0000000..830bd89
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.strong.transformed.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+abstract class M1 extends core::Enum /*isMixinDeclaration*/ {
+ method mixedInMethod1(core::int v) → core::int
+ return v;
+}
+abstract class _E&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
+ 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
+ return v;
+}
+class E extends self::_E&_Enum&M1 /*isEnum*/ {
+ static const field core::List<self::E> values = #C10;
+ static const field self::E e1 = #C3;
+ static const field self::E e2 = #C6;
+ static const field self::E e3 = #C9;
+ const constructor •(core::int index, core::String name) → self::E
+ : super self::_E&_Enum&M1::•(index, name)
+ ;
+ method toString() → core::String
+ return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method expectEquals(dynamic x, dynamic y) → dynamic {
+ if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+ throw "Expected ${x} to be equal to ${y}.";
+ }
+}
+static method main() → dynamic {
+ self::expectEquals(#C3.{self::E::toString}(){() → core::String}, "E.e1");
+}
+
+constants {
+ #C1 = 0
+ #C2 = "e1"
+ #C3 = self::E {index:#C1, _name:#C2}
+ #C4 = 1
+ #C5 = "e2"
+ #C6 = self::E {index:#C4, _name:#C5}
+ #C7 = 2
+ #C8 = "e3"
+ #C9 = self::E {index:#C7, _name:#C8}
+ #C10 = <self::E>[#C3, #C6, #C9]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue48303.dart:
+- E. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _E&_Enum&M1. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.textual_outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.textual_outline.expect
new file mode 100644
index 0000000..b70621c
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.textual_outline.expect
@@ -0,0 +1,6 @@
+mixin M1 on Enum {
+ int mixedInMethod1(int v) => v;
+}
+enum E with M1 { e1, e2, e3; }
+expectEquals(x, y) {}
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect
new file mode 100644
index 0000000..c400ee6
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+abstract class M1 extends core::Enum /*isMixinDeclaration*/ {
+ method mixedInMethod1(core::int v) → core::int
+ return v;
+}
+abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method mixedInMethod1(core::int v) → core::int
+ return super.{self::M1::mixedInMethod1}(v);
+}
+class E extends self::_E&_Enum&M1 /*isEnum*/ {
+ static const field core::List<self::E> values = #C10;
+ static const field self::E e1 = #C3;
+ static const field self::E e2 = #C6;
+ static const field self::E e3 = #C9;
+ const constructor •(core::int index, core::String name) → self::E
+ : super self::_E&_Enum&M1::•(index, name)
+ ;
+ method toString() → core::String
+ return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method expectEquals(dynamic x, dynamic y) → dynamic {
+ if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+ throw "Expected ${x} to be equal to ${y}.";
+ }
+}
+static method main() → dynamic {
+ self::expectEquals(#C3.{self::E::toString}(){() → core::String}, "E.e1");
+}
+
+constants {
+ #C1 = 0
+ #C2 = "e1"
+ #C3 = self::E {index:#C1, _name:#C2}
+ #C4 = 1
+ #C5 = "e2"
+ #C6 = self::E {index:#C4, _name:#C5}
+ #C7 = 2
+ #C8 = "e3"
+ #C9 = self::E {index:#C7, _name:#C8}
+ #C10 = <self::E*>[#C3, #C6, #C9]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue48303.dart:
+- E. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _E&_Enum&M1. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect
new file mode 100644
index 0000000..c400ee6
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.modular.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+abstract class M1 extends core::Enum /*isMixinDeclaration*/ {
+ method mixedInMethod1(core::int v) → core::int
+ return v;
+}
+abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method mixedInMethod1(core::int v) → core::int
+ return super.{self::M1::mixedInMethod1}(v);
+}
+class E extends self::_E&_Enum&M1 /*isEnum*/ {
+ static const field core::List<self::E> values = #C10;
+ static const field self::E e1 = #C3;
+ static const field self::E e2 = #C6;
+ static const field self::E e3 = #C9;
+ const constructor •(core::int index, core::String name) → self::E
+ : super self::_E&_Enum&M1::•(index, name)
+ ;
+ method toString() → core::String
+ return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method expectEquals(dynamic x, dynamic y) → dynamic {
+ if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+ throw "Expected ${x} to be equal to ${y}.";
+ }
+}
+static method main() → dynamic {
+ self::expectEquals(#C3.{self::E::toString}(){() → core::String}, "E.e1");
+}
+
+constants {
+ #C1 = 0
+ #C2 = "e1"
+ #C3 = self::E {index:#C1, _name:#C2}
+ #C4 = 1
+ #C5 = "e2"
+ #C6 = self::E {index:#C4, _name:#C5}
+ #C7 = 2
+ #C8 = "e3"
+ #C9 = self::E {index:#C7, _name:#C8}
+ #C10 = <self::E*>[#C3, #C6, #C9]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue48303.dart:
+- E. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _E&_Enum&M1. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect
new file mode 100644
index 0000000..4ed3de3
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.outline.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+abstract class M1 extends core::Enum /*isMixinDeclaration*/ {
+ method mixedInMethod1(core::int v) → core::int
+ ;
+}
+abstract class _E&_Enum&M1 = core::_Enum with self::M1 /*isAnonymousMixin,hasConstConstructor*/ {
+ const synthetic constructor •(core::int index, core::String _name) → self::_E&_Enum&M1
+ : super core::_Enum::•(index, _name)
+ ;
+ mixin-super-stub method mixedInMethod1(core::int v) → core::int
+ return super.{self::M1::mixedInMethod1}(v);
+}
+class E extends self::_E&_Enum&M1 /*isEnum*/ {
+ static const field core::List<self::E> values = const <self::E>[self::E::e1, self::E::e2, self::E::e3];
+ static const field self::E e1 = const self::E::•(0, "e1");
+ static const field self::E e2 = const self::E::•(1, "e2");
+ static const field self::E e3 = const self::E::•(2, "e3");
+ const constructor •(core::int index, core::String name) → self::E
+ ;
+ method toString() → core::String
+ return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method expectEquals(dynamic x, dynamic y) → dynamic
+ ;
+static method main() → dynamic
+ ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///issue48303.dart:9:6 -> ListConstant(const <E*>[const E{}, const E{}, const E{}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue48303.dart:10:3 -> InstanceConstant(const E{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue48303.dart:11:3 -> InstanceConstant(const E{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue48303.dart:12:3 -> InstanceConstant(const E{})
+Extra constant evaluation: evaluated: 11, effectively constant: 4
diff --git a/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect
new file mode 100644
index 0000000..cf0dbb9
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/issue48303.dart.weak.transformed.expect
@@ -0,0 +1,55 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+abstract class M1 extends core::Enum /*isMixinDeclaration*/ {
+ method mixedInMethod1(core::int v) → core::int
+ return v;
+}
+abstract class _E&_Enum&M1 extends core::_Enum implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
+ 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
+ return v;
+}
+class E extends self::_E&_Enum&M1 /*isEnum*/ {
+ static const field core::List<self::E> values = #C10;
+ static const field self::E e1 = #C3;
+ static const field self::E e2 = #C6;
+ static const field self::E e3 = #C9;
+ const constructor •(core::int index, core::String name) → self::E
+ : super self::_E&_Enum&M1::•(index, name)
+ ;
+ method toString() → core::String
+ return "E.${this.{core::_Enum::_name}{core::String}}";
+}
+static method expectEquals(dynamic x, dynamic y) → dynamic {
+ if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
+ throw "Expected ${x} to be equal to ${y}.";
+ }
+}
+static method main() → dynamic {
+ self::expectEquals(#C3.{self::E::toString}(){() → core::String}, "E.e1");
+}
+
+constants {
+ #C1 = 0
+ #C2 = "e1"
+ #C3 = self::E {index:#C1, _name:#C2}
+ #C4 = 1
+ #C5 = "e2"
+ #C6 = self::E {index:#C4, _name:#C5}
+ #C7 = 2
+ #C8 = "e3"
+ #C9 = self::E {index:#C7, _name:#C8}
+ #C10 = <self::E*>[#C3, #C6, #C9]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue48303.dart:
+- E. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _E&_Enum&M1. (from org-dartlang-testcase:///issue48303.dart:9:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect
index 29920d5..a026fd3 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.expect
@@ -4,11 +4,11 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
- static const field self::E one = #C5;
- static const field self::E two = #C8;
final field core::int foo;
final field core::int bar = 42;
static field self::E staticFoo = self::E::f();
+ static const field self::E one = #C5;
+ static const field self::E two = #C8;
const constructor •(core::int index, core::String name, core::int foo) → self::E
: self::E::foo = foo, super core::_Enum::•(index, name)
;
@@ -23,11 +23,11 @@
}
class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic>> values = #C14;
- static const field self::E2<core::num> one = #C11;
- static const field self::E2<core::String> two = #C13;
final field self::E2::X% foo;
final field self::E2::X? bar = null;
static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
+ static const field self::E2<core::num> one = #C11;
+ static const field self::E2<core::String> two = #C13;
const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect
index 29920d5..a026fd3 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.strong.transformed.expect
@@ -4,11 +4,11 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
- static const field self::E one = #C5;
- static const field self::E two = #C8;
final field core::int foo;
final field core::int bar = 42;
static field self::E staticFoo = self::E::f();
+ static const field self::E one = #C5;
+ static const field self::E two = #C8;
const constructor •(core::int index, core::String name, core::int foo) → self::E
: self::E::foo = foo, super core::_Enum::•(index, name)
;
@@ -23,11 +23,11 @@
}
class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic>> values = #C14;
- static const field self::E2<core::num> one = #C11;
- static const field self::E2<core::String> two = #C13;
final field self::E2::X% foo;
final field self::E2::X? bar = null;
static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
+ static const field self::E2<core::num> one = #C11;
+ static const field self::E2<core::String> two = #C13;
const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect
index aed1af8..2cd33ab 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.expect
@@ -4,11 +4,11 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
- static const field self::E one = #C5;
- static const field self::E two = #C8;
final field core::int foo;
final field core::int bar = 42;
static field self::E staticFoo = self::E::f();
+ static const field self::E one = #C5;
+ static const field self::E two = #C8;
const constructor •(core::int index, core::String name, core::int foo) → self::E
: self::E::foo = foo, super core::_Enum::•(index, name)
;
@@ -23,11 +23,11 @@
}
class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic>> values = #C14;
- static const field self::E2<core::num> one = #C11;
- static const field self::E2<core::String> two = #C13;
final field self::E2::X% foo;
final field self::E2::X? bar = null;
static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
+ static const field self::E2<core::num> one = #C11;
+ static const field self::E2<core::String> two = #C13;
const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect
index aed1af8..2cd33ab 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.modular.expect
@@ -4,11 +4,11 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
- static const field self::E one = #C5;
- static const field self::E two = #C8;
final field core::int foo;
final field core::int bar = 42;
static field self::E staticFoo = self::E::f();
+ static const field self::E one = #C5;
+ static const field self::E two = #C8;
const constructor •(core::int index, core::String name, core::int foo) → self::E
: self::E::foo = foo, super core::_Enum::•(index, name)
;
@@ -23,11 +23,11 @@
}
class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic>> values = #C14;
- static const field self::E2<core::num> one = #C11;
- static const field self::E2<core::String> two = #C13;
final field self::E2::X% foo;
final field self::E2::X? bar = null;
static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
+ static const field self::E2<core::num> one = #C11;
+ static const field self::E2<core::String> two = #C13;
const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect
index 65b7311..b88e3da 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.outline.expect
@@ -4,11 +4,11 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = const <self::E>[self::E::one, self::E::two];
- static const field self::E one = const self::E::•(0, "one", 1);
- static const field self::E two = const self::E::•(1, "two", 2);
final field core::int foo;
final field core::int bar;
static field self::E staticFoo;
+ static const field self::E one = const self::E::•(0, "one", 1);
+ static const field self::E two = const self::E::•(1, "two", 2);
const constructor •(core::int index, core::String name, core::int foo) → self::E
: self::E::foo = foo, super core::_Enum::•(index, name)
;
@@ -23,11 +23,11 @@
}
class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic>> values = const <self::E2<dynamic>>[self::E2::one, self::E2::two];
- static const field self::E2<core::num> one = const self::E2::•<core::num>(0, "one", 1);
- static const field self::E2<core::String> two = const self::E2::•<core::String>(1, "two", "2");
final field self::E2::X% foo;
final field self::E2::X? bar;
static field () → self::E2<dynamic> staticFoo;
+ static const field self::E2<core::num> one = const self::E2::•<core::num>(0, "one", 1);
+ static const field self::E2<core::String> two = const self::E2::•<core::String>(1, "two", "2");
const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect
index aed1af8..2cd33ab 100644
--- a/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/members.dart.weak.transformed.expect
@@ -4,11 +4,11 @@
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E> values = #C9;
- static const field self::E one = #C5;
- static const field self::E two = #C8;
final field core::int foo;
final field core::int bar = 42;
static field self::E staticFoo = self::E::f();
+ static const field self::E one = #C5;
+ static const field self::E two = #C8;
const constructor •(core::int index, core::String name, core::int foo) → self::E
: self::E::foo = foo, super core::_Enum::•(index, name)
;
@@ -23,11 +23,11 @@
}
class E2<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic>> values = #C14;
- static const field self::E2<core::num> one = #C11;
- static const field self::E2<core::String> two = #C13;
final field self::E2::X% foo;
final field self::E2::X? bar = null;
static field () → self::E2<dynamic> staticFoo = () → self::E2<dynamic> => self::E2::f<dynamic>();
+ static const field self::E2<core::num> one = #C11;
+ static const field self::E2<core::String> two = #C13;
const constructor •(core::int index, core::String name, self::E2::X% foo) → self::E2<self::E2::X%>
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect
index 49718de..db452f8 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.expect
@@ -4,10 +4,10 @@
class E0 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E0> values = #C8;
- static const field self::E0 one = #C4;
- static const field self::E0 two = #C7;
final field core::int foo;
final field core::int bar;
+ static const field self::E0 one = #C4;
+ static const field self::E0 two = #C7;
const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
: self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
;
@@ -16,9 +16,9 @@
}
class E1<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<dynamic>> values = #C13;
+ final field self::E1::X% foo;
static const field self::E1<core::String> one = #C11;
static const field self::E1<core::int> two = #C12;
- final field self::E1::X% foo;
const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -27,12 +27,12 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic, dynamic>> values = #C22;
- static const field self::E2<core::int, core::String, core::double> one = #C15;
- static const field self::E2<core::String, core::int, core::double> two = #C17;
- static const field self::E2<core::double, core::bool, dynamic> three = #C21;
final field self::E2::X% foo;
final field self::E2::Y% bar;
final field self::E2::Z? baz;
+ static const field self::E2<core::int, core::String, core::double> one = #C15;
+ static const field self::E2<core::String, core::int, core::double> two = #C17;
+ static const field self::E2<core::double, core::bool, dynamic> three = #C21;
const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
: self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect
index 49718de..db452f8 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.strong.transformed.expect
@@ -4,10 +4,10 @@
class E0 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E0> values = #C8;
- static const field self::E0 one = #C4;
- static const field self::E0 two = #C7;
final field core::int foo;
final field core::int bar;
+ static const field self::E0 one = #C4;
+ static const field self::E0 two = #C7;
const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
: self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
;
@@ -16,9 +16,9 @@
}
class E1<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<dynamic>> values = #C13;
+ final field self::E1::X% foo;
static const field self::E1<core::String> one = #C11;
static const field self::E1<core::int> two = #C12;
- final field self::E1::X% foo;
const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -27,12 +27,12 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic, dynamic>> values = #C22;
- static const field self::E2<core::int, core::String, core::double> one = #C15;
- static const field self::E2<core::String, core::int, core::double> two = #C17;
- static const field self::E2<core::double, core::bool, dynamic> three = #C21;
final field self::E2::X% foo;
final field self::E2::Y% bar;
final field self::E2::Z? baz;
+ static const field self::E2<core::int, core::String, core::double> one = #C15;
+ static const field self::E2<core::String, core::int, core::double> two = #C17;
+ static const field self::E2<core::double, core::bool, dynamic> three = #C21;
const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
: self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect
index cbc80ff..7e7d8fa 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.expect
@@ -4,10 +4,10 @@
class E0 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E0> values = #C8;
- static const field self::E0 one = #C4;
- static const field self::E0 two = #C7;
final field core::int foo;
final field core::int bar;
+ static const field self::E0 one = #C4;
+ static const field self::E0 two = #C7;
const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
: self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
;
@@ -16,9 +16,9 @@
}
class E1<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<dynamic>> values = #C13;
+ final field self::E1::X% foo;
static const field self::E1<core::String> one = #C11;
static const field self::E1<core::int> two = #C12;
- final field self::E1::X% foo;
const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -27,12 +27,12 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic, dynamic>> values = #C22;
- static const field self::E2<core::int, core::String, core::double> one = #C15;
- static const field self::E2<core::String, core::int, core::double> two = #C17;
- static const field self::E2<core::double, core::bool, dynamic> three = #C21;
final field self::E2::X% foo;
final field self::E2::Y% bar;
final field self::E2::Z? baz;
+ static const field self::E2<core::int, core::String, core::double> one = #C15;
+ static const field self::E2<core::String, core::int, core::double> two = #C17;
+ static const field self::E2<core::double, core::bool, dynamic> three = #C21;
const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
: self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect
index cbc80ff..7e7d8fa 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.modular.expect
@@ -4,10 +4,10 @@
class E0 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E0> values = #C8;
- static const field self::E0 one = #C4;
- static const field self::E0 two = #C7;
final field core::int foo;
final field core::int bar;
+ static const field self::E0 one = #C4;
+ static const field self::E0 two = #C7;
const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
: self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
;
@@ -16,9 +16,9 @@
}
class E1<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<dynamic>> values = #C13;
+ final field self::E1::X% foo;
static const field self::E1<core::String> one = #C11;
static const field self::E1<core::int> two = #C12;
- final field self::E1::X% foo;
const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -27,12 +27,12 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic, dynamic>> values = #C22;
- static const field self::E2<core::int, core::String, core::double> one = #C15;
- static const field self::E2<core::String, core::int, core::double> two = #C17;
- static const field self::E2<core::double, core::bool, dynamic> three = #C21;
final field self::E2::X% foo;
final field self::E2::Y% bar;
final field self::E2::Z? baz;
+ static const field self::E2<core::int, core::String, core::double> one = #C15;
+ static const field self::E2<core::String, core::int, core::double> two = #C17;
+ static const field self::E2<core::double, core::bool, dynamic> three = #C21;
const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
: self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
index c98ffa3..593c828 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.outline.expect
@@ -4,10 +4,10 @@
class E0 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E0> values = const <self::E0>[self::E0::one, self::E0::two];
- static const field self::E0 one = const self::E0::•(0, "one", 1, bar: 1);
- static const field self::E0 two = const self::E0::•(1, "two", 2, bar: 2);
final field core::int foo;
final field core::int bar;
+ static const field self::E0 one = const self::E0::•(0, "one", 1, bar: 1);
+ static const field self::E0 two = const self::E0::•(1, "two", 2, bar: 2);
const constructor •(core::int index, core::String name, core::int foo, {required core::int bar}) → self::E0
: self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
;
@@ -16,9 +16,9 @@
}
class E1<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<dynamic>> values = const <self::E1<dynamic>>[self::E1::one, self::E1::two];
+ final field self::E1::X% foo;
static const field self::E1<core::String> one = const self::E1::•<core::String>(0, "one", foo: "1");
static const field self::E1<core::int> two = const self::E1::•<core::int>(1, "two", foo: 2);
- final field self::E1::X% foo;
const constructor •(core::int index, core::String name, {required self::E1::X% foo}) → self::E1<self::E1::X%>
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -27,12 +27,12 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic, dynamic>> values = const <self::E2<dynamic, dynamic, dynamic>>[self::E2::one, self::E2::two, self::E2::three];
- static const field self::E2<core::int, core::String, core::double> one = const self::E2::•<core::int, core::String, core::double>(0, "one", 1, bar: "1", baz: 3.14);
- static const field self::E2<core::String, core::int, core::double> two = const self::E2::•<core::String, core::int, core::double>(1, "two", "2", baz: 3.14, bar: 2);
- static const field self::E2<core::double, core::bool, dynamic> three = const self::E2::•<core::double, core::bool, dynamic>(2, "three", 3.0, bar: false);
final field self::E2::X% foo;
final field self::E2::Y% bar;
final field self::E2::Z? baz;
+ static const field self::E2<core::int, core::String, core::double> one = const self::E2::•<core::int, core::String, core::double>(0, "one", 1, bar: "1", baz: 3.14);
+ static const field self::E2<core::String, core::int, core::double> two = const self::E2::•<core::String, core::int, core::double>(1, "two", "2", baz: 3.14, bar: 2);
+ static const field self::E2<core::double, core::bool, dynamic> three = const self::E2::•<core::double, core::bool, dynamic>(2, "three", 3.0, bar: false);
const constructor •(core::int index, core::String name, self::E2::X% foo, {required self::E2::Y% bar, self::E2::Z? baz = null}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
: self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect
index cbc80ff..7e7d8fa 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments.dart.weak.transformed.expect
@@ -4,10 +4,10 @@
class E0 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E0> values = #C8;
- static const field self::E0 one = #C4;
- static const field self::E0 two = #C7;
final field core::int foo;
final field core::int bar;
+ static const field self::E0 one = #C4;
+ static const field self::E0 two = #C7;
const constructor •(core::int index, core::String name = #C9, core::int foo, {required core::int bar = #C9}) → self::E0
: self::E0::foo = foo, self::E0::bar = bar, super core::_Enum::•(index, name)
;
@@ -16,9 +16,9 @@
}
class E1<X extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1<dynamic>> values = #C13;
+ final field self::E1::X% foo;
static const field self::E1<core::String> one = #C11;
static const field self::E1<core::int> two = #C12;
- final field self::E1::X% foo;
const constructor •(core::int index = #C9, core::String name, {required self::E1::X% foo = #C9}) → self::E1<self::E1::X%>
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -27,12 +27,12 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic, dynamic>> values = #C22;
- static const field self::E2<core::int, core::String, core::double> one = #C15;
- static const field self::E2<core::String, core::int, core::double> two = #C17;
- static const field self::E2<core::double, core::bool, dynamic> three = #C21;
final field self::E2::X% foo;
final field self::E2::Y% bar;
final field self::E2::Z? baz;
+ static const field self::E2<core::int, core::String, core::double> one = #C15;
+ static const field self::E2<core::String, core::int, core::double> two = #C17;
+ static const field self::E2<core::double, core::bool, dynamic> three = #C21;
const constructor •(core::int index, core::String name = #C9, self::E2::X% foo, {required self::E2::Y% bar = #C9, self::E2::Z? baz = #C9}) → self::E2<self::E2::X%, self::E2::Y%, self::E2::Z%>
: self::E2::foo = foo, self::E2::bar = bar, self::E2::baz = baz, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect
index a84ac89..1d119a5 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.expect
@@ -4,13 +4,13 @@
class C extends core::_Enum /*isEnum*/ {
static const field core::List<self::C> values = #C20;
+ final field core::String log;
static const field self::C a = #C4;
static const field self::C b = #C7;
static const field self::C c = #C10;
static const field self::C d = #C13;
static const field self::C e = #C16;
static const field self::C f = #C19;
- final field core::String log;
const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
: self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect
index a84ac89..1d119a5 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.strong.transformed.expect
@@ -4,13 +4,13 @@
class C extends core::_Enum /*isEnum*/ {
static const field core::List<self::C> values = #C20;
+ final field core::String log;
static const field self::C a = #C4;
static const field self::C b = #C7;
static const field self::C c = #C10;
static const field self::C d = #C13;
static const field self::C e = #C16;
static const field self::C f = #C19;
- final field core::String log;
const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
: self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect
index 6ce1261..20fc39a 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.expect
@@ -4,13 +4,13 @@
class C extends core::_Enum /*isEnum*/ {
static const field core::List<self::C> values = #C20;
+ final field core::String log;
static const field self::C a = #C4;
static const field self::C b = #C7;
static const field self::C c = #C10;
static const field self::C d = #C13;
static const field self::C e = #C16;
static const field self::C f = #C19;
- final field core::String log;
const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
: self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect
index 6ce1261..20fc39a 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.modular.expect
@@ -4,13 +4,13 @@
class C extends core::_Enum /*isEnum*/ {
static const field core::List<self::C> values = #C20;
+ final field core::String log;
static const field self::C a = #C4;
static const field self::C b = #C7;
static const field self::C c = #C10;
static const field self::C d = #C13;
static const field self::C e = #C16;
static const field self::C f = #C19;
- final field core::String log;
const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
: self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect
index 4a9962c..d5fea66 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.outline.expect
@@ -4,13 +4,13 @@
class C extends core::_Enum /*isEnum*/ {
static const field core::List<self::C> values = const <self::C>[self::C::a, self::C::b, self::C::c, self::C::d, self::C::e, self::C::f];
+ final field core::String log;
static const field self::C a = const self::C::•(0, "a", 1, 2, z: 3);
static const field self::C b = let final core::int #t1 = 1 in let final core::String #t2 = "b" in let final core::int #t3 = 3 in const self::C::•(#t1, #t2, 1, 2, z: #t3);
static const field self::C c = let final core::int #t4 = 2 in let final core::String #t5 = "c" in let final core::int #t6 = 1 in let final core::int #t7 = 3 in const self::C::•(#t4, #t5, #t6, 2, z: #t7);
static const field self::C d = const self::C::named1(3, "d", 1, 2, 3);
static const field self::C e = const self::C::named2(4, "e", 1, 2, 3);
static const field self::C f = const self::C::named3(5, "f", 1, 2, 3);
- final field core::String log;
const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = 42}) → self::C
: self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect
index 6ce1261..20fc39a 100644
--- a/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/named_arguments_anywhere/redirecting_constructor.dart.weak.transformed.expect
@@ -4,13 +4,13 @@
class C extends core::_Enum /*isEnum*/ {
static const field core::List<self::C> values = #C20;
+ final field core::String log;
static const field self::C a = #C4;
static const field self::C b = #C7;
static const field self::C c = #C10;
static const field self::C d = #C13;
static const field self::C e = #C16;
static const field self::C f = #C19;
- final field core::String log;
const constructor •(core::int index, core::String name, core::int x, core::int y, {core::int z = #C21}) → self::C
: self::C::log = "x=${x}, y=${y}, z=${z}", super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect
index 81dd3f0..2e42601 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.expect
@@ -20,9 +20,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -37,12 +37,12 @@
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
+ final field core::int foo;
static const field self::E2 one = #C9;
static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E2
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect
index 81dd3f0..2e42601 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.strong.transformed.expect
@@ -20,9 +20,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -37,12 +37,12 @@
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
+ final field core::int foo;
static const field self::E2 one = #C9;
static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E2
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect
index afd513d..6b1338a 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.expect
@@ -20,9 +20,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -37,12 +37,12 @@
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
+ final field core::int foo;
static const field self::E2 one = #C9;
static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E2
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect
index afd513d..6b1338a 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.modular.expect
@@ -20,9 +20,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -37,12 +37,12 @@
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
+ final field core::int foo;
static const field self::E2 one = #C9;
static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E2
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect
index 6ded04c..b00ddd1 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.outline.expect
@@ -12,9 +12,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = const <self::E1>[self::E1::one, self::E1::two];
+ final field core::int foo;
static const field self::E1 one = const self::E1::•(0, "one", 1);
static const field self::E1 two = const self::E1::named(1, "two", 2);
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -26,9 +26,9 @@
}
class E2 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2> values = const <self::E2>[self::E2::one, self::E2::two];
+ final field core::int foo;
static const field self::E2 one = const self::E2::•(0, "one", 1);
static const field self::E2 two = const self::E2::named(1, "two", 2);
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E2
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect
index afd513d..6b1338a 100644
--- a/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart.weak.transformed.expect
@@ -20,9 +20,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -37,12 +37,12 @@
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
+ final field core::int foo;
static const field self::E2 one = #C9;
static const field self::E2 two = invalid-expression "pkg/front_end/testcases/enhanced_enums/redirecting_initializers.dart:22:35: Error: Too many positional arguments: 3 allowed, but 4 found.
Try removing the extra positional arguments.
const E2.named(int value) : this(value, value); // Error.
^";
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E2
: self::E2::foo = foo, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect
index edb79d9..375eda9 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.expect
@@ -4,9 +4,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -18,11 +18,11 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic>> values = #C13;
+ final field self::E2::X% foo;
+ final field self::E2::Y% bar;
static const field self::E2<core::int, core::String> one = #C9;
static const field self::E2<core::int, core::String> two = #C10;
static const field self::E2<core::String, core::String> three = #C12;
- final field self::E2::X% foo;
- final field self::E2::Y% bar;
const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
: self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect
index edb79d9..375eda9 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.strong.transformed.expect
@@ -4,9 +4,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -18,11 +18,11 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic>> values = #C13;
+ final field self::E2::X% foo;
+ final field self::E2::Y% bar;
static const field self::E2<core::int, core::String> one = #C9;
static const field self::E2<core::int, core::String> two = #C10;
static const field self::E2<core::String, core::String> three = #C12;
- final field self::E2::X% foo;
- final field self::E2::Y% bar;
const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
: self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect
index aaeb527..88a8796 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.expect
@@ -4,9 +4,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -18,11 +18,11 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic>> values = #C13;
+ final field self::E2::X% foo;
+ final field self::E2::Y% bar;
static const field self::E2<core::int, core::String> one = #C9;
static const field self::E2<core::int, core::String> two = #C10;
static const field self::E2<core::String, core::String> three = #C12;
- final field self::E2::X% foo;
- final field self::E2::Y% bar;
const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
: self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect
index aaeb527..88a8796 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.modular.expect
@@ -4,9 +4,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -18,11 +18,11 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic>> values = #C13;
+ final field self::E2::X% foo;
+ final field self::E2::Y% bar;
static const field self::E2<core::int, core::String> one = #C9;
static const field self::E2<core::int, core::String> two = #C10;
static const field self::E2<core::String, core::String> three = #C12;
- final field self::E2::X% foo;
- final field self::E2::Y% bar;
const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
: self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect
index e4af5a2..f072647 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.outline.expect
@@ -4,9 +4,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = const <self::E1>[self::E1::one, self::E1::two];
+ final field core::int foo;
static const field self::E1 one = const self::E1::•(0, "one", 1);
static const field self::E1 two = const self::E1::named(1, "two", 2);
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -18,11 +18,11 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic>> values = const <self::E2<dynamic, dynamic>>[self::E2::one, self::E2::two, self::E2::three];
+ final field self::E2::X% foo;
+ final field self::E2::Y% bar;
static const field self::E2<core::int, core::String> one = const self::E2::•<core::int, core::String>(0, "one", 1, "one");
static const field self::E2<core::int, core::String> two = const self::E2::named<core::int, core::String>(1, "two", "two", 2);
static const field self::E2<core::String, core::String> three = const self::E2::named<core::String, core::String>(2, "three", "three", "three");
- final field self::E2::X% foo;
- final field self::E2::Y% bar;
const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
: self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
;
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect
index aaeb527..88a8796 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_fields.dart.weak.transformed.expect
@@ -4,9 +4,9 @@
class E1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::E1> values = #C8;
+ final field core::int foo;
static const field self::E1 one = #C4;
static const field self::E1 two = #C7;
- final field core::int foo;
const constructor •(core::int index, core::String name, core::int foo) → self::E1
: self::E1::foo = foo, super core::_Enum::•(index, name)
;
@@ -18,11 +18,11 @@
}
class E2<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::_Enum /*isEnum*/ {
static const field core::List<self::E2<dynamic, dynamic>> values = #C13;
+ final field self::E2::X% foo;
+ final field self::E2::Y% bar;
static const field self::E2<core::int, core::String> one = #C9;
static const field self::E2<core::int, core::String> two = #C10;
static const field self::E2<core::String, core::String> three = #C12;
- final field self::E2::X% foo;
- final field self::E2::Y% bar;
const constructor •(core::int index, core::String name, self::E2::X% foo, self::E2::Y% bar) → self::E2<self::E2::X%, self::E2::Y%>
: self::E2::foo = foo, self::E2::bar = bar, super core::_Enum::•(index, name)
;
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 cf6273c..16540f3 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
@@ -36,7 +36,7 @@
: super self::_E1&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E2&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A
@@ -60,7 +60,7 @@
: super self::_E2&_Enum&A&B::•(index, name)
;
method toString() → core::String
- ;
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E3&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M
@@ -77,7 +77,7 @@
: super self::_E3&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
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 8b41530..ceb7cd71 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
@@ -36,7 +36,7 @@
: super self::_E1&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E2&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A
@@ -60,7 +60,7 @@
: super self::_E2&_Enum&A&B::•(index, name)
;
method toString() → core::String
- ;
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E3&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M
@@ -78,7 +78,7 @@
: super self::_E3&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect
index ec20440..62be6f0 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.expect
@@ -36,7 +36,7 @@
: super self::_E1&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E2&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A
@@ -60,7 +60,7 @@
: super self::_E2&_Enum&A&B::•(index, name)
;
method toString() → core::String
- ;
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E3&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M
@@ -77,7 +77,7 @@
: super self::_E3&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect
index ec20440..62be6f0 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.modular.expect
@@ -36,7 +36,7 @@
: super self::_E1&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E2&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A
@@ -60,7 +60,7 @@
: super self::_E2&_Enum&A&B::•(index, name)
;
method toString() → core::String
- ;
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E3&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M
@@ -77,7 +77,7 @@
: super self::_E3&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect
index abd958f..d37a555 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.outline.expect
@@ -32,7 +32,7 @@
const constructor •(core::int index, core::String name) → self::E1
;
method toString() → core::String
- ;
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E2&_Enum&A = core::_Enum with self::A /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A
@@ -55,7 +55,7 @@
const constructor •(core::int index, core::String name) → self::E2
;
method toString() → core::String
- ;
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E3&_Enum&M = core::_Enum with self::M /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M
@@ -71,7 +71,7 @@
const constructor •(core::int index, core::String name) → self::E3
;
method toString() → core::String
- ;
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic
;
@@ -93,4 +93,4 @@
Evaluated: ListLiteral @ org-dartlang-testcase:///simple_mixins.dart:23:6 -> ListConstant(const <E3*>[const E3{}, const E3{}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///simple_mixins.dart:23:18 -> InstanceConstant(const E3{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///simple_mixins.dart:23:23 -> InstanceConstant(const E3{})
-Extra constant evaluation: evaluated: 22, effectively constant: 9
+Extra constant evaluation: evaluated: 31, effectively constant: 9
diff --git a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect
index 364ca56..fcb9129 100644
--- a/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/simple_mixins.dart.weak.transformed.expect
@@ -36,7 +36,7 @@
: super self::_E1&_Enum&A::•(index, name)
;
method toString() → core::String
- ;
+ return "E1.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E2&_Enum&A extends core::_Enum implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E2&_Enum&A
@@ -60,7 +60,7 @@
: super self::_E2&_Enum&A&B::•(index, name)
;
method toString() → core::String
- ;
+ return "E2.${this.{core::_Enum::_name}{core::String}}";
}
abstract class _E3&_Enum&M extends core::_Enum implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •(core::int index, core::String _name) → self::_E3&_Enum&M
@@ -78,7 +78,7 @@
: super self::_E3&_Enum&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E3.${this.{core::_Enum::_name}{core::String}}";
}
static method expectEquals(dynamic x, dynamic y) → dynamic {
if(!(x =={core::Object::==}{(core::Object) → core::bool} y)) {
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 5a75aa0..f4b5349 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
@@ -33,7 +33,7 @@
: super self::_E&_Enum&GM&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
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 c4ce6f4..da949ab 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
@@ -33,7 +33,7 @@
: super self::_E&_Enum&GM&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect
index 08ab64c..5e0c562 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.expect
@@ -33,7 +33,7 @@
: super self::_E&_Enum&GM&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect
index 08ab64c..5e0c562 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.modular.expect
@@ -33,7 +33,7 @@
: super self::_E&_Enum&GM&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect
index 7647f76..b8c85bc 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.outline.expect
@@ -30,7 +30,7 @@
const constructor •(core::int index, core::String name) → self::E<self::E::S, self::E::T>
;
method toString() → core::String
- ;
+ return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic
;
@@ -39,4 +39,4 @@
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///supertype_resolved_before_checking.dart:16:6 -> ListConstant(const <E<dynamic, dynamic>*>[const E<num*, num*>{}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///supertype_resolved_before_checking.dart:18:27 -> InstanceConstant(const E<num*, num*>{})
-Extra constant evaluation: evaluated: 6, effectively constant: 2
+Extra constant evaluation: evaluated: 9, effectively constant: 2
diff --git a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect
index 357bbc8..737b8b8 100644
--- a/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/supertype_resolved_before_checking.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
: super self::_E&_Enum&GM&M::•(index, name)
;
method toString() → core::String
- ;
+ return "E.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index f762981..3788a0f 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -28,6 +28,7 @@
constructor_tearoffs/new_as_selector: FormatterCrash
dart2js/late_fields: FormatterCrash
dart2js/late_statics: FormatterCrash
+enhanced_enums/conflicting_elements: FormatterCrash
enhanced_enums/constructor_calls: FormatterCrash
enhanced_enums/entries_with_type_arguments: FormatterCrash
enhanced_enums/enum_as_supertype: FormatterCrash
@@ -36,6 +37,7 @@
enhanced_enums/issue48084: FormatterCrash
enhanced_enums/issue48181: FormatterCrash
enhanced_enums/issue48232: FormatterCrash
+enhanced_enums/issue48303: FormatterCrash
enhanced_enums/malformed_constructors: FormatterCrash
enhanced_enums/members: FormatterCrash
enhanced_enums/named_arguments: FormatterCrash
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
index 7777d7a..2f5ecea 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
@@ -22,6 +22,6 @@
synthetic constructor •() → self::Class
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3398,getterSelectorId:3399] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3331,getterSelectorId:3332] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
index a2ce7a5..3edc30c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
@@ -37,9 +37,9 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(#C1 ?{core::String} "" : "mapKeep", #C2){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, #C1 ?{core::String} "" : "hasKeep", "hasKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, #C1 ?{core::String} "" : "clearKeep", "clearKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
@@ -82,7 +82,7 @@
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "BarKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
constructor _() → self::BarKeep
@@ -105,7 +105,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::HasKeep
@@ -119,7 +119,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
index a36af4a..5f438f9 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
@@ -30,9 +30,9 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep", createEmptyInstance: #C2) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(#C1 ?{core::String} "" : "mapKeep", #C3){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, #C1 ?{core::String} "" : "hasKeep", "hasKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, #C1 ?{core::String} "" : "clearKeep", "clearKeep", #C5){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
@@ -69,7 +69,7 @@
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "BarKeep", createEmptyInstance: #C3) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::a}<core::int>(1, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::BarKeep
@@ -86,7 +86,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep", createEmptyInstance: #C4) in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::HasKeep
@@ -100,7 +100,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t5 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep", createEmptyInstance: #C5) in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t5;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
index 423420c..0df0c27 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
@@ -44,7 +44,7 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, #C1 ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", "mapKeep", #C2){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::ZopDrop>(4, #C1 ?{core::String} "" : "mapDrop", "FooKeep.MapDropEntry", "mapDrop", #C3){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep", "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
@@ -112,7 +112,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::HasKeep
@@ -128,7 +128,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
index c046050..426f988 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
@@ -40,9 +40,9 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(#C1 ?{core::String} "" : "mapKeep", #C2){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, #C1 ?{core::String} "" : "hasKeep", "hasKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, #C1 ?{core::String} "" : "clearKeep", "clearKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
@@ -85,7 +85,7 @@
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "BarKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
constructor _() → self::BarKeep
@@ -108,7 +108,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::HasKeep
@@ -122,7 +122,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
index 69b1559..ce3bd09 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
@@ -17,7 +17,7 @@
synthetic constructor •() → self::_SplayTree<self::_SplayTree::Node>
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method add(covariant-by-class self::_SplayTree::Node n) → dynamic {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method add([@vm.inferred-type.metadata=#lib::_SplayTreeMapNode<dynamic>] covariant-by-class self::_SplayTree::Node n) → dynamic {
self::_SplayTree::Node? root = [@vm.direct-call.metadata=#lib::SplayTreeMap._root] [@vm.inferred-type.metadata=#lib::_SplayTreeMapNode<dynamic>] this.{self::_SplayTree::_root}{self::_SplayTree::Node?};
;
core::print([@vm.direct-call.metadata=#lib::_SplayTreeNode.left] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] root{self::_SplayTree::Node}.{self::_SplayTreeNode::left}{self::_SplayTree::Node?});
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
index fa24c7a..9b6b0d9 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
@@ -19,7 +19,7 @@
synthetic constructor •() → self::A1
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A1.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A1::foo} = _in::unsafeCast<self::T1?>(a5);
}
}
@@ -42,7 +42,7 @@
synthetic constructor •() → self::A2
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A2.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A2::foo} = a6;
}
}
@@ -75,7 +75,7 @@
synthetic constructor •() → self::A3
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:24,getterSelectorId:25] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:24,getterSelectorId:25] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A3.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A3::foo} = a7;
}
}
@@ -98,7 +98,7 @@
synthetic constructor •() → self::A4
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:32,getterSelectorId:33] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a7 = #C1, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:32,getterSelectorId:33] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a7 = #C1, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A4.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A4::foo} = a8;
}
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
index 5a63ba0..512caf3 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
@@ -51,6 +51,6 @@
synthetic constructor •() → self::ConstClass
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3402,getterSelectorId:3403] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3335,getterSelectorId:3336] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}
diff --git a/runtime/tests/concurrency/stress_test_list.json b/runtime/tests/concurrency/stress_test_list.json
index a3073eb..9922f32 100644
--- a/runtime/tests/concurrency/stress_test_list.json
+++ b/runtime/tests/concurrency/stress_test_list.json
@@ -3295,7 +3295,6 @@
"../../../tests/standalone/io/http_parser_header_add_test.dart",
"../../../tests/standalone/io/http_proxy_close_test.dart",
"../../../tests/standalone/io/http_proxy_configuration_test.dart",
- "../../../tests/standalone/io/http_redirect_test.dart",
"../../../tests/standalone/io/http_request_pipeling_test.dart",
"../../../tests/standalone/io/http_requested_uri_test.dart",
"../../../tests/standalone/io/http_response_deadline_test.dart",
@@ -6622,7 +6621,6 @@
"../../../tests/standalone_2/io/http_parser_header_add_test.dart",
"../../../tests/standalone_2/io/http_proxy_close_test.dart",
"../../../tests/standalone_2/io/http_proxy_configuration_test.dart",
- "../../../tests/standalone_2/io/http_redirect_test.dart",
"../../../tests/standalone_2/io/http_request_pipeling_test.dart",
"../../../tests/standalone_2/io/http_requested_uri_test.dart",
"../../../tests/standalone_2/io/http_response_deadline_test.dart",
diff --git a/sdk/lib/_http/http_impl.dart b/sdk/lib/_http/http_impl.dart
index 312ca7c..b97025a 100644
--- a/sdk/lib/_http/http_impl.dart
+++ b/sdk/lib/_http/http_impl.dart
@@ -2340,7 +2340,7 @@
final SecurityContext? context;
final Set<_HttpClientConnection> _idle = HashSet();
final Set<_HttpClientConnection> _active = HashSet();
- final Set<ConnectionTask> _socketTasks = HashSet();
+ final Set<ConnectionTask<Socket>> _socketTasks = HashSet();
final _pending = ListQueue<void Function()>();
int _connecting = 0;
@@ -2434,14 +2434,14 @@
return currentBadCertificateCallback(certificate, uriHost, uriPort);
}
- Future<ConnectionTask> connectionTask = (isSecure && proxy.isDirect
+ Future<ConnectionTask<Socket>> connectionTask = (isSecure && proxy.isDirect
? SecureSocket.startConnect(host, port,
context: context, onBadCertificate: callback)
: Socket.startConnect(host, port));
_connecting++;
- return connectionTask.then((ConnectionTask task) {
+ return connectionTask.then((ConnectionTask<Socket> task) {
_socketTasks.add(task);
- Future socketFuture = task.socket;
+ Future<Socket> socketFuture = task.socket;
final Duration? connectionTimeout = client.connectionTimeout;
if (connectionTimeout != null) {
socketFuture = socketFuture.timeout(connectionTimeout);
diff --git a/sdk/lib/_internal/vm/bin/platform_patch.dart b/sdk/lib/_internal/vm/bin/platform_patch.dart
index db632d6..fbcd877 100644
--- a/sdk/lib/_internal/vm/bin/platform_patch.dart
+++ b/sdk/lib/_internal/vm/bin/platform_patch.dart
@@ -48,7 +48,7 @@
static String? _packageConfig() => VMLibraryHooks.packageConfigString;
@patch
- static Uri _script() => VMLibraryHooks.platformScript;
+ static Uri _script() => VMLibraryHooks.platformScript!;
// This script singleton is written to by the embedder if applicable.
@pragma("vm:entry-point")
diff --git a/sdk/lib/_internal/vm/lib/convert_patch.dart b/sdk/lib/_internal/vm/lib/convert_patch.dart
index 2885579..5893e26 100644
--- a/sdk/lib/_internal/vm/lib/convert_patch.dart
+++ b/sdk/lib/_internal/vm/lib/convert_patch.dart
@@ -28,12 +28,7 @@
@patch
dynamic _parseJson(
String source, Object? Function(Object? key, Object? value)? reviver) {
- _BuildJsonListener listener;
- if (reviver == null) {
- listener = new _BuildJsonListener();
- } else {
- listener = new _ReviverJsonListener(reviver);
- }
+ _JsonListener listener = new _JsonListener(reviver);
var parser = new _JsonStringParser(listener);
parser.chunk = source;
parser.chunkEnd = source.length;
@@ -88,36 +83,16 @@
// Simple API for JSON parsing.
/**
- * Listener for parsing events from [_ChunkedJsonParser].
- */
-abstract class _JsonListener {
- void handleString(String value) {}
- void handleNumber(num value) {}
- void handleBool(bool value) {}
- void handleNull() {}
- void beginObject() {}
- void propertyName() {}
- void propertyValue() {}
- void endObject() {}
- void beginArray() {}
- void arrayElement() {}
- void endArray() {}
-
- /**
- * Read out the final result of parsing a JSON string.
- *
- * Must only be called when the entire input has been parsed.
- */
- dynamic get result;
-}
-
-/**
- * A [_JsonListener] that builds data objects from the parser events.
+ * A [_JsonListener] builds data objects from the parser events.
*
* This is a simple stack-based object builder. It keeps the most recently
* seen value in a variable, and uses it depending on the following event.
*/
-class _BuildJsonListener extends _JsonListener {
+class _JsonListener {
+ _JsonListener(this.reviver);
+
+ final Object? Function(Object? key, Object? value)? reviver;
+
/**
* Stack used to handle nested containers.
*
@@ -126,12 +101,17 @@
* which is also stored on the stack.
*/
final List<Object?> stack = [];
- /** The current [Map] or [List] being built. */
- dynamic currentContainer;
+
+ /** The current [Map] or [List] being built, or null if not building a
+ * container.
+ */
+ Object? currentContainer;
+
/** The most recently read property key. */
String key = '';
+
/** The most recently read value. */
- dynamic value;
+ Object? value;
/** Pushes the currently active container (and key, if a [Map]). */
void pushContainer() {
@@ -168,12 +148,16 @@
}
void propertyName() {
- key = value;
+ key = value as String;
value = null;
}
void propertyValue() {
- Map map = currentContainer;
+ var map = currentContainer as Map;
+ var reviver = this.reviver;
+ if (reviver != null) {
+ value = reviver(key, value);
+ }
map[key] = value;
key = '';
value = null;
@@ -185,11 +169,16 @@
void beginArray() {
pushContainer();
- currentContainer = [];
+ currentContainer = <dynamic>[];
}
void arrayElement() {
- currentContainer.add(value);
+ var list = currentContainer as List;
+ var reviver = this.reviver;
+ if (reviver != null) {
+ value = reviver(list.length, value);
+ }
+ list.add(value);
value = null;
}
@@ -197,30 +186,19 @@
popContainer();
}
- /** Read out the final result of parsing a JSON string. */
+ /**
+ * Read out the final result of parsing a JSON string.
+ *
+ * Must only be called when the entire input has been parsed.
+ */
dynamic get result {
assert(currentContainer == null);
- return value;
- }
-}
-
-class _ReviverJsonListener extends _BuildJsonListener {
- final Object? Function(Object? key, Object? value) reviver;
- _ReviverJsonListener(this.reviver);
-
- void arrayElement() {
- List list = currentContainer;
- value = reviver(list.length, value);
- super.arrayElement();
- }
-
- void propertyValue() {
- value = reviver(key, value);
- super.propertyValue();
- }
-
- dynamic get result {
- return reviver(null, value);
+ var reviver = this.reviver;
+ if (reviver != null) {
+ return reviver(null, value);
+ } else {
+ return value;
+ }
}
}
@@ -1477,13 +1455,7 @@
static _JsonStringParser _createParser(
Object? Function(Object? key, Object? value)? reviver) {
- _BuildJsonListener listener;
- if (reviver == null) {
- listener = new _BuildJsonListener();
- } else {
- listener = new _ReviverJsonListener(reviver);
- }
- return new _JsonStringParser(listener);
+ return new _JsonStringParser(new _JsonListener(reviver));
}
void addSlice(String chunk, int start, int end, bool isLast) {
@@ -1591,13 +1563,7 @@
static _JsonUtf8Parser _createParser(
Object? Function(Object? key, Object? value)? reviver,
bool allowMalformed) {
- _BuildJsonListener listener;
- if (reviver == null) {
- listener = new _BuildJsonListener();
- } else {
- listener = new _ReviverJsonListener(reviver);
- }
- return new _JsonUtf8Parser(listener, allowMalformed);
+ return new _JsonUtf8Parser(new _JsonListener(reviver), allowMalformed);
}
void addSlice(List<int> chunk, int start, int end, bool isLast) {
diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart
index 3d7a3cd8f..e0267ab 100644
--- a/sdk/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk/lib/_internal/vm/lib/internal_patch.dart
@@ -7,6 +7,7 @@
/// used by patches of that library. We plan to change this when we have a
/// shared front end and simply use parts.
+import "dart:async" show Timer;
import "dart:core" hide Symbol;
import "dart:isolate" show SendPort;
@@ -69,36 +70,30 @@
class VMLibraryHooks {
// Example: "dart:isolate _Timer._factory"
- static var timerFactory;
+ static Timer Function(int, void Function(Timer), bool)? timerFactory;
// Example: "dart:io _EventHandler._sendData"
- static var eventHandlerSendData;
+ static late void Function(Object?, SendPort, int) eventHandlerSendData;
// A nullary closure that answers the current clock value in milliseconds.
// Example: "dart:io _EventHandler._timerMillisecondClock"
- static var timerMillisecondClock;
-
- // Implementation of Resource.readAsBytes.
- static var resourceReadAsBytes;
+ static late int Function() timerMillisecondClock;
// Implementation of package root/map provision.
- static var packageRootString;
- static var packageConfigString;
- static var packageConfigUriFuture;
- static var resolvePackageUriFuture;
+ static String? packageRootString;
+ static String? packageConfigString;
+ static Future<Uri?> Function()? packageConfigUriFuture;
+ static Future<Uri?> Function(Uri)? resolvePackageUriFuture;
- static var _computeScriptUri;
- static var _cachedScript;
- static set platformScript(var f) {
- _computeScriptUri = f;
+ static Uri Function()? _computeScriptUri;
+ static Uri? _cachedScript;
+ static set platformScript(Object? f) {
+ _computeScriptUri = f as Uri Function()?;
_cachedScript = null;
}
- static get platformScript {
- if (_cachedScript == null && _computeScriptUri != null) {
- _cachedScript = _computeScriptUri();
- }
- return _cachedScript;
+ static Uri? get platformScript {
+ return _cachedScript ??= _computeScriptUri?.call();
}
}
diff --git a/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart b/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
index ae387bf..6c75bc2 100644
--- a/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
+++ b/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
@@ -40,8 +40,8 @@
// Internal representation of the invocation mirror.
String? _functionName;
- List? _argumentsDescriptor;
- List? _arguments;
+ List<Object?>? _argumentsDescriptor;
+ List<Object?>? _arguments;
bool _isSuperInvocation = false;
int _delayedTypeArgumentsLen = 0;
@@ -49,8 +49,8 @@
Symbol? _memberName;
int _type = _UNINITIALIZED;
List<Type>? _typeArguments;
- List? _positionalArguments;
- Map<Symbol, dynamic>? _namedArguments;
+ List<Object?>? _positionalArguments;
+ Map<Symbol, Object?>? _namedArguments;
_InvocationMirror._withType(this._memberName, int? type, this._typeArguments,
this._positionalArguments, this._namedArguments)
@@ -87,7 +87,7 @@
}
int get _typeArgsLen {
- int typeArgsLen = _argumentsDescriptor![_TYPE_ARGS_LEN];
+ var typeArgsLen = _argumentsDescriptor![_TYPE_ARGS_LEN] as int;
return typeArgsLen == 0 ? _delayedTypeArgumentsLen : typeArgsLen;
}
@@ -113,12 +113,13 @@
if (_positionalArguments == null) {
// The argument descriptor counts the receiver, but not the type arguments
// as positional arguments.
- int numPositionalArguments = _argumentsDescriptor![_POSITIONAL_COUNT] - 1;
+ var numPositionalArguments =
+ (_argumentsDescriptor![_POSITIONAL_COUNT] as int) - 1;
if (numPositionalArguments == 0) {
return _positionalArguments = const [];
}
// Exclude receiver and type args in the returned list.
- int receiverIndex = _typeArgsLen > 0 ? 1 : 0;
+ var receiverIndex = _typeArgsLen > 0 ? 1 : 0;
var args = _arguments!;
_positionalArguments = new _ImmutableList._from(
args, receiverIndex + 1, numPositionalArguments);
@@ -129,18 +130,20 @@
Map<Symbol, dynamic> get namedArguments {
if (_namedArguments == null) {
final argsDescriptor = _argumentsDescriptor!;
- int numArguments = argsDescriptor[_COUNT] - 1; // Exclude receiver.
- int numPositionalArguments = argsDescriptor[_POSITIONAL_COUNT] - 1;
- int numNamedArguments = numArguments - numPositionalArguments;
+ var numArguments =
+ (argsDescriptor[_COUNT] as int) - 1; // Exclude receiver.
+ var numPositionalArguments =
+ (argsDescriptor[_POSITIONAL_COUNT] as int) - 1;
+ var numNamedArguments = numArguments - numPositionalArguments;
if (numNamedArguments == 0) {
return _namedArguments = const {};
}
- int receiverIndex = _typeArgsLen > 0 ? 1 : 0;
- final namedArguments = new Map<Symbol, dynamic>();
- for (int i = 0; i < numNamedArguments; i++) {
- int namedEntryIndex = _FIRST_NAMED_ENTRY + 2 * i;
- int pos = argsDescriptor[namedEntryIndex + 1];
- String arg_name = argsDescriptor[namedEntryIndex];
+ var receiverIndex = _typeArgsLen > 0 ? 1 : 0;
+ final namedArguments = new Map<Symbol, Object?>();
+ for (var i = 0; i < numNamedArguments; i++) {
+ var namedEntryIndex = _FIRST_NAMED_ENTRY + 2 * i;
+ var pos = argsDescriptor[namedEntryIndex + 1] as int;
+ var arg_name = argsDescriptor[namedEntryIndex] as String;
var arg_value = _arguments![receiverIndex + pos];
namedArguments[new internal.Symbol.unvalidated(arg_name)] = arg_value;
}
diff --git a/sdk/lib/_internal/vm/lib/timer_impl.dart b/sdk/lib/_internal/vm/lib/timer_impl.dart
index 32f43d0..1f27731 100644
--- a/sdk/lib/_internal/vm/lib/timer_impl.dart
+++ b/sdk/lib/_internal/vm/lib/timer_impl.dart
@@ -29,8 +29,9 @@
if (_used == _list.length) {
_resize();
}
- timer._indexOrNext = _used++;
- _list[timer._indexOrNext] = timer;
+ var index = _used++;
+ timer._indexOrNext = index;
+ _list[index] = timer;
_bubbleUp(timer);
}
@@ -49,8 +50,9 @@
}
var last = _list[_used];
if (!identical(last, timer)) {
- last._indexOrNext = timer._indexOrNext;
- _list[last._indexOrNext] = last;
+ var index = timer._indexOrNext as int;
+ last._indexOrNext = index;
+ _list[index] = last;
if (last._compareTo(timer) < 0) {
_bubbleUp(last);
} else {
@@ -81,8 +83,8 @@
void _bubbleDown(_Timer timer) {
while (true) {
- int leftIndex = _leftChildIndex(timer._indexOrNext);
- int rightIndex = _rightChildIndex(timer._indexOrNext);
+ var leftIndex = _leftChildIndex(timer._indexOrNext as int);
+ var rightIndex = _rightChildIndex(timer._indexOrNext as int);
_Timer newest = timer;
if (leftIndex < _used && _list[leftIndex]._compareTo(newest) < 0) {
newest = _list[leftIndex];
@@ -99,14 +101,16 @@
}
void _swap(_Timer first, _Timer second) {
- int tmp = first._indexOrNext;
- first._indexOrNext = second._indexOrNext;
- second._indexOrNext = tmp;
- _list[first._indexOrNext] = first;
- _list[second._indexOrNext] = second;
+ var newFirstIndex = second._indexOrNext as int;
+ var newSecondIndex = first._indexOrNext as int;
+ first._indexOrNext = newFirstIndex;
+ second._indexOrNext = newSecondIndex;
+ _list[newFirstIndex] = first;
+ _list[newSecondIndex] = second;
}
- _Timer _parent(_Timer timer) => _list[_parentIndex(timer._indexOrNext)];
+ _Timer _parent(_Timer timer) =>
+ _list[_parentIndex(timer._indexOrNext as int)];
static int _parentIndex(int index) => (index - 1) ~/ 2;
static int _leftChildIndex(int index) => 2 * index + 1;
@@ -136,18 +140,19 @@
static const _ID_MASK = 0x1fffffff;
static int _idCount = 0;
- static RawReceivePort? _receivePort;
+ static _RawReceivePortImpl? _receivePort;
static SendPort? _sendPort;
static bool _receivePortActive = false;
static int _scheduledWakeupTime = 0;
static bool _handlingCallbacks = false;
- Function? _callback; // Closure to call when timer fires. null if canceled.
+ void Function(Timer)?
+ _callback; // Closure to call when timer fires. null if canceled.
int _wakeupTime; // Expiration time.
final int _milliSeconds; // Duration specified at creation.
final bool _repeating; // Indicates periodic timers.
- var _indexOrNext; // Index if part of the TimerHeap, link otherwise.
+ Object? _indexOrNext; // Index if part of the TimerHeap, link otherwise.
int _id; // Incrementing id to enable sorting of timers with same expiry.
int _tick = 0; // Backing for [tick],
@@ -271,20 +276,20 @@
// Handle the notification of a zero timer. Make sure to also execute non-zero
// timers with a lower expiration time.
- static List _queueFromZeroEvent() {
- var pendingTimers = <dynamic>[];
+ static List<_Timer> _queueFromZeroEvent() {
+ var pendingTimers = <_Timer>[];
final firstTimer = _firstZeroTimer;
if (firstTimer != null) {
// Collect pending timers from the timer heap that have an expiration prior
// to the currently notified zero timer.
- var timer;
+ _Timer timer;
while (!_heap.isEmpty && (_heap.first._compareTo(firstTimer) < 0)) {
timer = _heap.removeFirst();
pendingTimers.add(timer);
}
// Append the first zero timer to the pending timers.
- timer = _firstZeroTimer;
- _firstZeroTimer = timer._indexOrNext;
+ timer = firstTimer;
+ _firstZeroTimer = timer._indexOrNext as _Timer?;
timer._indexOrNext = null;
pendingTimers.add(timer);
}
@@ -321,8 +326,8 @@
}
}
- static List _queueFromTimeoutEvent() {
- var pendingTimers = [];
+ static List<_Timer> _queueFromTimeoutEvent() {
+ var pendingTimers = <_Timer>[];
final firstTimer = _firstZeroTimer;
if (firstTimer != null) {
// Collect pending timers from the timer heap that have an expiration
@@ -331,25 +336,23 @@
// current time, meaning all timers which are "less than" the first zero
// timer are expired. The first zero timer will be dispatched when its
// corresponding message is delivered.
- var timer;
while (!_heap.isEmpty && (_heap.first._compareTo(firstTimer) < 0)) {
- timer = _heap.removeFirst();
+ var timer = _heap.removeFirst();
pendingTimers.add(timer);
}
} else {
// Collect pending timers from the timer heap which have expired at this
// time.
var currentTime = VMLibraryHooks.timerMillisecondClock();
- var timer;
while (!_heap.isEmpty && (_heap.first._wakeupTime <= currentTime)) {
- timer = _heap.removeFirst();
+ var timer = _heap.removeFirst();
pendingTimers.add(timer);
}
}
return pendingTimers;
}
- static void _runTimers(List pendingTimers) {
+ static void _runTimers(List<_Timer> pendingTimers) {
// If there are no pending timers currently reset the id space before we
// have a chance to enqueue new timers.
if (_heap.isEmpty && (_firstZeroTimer == null)) {
@@ -375,8 +378,8 @@
// One of the timers in the pending_timers list can cancel
// one of the later timers which will set the callback to
// null. Or the pending zero timer has been canceled earlier.
- if (timer._callback != null) {
- var callback = timer._callback;
+ var callback = timer._callback;
+ if (callback != null) {
if (!timer._repeating) {
// Mark timer as inactive.
timer._callback = null;
@@ -414,7 +417,7 @@
}
static void _handleMessage(msg) {
- var pendingTimers;
+ List<_Timer> pendingTimers;
if (msg == _ZERO_EVENT) {
pendingTimers = _queueFromZeroEvent();
assert(pendingTimers.length > 0);
@@ -434,14 +437,14 @@
if (!_receivePortActive) {
_createTimerHandler();
}
- VMLibraryHooks.eventHandlerSendData(null, _sendPort, wakeupTime);
+ VMLibraryHooks.eventHandlerSendData(null, _sendPort!, wakeupTime);
_scheduledWakeupTime = wakeupTime;
}
// Cancel pending wakeups in the event handler.
static void _cancelWakeup() {
if (_sendPort != null) {
- VMLibraryHooks.eventHandlerSendData(null, _sendPort, _NO_TIMER);
+ VMLibraryHooks.eventHandlerSendData(null, _sendPort!, _NO_TIMER);
_scheduledWakeupTime = 0;
}
}
@@ -449,22 +452,23 @@
// Create a receive port and register a message handler for the timer
// events.
static void _createTimerHandler() {
- if (_receivePort == null) {
- assert(_receivePort == null);
+ var receivePort = _receivePort;
+ if (receivePort == null) {
assert(_sendPort == null);
- final port = RawReceivePort(_handleMessage, 'Timer');
- _receivePort = port;
+ final port = _RawReceivePortImpl('Timer');
+ port.handler = _handleMessage;
_sendPort = port.sendPort;
+ _receivePort = port;
_scheduledWakeupTime = 0;
} else {
- (_receivePort as _RawReceivePortImpl)._setActive(true);
+ receivePort._setActive(true);
}
_receivePortActive = true;
}
static void _shutdownTimerHandler() {
_scheduledWakeupTime = 0;
- (_receivePort as _RawReceivePortImpl)._setActive(false);
+ _receivePort!._setActive(false);
_receivePortActive = false;
}
diff --git a/tools/VERSION b/tools/VERSION
index 754897b..499468e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 17
PATCH 0
-PRERELEASE 100
+PRERELEASE 101
PRERELEASE_PATCH 0
\ No newline at end of file