Version 2.17.0-215.0.dev
Merge commit 'fc513d9448d5f0353ae1d7377a9a05daa47230ec' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 620fd67..40c42a8 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -2778,14 +2778,38 @@
problemMessage: r"""Enum constructors can't be torn off.""");
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)>
+ templateEnumContainsRestrictedInstanceDeclaration =
+ const Template<Message Function(String name)>(
+ problemMessageTemplate:
+ r"""An enum can't declare a non-abstract member named '#name'.""",
+ withArguments: _withArgumentsEnumContainsRestrictedInstanceDeclaration);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)>
+ codeEnumContainsRestrictedInstanceDeclaration =
+ const Code<Message Function(String name)>(
+ "EnumContainsRestrictedInstanceDeclaration",
+);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsEnumContainsRestrictedInstanceDeclaration(String name) {
+ if (name.isEmpty) throw 'No name provided';
+ name = demangleMixinApplicationName(name);
+ return new Message(codeEnumContainsRestrictedInstanceDeclaration,
+ problemMessage:
+ """An enum can't declare a non-abstract member named '${name}'.""",
+ arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeEnumContainsValuesDeclaration =
messageEnumContainsValuesDeclaration;
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const MessageCode messageEnumContainsValuesDeclaration = const MessageCode(
"EnumContainsValuesDeclaration",
- problemMessage:
- r"""Enums can't contain declarations of members with the name 'values'.""");
+ problemMessage: r"""An enum can't declare a member named 'values'.""");
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeEnumDeclarationEmpty = messageEnumDeclarationEmpty;
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 0d215bd..8910926 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
@@ -36,6 +36,7 @@
templateDuplicatedDeclaration,
templateDuplicatedDeclarationCause,
templateDuplicatedDeclarationSyntheticCause,
+ templateEnumContainsRestrictedInstanceDeclaration,
templateEnumConstantSameNameAsEnclosing;
import '../kernel/body_builder.dart';
@@ -271,6 +272,28 @@
fileUri);
}
+ for (String restrictedInstanceMemberName in const [
+ "index",
+ "hashCode",
+ "=="
+ ]) {
+ Builder? customIndexDeclaration =
+ scope.lookupLocalMember(restrictedInstanceMemberName, setter: false);
+ if (customIndexDeclaration is MemberBuilder &&
+ !customIndexDeclaration.isAbstract) {
+ // Retrieve the earliest declaration for error reporting.
+ while (customIndexDeclaration?.next != null) {
+ customIndexDeclaration = customIndexDeclaration?.next;
+ }
+ parent.addProblem(
+ templateEnumContainsRestrictedInstanceDeclaration
+ .withArguments(restrictedInstanceMemberName),
+ customIndexDeclaration!.charOffset,
+ customIndexDeclaration.fullNameForErrors.length,
+ fileUri);
+ }
+ }
+
SourceFieldBuilder valuesBuilder = new SourceFieldBuilder(
/* metadata = */ null,
listType,
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index ba85304..5ea9761 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -217,6 +217,8 @@
EnumConstructorSuperInitializer/example: Fail
EnumConstructorTearoff/analyzerCode: Fail
EnumConstructorTearoff/example: Fail
+EnumContainsRestrictedInstanceDeclaration/analyzerCode: Fail
+EnumContainsRestrictedInstanceDeclaration/example: Fail
EnumContainsValuesDeclaration/analyzerCode: Fail
EnumContainsValuesDeclaration/example: Fail
EnumDeclaresConstFactory/analyzerCode: Fail
@@ -225,6 +227,8 @@
EnumDeclaresFactory/example: Fail
EnumFactoryRedirectsToConstructor/analyzerCode: Fail
EnumFactoryRedirectsToConstructor/example: Fail
+EnumImplementerContainsForbiddedInstanceDeclaration/analyzerCode: Fail
+EnumImplementerContainsForbiddedInstanceDeclaration/example: Fail
EnumImplementerContainsValuesDeclaration/analyzerCode: Fail
EnumImplementerContainsValuesDeclaration/example: Fail
EnumInstantiation/example: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index b8822fa..730af31 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -5493,7 +5493,7 @@
problemMessage: "Enum factory constructors can't redirect to generative constructors."
EnumContainsValuesDeclaration:
- problemMessage: "Enums can't contain declarations of members with the name 'values'."
+ problemMessage: "An enum can't declare a member named 'values'."
EnumImplementerContainsValuesDeclaration:
problemMessage: "'#name' has 'Enum' as a superinterface and can't contain non-static member with name 'values'."
@@ -5516,3 +5516,6 @@
OptionalSuperParameterWithoutInitializer:
problemMessage: "Type '#type' of the optional super-initializer parameter '#name' doesn't allow 'null', but the parameter doesn't have a default value, and the default value can't be copied from the corresponding parameter of the super constructor."
+
+EnumContainsRestrictedInstanceDeclaration:
+ problemMessage: "An enum can't declare a non-abstract member named '#name'."
diff --git a/pkg/front_end/test/fasta/expression_suite.dart b/pkg/front_end/test/fasta/expression_suite.dart
index 47c08bb..70c7a91 100644
--- a/pkg/front_end/test/fasta/expression_suite.dart
+++ b/pkg/front_end/test/fasta/expression_suite.dart
@@ -613,7 +613,7 @@
errors.add(message);
}
..environmentDefines = const {}
- ..explicitExperimentalFlags = {ExperimentalFlag.nonNullable: false}
+ ..explicitExperimentalFlags = {}
..allowedExperimentalFlagsForTesting = const AllowedExperimentalFlags();
final ProcessedOptions options =
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart
new file mode 100644
index 0000000..dbad564
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.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.
+
+enum E1 {
+ element;
+
+ bool operator==(Object other) => true; // Error.
+}
+
+enum E2 {
+ element;
+
+ bool operator==(Object other); // Ok.
+}
+
+abstract class I3 {
+ bool operator==(Object other);
+}
+
+enum E3 implements I3 { element } // Ok.
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect
new file mode 100644
index 0000000..b0f0e52
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.expect
@@ -0,0 +1,68 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_equals.dart:8:16: Error: An enum can't declare a non-abstract member named '=='.
+// bool operator==(Object other) => true; // Error.
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ operator ==(core::Object other) → core::bool
+ return true;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ abstract operator ==(core::Object other) → core::bool;
+}
+abstract class I3 extends core::Object {
+ synthetic constructor •() → self::I3
+ : super core::Object::•()
+ ;
+ abstract operator ==(core::Object other) → core::bool;
+}
+class E3 extends core::_Enum implements self::I3 /*isEnum*/ {
+ static const field core::List<self::E3> values = #C8;
+ static const field self::E3 element = #C7;
+ 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}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2>[#C5]
+ #C7 = self::E3 {index:#C1, _name:#C2}
+ #C8 = <self::E3>[#C7]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_equals.dart:
+- E1. (from org-dartlang-testcase:///declared_equals.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_equals.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_equals.dart:21:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect
new file mode 100644
index 0000000..b0f0e52
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.strong.transformed.expect
@@ -0,0 +1,68 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_equals.dart:8:16: Error: An enum can't declare a non-abstract member named '=='.
+// bool operator==(Object other) => true; // Error.
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ operator ==(core::Object other) → core::bool
+ return true;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ abstract operator ==(core::Object other) → core::bool;
+}
+abstract class I3 extends core::Object {
+ synthetic constructor •() → self::I3
+ : super core::Object::•()
+ ;
+ abstract operator ==(core::Object other) → core::bool;
+}
+class E3 extends core::_Enum implements self::I3 /*isEnum*/ {
+ static const field core::List<self::E3> values = #C8;
+ static const field self::E3 element = #C7;
+ 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}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2>[#C5]
+ #C7 = self::E3 {index:#C1, _name:#C2}
+ #C8 = <self::E3>[#C7]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_equals.dart:
+- E1. (from org-dartlang-testcase:///declared_equals.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_equals.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_equals.dart:21:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.textual_outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.textual_outline.expect
new file mode 100644
index 0000000..22f42d5
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.textual_outline.expect
@@ -0,0 +1,19 @@
+enum E1 {
+ element;
+
+ bool operator ==(Object other) => true;
+}
+
+enum E2 {
+ element;
+
+ bool operator ==(Object other);
+}
+
+abstract class I3 {
+ bool operator ==(Object other);
+}
+
+enum E3 implements I3 { element }
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a705c86
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.textual_outline_modelled.expect
@@ -0,0 +1,19 @@
+abstract class I3 {
+ bool operator ==(Object other);
+}
+
+enum E1 {
+ element;
+
+ bool operator ==(Object other) => true;
+}
+
+enum E2 {
+ element;
+
+ bool operator ==(Object other);
+}
+
+enum E3 implements I3 { element }
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect
new file mode 100644
index 0000000..e9a2e61
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.expect
@@ -0,0 +1,68 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_equals.dart:8:16: Error: An enum can't declare a non-abstract member named '=='.
+// bool operator==(Object other) => true; // Error.
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ operator ==(core::Object other) → core::bool
+ return true;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ abstract operator ==(core::Object other) → core::bool;
+}
+abstract class I3 extends core::Object {
+ synthetic constructor •() → self::I3
+ : super core::Object::•()
+ ;
+ abstract operator ==(core::Object other) → core::bool;
+}
+class E3 extends core::_Enum implements self::I3 /*isEnum*/ {
+ static const field core::List<self::E3> values = #C8;
+ static const field self::E3 element = #C7;
+ 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}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = self::E3 {index:#C1, _name:#C2}
+ #C8 = <self::E3*>[#C7]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_equals.dart:
+- E1. (from org-dartlang-testcase:///declared_equals.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_equals.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_equals.dart:21:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect
new file mode 100644
index 0000000..e9a2e61
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.modular.expect
@@ -0,0 +1,68 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_equals.dart:8:16: Error: An enum can't declare a non-abstract member named '=='.
+// bool operator==(Object other) => true; // Error.
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ operator ==(core::Object other) → core::bool
+ return true;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ abstract operator ==(core::Object other) → core::bool;
+}
+abstract class I3 extends core::Object {
+ synthetic constructor •() → self::I3
+ : super core::Object::•()
+ ;
+ abstract operator ==(core::Object other) → core::bool;
+}
+class E3 extends core::_Enum implements self::I3 /*isEnum*/ {
+ static const field core::List<self::E3> values = #C8;
+ static const field self::E3 element = #C7;
+ 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}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = self::E3 {index:#C1, _name:#C2}
+ #C8 = <self::E3*>[#C7]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_equals.dart:
+- E1. (from org-dartlang-testcase:///declared_equals.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_equals.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_equals.dart:21:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect
new file mode 100644
index 0000000..9e49691
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.outline.expect
@@ -0,0 +1,58 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_equals.dart:8:16: Error: An enum can't declare a non-abstract member named '=='.
+// bool operator==(Object other) => true; // Error.
+// ^^
+//
+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>[self::E1::element];
+ static const field self::E1 element = const self::E1::•(0, "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}}";
+ operator ==(core::Object other) → core::bool
+ ;
+}
+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}}";
+ abstract operator ==(core::Object other) → core::bool;
+}
+abstract class I3 extends core::Object {
+ synthetic constructor •() → self::I3
+ ;
+ abstract operator ==(core::Object other) → core::bool;
+}
+class E3 extends core::_Enum implements self::I3 /*isEnum*/ {
+ static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
+ static const field self::E3 element = const self::E3::•(0, "element");
+ 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}}";
+}
+static method main() → dynamic
+ ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_equals.dart:5:6 -> ListConstant(const <E1*>[const E1{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_equals.dart:6:3 -> InstanceConstant(const E1{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_equals.dart:11:6 -> ListConstant(const <E2*>[const E2{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_equals.dart:12:3 -> InstanceConstant(const E2{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_equals.dart:21:6 -> ListConstant(const <E3*>[const E3{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_equals.dart:21:25 -> InstanceConstant(const E3{_Enum.index: 0, _Enum._name: "element"})
+Extra constant evaluation: evaluated: 21, effectively constant: 6
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect
new file mode 100644
index 0000000..e9a2e61
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_equals.dart.weak.transformed.expect
@@ -0,0 +1,68 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_equals.dart:8:16: Error: An enum can't declare a non-abstract member named '=='.
+// bool operator==(Object other) => true; // Error.
+// ^^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ operator ==(core::Object other) → core::bool
+ return true;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ abstract operator ==(core::Object other) → core::bool;
+}
+abstract class I3 extends core::Object {
+ synthetic constructor •() → self::I3
+ : super core::Object::•()
+ ;
+ abstract operator ==(core::Object other) → core::bool;
+}
+class E3 extends core::_Enum implements self::I3 /*isEnum*/ {
+ static const field core::List<self::E3> values = #C8;
+ static const field self::E3 element = #C7;
+ 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}}";
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = self::E3 {index:#C1, _name:#C2}
+ #C8 = <self::E3*>[#C7]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_equals.dart:
+- E1. (from org-dartlang-testcase:///declared_equals.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_equals.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_equals.dart:21:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart
new file mode 100644
index 0000000..2630888
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart
@@ -0,0 +1,89 @@
+// 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;
+
+ int get hashCode => 42; // Error.
+}
+
+enum E2 {
+ element;
+
+ String get hashCode => "foo"; // Error.
+}
+
+enum E3 {
+ element;
+
+ final int hashCode = 42; // Error.
+}
+
+enum E4 {
+ element;
+
+ List<String> hashCode() => []; // Error.
+}
+
+enum E5 {
+ element;
+
+ Never get hashCode => throw 42; // Error.
+}
+
+enum E6 {
+ element;
+
+ final int foo = 0, hashCode = 1, bar = 2; // Error.
+}
+
+enum E7 {
+ element;
+
+ void set hashCode(int value) {} // Ok.
+
+ int get hashCode; // Ok.
+}
+
+enum E8 {
+ element;
+
+ void set hashCode(String value) {} // Error.
+}
+
+enum E9 {
+ element;
+
+ double get hashCode; // Error.
+}
+
+enum E10 {
+ element;
+
+ static int get hashCode => 42; // Error.
+}
+
+enum E11 {
+ element;
+
+ static void set hashCode(int value) {} // Error.
+}
+
+enum E12 {
+ hashCode // Error.
+}
+
+abstract class I13 {
+ int get hashCode;
+}
+
+enum E13 implements I13 { element } // Ok.
+
+abstract class I14 {
+ Never get hashCode;
+}
+
+enum E14 implements I14 { element } // Error.
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect
new file mode 100644
index 0000000..b907c0c
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.strong.expect
@@ -0,0 +1,324 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:8:11: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// String get hashCode => "foo"; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:20:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int hashCode = 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:32:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// Never get hashCode => throw 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:38:22: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int foo = 0, hashCode = 1, bar = 2; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set hashCode(int value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// hashCode // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: The return type of the method 'E2.hashCode' is 'String', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// String get hashCode => "foo"; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:52:12: Error: The type 'int' of the inherited getter 'Object.hashCode' is not a subtype of the type 'String' of the setter 'E8.hashCode'.
+// void set hashCode(String value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the declaration of the getter 'Object.hashCode'.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Error: The return type of the method 'E9.hashCode' is 'double', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// double get hashCode; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:55:6: Error: The implementation of 'hashCode' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.hashCode'.
+// Change to a subtype of 'double'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Context: This is the overridden method ('hashCode').
+// double get hashCode; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:87:6: Error: The implementation of 'hashCode' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.hashCode'.
+// Change to a subtype of 'Never'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:84:13: Context: This is the overridden method ('hashCode').
+// Never get hashCode;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ get hashCode() → core::int
+ return 42;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ get hashCode() → core::String
+ return "foo";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C9;
+ final field core::int hashCode = 42;
+ static const field self::E3 element = #C8;
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C11;
+ static const field self::E4 element = #C10;
+ 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}}";
+ method hashCode() → core::List<core::String>
+ return <core::String>[];
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C13;
+ static const field self::E5 element = #C12;
+ 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}}";
+ get hashCode() → Never
+ return throw 42;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C17;
+ final field core::int foo = 0;
+ final field core::int hashCode = 1;
+ final field core::int bar = 2;
+ static const field self::E6 element = #C16;
+ 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}}";
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C19;
+ static const field self::E7 element = #C18;
+ 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}}";
+ set hashCode(core::int value) → void {}
+ abstract get hashCode() → core::int;
+}
+class E8 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E8> values = #C21;
+ static const field self::E8 element = #C20;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set hashCode(core::String value) → void {}
+}
+class E9 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E9> values = #C23;
+ static const field self::E9 element = #C22;
+ const constructor •(core::int index, core::String name) → self::E9
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get hashCode() → core::double;
+}
+class E10 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E10> values = #C25;
+ static const field self::E10 element = #C24;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get hashCode() → core::int
+ return 42;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = #C27;
+ static const field self::E11 element = #C26;
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set hashCode(core::int value) → void {}
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = #C30;
+ static const field self::E12 hashCode = #C29;
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ : super core::Object::•()
+ ;
+ abstract get hashCode() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = #C32;
+ static const field self::E13 element = #C31;
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ : super core::Object::•()
+ ;
+ abstract get hashCode() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = #C34;
+ static const field self::E14 element = #C33;
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get hashCode() → Never; -> self::I14::hashCode
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2>[#C5]
+ #C7 = 42
+ #C8 = self::E3 {hashCode:#C7, index:#C1, _name:#C2}
+ #C9 = <self::E3>[#C8]
+ #C10 = self::E4 {index:#C1, _name:#C2}
+ #C11 = <self::E4>[#C10]
+ #C12 = self::E5 {index:#C1, _name:#C2}
+ #C13 = <self::E5>[#C12]
+ #C14 = 1
+ #C15 = 2
+ #C16 = self::E6 {foo:#C1, hashCode:#C14, bar:#C15, index:#C1, _name:#C2}
+ #C17 = <self::E6>[#C16]
+ #C18 = self::E7 {index:#C1, _name:#C2}
+ #C19 = <self::E7>[#C18]
+ #C20 = self::E8 {index:#C1, _name:#C2}
+ #C21 = <self::E8>[#C20]
+ #C22 = self::E9 {index:#C1, _name:#C2}
+ #C23 = <self::E9>[#C22]
+ #C24 = self::E10 {index:#C1, _name:#C2}
+ #C25 = <self::E10>[#C24]
+ #C26 = self::E11 {index:#C1, _name:#C2}
+ #C27 = <self::E11>[#C26]
+ #C28 = "hashCode"
+ #C29 = self::E12 {index:#C1, _name:#C28}
+ #C30 = <self::E12>[#C29]
+ #C31 = self::E13 {index:#C1, _name:#C2}
+ #C32 = <self::E13>[#C31]
+ #C33 = self::E14 {index:#C1, _name:#C2}
+ #C34 = <self::E14>[#C33]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_hashcode.dart:
+- E1. (from org-dartlang-testcase:///declared_hashcode.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_hashcode.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_hashcode.dart:17:6)
+- E4. (from org-dartlang-testcase:///declared_hashcode.dart:23:6)
+- E5. (from org-dartlang-testcase:///declared_hashcode.dart:29:6)
+- E6. (from org-dartlang-testcase:///declared_hashcode.dart:35:6)
+- E7. (from org-dartlang-testcase:///declared_hashcode.dart:41:6)
+- E8. (from org-dartlang-testcase:///declared_hashcode.dart:49:6)
+- E9. (from org-dartlang-testcase:///declared_hashcode.dart:55:6)
+- E10. (from org-dartlang-testcase:///declared_hashcode.dart:61:6)
+- E11. (from org-dartlang-testcase:///declared_hashcode.dart:67:6)
+- E12. (from org-dartlang-testcase:///declared_hashcode.dart:73:6)
+- E13. (from org-dartlang-testcase:///declared_hashcode.dart:81:6)
+- E14. (from org-dartlang-testcase:///declared_hashcode.dart:87:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.textual_outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.textual_outline.expect
new file mode 100644
index 0000000..b68bbf2
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.textual_outline.expect
@@ -0,0 +1,82 @@
+enum E1 {
+ element;
+
+ int get hashCode => 42;
+}
+
+enum E2 {
+ element;
+
+ String get hashCode => "foo";
+}
+
+enum E3 {
+ element;
+
+ final int hashCode = 42;
+}
+
+enum E4 {
+ element;
+
+ List<String> hashCode() => [];
+}
+
+enum E5 {
+ element;
+
+ Never get hashCode => throw 42;
+}
+
+enum E6 {
+ element;
+
+ final int foo = 0, hashCode = 1, bar = 2;
+}
+
+enum E7 {
+ element;
+
+ void set hashCode(int value) {}
+ int get hashCode;
+}
+
+enum E8 {
+ element;
+
+ void set hashCode(String value) {}
+}
+
+enum E9 {
+ element;
+
+ double get hashCode;
+}
+
+enum E10 {
+ element;
+
+ static int get hashCode => 42;
+}
+
+enum E11 {
+ element;
+
+ static void set hashCode(int value) {}
+}
+
+enum E12 { hashCode }
+
+abstract class I13 {
+ int get hashCode;
+}
+
+enum E13 implements I13 { element }
+
+abstract class I14 {
+ Never get hashCode;
+}
+
+enum E14 implements I14 { element }
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..808b575
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.textual_outline_modelled.expect
@@ -0,0 +1,82 @@
+abstract class I13 {
+ int get hashCode;
+}
+
+abstract class I14 {
+ Never get hashCode;
+}
+
+enum E1 {
+ element;
+
+ int get hashCode => 42;
+}
+
+enum E10 {
+ element;
+
+ static int get hashCode => 42;
+}
+
+enum E11 {
+ element;
+
+ static void set hashCode(int value) {}
+}
+
+enum E12 { hashCode }
+
+enum E13 implements I13 { element }
+
+enum E14 implements I14 { element }
+
+enum E2 {
+ element;
+
+ String get hashCode => "foo";
+}
+
+enum E3 {
+ element;
+
+ final int hashCode = 42;
+}
+
+enum E4 {
+ element;
+
+ List<String> hashCode() => [];
+}
+
+enum E5 {
+ element;
+
+ Never get hashCode => throw 42;
+}
+
+enum E6 {
+ element;
+
+ final int foo = 0, hashCode = 1, bar = 2;
+}
+
+enum E7 {
+ element;
+
+ void set hashCode(int value) {}
+ int get hashCode;
+}
+
+enum E8 {
+ element;
+
+ void set hashCode(String value) {}
+}
+
+enum E9 {
+ element;
+
+ double get hashCode;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect
new file mode 100644
index 0000000..8f3f873
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.expect
@@ -0,0 +1,324 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:8:11: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// String get hashCode => "foo"; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:20:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int hashCode = 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:32:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// Never get hashCode => throw 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:38:22: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int foo = 0, hashCode = 1, bar = 2; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set hashCode(int value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// hashCode // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: The return type of the method 'E2.hashCode' is 'String', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// String get hashCode => "foo"; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:52:12: Error: The type 'int' of the inherited getter 'Object.hashCode' is not a subtype of the type 'String' of the setter 'E8.hashCode'.
+// void set hashCode(String value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the declaration of the getter 'Object.hashCode'.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Error: The return type of the method 'E9.hashCode' is 'double', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// double get hashCode; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:55:6: Error: The implementation of 'hashCode' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.hashCode'.
+// Change to a subtype of 'double'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Context: This is the overridden method ('hashCode').
+// double get hashCode; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:87:6: Error: The implementation of 'hashCode' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.hashCode'.
+// Change to a subtype of 'Never'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:84:13: Context: This is the overridden method ('hashCode').
+// Never get hashCode;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ get hashCode() → core::int
+ return 42;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ get hashCode() → core::String
+ return "foo";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C9;
+ final field core::int hashCode = 42;
+ static const field self::E3 element = #C8;
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C11;
+ static const field self::E4 element = #C10;
+ 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}}";
+ method hashCode() → core::List<core::String>
+ return <core::String>[];
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C13;
+ static const field self::E5 element = #C12;
+ 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}}";
+ get hashCode() → Never
+ return throw 42;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C17;
+ final field core::int foo = 0;
+ final field core::int hashCode = 1;
+ final field core::int bar = 2;
+ static const field self::E6 element = #C16;
+ 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}}";
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C19;
+ static const field self::E7 element = #C18;
+ 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}}";
+ set hashCode(core::int value) → void {}
+ abstract get hashCode() → core::int;
+}
+class E8 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E8> values = #C21;
+ static const field self::E8 element = #C20;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set hashCode(core::String value) → void {}
+}
+class E9 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E9> values = #C23;
+ static const field self::E9 element = #C22;
+ const constructor •(core::int index, core::String name) → self::E9
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get hashCode() → core::double;
+}
+class E10 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E10> values = #C25;
+ static const field self::E10 element = #C24;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get hashCode() → core::int
+ return 42;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = #C27;
+ static const field self::E11 element = #C26;
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set hashCode(core::int value) → void {}
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = #C30;
+ static const field self::E12 hashCode = #C29;
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ : super core::Object::•()
+ ;
+ abstract get hashCode() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = #C32;
+ static const field self::E13 element = #C31;
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ : super core::Object::•()
+ ;
+ abstract get hashCode() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = #C34;
+ static const field self::E14 element = #C33;
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get hashCode() → Never; -> self::I14::hashCode
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = 42
+ #C8 = self::E3 {hashCode:#C7, index:#C1, _name:#C2}
+ #C9 = <self::E3*>[#C8]
+ #C10 = self::E4 {index:#C1, _name:#C2}
+ #C11 = <self::E4*>[#C10]
+ #C12 = self::E5 {index:#C1, _name:#C2}
+ #C13 = <self::E5*>[#C12]
+ #C14 = 1
+ #C15 = 2
+ #C16 = self::E6 {foo:#C1, hashCode:#C14, bar:#C15, index:#C1, _name:#C2}
+ #C17 = <self::E6*>[#C16]
+ #C18 = self::E7 {index:#C1, _name:#C2}
+ #C19 = <self::E7*>[#C18]
+ #C20 = self::E8 {index:#C1, _name:#C2}
+ #C21 = <self::E8*>[#C20]
+ #C22 = self::E9 {index:#C1, _name:#C2}
+ #C23 = <self::E9*>[#C22]
+ #C24 = self::E10 {index:#C1, _name:#C2}
+ #C25 = <self::E10*>[#C24]
+ #C26 = self::E11 {index:#C1, _name:#C2}
+ #C27 = <self::E11*>[#C26]
+ #C28 = "hashCode"
+ #C29 = self::E12 {index:#C1, _name:#C28}
+ #C30 = <self::E12*>[#C29]
+ #C31 = self::E13 {index:#C1, _name:#C2}
+ #C32 = <self::E13*>[#C31]
+ #C33 = self::E14 {index:#C1, _name:#C2}
+ #C34 = <self::E14*>[#C33]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_hashcode.dart:
+- E1. (from org-dartlang-testcase:///declared_hashcode.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_hashcode.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_hashcode.dart:17:6)
+- E4. (from org-dartlang-testcase:///declared_hashcode.dart:23:6)
+- E5. (from org-dartlang-testcase:///declared_hashcode.dart:29:6)
+- E6. (from org-dartlang-testcase:///declared_hashcode.dart:35:6)
+- E7. (from org-dartlang-testcase:///declared_hashcode.dart:41:6)
+- E8. (from org-dartlang-testcase:///declared_hashcode.dart:49:6)
+- E9. (from org-dartlang-testcase:///declared_hashcode.dart:55:6)
+- E10. (from org-dartlang-testcase:///declared_hashcode.dart:61:6)
+- E11. (from org-dartlang-testcase:///declared_hashcode.dart:67:6)
+- E12. (from org-dartlang-testcase:///declared_hashcode.dart:73:6)
+- E13. (from org-dartlang-testcase:///declared_hashcode.dart:81:6)
+- E14. (from org-dartlang-testcase:///declared_hashcode.dart:87:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect
new file mode 100644
index 0000000..8f3f873
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.modular.expect
@@ -0,0 +1,324 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:8:11: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// String get hashCode => "foo"; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:20:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int hashCode = 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:32:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// Never get hashCode => throw 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:38:22: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int foo = 0, hashCode = 1, bar = 2; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set hashCode(int value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// hashCode // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: The return type of the method 'E2.hashCode' is 'String', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// String get hashCode => "foo"; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:52:12: Error: The type 'int' of the inherited getter 'Object.hashCode' is not a subtype of the type 'String' of the setter 'E8.hashCode'.
+// void set hashCode(String value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the declaration of the getter 'Object.hashCode'.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Error: The return type of the method 'E9.hashCode' is 'double', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// double get hashCode; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:55:6: Error: The implementation of 'hashCode' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.hashCode'.
+// Change to a subtype of 'double'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Context: This is the overridden method ('hashCode').
+// double get hashCode; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:87:6: Error: The implementation of 'hashCode' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.hashCode'.
+// Change to a subtype of 'Never'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:84:13: Context: This is the overridden method ('hashCode').
+// Never get hashCode;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ get hashCode() → core::int
+ return 42;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ get hashCode() → core::String
+ return "foo";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C9;
+ final field core::int hashCode = 42;
+ static const field self::E3 element = #C8;
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C11;
+ static const field self::E4 element = #C10;
+ 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}}";
+ method hashCode() → core::List<core::String>
+ return <core::String>[];
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C13;
+ static const field self::E5 element = #C12;
+ 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}}";
+ get hashCode() → Never
+ return throw 42;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C17;
+ final field core::int foo = 0;
+ final field core::int hashCode = 1;
+ final field core::int bar = 2;
+ static const field self::E6 element = #C16;
+ 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}}";
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C19;
+ static const field self::E7 element = #C18;
+ 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}}";
+ set hashCode(core::int value) → void {}
+ abstract get hashCode() → core::int;
+}
+class E8 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E8> values = #C21;
+ static const field self::E8 element = #C20;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set hashCode(core::String value) → void {}
+}
+class E9 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E9> values = #C23;
+ static const field self::E9 element = #C22;
+ const constructor •(core::int index, core::String name) → self::E9
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get hashCode() → core::double;
+}
+class E10 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E10> values = #C25;
+ static const field self::E10 element = #C24;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get hashCode() → core::int
+ return 42;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = #C27;
+ static const field self::E11 element = #C26;
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set hashCode(core::int value) → void {}
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = #C30;
+ static const field self::E12 hashCode = #C29;
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ : super core::Object::•()
+ ;
+ abstract get hashCode() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = #C32;
+ static const field self::E13 element = #C31;
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ : super core::Object::•()
+ ;
+ abstract get hashCode() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = #C34;
+ static const field self::E14 element = #C33;
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get hashCode() → Never; -> self::I14::hashCode
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = 42
+ #C8 = self::E3 {hashCode:#C7, index:#C1, _name:#C2}
+ #C9 = <self::E3*>[#C8]
+ #C10 = self::E4 {index:#C1, _name:#C2}
+ #C11 = <self::E4*>[#C10]
+ #C12 = self::E5 {index:#C1, _name:#C2}
+ #C13 = <self::E5*>[#C12]
+ #C14 = 1
+ #C15 = 2
+ #C16 = self::E6 {foo:#C1, hashCode:#C14, bar:#C15, index:#C1, _name:#C2}
+ #C17 = <self::E6*>[#C16]
+ #C18 = self::E7 {index:#C1, _name:#C2}
+ #C19 = <self::E7*>[#C18]
+ #C20 = self::E8 {index:#C1, _name:#C2}
+ #C21 = <self::E8*>[#C20]
+ #C22 = self::E9 {index:#C1, _name:#C2}
+ #C23 = <self::E9*>[#C22]
+ #C24 = self::E10 {index:#C1, _name:#C2}
+ #C25 = <self::E10*>[#C24]
+ #C26 = self::E11 {index:#C1, _name:#C2}
+ #C27 = <self::E11*>[#C26]
+ #C28 = "hashCode"
+ #C29 = self::E12 {index:#C1, _name:#C28}
+ #C30 = <self::E12*>[#C29]
+ #C31 = self::E13 {index:#C1, _name:#C2}
+ #C32 = <self::E13*>[#C31]
+ #C33 = self::E14 {index:#C1, _name:#C2}
+ #C34 = <self::E14*>[#C33]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_hashcode.dart:
+- E1. (from org-dartlang-testcase:///declared_hashcode.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_hashcode.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_hashcode.dart:17:6)
+- E4. (from org-dartlang-testcase:///declared_hashcode.dart:23:6)
+- E5. (from org-dartlang-testcase:///declared_hashcode.dart:29:6)
+- E6. (from org-dartlang-testcase:///declared_hashcode.dart:35:6)
+- E7. (from org-dartlang-testcase:///declared_hashcode.dart:41:6)
+- E8. (from org-dartlang-testcase:///declared_hashcode.dart:49:6)
+- E9. (from org-dartlang-testcase:///declared_hashcode.dart:55:6)
+- E10. (from org-dartlang-testcase:///declared_hashcode.dart:61:6)
+- E11. (from org-dartlang-testcase:///declared_hashcode.dart:67:6)
+- E12. (from org-dartlang-testcase:///declared_hashcode.dart:73:6)
+- E13. (from org-dartlang-testcase:///declared_hashcode.dart:81:6)
+- E14. (from org-dartlang-testcase:///declared_hashcode.dart:87:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect
new file mode 100644
index 0000000..d6594a4
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart.weak.outline.expect
@@ -0,0 +1,301 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:8:11: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// String get hashCode => "foo"; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:20:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int hashCode = 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:32:13: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// Never get hashCode => throw 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:38:22: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// final int foo = 0, hashCode = 1, bar = 2; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: An enum can't declare a non-abstract member named 'hashCode'.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> hashCode() => []; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get hashCode => 42; // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set hashCode(int value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// hashCode // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the inherited member.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:14:14: Error: The return type of the method 'E2.hashCode' is 'String', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// String get hashCode => "foo"; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:52:12: Error: The type 'int' of the inherited getter 'Object.hashCode' is not a subtype of the type 'String' of the setter 'E8.hashCode'.
+// void set hashCode(String value) {} // Error.
+// ^^^^^^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the declaration of the getter 'Object.hashCode'.
+// int get hashCode => _getHash(this);
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Error: The return type of the method 'E9.hashCode' is 'double', which does not match the return type, 'int', of the overridden method, 'Object.hashCode'.
+// Change to a subtype of 'int'.
+// double get hashCode; // Error.
+// ^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: This is the overridden method ('hashCode').
+// int get hashCode => _getHash(this);
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:55:6: Error: The implementation of 'hashCode' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.hashCode'.
+// Change to a subtype of 'double'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:58:14: Context: This is the overridden method ('hashCode').
+// double get hashCode; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:87:6: Error: The implementation of 'hashCode' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/_internal/vm/lib/object_patch.dart:24:11: Context: The return type of the method 'Object.hashCode' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.hashCode'.
+// Change to a subtype of 'Never'.
+// int get hashCode => _getHash(this);
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_hashcode.dart:84:13: Context: This is the overridden method ('hashCode').
+// Never get hashCode;
+// ^
+//
+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>[self::E1::element];
+ static const field self::E1 element = const self::E1::•(0, "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}}";
+ get hashCode() → core::int
+ ;
+}
+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}}";
+ get hashCode() → core::String
+ ;
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
+ final field core::int hashCode;
+ static const field self::E3 element = const self::E3::•(0, "element");
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
+ static const field self::E4 element = const self::E4::•(0, "element");
+ 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}}";
+ method hashCode() → core::List<core::String>
+ ;
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
+ static const field self::E5 element = const self::E5::•(0, "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}}";
+ get hashCode() → Never
+ ;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
+ final field core::int foo;
+ final field core::int hashCode;
+ final field core::int bar;
+ 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}}";
+}
+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}}";
+ set hashCode(core::int value) → void
+ ;
+ abstract get hashCode() → core::int;
+}
+class E8 extends core::_Enum /*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
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set hashCode(core::String value) → void
+ ;
+}
+class E9 extends core::_Enum /*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
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get hashCode() → core::double;
+}
+class E10 extends core::_Enum /*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
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get hashCode() → core::int
+ ;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = const <self::E11>[self::E11::element];
+ static const field self::E11 element = const self::E11::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set hashCode(core::int value) → void
+ ;
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = const <self::E12>[self::E12::hashCode];
+ static const field self::E12 hashCode = const self::E12::•(0, "hashCode");
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ ;
+ abstract get hashCode() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = const <self::E13>[self::E13::element];
+ static const field self::E13 element = const self::E13::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ ;
+ abstract get hashCode() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = const <self::E14>[self::E14::element];
+ static const field self::E14 element = const self::E14::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get hashCode() → Never; -> self::I14::hashCode
+}
+static method main() → dynamic
+ ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:5:6 -> ListConstant(const <E1*>[const E1{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:6:3 -> InstanceConstant(const E1{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:11:6 -> ListConstant(const <E2*>[const E2{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:12:3 -> InstanceConstant(const E2{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:17:6 -> ListConstant(const <E3*>[const E3{E3.hashCode: null, _Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:18:3 -> InstanceConstant(const E3{E3.hashCode: null, _Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:23:6 -> ListConstant(const <E4*>[const E4{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:24:3 -> InstanceConstant(const E4{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:29:6 -> ListConstant(const <E5*>[const E5{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:30:3 -> InstanceConstant(const E5{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:35:6 -> ListConstant(const <E6*>[const E6{E6.foo: null, E6.hashCode: null, E6.bar: null, _Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:36:3 -> InstanceConstant(const E6{E6.foo: null, E6.hashCode: null, E6.bar: null, _Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:41:6 -> ListConstant(const <E7*>[const E7{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:42:3 -> InstanceConstant(const E7{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:49:6 -> ListConstant(const <E8*>[const E8{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:50:3 -> InstanceConstant(const E8{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:55:6 -> ListConstant(const <E9*>[const E9{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:56:3 -> InstanceConstant(const E9{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:61:6 -> ListConstant(const <E10*>[const E10{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:62:3 -> InstanceConstant(const E10{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:67:6 -> ListConstant(const <E11*>[const E11{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:68:3 -> InstanceConstant(const E11{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:73:6 -> ListConstant(const <E12*>[const E12{_Enum.index: 0, _Enum._name: "hashCode"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:74:3 -> InstanceConstant(const E12{_Enum.index: 0, _Enum._name: "hashCode"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:81:6 -> ListConstant(const <E13*>[const E13{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:81:27 -> InstanceConstant(const E13{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_hashcode.dart:87:6 -> ListConstant(const <E14*>[const E14{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_hashcode.dart:87:27 -> InstanceConstant(const E14{_Enum.index: 0, _Enum._name: "element"})
+Extra constant evaluation: evaluated: 98, effectively constant: 28
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart b/pkg/front_end/testcases/enhanced_enums/declared_index.dart
new file mode 100644
index 0000000..db6042d
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart
@@ -0,0 +1,89 @@
+// 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;
+
+ int get index => 42; // Error.
+}
+
+enum E2 {
+ element;
+
+ String get index => "foo"; // Error.
+}
+
+enum E3 {
+ element;
+
+ final int index = 42; // Error.
+}
+
+enum E4 {
+ element;
+
+ List<String> index() => []; // Error.
+}
+
+enum E5 {
+ element;
+
+ Never get index => throw 42; // Error.
+}
+
+enum E6 {
+ element;
+
+ final int foo = 0, index = 1, bar = 2; // Error.
+}
+
+enum E7 {
+ element;
+
+ void set index(int value) {} // Ok.
+
+ int get index; // Ok.
+}
+
+enum E8 {
+ element;
+
+ void set index(String value) {} // Error.
+}
+
+enum E9 {
+ element;
+
+ double get index; // Error.
+}
+
+enum E10 {
+ element;
+
+ static int get index => 42; // Error.
+}
+
+enum E11 {
+ element;
+
+ static void set index(int value) {} // Error.
+}
+
+enum E12 {
+ index // Error.
+}
+
+abstract class I13 {
+ int get index;
+}
+
+enum E13 implements I13 { element } // Ok.
+
+abstract class I14 {
+ Never get index;
+}
+
+enum E14 implements I14 { element } // Error.
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect
new file mode 100644
index 0000000..63126a8
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.strong.expect
@@ -0,0 +1,324 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:8:11: Error: An enum can't declare a non-abstract member named 'index'.
+// int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: An enum can't declare a non-abstract member named 'index'.
+// String get index => "foo"; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:20:13: Error: An enum can't declare a non-abstract member named 'index'.
+// final int index = 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: An enum can't declare a non-abstract member named 'index'.
+// List<String> index() => []; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:32:13: Error: An enum can't declare a non-abstract member named 'index'.
+// Never get index => throw 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:38:22: Error: An enum can't declare a non-abstract member named 'index'.
+// final int foo = 0, index = 1, bar = 2; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: An enum can't declare a non-abstract member named 'index'.
+// static int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> index() => []; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get index => 42; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set index(int value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// index // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: The return type of the method 'E2.index' is 'String', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// String get index => "foo"; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:52:12: Error: The type 'int' of the inherited field '_Enum.index' is not a subtype of the type 'String' of the setter 'E8.index'.
+// void set index(String value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the declaration of the field '_Enum.index'.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Error: The return type of the method 'E9.index' is 'double', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// double get index; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:55:6: Error: The implementation of 'index' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.index'.
+// Change to a subtype of 'double'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Context: This is the overridden method ('index').
+// double get index; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:87:6: Error: The implementation of 'index' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.index'.
+// Change to a subtype of 'Never'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:84:13: Context: This is the overridden method ('index').
+// Never get index;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ get index() → core::int
+ return 42;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ get index() → core::String
+ return "foo";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C9;
+ final field core::int index = 42;
+ static const field self::E3 element = #C8;
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C11;
+ static const field self::E4 element = #C10;
+ 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}}";
+ method index() → core::List<core::String>
+ return <core::String>[];
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C13;
+ static const field self::E5 element = #C12;
+ 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}}";
+ get index() → Never
+ return throw 42;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C17;
+ final field core::int foo = 0;
+ final field core::int index = 1;
+ final field core::int bar = 2;
+ static const field self::E6 element = #C16;
+ 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}}";
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C19;
+ static const field self::E7 element = #C18;
+ 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}}";
+ set index(core::int value) → void {}
+ abstract get index() → core::int;
+}
+class E8 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E8> values = #C21;
+ static const field self::E8 element = #C20;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set index(core::String value) → void {}
+}
+class E9 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E9> values = #C23;
+ static const field self::E9 element = #C22;
+ const constructor •(core::int index, core::String name) → self::E9
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get index() → core::double;
+}
+class E10 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E10> values = #C25;
+ static const field self::E10 element = #C24;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get index() → core::int
+ return 42;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = #C27;
+ static const field self::E11 element = #C26;
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set index(core::int value) → void {}
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = #C30;
+ static const field self::E12 index = #C29;
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ : super core::Object::•()
+ ;
+ abstract get index() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = #C32;
+ static const field self::E13 element = #C31;
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ : super core::Object::•()
+ ;
+ abstract get index() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = #C34;
+ static const field self::E14 element = #C33;
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get index() → Never; -> self::I14::index
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2>[#C5]
+ #C7 = 42
+ #C8 = self::E3 {index:#C7, index:#C1, _name:#C2}
+ #C9 = <self::E3>[#C8]
+ #C10 = self::E4 {index:#C1, _name:#C2}
+ #C11 = <self::E4>[#C10]
+ #C12 = self::E5 {index:#C1, _name:#C2}
+ #C13 = <self::E5>[#C12]
+ #C14 = 1
+ #C15 = 2
+ #C16 = self::E6 {foo:#C1, index:#C14, bar:#C15, index:#C1, _name:#C2}
+ #C17 = <self::E6>[#C16]
+ #C18 = self::E7 {index:#C1, _name:#C2}
+ #C19 = <self::E7>[#C18]
+ #C20 = self::E8 {index:#C1, _name:#C2}
+ #C21 = <self::E8>[#C20]
+ #C22 = self::E9 {index:#C1, _name:#C2}
+ #C23 = <self::E9>[#C22]
+ #C24 = self::E10 {index:#C1, _name:#C2}
+ #C25 = <self::E10>[#C24]
+ #C26 = self::E11 {index:#C1, _name:#C2}
+ #C27 = <self::E11>[#C26]
+ #C28 = "index"
+ #C29 = self::E12 {index:#C1, _name:#C28}
+ #C30 = <self::E12>[#C29]
+ #C31 = self::E13 {index:#C1, _name:#C2}
+ #C32 = <self::E13>[#C31]
+ #C33 = self::E14 {index:#C1, _name:#C2}
+ #C34 = <self::E14>[#C33]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_index.dart:
+- E1. (from org-dartlang-testcase:///declared_index.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_index.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_index.dart:17:6)
+- E4. (from org-dartlang-testcase:///declared_index.dart:23:6)
+- E5. (from org-dartlang-testcase:///declared_index.dart:29:6)
+- E6. (from org-dartlang-testcase:///declared_index.dart:35:6)
+- E7. (from org-dartlang-testcase:///declared_index.dart:41:6)
+- E8. (from org-dartlang-testcase:///declared_index.dart:49:6)
+- E9. (from org-dartlang-testcase:///declared_index.dart:55:6)
+- E10. (from org-dartlang-testcase:///declared_index.dart:61:6)
+- E11. (from org-dartlang-testcase:///declared_index.dart:67:6)
+- E12. (from org-dartlang-testcase:///declared_index.dart:73:6)
+- E13. (from org-dartlang-testcase:///declared_index.dart:81:6)
+- E14. (from org-dartlang-testcase:///declared_index.dart:87:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.textual_outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.textual_outline.expect
new file mode 100644
index 0000000..2b8d9c5
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.textual_outline.expect
@@ -0,0 +1,82 @@
+enum E1 {
+ element;
+
+ int get index => 42;
+}
+
+enum E2 {
+ element;
+
+ String get index => "foo";
+}
+
+enum E3 {
+ element;
+
+ final int index = 42;
+}
+
+enum E4 {
+ element;
+
+ List<String> index() => [];
+}
+
+enum E5 {
+ element;
+
+ Never get index => throw 42;
+}
+
+enum E6 {
+ element;
+
+ final int foo = 0, index = 1, bar = 2;
+}
+
+enum E7 {
+ element;
+
+ void set index(int value) {}
+ int get index;
+}
+
+enum E8 {
+ element;
+
+ void set index(String value) {}
+}
+
+enum E9 {
+ element;
+
+ double get index;
+}
+
+enum E10 {
+ element;
+
+ static int get index => 42;
+}
+
+enum E11 {
+ element;
+
+ static void set index(int value) {}
+}
+
+enum E12 { index }
+
+abstract class I13 {
+ int get index;
+}
+
+enum E13 implements I13 { element }
+
+abstract class I14 {
+ Never get index;
+}
+
+enum E14 implements I14 { element }
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..b6960cf
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.textual_outline_modelled.expect
@@ -0,0 +1,82 @@
+abstract class I13 {
+ int get index;
+}
+
+abstract class I14 {
+ Never get index;
+}
+
+enum E1 {
+ element;
+
+ int get index => 42;
+}
+
+enum E10 {
+ element;
+
+ static int get index => 42;
+}
+
+enum E11 {
+ element;
+
+ static void set index(int value) {}
+}
+
+enum E12 { index }
+
+enum E13 implements I13 { element }
+
+enum E14 implements I14 { element }
+
+enum E2 {
+ element;
+
+ String get index => "foo";
+}
+
+enum E3 {
+ element;
+
+ final int index = 42;
+}
+
+enum E4 {
+ element;
+
+ List<String> index() => [];
+}
+
+enum E5 {
+ element;
+
+ Never get index => throw 42;
+}
+
+enum E6 {
+ element;
+
+ final int foo = 0, index = 1, bar = 2;
+}
+
+enum E7 {
+ element;
+
+ void set index(int value) {}
+ int get index;
+}
+
+enum E8 {
+ element;
+
+ void set index(String value) {}
+}
+
+enum E9 {
+ element;
+
+ double get index;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect
new file mode 100644
index 0000000..22e1547
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.expect
@@ -0,0 +1,324 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:8:11: Error: An enum can't declare a non-abstract member named 'index'.
+// int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: An enum can't declare a non-abstract member named 'index'.
+// String get index => "foo"; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:20:13: Error: An enum can't declare a non-abstract member named 'index'.
+// final int index = 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: An enum can't declare a non-abstract member named 'index'.
+// List<String> index() => []; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:32:13: Error: An enum can't declare a non-abstract member named 'index'.
+// Never get index => throw 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:38:22: Error: An enum can't declare a non-abstract member named 'index'.
+// final int foo = 0, index = 1, bar = 2; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: An enum can't declare a non-abstract member named 'index'.
+// static int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> index() => []; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get index => 42; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set index(int value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// index // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: The return type of the method 'E2.index' is 'String', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// String get index => "foo"; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:52:12: Error: The type 'int' of the inherited field '_Enum.index' is not a subtype of the type 'String' of the setter 'E8.index'.
+// void set index(String value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the declaration of the field '_Enum.index'.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Error: The return type of the method 'E9.index' is 'double', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// double get index; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:55:6: Error: The implementation of 'index' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.index'.
+// Change to a subtype of 'double'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Context: This is the overridden method ('index').
+// double get index; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:87:6: Error: The implementation of 'index' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.index'.
+// Change to a subtype of 'Never'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:84:13: Context: This is the overridden method ('index').
+// Never get index;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ get index() → core::int
+ return 42;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ get index() → core::String
+ return "foo";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C9;
+ final field core::int index = 42;
+ static const field self::E3 element = #C8;
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C11;
+ static const field self::E4 element = #C10;
+ 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}}";
+ method index() → core::List<core::String>
+ return <core::String>[];
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C13;
+ static const field self::E5 element = #C12;
+ 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}}";
+ get index() → Never
+ return throw 42;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C17;
+ final field core::int foo = 0;
+ final field core::int index = 1;
+ final field core::int bar = 2;
+ static const field self::E6 element = #C16;
+ 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}}";
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C19;
+ static const field self::E7 element = #C18;
+ 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}}";
+ set index(core::int value) → void {}
+ abstract get index() → core::int;
+}
+class E8 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E8> values = #C21;
+ static const field self::E8 element = #C20;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set index(core::String value) → void {}
+}
+class E9 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E9> values = #C23;
+ static const field self::E9 element = #C22;
+ const constructor •(core::int index, core::String name) → self::E9
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get index() → core::double;
+}
+class E10 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E10> values = #C25;
+ static const field self::E10 element = #C24;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get index() → core::int
+ return 42;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = #C27;
+ static const field self::E11 element = #C26;
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set index(core::int value) → void {}
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = #C30;
+ static const field self::E12 index = #C29;
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ : super core::Object::•()
+ ;
+ abstract get index() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = #C32;
+ static const field self::E13 element = #C31;
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ : super core::Object::•()
+ ;
+ abstract get index() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = #C34;
+ static const field self::E14 element = #C33;
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get index() → Never; -> self::I14::index
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = 42
+ #C8 = self::E3 {index:#C7, index:#C1, _name:#C2}
+ #C9 = <self::E3*>[#C8]
+ #C10 = self::E4 {index:#C1, _name:#C2}
+ #C11 = <self::E4*>[#C10]
+ #C12 = self::E5 {index:#C1, _name:#C2}
+ #C13 = <self::E5*>[#C12]
+ #C14 = 1
+ #C15 = 2
+ #C16 = self::E6 {foo:#C1, index:#C14, bar:#C15, index:#C1, _name:#C2}
+ #C17 = <self::E6*>[#C16]
+ #C18 = self::E7 {index:#C1, _name:#C2}
+ #C19 = <self::E7*>[#C18]
+ #C20 = self::E8 {index:#C1, _name:#C2}
+ #C21 = <self::E8*>[#C20]
+ #C22 = self::E9 {index:#C1, _name:#C2}
+ #C23 = <self::E9*>[#C22]
+ #C24 = self::E10 {index:#C1, _name:#C2}
+ #C25 = <self::E10*>[#C24]
+ #C26 = self::E11 {index:#C1, _name:#C2}
+ #C27 = <self::E11*>[#C26]
+ #C28 = "index"
+ #C29 = self::E12 {index:#C1, _name:#C28}
+ #C30 = <self::E12*>[#C29]
+ #C31 = self::E13 {index:#C1, _name:#C2}
+ #C32 = <self::E13*>[#C31]
+ #C33 = self::E14 {index:#C1, _name:#C2}
+ #C34 = <self::E14*>[#C33]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_index.dart:
+- E1. (from org-dartlang-testcase:///declared_index.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_index.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_index.dart:17:6)
+- E4. (from org-dartlang-testcase:///declared_index.dart:23:6)
+- E5. (from org-dartlang-testcase:///declared_index.dart:29:6)
+- E6. (from org-dartlang-testcase:///declared_index.dart:35:6)
+- E7. (from org-dartlang-testcase:///declared_index.dart:41:6)
+- E8. (from org-dartlang-testcase:///declared_index.dart:49:6)
+- E9. (from org-dartlang-testcase:///declared_index.dart:55:6)
+- E10. (from org-dartlang-testcase:///declared_index.dart:61:6)
+- E11. (from org-dartlang-testcase:///declared_index.dart:67:6)
+- E12. (from org-dartlang-testcase:///declared_index.dart:73:6)
+- E13. (from org-dartlang-testcase:///declared_index.dart:81:6)
+- E14. (from org-dartlang-testcase:///declared_index.dart:87:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect
new file mode 100644
index 0000000..22e1547
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.modular.expect
@@ -0,0 +1,324 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:8:11: Error: An enum can't declare a non-abstract member named 'index'.
+// int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: An enum can't declare a non-abstract member named 'index'.
+// String get index => "foo"; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:20:13: Error: An enum can't declare a non-abstract member named 'index'.
+// final int index = 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: An enum can't declare a non-abstract member named 'index'.
+// List<String> index() => []; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:32:13: Error: An enum can't declare a non-abstract member named 'index'.
+// Never get index => throw 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:38:22: Error: An enum can't declare a non-abstract member named 'index'.
+// final int foo = 0, index = 1, bar = 2; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: An enum can't declare a non-abstract member named 'index'.
+// static int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> index() => []; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get index => 42; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set index(int value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// index // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: The return type of the method 'E2.index' is 'String', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// String get index => "foo"; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:52:12: Error: The type 'int' of the inherited field '_Enum.index' is not a subtype of the type 'String' of the setter 'E8.index'.
+// void set index(String value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the declaration of the field '_Enum.index'.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Error: The return type of the method 'E9.index' is 'double', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// double get index; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:55:6: Error: The implementation of 'index' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.index'.
+// Change to a subtype of 'double'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Context: This is the overridden method ('index').
+// double get index; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:87:6: Error: The implementation of 'index' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.index'.
+// Change to a subtype of 'Never'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:84:13: Context: This is the overridden method ('index').
+// Never get index;
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+class E1 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E1> values = #C4;
+ static const field self::E1 element = #C3;
+ 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}}";
+ get index() → core::int
+ return 42;
+}
+class E2 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E2> values = #C6;
+ static const field self::E2 element = #C5;
+ 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}}";
+ get index() → core::String
+ return "foo";
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = #C9;
+ final field core::int index = 42;
+ static const field self::E3 element = #C8;
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = #C11;
+ static const field self::E4 element = #C10;
+ 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}}";
+ method index() → core::List<core::String>
+ return <core::String>[];
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = #C13;
+ static const field self::E5 element = #C12;
+ 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}}";
+ get index() → Never
+ return throw 42;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = #C17;
+ final field core::int foo = 0;
+ final field core::int index = 1;
+ final field core::int bar = 2;
+ static const field self::E6 element = #C16;
+ 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}}";
+}
+class E7 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E7> values = #C19;
+ static const field self::E7 element = #C18;
+ 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}}";
+ set index(core::int value) → void {}
+ abstract get index() → core::int;
+}
+class E8 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E8> values = #C21;
+ static const field self::E8 element = #C20;
+ const constructor •(core::int index, core::String name) → self::E8
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set index(core::String value) → void {}
+}
+class E9 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E9> values = #C23;
+ static const field self::E9 element = #C22;
+ const constructor •(core::int index, core::String name) → self::E9
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get index() → core::double;
+}
+class E10 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E10> values = #C25;
+ static const field self::E10 element = #C24;
+ const constructor •(core::int index, core::String name) → self::E10
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get index() → core::int
+ return 42;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = #C27;
+ static const field self::E11 element = #C26;
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set index(core::int value) → void {}
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = #C30;
+ static const field self::E12 index = #C29;
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ : super core::Object::•()
+ ;
+ abstract get index() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = #C32;
+ static const field self::E13 element = #C31;
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ : super core::Object::•()
+ ;
+ abstract get index() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = #C34;
+ static const field self::E14 element = #C33;
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get index() → Never; -> self::I14::index
+}
+static method main() → dynamic {}
+
+constants {
+ #C1 = 0
+ #C2 = "element"
+ #C3 = self::E1 {index:#C1, _name:#C2}
+ #C4 = <self::E1*>[#C3]
+ #C5 = self::E2 {index:#C1, _name:#C2}
+ #C6 = <self::E2*>[#C5]
+ #C7 = 42
+ #C8 = self::E3 {index:#C7, index:#C1, _name:#C2}
+ #C9 = <self::E3*>[#C8]
+ #C10 = self::E4 {index:#C1, _name:#C2}
+ #C11 = <self::E4*>[#C10]
+ #C12 = self::E5 {index:#C1, _name:#C2}
+ #C13 = <self::E5*>[#C12]
+ #C14 = 1
+ #C15 = 2
+ #C16 = self::E6 {foo:#C1, index:#C14, bar:#C15, index:#C1, _name:#C2}
+ #C17 = <self::E6*>[#C16]
+ #C18 = self::E7 {index:#C1, _name:#C2}
+ #C19 = <self::E7*>[#C18]
+ #C20 = self::E8 {index:#C1, _name:#C2}
+ #C21 = <self::E8*>[#C20]
+ #C22 = self::E9 {index:#C1, _name:#C2}
+ #C23 = <self::E9*>[#C22]
+ #C24 = self::E10 {index:#C1, _name:#C2}
+ #C25 = <self::E10*>[#C24]
+ #C26 = self::E11 {index:#C1, _name:#C2}
+ #C27 = <self::E11*>[#C26]
+ #C28 = "index"
+ #C29 = self::E12 {index:#C1, _name:#C28}
+ #C30 = <self::E12*>[#C29]
+ #C31 = self::E13 {index:#C1, _name:#C2}
+ #C32 = <self::E13*>[#C31]
+ #C33 = self::E14 {index:#C1, _name:#C2}
+ #C34 = <self::E14*>[#C33]
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///declared_index.dart:
+- E1. (from org-dartlang-testcase:///declared_index.dart:5: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)
+- E2. (from org-dartlang-testcase:///declared_index.dart:11:6)
+- E3. (from org-dartlang-testcase:///declared_index.dart:17:6)
+- E4. (from org-dartlang-testcase:///declared_index.dart:23:6)
+- E5. (from org-dartlang-testcase:///declared_index.dart:29:6)
+- E6. (from org-dartlang-testcase:///declared_index.dart:35:6)
+- E7. (from org-dartlang-testcase:///declared_index.dart:41:6)
+- E8. (from org-dartlang-testcase:///declared_index.dart:49:6)
+- E9. (from org-dartlang-testcase:///declared_index.dart:55:6)
+- E10. (from org-dartlang-testcase:///declared_index.dart:61:6)
+- E11. (from org-dartlang-testcase:///declared_index.dart:67:6)
+- E12. (from org-dartlang-testcase:///declared_index.dart:73:6)
+- E13. (from org-dartlang-testcase:///declared_index.dart:81:6)
+- E14. (from org-dartlang-testcase:///declared_index.dart:87:6)
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect
new file mode 100644
index 0000000..9546bff
--- /dev/null
+++ b/pkg/front_end/testcases/enhanced_enums/declared_index.dart.weak.outline.expect
@@ -0,0 +1,301 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:8:11: Error: An enum can't declare a non-abstract member named 'index'.
+// int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: An enum can't declare a non-abstract member named 'index'.
+// String get index => "foo"; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:20:13: Error: An enum can't declare a non-abstract member named 'index'.
+// final int index = 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: An enum can't declare a non-abstract member named 'index'.
+// List<String> index() => []; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:32:13: Error: An enum can't declare a non-abstract member named 'index'.
+// Never get index => throw 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:38:22: Error: An enum can't declare a non-abstract member named 'index'.
+// final int foo = 0, index = 1, bar = 2; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: An enum can't declare a non-abstract member named 'index'.
+// static int get index => 42; // Error.
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:26:16: Error: Can't declare a member that conflicts with an inherited one.
+// List<String> index() => []; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:64:18: Error: Can't declare a member that conflicts with an inherited one.
+// static int get index => 42; // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:70:19: Error: Can't declare a member that conflicts with an inherited one.
+// static void set index(int value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:74:3: Error: Can't declare a member that conflicts with an inherited one.
+// index // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the inherited member.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:14:14: Error: The return type of the method 'E2.index' is 'String', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// String get index => "foo"; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:52:12: Error: The type 'int' of the inherited field '_Enum.index' is not a subtype of the type 'String' of the setter 'E8.index'.
+// void set index(String value) {} // Error.
+// ^^^^^
+// sdk/lib/core/enum.dart:101:13: Context: This is the declaration of the field '_Enum.index'.
+// final int index;
+// ^^^^^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Error: The return type of the method 'E9.index' is 'double', which does not match the return type, 'int', of the overridden method, '_Enum.index'.
+// Change to a subtype of 'int'.
+// double get index; // Error.
+// ^
+// sdk/lib/core/enum.dart:101:13: Context: This is the overridden method ('index').
+// final int index;
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:55:6: Error: The implementation of 'index' in the non-abstract class 'E9' does not conform to its interface.
+// enum E9 {
+// ^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'double', of the overridden method, 'E9.index'.
+// Change to a subtype of 'double'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:58:14: Context: This is the overridden method ('index').
+// double get index; // Error.
+// ^
+//
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:87:6: Error: The implementation of 'index' in the non-abstract class 'E14' does not conform to its interface.
+// enum E14 implements I14 { element } // Error.
+// ^^^
+// sdk/lib/core/enum.dart:101:13: Context: The return type of the method '_Enum.index' is 'int', which does not match the return type, 'Never', of the overridden method, 'I14.index'.
+// Change to a subtype of 'Never'.
+// final int index;
+// ^
+// pkg/front_end/testcases/enhanced_enums/declared_index.dart:84:13: Context: This is the overridden method ('index').
+// Never get index;
+// ^
+//
+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>[self::E1::element];
+ static const field self::E1 element = const self::E1::•(0, "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}}";
+ get index() → core::int
+ ;
+}
+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}}";
+ get index() → core::String
+ ;
+}
+class E3 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E3> values = const <self::E3>[self::E3::element];
+ final field core::int index;
+ static const field self::E3 element = const self::E3::•(0, "element");
+ 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}}";
+}
+class E4 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E4> values = const <self::E4>[self::E4::element];
+ static const field self::E4 element = const self::E4::•(0, "element");
+ 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}}";
+ method index() → core::List<core::String>
+ ;
+}
+class E5 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E5> values = const <self::E5>[self::E5::element];
+ static const field self::E5 element = const self::E5::•(0, "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}}";
+ get index() → Never
+ ;
+}
+class E6 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E6> values = const <self::E6>[self::E6::element];
+ final field core::int foo;
+ final field core::int index;
+ final field core::int bar;
+ 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}}";
+}
+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}}";
+ set index(core::int value) → void
+ ;
+ abstract get index() → core::int;
+}
+class E8 extends core::_Enum /*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
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E8.${this.{core::_Enum::_name}{core::String}}";
+ set index(core::String value) → void
+ ;
+}
+class E9 extends core::_Enum /*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
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E9.${this.{core::_Enum::_name}{core::String}}";
+ abstract get index() → core::double;
+}
+class E10 extends core::_Enum /*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
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E10.${this.{core::_Enum::_name}{core::String}}";
+ static get index() → core::int
+ ;
+}
+class E11 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E11> values = const <self::E11>[self::E11::element];
+ static const field self::E11 element = const self::E11::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E11
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E11.${this.{core::_Enum::_name}{core::String}}";
+ static set index(core::int value) → void
+ ;
+}
+class E12 extends core::_Enum /*isEnum*/ {
+ static const field core::List<self::E12> values = const <self::E12>[self::E12::index];
+ static const field self::E12 index = const self::E12::•(0, "index");
+ const constructor •(core::int index, core::String name) → self::E12
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E12.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I13 extends core::Object {
+ synthetic constructor •() → self::I13
+ ;
+ abstract get index() → core::int;
+}
+class E13 extends core::_Enum implements self::I13 /*isEnum*/ {
+ static const field core::List<self::E13> values = const <self::E13>[self::E13::element];
+ static const field self::E13 element = const self::E13::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E13
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E13.${this.{core::_Enum::_name}{core::String}}";
+}
+abstract class I14 extends core::Object {
+ synthetic constructor •() → self::I14
+ ;
+ abstract get index() → Never;
+}
+class E14 extends core::_Enum implements self::I14 /*isEnum*/ {
+ static const field core::List<self::E14> values = const <self::E14>[self::E14::element];
+ static const field self::E14 element = const self::E14::•(0, "element");
+ const constructor •(core::int index, core::String name) → self::E14
+ : super core::_Enum::•(index, name)
+ ;
+ method toString() → core::String
+ return "E14.${this.{core::_Enum::_name}{core::String}}";
+ abstract member-signature get index() → Never; -> self::I14::index
+}
+static method main() → dynamic
+ ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:5:6 -> ListConstant(const <E1*>[const E1{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:6:3 -> InstanceConstant(const E1{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:11:6 -> ListConstant(const <E2*>[const E2{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:12:3 -> InstanceConstant(const E2{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:17:6 -> ListConstant(const <E3*>[const E3{E3.index: null, _Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:18:3 -> InstanceConstant(const E3{E3.index: null, _Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:23:6 -> ListConstant(const <E4*>[const E4{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:24:3 -> InstanceConstant(const E4{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:29:6 -> ListConstant(const <E5*>[const E5{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:30:3 -> InstanceConstant(const E5{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:35:6 -> ListConstant(const <E6*>[const E6{E6.foo: null, E6.index: null, E6.bar: null, _Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:36:3 -> InstanceConstant(const E6{E6.foo: null, E6.index: null, E6.bar: null, _Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:41:6 -> ListConstant(const <E7*>[const E7{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:42:3 -> InstanceConstant(const E7{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:49:6 -> ListConstant(const <E8*>[const E8{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:50:3 -> InstanceConstant(const E8{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:55:6 -> ListConstant(const <E9*>[const E9{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:56:3 -> InstanceConstant(const E9{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:61:6 -> ListConstant(const <E10*>[const E10{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:62:3 -> InstanceConstant(const E10{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:67:6 -> ListConstant(const <E11*>[const E11{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:68:3 -> InstanceConstant(const E11{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:73:6 -> ListConstant(const <E12*>[const E12{_Enum.index: 0, _Enum._name: "index"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:74:3 -> InstanceConstant(const E12{_Enum.index: 0, _Enum._name: "index"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:81:6 -> ListConstant(const <E13*>[const E13{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:81:27 -> InstanceConstant(const E13{_Enum.index: 0, _Enum._name: "element"})
+Evaluated: ListLiteral @ org-dartlang-testcase:///declared_index.dart:87:6 -> ListConstant(const <E14*>[const E14{_Enum.index: 0, _Enum._name: "element"}])
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///declared_index.dart:87:27 -> InstanceConstant(const E14{_Enum.index: 0, _Enum._name: "element"})
+Extra constant evaluation: evaluated: 98, effectively constant: 28
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect
index dde0f55..9912e9e 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: An enum can't declare a member named 'values'.
// static const List<E1> values = [E1.element]; // Error in E1.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: An enum can't declare a member named 'values'.
// int values = 42; // Error in E2.
// ^^^^^^
//
@@ -17,11 +17,11 @@
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: An enum can't declare a member named 'values'.
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: An enum can't declare a member named 'values'.
// void values() {} // Error in E7.
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect
index dde0f55..9912e9e 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.strong.transformed.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: An enum can't declare a member named 'values'.
// static const List<E1> values = [E1.element]; // Error in E1.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: An enum can't declare a member named 'values'.
// int values = 42; // Error in E2.
// ^^^^^^
//
@@ -17,11 +17,11 @@
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: An enum can't declare a member named 'values'.
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: An enum can't declare a member named 'values'.
// void values() {} // Error in E7.
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect
index 3acc5b0..feb041c 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: An enum can't declare a member named 'values'.
// static const List<E1> values = [E1.element]; // Error in E1.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: An enum can't declare a member named 'values'.
// int values = 42; // Error in E2.
// ^^^^^^
//
@@ -17,11 +17,11 @@
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: An enum can't declare a member named 'values'.
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: An enum can't declare a member named 'values'.
// void values() {} // Error in E7.
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect
index 3acc5b0..feb041c 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.modular.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: An enum can't declare a member named 'values'.
// static const List<E1> values = [E1.element]; // Error in E1.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: An enum can't declare a member named 'values'.
// int values = 42; // Error in E2.
// ^^^^^^
//
@@ -17,11 +17,11 @@
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: An enum can't declare a member named 'values'.
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: An enum can't declare a member named 'values'.
// void values() {} // Error in E7.
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect
index 535787e..0a445dd 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.outline.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: An enum can't declare a member named 'values'.
// static const List<E1> values = [E1.element]; // Error in E1.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: An enum can't declare a member named 'values'.
// int values = 42; // Error in E2.
// ^^^^^^
//
@@ -17,11 +17,11 @@
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: An enum can't declare a member named 'values'.
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: An enum can't declare a member named 'values'.
// void values() {} // Error in E7.
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect
index 3acc5b0..feb041c 100644
--- a/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/declared_values.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:8:25: Error: An enum can't declare a member named 'values'.
// static const List<E1> values = [E1.element]; // Error in E1.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:14:7: Error: An enum can't declare a member named 'values'.
// int values = 42; // Error in E2.
// ^^^^^^
//
@@ -17,11 +17,11 @@
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:20:25: Error: An enum can't declare a member named 'values'.
// static const List<E3> values = [E3.element]; // Error in E3.
// ^^^^^^
//
-// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: Enums can't contain declarations of members with the name 'values'.
+// pkg/front_end/testcases/enhanced_enums/declared_values.dart:45:8: Error: An enum can't declare a member named 'values'.
// void values() {} // Error in E7.
// ^^^^^^
//
diff --git a/pkg/front_end/testcases/expression/a.dart b/pkg/front_end/testcases/expression/a.dart
index 63db95e..090f4f4 100644
--- a/pkg/front_end/testcases/expression/a.dart
+++ b/pkg/front_end/testcases/expression/a.dart
@@ -6,7 +6,7 @@
}
class Foo<E1> {
- E1 get foo => null;
+ E1? get foo => null;
String get bar => "hello";
}
diff --git a/pkg/front_end/testcases/expression/b.dart b/pkg/front_end/testcases/expression/b.dart
index dc9ed0a..13e23d1 100644
--- a/pkg/front_end/testcases/expression/b.dart
+++ b/pkg/front_end/testcases/expression/b.dart
@@ -1,4 +1,4 @@
class Foo<E2> {
- E2 get foo => null;
+ E2? get foo => null;
int get bar => 42;
}
diff --git a/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect b/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect
index 2bf8abf..0379b8f 100644
--- a/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_capture.expression.yaml.expect
@@ -1,6 +1,6 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return () → dart.core::int* {
- return this.{main::B::x}{dart.core::int*}.{dart.core::num::+}(this.{main::B::y}{dart.core::int*}){(dart.core::num*) →* dart.core::int*};
+ return () → dart.core::int {
+ return this.{main::B::x}{dart.core::int}.{dart.core::num::+}(this.{main::B::y}{dart.core::int}){(dart.core::num) → dart.core::int};
};
diff --git a/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect b/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect
index d0eae14..e30d31e 100644
--- a/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_getter.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{main::B::z}{dart.core::String*};
+ return this.{main::B::z}{dart.core::String};
diff --git a/pkg/front_end/testcases/expression/class_method.expression.yaml.expect b/pkg/front_end/testcases/expression/class_method.expression.yaml.expect
index f5bb3e4..c290c20 100644
--- a/pkg/front_end/testcases/expression/class_method.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_method.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{main::A::doit_with_this}(2){(dart.core::int*) →* dart.core::int*};
+ return this.{main::A::doit_with_this}(2){(dart.core::int) → dart.core::int};
diff --git a/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect b/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect
index b594541..a6002cb 100644
--- a/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_private_get.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{main::B::_priv}{dart.core::int*};
+ return this.{main::B::_priv}{dart.core::int?};
diff --git a/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect b/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect
index b1449b4..b104d4a 100644
--- a/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_private_method.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{main::B::_privMethod}{() →* void};
+ return this.{main::B::_privMethod}{() → void};
diff --git a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
index b682d78..06ec757 100644
--- a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
@@ -4,8 +4,8 @@
^^^^^^^^^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Undefined name 'staticVar'.\nglobalVar + staticVar + 5\n ^^^^^^^^^"){(dart.core::num*) →* dart.core::num*}.{dart.core::num::+}(5){(dart.core::num*) →* dart.core::num*};
+ return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Undefined name 'staticVar'.\nglobalVar + staticVar + 5\n ^^^^^^^^^"){(dart.core::num) → dart.core::double}.{dart.core::double::+}(5){(dart.core::num) → dart.core::double};
Errors: {
}
static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return #lib1::globalVar.{dart.core::num::+}(#lib1::MyClass::staticVar){(dart.core::num*) →* dart.core::int*}.{dart.core::num::+}(5){(dart.core::num*) →* dart.core::int*};
+ return #lib1::globalVar.{dart.core::num::+}(#lib1::MyClass::staticVar){(dart.core::num) → dart.core::int}.{dart.core::num::+}(5){(dart.core::num) → dart.core::int};
diff --git a/pkg/front_end/testcases/expression/class_type_param_bound.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_bound.expression.yaml.expect
index c21f4fd..2fef29d 100644
--- a/pkg/front_end/testcases/expression/class_type_param_bound.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_bound.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return main::hasBound<main::C::T*>();
+ return main::hasBound<main::C::T>();
diff --git a/pkg/front_end/testcases/expression/class_type_param_bound_2.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_bound_2.expression.yaml.expect
index c21f4fd..2fef29d 100644
--- a/pkg/front_end/testcases/expression/class_type_param_bound_2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_bound_2.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return main::hasBound<main::C::T*>();
+ return main::hasBound<main::C::T>();
diff --git a/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect
index 845e716..cd03e3a 100644
--- a/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect
@@ -6,4 +6,4 @@
^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return main::hasBound<main::A::T*>();
+ return main::hasBound<main::A::T%>();
diff --git a/pkg/front_end/testcases/expression/class_type_param_bound_illegal_2.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_bound_illegal_2.expression.yaml.expect
index 845e716..cd03e3a 100644
--- a/pkg/front_end/testcases/expression/class_type_param_bound_illegal_2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_bound_illegal_2.expression.yaml.expect
@@ -6,4 +6,4 @@
^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return main::hasBound<main::A::T*>();
+ return main::hasBound<main::A::T%>();
diff --git a/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
index 87b923b..04d903b 100644
--- a/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{main::MiddlewareApi::toString}(){() →* dart.core::String*};
+ return this.{dart.core::Object::toString}(){() → dart.core::String};
diff --git a/pkg/front_end/testcases/expression/class_type_param_reference.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_reference.expression.yaml.expect
index bed6d1b..e3d9c51 100644
--- a/pkg/front_end/testcases/expression/class_type_param_reference.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_reference.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return x is main::A::T*;
+ return x is{ForNonNullableByDefault} main::A::T%;
diff --git a/pkg/front_end/testcases/expression/class_type_param_reference_arg.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_reference_arg.expression.yaml.expect
index d89f1f9..cccded5 100644
--- a/pkg/front_end/testcases/expression/class_type_param_reference_arg.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_reference_arg.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return main::id<main::A::T*>(x as{TypeError,ForDynamic} main::A::T*);
+ return main::id<main::A::T%>(x as{TypeError,ForDynamic,ForNonNullableByDefault} main::A::T%);
diff --git a/pkg/front_end/testcases/expression/class_type_param_reference_ctor.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_reference_ctor.expression.yaml.expect
index 5b0ed1c..c86dbe1 100644
--- a/pkg/front_end/testcases/expression/class_type_param_reference_ctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_reference_ctor.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return new main::A::•<main::A::T*>();
+ return new main::A::•<main::A::T%>();
diff --git a/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml b/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml
index 642f7ef..04899ba 100644
--- a/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml
+++ b/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml
@@ -7,6 +7,6 @@
position: "main.dart#A"
expression: |
() {
- T k = null;
+ T? k = null;
return k;
}
diff --git a/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml.expect
index dfe66d2..422ee4f 100644
--- a/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_reference_var.expression.yaml.expect
@@ -1,7 +1,7 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return () → main::A::T* {
- main::A::T* k = null;
+ return () → main::A::T? {
+ main::A::T? k = null;
return k;
};
diff --git a/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect b/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect
index e07be30..f87802b 100644
--- a/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/const_usage.expression.yaml.expect
@@ -1,7 +1,7 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return #C2.{main::ConstClass::x}{dart.core::int*};
+ return #C2.{main::ConstClass::x}{dart.core::int};
constants {
#C1 = 42
#C2 = main::ConstClass {x:#C1}
diff --git a/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect b/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect
index e07be30..f87802b 100644
--- a/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/const_usage_class.expression.yaml.expect
@@ -1,7 +1,7 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return #C2.{main::ConstClass::x}{dart.core::int*};
+ return #C2.{main::ConstClass::x}{dart.core::int};
constants {
#C1 = 42
#C2 = main::ConstClass {x:#C1}
diff --git a/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect b/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect
index 5167c83..dd6add4 100644
--- a/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
-method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
return dart.core::identical(1, 1);
diff --git a/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect b/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect
index 72b7d9d..ed30efb 100644
--- a/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
-method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return null is dart.collection::Queue<dynamic>*;
+method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+ return null is{ForNonNullableByDefault} dart.collection::Queue<dynamic>;
diff --git a/pkg/front_end/testcases/expression/eval.dart b/pkg/front_end/testcases/expression/eval.dart
index db764a3..b905801 100644
--- a/pkg/front_end/testcases/expression/eval.dart
+++ b/pkg/front_end/testcases/expression/eval.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2018, 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.
-// @dart=2.9
+
int globalVar = 100;
class MyClass {
diff --git a/pkg/front_end/testcases/expression/evaluate_extension_method.expression.yaml.expect b/pkg/front_end/testcases/expression/evaluate_extension_method.expression.yaml.expect
index 8545fba..7367fce 100644
--- a/pkg/front_end/testcases/expression/evaluate_extension_method.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/evaluate_extension_method.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr< extends dynamic>(dart.core::List<dart.core::String> x) → dynamic
- return main::Foo|getFortyTwo(x.{dart.core::Iterable::first}{dart.core::String*});
+ return main::Foo|getFortyTwo(x.{dart.core::Iterable::first}{dart.core::String});
diff --git a/pkg/front_end/testcases/expression/evaluate_fold_on_list.expression.yaml.expect b/pkg/front_end/testcases/expression/evaluate_fold_on_list.expression.yaml.expect
index 84d4688..fc134e4 100644
--- a/pkg/front_end/testcases/expression/evaluate_fold_on_list.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/evaluate_fold_on_list.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dart.core::List<dart.core::String> x, dart.core::int y) → dynamic
- return x.{dart.core::Iterable::fold}<dart.core::int*>(0, (dart.core::int* previousValue, dart.core::String* element) → dart.core::int* => previousValue.{dart.core::num::+}(element.{dart.core::String::length}{dart.core::int*}){(dart.core::num*) →* dart.core::int*}){(dart.core::int*, (dart.core::int*, dart.core::String*) →* dart.core::int*) →* dart.core::int*};
+ return x.{dart.core::Iterable::fold}<dart.core::int>(0, (dart.core::int previousValue, dart.core::String element) → dart.core::int => previousValue.{dart.core::num::+}(element.{dart.core::String::length}{dart.core::int}){(dart.core::num) → dart.core::int}){(dart.core::int, (dart.core::int, dart.core::String) → dart.core::int) → dart.core::int};
diff --git a/pkg/front_end/testcases/expression/extension_this.expression.yaml.expect b/pkg/front_end/testcases/expression/extension_this.expression.yaml.expect
index aed2ac6..89a66e9 100644
--- a/pkg/front_end/testcases/expression/extension_this.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/extension_this.expression.yaml.expect
@@ -2,6 +2,6 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(lowered dynamic #this) → dynamic
return () → dynamic {
- dart.core::print(main::Foo|getFortyTwo(#this as{TypeError,ForDynamic} dart.core::String*));
+ dart.core::print(main::Foo|getFortyTwo(#this as{TypeError,ForDynamic,ForNonNullableByDefault} dart.core::String));
return #this;
};
diff --git a/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect b/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
index b6b1ee0..2c26025 100644
--- a/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
@@ -1,21 +1,21 @@
Errors: {
}
-method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic a, dynamic b) → dynamic
- return ((dynamic a, dynamic b) → dart.core::bool* {
- if(!(a{dynamic}._usedData =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._usedData) || !(a{dynamic}._deletedKeys =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._deletedKeys) || !(a{dynamic}._hashMask =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._hashMask) || !(a{dynamic}._index{dynamic}.length =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._index{dynamic}.length) || !(a{dynamic}._data{dynamic}.length =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._data{dynamic}.length)) {
+method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic a, dynamic b) → dynamic
+ return ((dynamic a, dynamic b) → dart.core::bool {
+ if(!(a{dynamic}._usedData =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b{dynamic}._usedData) || !(a{dynamic}._deletedKeys =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b{dynamic}._deletedKeys) || !(a{dynamic}._hashMask =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b{dynamic}._hashMask) || !(a{dynamic}._index{dynamic}.length =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b{dynamic}._index{dynamic}.length) || !(a{dynamic}._data{dynamic}.length =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b{dynamic}._data{dynamic}.length)) {
return false;
}
- for (dart.core::int* i = 0; i.{dart.core::num::<}(a{dynamic}._index{dynamic}.length as{TypeError,ForDynamic} dart.core::num*){(dart.core::num*) →* dart.core::bool*}; i = i.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*}) {
- if(!(a{dynamic}._index{dynamic}.[](i) =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b{dynamic}._index{dynamic}.[](i))) {
+ for (dart.core::int i = 0; i.{dart.core::num::<}(a{dynamic}._index{dynamic}.length as{TypeError,ForDynamic,ForNonNullableByDefault} dart.core::num){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
+ if(!(a{dynamic}._index{dynamic}.[](i) =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b{dynamic}._index{dynamic}.[](i))) {
return false;
}
}
- for (dart.core::int* i = 0; i.{dart.core::num::<}(a{dynamic}._data{dynamic}.length as{TypeError,ForDynamic} dart.core::num*){(dart.core::num*) →* dart.core::bool*}; i = i.{dart.core::num::+}(1){(dart.core::num*) →* dart.core::int*}) {
+ for (dart.core::int i = 0; i.{dart.core::num::<}(a{dynamic}._data{dynamic}.length as{TypeError,ForDynamic,ForNonNullableByDefault} dart.core::num){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
dynamic ad = a{dynamic}._data{dynamic}.[](i);
dynamic bd = b{dynamic}._data{dynamic}.[](i);
- if(!dart.core::identical(ad, bd) && !(ad =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} a && bd =={dart.core::Object::==}{(dart.core::Object*) →* dart.core::bool*} b)) {
+ if(!dart.core::identical(ad, bd) && !(ad =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} a && bd =={dart.core::Object::==}{(dart.core::Object) → dart.core::bool} b)) {
return false;
}
}
return true;
- })(a, b){(dynamic, dynamic) →* dart.core::bool*};
+ })(a, b){(dynamic, dynamic) → dart.core::bool};
diff --git a/pkg/front_end/testcases/expression/inside_class_with_import_1.expression.yaml.expect b/pkg/front_end/testcases/expression/inside_class_with_import_1.expression.yaml.expect
index e9f21d4..ffd8346 100644
--- a/pkg/front_end/testcases/expression/inside_class_with_import_1.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/inside_class_with_import_1.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{#lib1::Foo::foo}{#lib1::Foo::E1*};
+ return this.{#lib1::Foo::foo}{#lib1::Foo::E1?};
diff --git a/pkg/front_end/testcases/expression/inside_class_with_import_2.expression.yaml.expect b/pkg/front_end/testcases/expression/inside_class_with_import_2.expression.yaml.expect
index bdeb445..75cd1638 100644
--- a/pkg/front_end/testcases/expression/inside_class_with_import_2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/inside_class_with_import_2.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{#lib1::Foo::bar}{dart.core::String*}.{dart.core::String::length}{dart.core::int*};
+ return this.{#lib1::Foo::bar}{dart.core::String}.{dart.core::String::length}{dart.core::int};
diff --git a/pkg/front_end/testcases/expression/inside_class_with_import_3.expression.yaml.expect b/pkg/front_end/testcases/expression/inside_class_with_import_3.expression.yaml.expect
index 01c5a65..d3baad3 100644
--- a/pkg/front_end/testcases/expression/inside_class_with_import_3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/inside_class_with_import_3.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return new #lib1::Foo::•<dynamic>().{#lib1::Foo::bar}{dart.core::String*}.{dart.core::String::length}{dart.core::int*};
+ return new #lib1::Foo::•<dynamic>().{#lib1::Foo::bar}{dart.core::String}.{dart.core::String::length}{dart.core::int};
diff --git a/pkg/front_end/testcases/expression/inside_class_with_t.expression.yaml.expect b/pkg/front_end/testcases/expression/inside_class_with_t.expression.yaml.expect
index d7463a7..e0b421b 100644
--- a/pkg/front_end/testcases/expression/inside_class_with_t.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/inside_class_with_t.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{main::E::t}{main::E::T*};
+ return this.{main::E::t}{main::E::T?};
diff --git a/pkg/front_end/testcases/expression/inside_class_with_t_in_dart_collection.expression.yaml.expect b/pkg/front_end/testcases/expression/inside_class_with_t_in_dart_collection.expression.yaml.expect
index 9625a0d..066255f 100644
--- a/pkg/front_end/testcases/expression/inside_class_with_t_in_dart_collection.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/inside_class_with_t_in_dart_collection.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
-method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{dart.collection::LinkedList::first}{dart.collection::LinkedList::E*};
+method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+ return this.{dart.collection::LinkedList::first}{dart.collection::LinkedList::E};
diff --git a/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect
index 430f437..3fc7e5b 100644
--- a/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect
@@ -4,7 +4,7 @@
^^^^^^^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return () → Null {
+ return () → Never {
throw new dart.core::AbstractClassInstantiationError::•("Process");
dart.io::File::fromUri(dart.core::Uri::parse("file://test.dart"));
};
diff --git a/pkg/front_end/testcases/expression/lib_reference.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_reference.expression.yaml.expect
index 5f9d49f..eab2b6c 100644
--- a/pkg/front_end/testcases/expression/lib_reference.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_reference.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return dart.io::exit(2);
+ return let final Never #t1 = dart.io::exit(2) in throw new dart._internal::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
diff --git a/pkg/front_end/testcases/expression/main.dart b/pkg/front_end/testcases/expression/main.dart
index 35045e1..99bec5b 100644
--- a/pkg/front_end/testcases/expression/main.dart
+++ b/pkg/front_end/testcases/expression/main.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2018, 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.
-// @dart=2.9
+
library main;
import 'dart:io' show File, Process, exit;
@@ -31,7 +31,7 @@
static int staticVar = 3;
int doit_with_this(int x) => x + 1;
- final int _priv = 0;
+ final int? _priv = 0;
void _privMethod() {}
}
@@ -40,7 +40,10 @@
class B extends A<Object> {
int x;
final int y = 7;
- int _priv;
+ int? _priv;
+
+ B(this.x);
+
String get z {
return "";
}
@@ -52,14 +55,14 @@
class Bound {}
class HasPrivate {
- int _priv = 0;
+ int? _priv = 0;
}
class C<T extends Bound> extends HasPrivate {}
void hasBound<T extends Bound>() {}
-Object k;
+Object? k;
class D<T> {
Y id<Y>(Y x) => x;
@@ -97,8 +100,8 @@
}
class E<T> {
- T _t;
- T get t => _t;
+ T? _t;
+ T? get t => _t;
}
void withBound<E extends String>(List<E> x) {
diff --git a/pkg/front_end/testcases/expression/main_2.dart b/pkg/front_end/testcases/expression/main_2.dart
index eb9600f..5cebe18 100644
--- a/pkg/front_end/testcases/expression/main_2.dart
+++ b/pkg/front_end/testcases/expression/main_2.dart
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
-// @dart=2.9
+
library main_2;
import 'main.dart' as m;
diff --git a/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect b/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect
index 69d0373..4a467bc 100644
--- a/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/missing_variable_types.expression.yaml.expect
@@ -1,4 +1,8 @@
Errors: {
+ org-dartlang-debug:synthetic_debug_expression:1:6: Error: The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<T>'.
+ - 'List' is from 'dart:core'.
+ m(id(s = []))
+ ^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic s) → dynamic
- return this.{main::D::m}(this.{main::D::id}<dart.core::List<main::D::T*>*>((s = dart.core::_GrowableList::•<dynamic>(0)) as{TypeError} dart.core::List<main::D::T*>*){(dart.core::List<main::D::T*>*) →* dart.core::List<main::D::T*>*}){(dart.core::List<main::D::T*>*) →* dynamic};
+ return this.{main::D::m}(this.{main::D::id}<dart.core::List<main::D::T%>>(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:6: Error: The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<T>'.\n - 'List' is from 'dart:core'.\nm(id(s = []))\n ^" in (s = dart.core::_GrowableList::•<dynamic>(0)) as{TypeError,ForNonNullableByDefault} Never){(dart.core::List<main::D::T%>) → dart.core::List<main::D::T%>}){(dart.core::List<main::D::T%>) → dynamic};
diff --git a/pkg/front_end/testcases/expression/nolib.expression.yaml.expect b/pkg/front_end/testcases/expression/nolib.expression.yaml.expect
index c46c67f..c48fc35 100644
--- a/pkg/front_end/testcases/expression/nolib.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/nolib.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
-method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+method /*isNonNullableByDefault, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
return 0;
diff --git a/pkg/front_end/testcases/expression/platform_isandroid.expression.yaml.expect b/pkg/front_end/testcases/expression/platform_isandroid.expression.yaml.expect
index 872d5f9..4cffbf8 100644
--- a/pkg/front_end/testcases/expression/platform_isandroid.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/platform_isandroid.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
-static method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
return dart.io::Platform::isAndroid;
diff --git a/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect b/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
index fd54faa..04d903b 100644
--- a/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
-method /*isLegacy, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
- return this.{dart.core::Object::toString}(){() →* dart.core::String*};
+method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+ return this.{dart.core::Object::toString}(){() → dart.core::String};
diff --git a/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect b/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect
index 175aec2..9fe5f50 100644
--- a/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/set_literal.expression.yaml.expect
@@ -2,6 +2,6 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
return block {
- final dart.core::Set<dart.core::String*>* #t1 = new dart.collection::_CompactLinkedHashSet::•<dart.core::String*>();
- #t1.{dart.core::Set::add}{Invariant}("a"){(dart.core::String*) →* dart.core::bool*};
+ final dart.core::Set<dart.core::String> #t1 = new dart.collection::_CompactLinkedHashSet::•<dart.core::String>();
+ #t1.{dart.core::Set::add}{Invariant}("a"){(dart.core::String) → dart.core::bool};
} =>#t1;
diff --git a/pkg/front_end/testcases/expression/spread_element.expression.yaml.expect b/pkg/front_end/testcases/expression/spread_element.expression.yaml.expect
index 6c8b355..caefbcc 100644
--- a/pkg/front_end/testcases/expression/spread_element.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/spread_element.expression.yaml.expect
@@ -2,5 +2,5 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
return block {
- final dart.core::List<dart.core::String*>* #t1 = dart.core::List::of<dart.core::String*>(main::listOfStrings);
+ final dart.core::List<dart.core::String> #t1 = dart.core::List::of<dart.core::String>(main::listOfStrings);
} =>#t1;
diff --git a/pkg/front_end/testcases/expression/type_closure_evaluation.expression.yaml.expect b/pkg/front_end/testcases/expression/type_closure_evaluation.expression.yaml.expect
index 5865e1f..3fb0d47 100644
--- a/pkg/front_end/testcases/expression/type_closure_evaluation.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_closure_evaluation.expression.yaml.expect
@@ -6,4 +6,4 @@
^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dart.core::_Closure x) → dynamic
- return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:2: Error: Cannot invoke an instance of '_Closure' because it declares 'call' to be something other than a method.\n - '_Closure' is from 'dart:core'.\nTry changing 'call' to a method or explicitly invoke 'call'.\nx().fold<int>(0, (previousValue, element) => previousValue + element.length)\n ^"{dynamic}.fold<dart.core::int*>(0, (dynamic previousValue, dynamic element) → dynamic => previousValue{dynamic}.+(element{dynamic}.length));
+ return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:2: Error: Cannot invoke an instance of '_Closure' because it declares 'call' to be something other than a method.\n - '_Closure' is from 'dart:core'.\nTry changing 'call' to a method or explicitly invoke 'call'.\nx().fold<int>(0, (previousValue, element) => previousValue + element.length)\n ^"{dynamic}.fold<dart.core::int>(0, (dynamic previousValue, dynamic element) → dynamic => previousValue{dynamic}.+(element{dynamic}.length));
diff --git a/pkg/front_end/testcases/expression/type_closure_evaluation_2.expression.yaml.expect b/pkg/front_end/testcases/expression/type_closure_evaluation_2.expression.yaml.expect
index 7b31ce4..9b852fc 100644
--- a/pkg/front_end/testcases/expression/type_closure_evaluation_2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_closure_evaluation_2.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
- return x{dynamic}.call(){dynamic}.fold<dart.core::int*>(0, (dynamic previousValue, dynamic element) → dynamic => previousValue{dynamic}.+(element{dynamic}.length));
+ return x{dynamic}.call(){dynamic}.fold<dart.core::int>(0, (dynamic previousValue, dynamic element) → dynamic => previousValue{dynamic}.+(element{dynamic}.length));
diff --git a/pkg/front_end/testcases/expression/type_definition_bound_1.expression.yaml.expect b/pkg/front_end/testcases/expression/type_definition_bound_1.expression.yaml.expect
index 680d8c5..5c6162f 100644
--- a/pkg/front_end/testcases/expression/type_definition_bound_1.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_definition_bound_1.expression.yaml.expect
@@ -2,6 +2,6 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<E extends dart.core::String>(dart.core::List<dart.core::String> x) → dynamic
return (() → Null {
- dart.core::List<#lib1::debugExpr::E*>* y = dart.core::_GrowableList::•<#lib1::debugExpr::E*>(0);
- x.{dart.core::List::addAll}(y){(dart.core::Iterable<dart.core::String*>*) →* void};
- })(){() →* Null};
+ dart.core::List<#lib1::debugExpr::E> y = dart.core::_GrowableList::•<#lib1::debugExpr::E>(0);
+ x.{dart.core::List::addAll}(y){(dart.core::Iterable<dart.core::String>) → void};
+ })(){() → Null};
diff --git a/pkg/front_end/testcases/expression/type_definition_bound_2.expression.yaml.expect b/pkg/front_end/testcases/expression/type_definition_bound_2.expression.yaml.expect
index be07da0..705f6d9 100644
--- a/pkg/front_end/testcases/expression/type_definition_bound_2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_definition_bound_2.expression.yaml.expect
@@ -7,6 +7,6 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<E extends dart.core::String>(dart.core::List<dart.core::String> x) → dynamic
return () → Null {
- dart.core::List<#lib1::debugExpr::E*>* y = dart.core::_GrowableList::•<#lib1::debugExpr::E*>(0);
- y.{dart.core::List::addAll}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:31: Error: The argument type 'List<String>' can't be assigned to the parameter type 'Iterable<E>'.\n - 'List' is from 'dart:core'.\n - 'Iterable' is from 'dart:core'.\n() { List<E> y = []; y.addAll(x); }\n ^" in x as{TypeError} Never){(dart.core::Iterable<#lib1::debugExpr::E*>*) →* void};
+ dart.core::List<#lib1::debugExpr::E> y = dart.core::_GrowableList::•<#lib1::debugExpr::E>(0);
+ y.{dart.core::List::addAll}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:31: Error: The argument type 'List<String>' can't be assigned to the parameter type 'Iterable<E>'.\n - 'List' is from 'dart:core'.\n - 'Iterable' is from 'dart:core'.\n() { List<E> y = []; y.addAll(x); }\n ^" in x as{TypeError,ForNonNullableByDefault} Never){(dart.core::Iterable<#lib1::debugExpr::E>) → void};
};
diff --git a/pkg/front_end/testcases/expression/type_definition_bound_3.expression.yaml.expect b/pkg/front_end/testcases/expression/type_definition_bound_3.expression.yaml.expect
index f70deb2..b61150e 100644
--- a/pkg/front_end/testcases/expression/type_definition_bound_3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_definition_bound_3.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<E extends dart.core::Object? = dynamic>() → dynamic
- return dart.core::print(#lib1::debugExpr::E*);
+ return dart.core::print(#lib1::debugExpr::E%);
diff --git a/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect
index a38c415..888d75f 100644
--- a/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect
@@ -6,4 +6,4 @@
^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
- return main::hasBound<#lib1::debugExpr::T*>();
+ return main::hasBound<#lib1::debugExpr::T%>();
diff --git a/pkg/front_end/testcases/expression/type_param_bound_2.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_bound_2.expression.yaml.expect
index a38c415..888d75f 100644
--- a/pkg/front_end/testcases/expression/type_param_bound_2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_bound_2.expression.yaml.expect
@@ -6,4 +6,4 @@
^
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
- return main::hasBound<#lib1::debugExpr::T*>();
+ return main::hasBound<#lib1::debugExpr::T%>();
diff --git a/pkg/front_end/testcases/expression/type_param_shadow.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow.expression.yaml.expect
index 6cb5b78..be5007c 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>(dynamic x) → dynamic
- return x is main::A::debugExpr::T*;
+ return x is{ForNonNullableByDefault} main::A::debugExpr::T%;
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_arg.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow_arg.expression.yaml.expect
index 66d7a12..a5a9f41 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_arg.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow_arg.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>(dynamic x) → dynamic
- return main::id<main::A::debugExpr::T*>(x as{TypeError,ForDynamic} main::A::debugExpr::T*);
+ return main::id<main::A::debugExpr::T%>(x as{TypeError,ForDynamic,ForNonNullableByDefault} main::A::debugExpr::T%);
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect
index 4b7f9b0..58142c0 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect
@@ -6,5 +6,5 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
return () → Null {
- main::A::debugExpr::T* k = invalid-expression "org-dartlang-debug:synthetic_debug_expression:2:13: Error: A value of type 'A<dynamic>' can't be assigned to a variable of type 'T'.\n - 'A' is from 'pkg/front_end/testcases/expression/main.dart'.\n T k = new A();\n ^" in new main::A::•<dynamic>() as{TypeError} Never;
+ main::A::debugExpr::T% k = invalid-expression "org-dartlang-debug:synthetic_debug_expression:2:13: Error: A value of type 'A<dynamic>' can't be assigned to a variable of type 'T'.\n - 'A' is from 'pkg/front_end/testcases/expression/main.dart'.\n T k = new A();\n ^" in new main::A::•<dynamic>() as{TypeError,ForNonNullableByDefault} Never;
};
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml b/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml
index c379cd5..92a1ef1 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml
+++ b/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml
@@ -8,6 +8,6 @@
position: "main.dart#A"
expression: |
() {
- T k = null;
+ T? k = null;
k = id(k);
}
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml.expect
index 4e5bdde..fae9dbf 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow_arg_inferred.expression.yaml.expect
@@ -2,6 +2,6 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
return () → Null {
- main::A::debugExpr::T* k = null;
- k = main::id<main::A::debugExpr::T*>(k);
+ main::A::debugExpr::T? k = null;
+ k = main::id<main::A::debugExpr::T?>(k);
};
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_ctor.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow_ctor.expression.yaml.expect
index 6ae7542..6fae9ff 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_ctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow_ctor.expression.yaml.expect
@@ -1,4 +1,4 @@
Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
- return new main::A::•<main::A::debugExpr::T*>();
+ return new main::A::•<main::A::debugExpr::T%>();
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml b/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml
index c1c6c10..69e8ede 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml
+++ b/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml
@@ -8,5 +8,5 @@
position: "main.dart#A"
expression: |
() {
- T x = null;
+ T? x = null;
}
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml.expect
index a632a3c..4f51517 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow_var.expression.yaml.expect
@@ -2,5 +2,5 @@
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>(dynamic x) → dynamic
return () → Null {
- main::A::debugExpr::T* x = null;
+ main::A::debugExpr::T? x = null;
};
diff --git a/pkg/front_end/testcases/modular.status b/pkg/front_end/testcases/modular.status
index b40f872..a3e7ee6 100644
--- a/pkg/front_end/testcases/modular.status
+++ b/pkg/front_end/testcases/modular.status
@@ -6,6 +6,8 @@
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
+enhanced_enums/declared_hashcode: TypeCheckError
+enhanced_enums/declared_index: TypeCheckError
extension_types/access_setter_as_getter: ExpectationFileMismatchSerialized # Expected.
extension_types/call_not_get: ExpectationFileMismatchSerialized # Expected.
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
@@ -29,8 +31,8 @@
general/getter_vs_setter_type: TypeCheckError
general/implement_semi_stub: TypeCheckError
general/implicit_super_call: TypeCheckError
-general/infer_field_from_multiple: TypeCheckError
general/infer_field_from_multiple2: TypeCheckError
+general/infer_field_from_multiple: TypeCheckError
general/invalid_operator: TypeCheckError
general/invalid_operator_override: TypeCheckError
general/invocations: TypeCheckError
diff --git a/pkg/front_end/testcases/outline.status b/pkg/front_end/testcases/outline.status
index 3e52ebe..a5ff68d 100644
--- a/pkg/front_end/testcases/outline.status
+++ b/pkg/front_end/testcases/outline.status
@@ -2,8 +2,10 @@
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE.md file.
+enhanced_enums/declared_hashcode: TypeCheckError
const_functions/const_functions_const_factory: VerificationError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
+enhanced_enums/declared_index: TypeCheckError
extension_types/access_setter_as_getter: ExpectationFileMismatchSerialized # Expected.
extension_types/call_not_get: ExpectationFileMismatchSerialized # Expected.
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
@@ -22,8 +24,8 @@
general/crashes/crash_06/main: Crash
general/getter_vs_setter_type: TypeCheckError
general/implement_semi_stub: TypeCheckError
-general/infer_field_from_multiple: TypeCheckError
general/infer_field_from_multiple2: TypeCheckError
+general/infer_field_from_multiple: TypeCheckError
general/invalid_operator: TypeCheckError
general/invalid_operator_override: TypeCheckError
general/issue41210a: TypeCheckError
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index f57bbdf..4d3af5e 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -15,6 +15,8 @@
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
+enhanced_enums/declared_hashcode: TypeCheckError
+enhanced_enums/declared_index: TypeCheckError
enhanced_enums/simple_mixins: RuntimeError
extension_types/access_setter_as_getter: ExpectationFileMismatchSerialized # Expected.
extension_types/call_not_get: ExpectationFileMismatchSerialized # Expected.
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 9a22f85..2a12a528 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -8,9 +8,11 @@
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
-enhanced_enums/simple_mixins: RuntimeError
+enhanced_enums/declared_hashcode: TypeCheckError
+enhanced_enums/declared_index: TypeCheckError
enhanced_enums/named_arguments_anywhere/issue48276: TextSerializationFailure # Issue 47524.
enhanced_enums/named_arguments_anywhere/redirecting_constructor: TextSerializationFailure # Issue 47524.
+enhanced_enums/simple_mixins: RuntimeError
extension_types/access_setter_as_getter: ExpectationFileMismatchSerialized # Expected.
extension_types/call_not_get: ExpectationFileMismatchSerialized # Expected.
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
@@ -38,8 +40,8 @@
general/cascade: RuntimeError
general/constructor_initializer_invalid: RuntimeError
general/covariant_field: TypeCheckError
-general/covariant_generic: RuntimeError
general/covariant_generic2: RuntimeError
+general/covariant_generic: RuntimeError
general/crashes/crash_02/main: Crash
general/crashes/crash_06/main: Crash
general/duplicated_declarations: TypeCheckError
@@ -81,8 +83,8 @@
general/implement_semi_stub: TypeCheckError
general/implicit_super_call: TypeCheckError
general/incomplete_field_formal_parameter: RuntimeError
-general/infer_field_from_multiple: TypeCheckError
general/infer_field_from_multiple2: TypeCheckError
+general/infer_field_from_multiple: TypeCheckError
general/invalid_operator: TypeCheckError
general/invalid_operator_override: TypeCheckError
general/invocations: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 89d1295..e28929c 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -23,6 +23,8 @@
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
+enhanced_enums/declared_hashcode: TypeCheckError
+enhanced_enums/declared_index: TypeCheckError
enhanced_enums/simple_mixins: RuntimeError
extension_types/access_setter_as_getter: ExpectationFileMismatchSerialized # Expected.
extension_types/call_not_get: ExpectationFileMismatchSerialized # Expected.
@@ -51,8 +53,8 @@
general/cascade: RuntimeError
general/constructor_initializer_invalid: RuntimeError # Fails execution after recovery
general/covariant_field: TypeCheckError
-general/covariant_generic: RuntimeError
general/covariant_generic2: RuntimeError
+general/covariant_generic: RuntimeError
general/crashes/crash_02/main: Crash
general/crashes/crash_06/main: Crash
general/duplicated_declarations: TypeCheckError
@@ -94,8 +96,8 @@
general/implement_semi_stub: TypeCheckError
general/implicit_super_call: TypeCheckError
general/incomplete_field_formal_parameter: RuntimeError
-general/infer_field_from_multiple: TypeCheckError
general/infer_field_from_multiple2: TypeCheckError
+general/infer_field_from_multiple: TypeCheckError
general/invalid_operator: TypeCheckError
general/invalid_operator_override: TypeCheckError
general/invocations: TypeCheckError
diff --git a/pkg/vm/lib/transformations/ffi/common.dart b/pkg/vm/lib/transformations/ffi/common.dart
index 22f2195..3b3a837 100644
--- a/pkg/vm/lib/transformations/ffi/common.dart
+++ b/pkg/vm/lib/transformations/ffi/common.dart
@@ -223,9 +223,9 @@
final Field arraySizeField;
final Field arrayNestedDimensionsField;
final Procedure arrayCheckIndex;
- final Field arrayNestedDimensionsFlattened;
- final Field arrayNestedDimensionsFirst;
- final Field arrayNestedDimensionsRest;
+ final Procedure arrayNestedDimensionsFlattened;
+ final Procedure arrayNestedDimensionsFirst;
+ final Procedure arrayNestedDimensionsRest;
final Constructor structFromTypedDataBase;
final Constructor unionFromTypedDataBase;
final Constructor arrayConstructor;
@@ -364,12 +364,12 @@
index.getField('dart:ffi', 'Array', '_nestedDimensions'),
arrayCheckIndex =
index.getProcedure('dart:ffi', 'Array', '_checkIndex'),
- arrayNestedDimensionsFlattened =
- index.getField('dart:ffi', 'Array', '_nestedDimensionsFlattened'),
- arrayNestedDimensionsFirst =
- index.getField('dart:ffi', 'Array', '_nestedDimensionsFirst'),
- arrayNestedDimensionsRest =
- index.getField('dart:ffi', 'Array', '_nestedDimensionsRest'),
+ arrayNestedDimensionsFlattened = index.getProcedure(
+ 'dart:ffi', 'Array', 'get:_nestedDimensionsFlattened'),
+ arrayNestedDimensionsFirst = index.getProcedure(
+ 'dart:ffi', 'Array', 'get:_nestedDimensionsFirst'),
+ arrayNestedDimensionsRest = index.getProcedure(
+ 'dart:ffi', 'Array', 'get:_nestedDimensionsRest'),
structFromTypedDataBase =
index.getConstructor('dart:ffi', 'Struct', '_fromTypedDataBase'),
unionFromTypedDataBase =
diff --git a/pkg/vm/lib/transformations/ffi/use_sites.dart b/pkg/vm/lib/transformations/ffi/use_sites.dart
index 0a765e3..bdc6fdf 100644
--- a/pkg/vm/lib/transformations/ffi/use_sites.dart
+++ b/pkg/vm/lib/transformations/ffi/use_sites.dart
@@ -689,7 +689,7 @@
InstanceGet(InstanceAccessKind.Instance, VariableGet(arrayVar),
arrayNestedDimensionsFlattened.name,
interfaceTarget: arrayNestedDimensionsFlattened,
- resultType: arrayNestedDimensionsFlattened.type)),
+ resultType: arrayNestedDimensionsFlattened.getterType)),
type: coreTypes.intNonNullableRawType)
..fileOffset = node.fileOffset;
final offsetVar = VariableDeclaration("#offset",
@@ -729,11 +729,11 @@
InstanceGet(InstanceAccessKind.Instance, VariableGet(arrayVar),
arrayNestedDimensionsFirst.name,
interfaceTarget: arrayNestedDimensionsFirst,
- resultType: arrayNestedDimensionsFirst.type),
+ resultType: arrayNestedDimensionsFirst.getterType),
InstanceGet(InstanceAccessKind.Instance, VariableGet(arrayVar),
arrayNestedDimensionsRest.name,
interfaceTarget: arrayNestedDimensionsRest,
- resultType: arrayNestedDimensionsRest.type)
+ resultType: arrayNestedDimensionsRest.getterType)
], types: [
dartType
])));
diff --git a/runtime/vm/os_fuchsia.cc b/runtime/vm/os_fuchsia.cc
index 448a10b..84bf154 100644
--- a/runtime/vm/os_fuchsia.cc
+++ b/runtime/vm/os_fuchsia.cc
@@ -294,7 +294,7 @@
};
// The timezone names encountered so far. The timezone names must live forever.
-std::set<const std::string> timezone_names;
+std::set<std::string> timezone_names;
// Initialized on OS:Init(), deinitialized on OS::Cleanup.
std::shared_ptr<InspectMetrics> metrics;
@@ -460,9 +460,6 @@
return -1;
}
-// The timezone names encountered so far. The timezone names must live forever.
-std::set<const std::string> timezone_names;
-
// TODO(5411554): May need to hoist these architecture dependent code
// into a architecture specific file e.g: os_ia32_fuchsia.cc
intptr_t OS::ActivationFrameAlignment() {
diff --git a/sdk/lib/_internal/vm/lib/ffi_patch.dart b/sdk/lib/_internal/vm/lib/ffi_patch.dart
index bbf8499..174cc69 100644
--- a/sdk/lib/_internal/vm/lib/ffi_patch.dart
+++ b/sdk/lib/_internal/vm/lib/ffi_patch.dart
@@ -205,15 +205,22 @@
@pragma("vm:entry-point")
final List<int> _nestedDimensions;
+ int? _nestedDimensionsFlattenedCache;
+ int? _nestedDimensionsFirstCache;
+ List<int>? _nestedDimensionsRestCache;
+
@pragma("vm:entry-point")
Array._(this._typedDataBase, this._size, this._nestedDimensions);
- late final int _nestedDimensionsFlattened = _nestedDimensions.fold(
- 1, (accumulator, element) => accumulator * element);
+ int get _nestedDimensionsFlattened =>
+ _nestedDimensionsFlattenedCache ??= _nestedDimensions.fold<int>(
+ 1, (accumulator, element) => accumulator * element);
- late final int _nestedDimensionsFirst = _nestedDimensions.first;
+ int get _nestedDimensionsFirst =>
+ _nestedDimensionsFirstCache ??= _nestedDimensions.first;
- late final List<int> _nestedDimensionsRest = _nestedDimensions.sublist(1);
+ List<int> get _nestedDimensionsRest =>
+ _nestedDimensionsRestCache ??= _nestedDimensions.sublist(1);
_checkIndex(int index) {
if (index < 0 || index >= _size) {
diff --git a/tools/VERSION b/tools/VERSION
index 59c79ec..1c7d543 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 17
PATCH 0
-PRERELEASE 214
+PRERELEASE 215
PRERELEASE_PATCH 0
\ No newline at end of file