Add extension name getter on Enum.

We use an extension getter instead of an instance getter because
it doesn't conflict with any potential existing or future enums
which want an element named `name`.
Keeping the namespace for enum elements open is a priority.
We currently only reserve `index` and `values`.

BUG: https://github.com/dart-lang/language/issues/1511

Fixes language issue #1511, which is a long-standing request,
and should replace a number of alternative implementations
which are based on parsing the `toString()`.


This version has two fields on the shared superclass, the index
and private name, and has a separate `toString` for each `enum` class
which hard-codes that enum's class name.

An earlier version had both `"name"` and `"ClassName.name"` as fields
to be able to reuse the same `toString` method on all enum classes,
but that cost too much for JS compiled code.
Even having just `ClassName.` as a field and then combining inside
`toString` requires more code to create the enum instances.
Instead this version hardcodes the `ClassName.` string once
in the `toString` method, which means each enum class has its own
toString (which can *potentially* be tree-shaken then.)

This still tree-shakes slightly worse than the previous implementation
where every enum class had its own `index` and `_name` fields
independent of each other, which could then be tree-shaken independently.
However, the `index` was already made an interface member with the
addition of the `Enum` interface, so code which accesses `.index`
on something of the `Enum` supertype could prevent tree-shaking of
all enum classes' `index` fields.
Likewise any general access to the "name" of an enum would necessarily
do the same for the name.
This CL makes up for some of that by sharing more implementation
between enum classes.

DartVM AOT CodeSize impact: ~0.15% regression on gallery (little less on big g3 app)

TEST= New tests added to enum_test.dart

Change-Id: Id25334e6c987f470f558de3c141d0e3ff542b020
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/210480
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
This commit is contained in:
Lasse R.H. Nielsen 2021-09-22 14:20:16 +00:00 committed by commit-bot@chromium.org
parent 24c20d4844
commit 18f37dd8f3
104 changed files with 895 additions and 772 deletions

View file

@ -31,7 +31,7 @@
if (!iIsNull) {
print(i + 1); // OK, because `i` is known to be non-null
}
}
}<>
```
Previously, the above program had a compile-time error because type promotion
@ -82,7 +82,11 @@
### `dart:core`
- Add extension `name` getter on enum values.
- Add `Enum.compareByIndex` helper function for comparing enum values by index.
- Add `Enum.compareByName` helper function for comparing enum values by name.
- Add extension methods on `Iterable<T extends Enum>`, intended for
`SomeEnumType.values` lists, to look up values by name.
### Tools
@ -130,9 +134,9 @@ Updated the Linter to `1.12.0`, which includes changes that
- update `avoid_print` to allow `kDebugMode`-wrapped print calls.
- fix handling of initializing formals in `prefer_final_parameters`.
- fix `unnecessary_parenthesis` false positive with function expressions.
- adds support for constructor tear-offs to `avoid_redundant_argument_values`,
- adds support for constructor tear-offs to `avoid_redundant_argument_values`,
`unnecessary_lambdas`, and `unnecessary_parenthesis`.
- adds a new lint: `unnecessary_constructor_name` to flag unnecessary uses of
- adds a new lint: `unnecessary_constructor_name` to flag unnecessary uses of
`.new`.
- improves regular expression parsing performance for common checks
(`camel_case_types`, `file_names`, etc.).
@ -180,9 +184,9 @@ Updated the Linter to `1.12.0`, which includes changes that
[`false_secrets`](https://dart.dev/go/false-secrets) section of your
`pubspec.yaml`.
- Fixes unicode terminal detection windows.
- New flag `--example` to the commands
- New flag `--example` to the commands
`dart pub get/upgrade/downgrade/add/remove` that will result in the `example/`
folder dependencies to be updated after operating in the current directory.
folder dependencies to be updated after operating in the current directory.
## 2.14.2 - 2021-09-16

View file

@ -531,6 +531,10 @@ abstract class Enum {
int get index;
}
abstract class _Enum extends Enum {
String _name;
}
abstract class Pattern {
Iterable<Match> allMatches(String string, [int start = 0]);
}

View file

@ -4499,12 +4499,16 @@ class KernelSsaGraphBuilder extends ir.Visitor<void> with ir.VisitorVoidMixin {
int _extractEnumIndexFromConstantValue(
ConstantValue constant, ClassEntity classElement) {
if (constant is ConstructedConstantValue) {
if (constant.type.element == classElement) {
assert(constant.fields.length == 1 || constant.fields.length == 2);
ConstantValue indexConstant = constant.fields.values.first;
if (indexConstant is IntConstantValue) {
return indexConstant.intValue.toInt();
if (constant is ConstructedConstantValue &&
constant.type.element == classElement) {
assert(constant.fields.length >= 1);
for (var field in constant.fields.keys) {
if (field.memberName.text == "index") {
ConstantValue indexConstant = constant.fields[field];
if (indexConstant is IntConstantValue) {
return indexConstant.intValue.toInt();
}
break;
}
}
}

View file

@ -25,7 +25,7 @@ class Class {
/*member: Class.state1:constant=IntConstant(1)*/
final int state1;
/*member: Class.state2:constant=ConstructedConstant(Enum(_name=StringConstant("Enum.c"),index=IntConstant(2)))*/
/*member: Class.state2:constant=ConstructedConstant(Enum(_name=StringConstant("c"),index=IntConstant(2)))*/
final Enum state2;
Class({this.state1: 1, this.state2: Enum.c});

View file

@ -264,8 +264,8 @@ enum Enum { A }
/*member: testEnum:
static=[
Enum._name=StringConstant("Enum.A"),
Enum.index=IntConstant(0)],
_Enum._name=StringConstant("A"),
_Enum.index=IntConstant(0)],
type=[
const:Enum,
inst:JSInt,

View file

@ -55,7 +55,7 @@ enum Enum4 {
a,
}
/*member: enumToString1:Value([exact=JSString], value: "Enum4.a")*/
/*member: enumToString1:[exact=JSString]*/
enumToString1() {
return Enum4.a. /*invoke: [exact=Enum4]*/ toString();
}

View file

@ -13,7 +13,6 @@ import 'package:kernel/ast.dart'
ConstructorInvocation,
Expression,
Field,
FieldInitializer,
InstanceAccessKind,
InstanceGet,
IntLiteral,
@ -24,10 +23,10 @@ import 'package:kernel/ast.dart'
Reference,
ReturnStatement,
StaticGet,
StringConcatenation,
StringLiteral,
SuperInitializer,
ThisExpression,
VariableGet;
ThisExpression;
import 'package:kernel/core_types.dart';
import 'package:kernel/reference_from_index.dart' show IndexedClass;
@ -45,13 +44,7 @@ import '../kernel/kernel_helper.dart';
import '../util/helpers.dart';
import '../modifier.dart'
show
constMask,
finalMask,
hasInitializerMask,
initializingFormalMask,
staticMask;
import '../modifier.dart' show constMask, hasInitializerMask, staticMask;
import '../scope.dart';
@ -81,8 +74,6 @@ class EnumBuilder extends SourceClassBuilder {
final NamedTypeBuilder objectType;
final NamedTypeBuilder enumType;
final NamedTypeBuilder listType;
EnumBuilder.internal(
@ -95,7 +86,7 @@ class EnumBuilder extends SourceClassBuilder {
this.intType,
this.listType,
this.objectType,
this.enumType,
TypeBuilder enumType,
this.stringType,
SourceLibraryBuilder parent,
int startCharOffset,
@ -107,7 +98,7 @@ class EnumBuilder extends SourceClassBuilder {
0,
name,
/* typeVariable = */ null,
/* supertype = */ null,
enumType,
/* interfaces = */ null,
/* onTypes = */ null,
scope,
@ -154,7 +145,7 @@ class EnumBuilder extends SourceClassBuilder {
/* fileUri = */ null,
/* charOffset = */ null);
NamedTypeBuilder enumType = new NamedTypeBuilder(
"Enum",
"_Enum",
const NullabilityBuilder.omitted(),
/* arguments = */ null,
/* fileUri = */ null,
@ -178,25 +169,16 @@ class EnumBuilder extends SourceClassBuilder {
/* fileUri = */ null,
/* charOffset = */ null);
/// metadata class E {
/// final int index;
/// final String _name;
/// const E(this.index, this._name);
/// static const E id0 = const E(0, 'E.id0');
/// ...
/// static const E idn-1 = const E(n - 1, 'E.idn-1');
/// static const List<E> values = const <E>[id0, ..., idn-1];
/// String toString() => _name;
/// }
NameScheme instanceFieldNameScheme = new NameScheme(
isInstanceMember: true,
className: name,
isExtensionMember: false,
extensionName: null,
libraryReference: referencesFromIndexed != null
? referencesFromIndexed.library.reference
: parent.library.reference);
// metadata class E extends _Enum {
// const E(int index, String name) : super(index, name);
// static const E id0 = const E(0, 'id0');
// ...
// static const E id${n-1} = const E(n - 1, 'idn-1');
// static const List<E> values = const <E>[id0, ..., id${n-1}];
// String toString() {
// return "E.${_Enum::_name}";
// }
// }
NameScheme staticFieldNameScheme = new NameScheme(
isInstanceMember: false,
@ -218,10 +200,6 @@ class EnumBuilder extends SourceClassBuilder {
Constructor? constructorReference;
Reference? toStringReference;
Reference? indexGetterReference;
Reference? indexSetterReference;
Reference? _nameGetterReference;
Reference? _nameSetterReference;
Reference? valuesGetterReference;
Reference? valuesSetterReference;
if (referencesFromIndexed != null) {
@ -229,15 +207,6 @@ class EnumBuilder extends SourceClassBuilder {
referencesFromIndexed.lookupConstructor(new Name("")) as Constructor;
toStringReference =
referencesFromIndexed.lookupGetterReference(new Name("toString"));
Name indexName = new Name("index");
indexGetterReference =
referencesFromIndexed.lookupGetterReference(indexName);
indexSetterReference =
referencesFromIndexed.lookupSetterReference(indexName);
_nameGetterReference = referencesFromIndexed.lookupGetterReference(
new Name("_name", referencesFromIndexed.library));
_nameSetterReference = referencesFromIndexed.lookupSetterReference(
new Name("_name", referencesFromIndexed.library));
Name valuesName = new Name("values");
valuesGetterReference =
referencesFromIndexed.lookupGetterReference(valuesName);
@ -245,32 +214,6 @@ class EnumBuilder extends SourceClassBuilder {
referencesFromIndexed.lookupSetterReference(valuesName);
}
FieldBuilder indexBuilder = new SourceFieldBuilder(
/* metadata = */ null,
intType,
"index",
finalMask | hasInitializerMask,
/* isTopLevel = */ false,
parent,
charOffset,
charOffset,
instanceFieldNameScheme,
fieldGetterReference: indexGetterReference,
fieldSetterReference: indexSetterReference);
members["index"] = indexBuilder;
FieldBuilder nameBuilder = new SourceFieldBuilder(
/* metadata = */ null,
stringType,
"_name",
finalMask | hasInitializerMask,
/* isTopLevel = */ false,
parent,
charOffset,
charOffset,
instanceFieldNameScheme,
fieldGetterReference: _nameGetterReference,
fieldSetterReference: _nameSetterReference);
members["_name"] = nameBuilder;
ConstructorBuilder constructorBuilder = new ConstructorBuilderImpl(
/* metadata = */ null,
constMask,
@ -278,10 +221,10 @@ class EnumBuilder extends SourceClassBuilder {
"",
/* typeParameters = */ null,
<FormalParameterBuilder>[
new FormalParameterBuilder(null, initializingFormalMask, intType,
"index", parent, charOffset),
new FormalParameterBuilder(null, initializingFormalMask, stringType,
"_name", parent, charOffset)
new FormalParameterBuilder(
null, 0, intType, "index", parent, charOffset),
new FormalParameterBuilder(
null, 0, stringType, "name", parent, charOffset)
],
parent,
charOffset,
@ -304,10 +247,6 @@ class EnumBuilder extends SourceClassBuilder {
fieldGetterReference: valuesGetterReference,
fieldSetterReference: valuesSetterReference);
members["values"] = valuesBuilder;
constructorBuilder
..registerInitializedField(nameBuilder)
..registerInitializedField(indexBuilder)
..registerInitializedField(valuesBuilder);
ProcedureBuilder toStringBuilder = new SourceProcedureBuilder(
/* metadata = */ null,
0,
@ -328,6 +267,7 @@ class EnumBuilder extends SourceClassBuilder {
isExtensionMember: false,
isInstanceMember: true);
members["toString"] = toStringBuilder;
constructorBuilder.registerInitializedField(valuesBuilder);
String className = name;
if (enumConstantInfos != null) {
for (int i = 0; i < enumConstantInfos.length; i++) {
@ -442,26 +382,11 @@ class EnumBuilder extends SourceClassBuilder {
coreLibrary.scope, charOffset, fileUri, libraryBuilder);
objectType.resolveIn(
coreLibrary.scope, charOffset, fileUri, libraryBuilder);
enumType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
TypeBuilder supertypeBuilder = this.supertypeBuilder!;
supertypeBuilder.resolveIn(
coreLibrary.scope, charOffset, fileUri, libraryBuilder);
listType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
cls.implementedTypes
.add(enumType.buildSupertype(libraryBuilder, charOffset, fileUri)!);
SourceFieldBuilder indexFieldBuilder =
firstMemberNamed("index") as SourceFieldBuilder;
indexFieldBuilder.build(libraryBuilder);
Field indexField = indexFieldBuilder.field;
SourceFieldBuilder nameFieldBuilder =
firstMemberNamed("_name") as SourceFieldBuilder;
nameFieldBuilder.build(libraryBuilder);
Field nameField = nameFieldBuilder.field;
ProcedureBuilder toStringBuilder =
firstMemberNamed("toString") as ProcedureBuilder;
toStringBuilder.body = new ReturnStatement(new InstanceGet(
InstanceAccessKind.Instance, new ThisExpression(), nameField.name,
interfaceTarget: nameField, resultType: nameField.type));
List<Expression> values = <Expression>[];
if (enumConstantInfos != null) {
for (EnumConstantInfo? enumConstantInfo in enumConstantInfos!) {
@ -481,29 +406,22 @@ class EnumBuilder extends SourceClassBuilder {
ConstructorBuilderImpl constructorBuilder =
constructorScopeBuilder[""] as ConstructorBuilderImpl;
Constructor constructor = constructorBuilder.build(libraryBuilder);
constructor.initializers.insert(
0,
new FieldInitializer(indexField,
new VariableGet(constructor.function.positionalParameters[0]))
..parent = constructor);
constructor.initializers.insert(
1,
new FieldInitializer(nameField,
new VariableGet(constructor.function.positionalParameters[1]))
..parent = constructor);
ClassBuilder objectClass = objectType.declaration as ClassBuilder;
MemberBuilder? superConstructor = objectClass.findConstructorOrFactory(
ClassBuilder enumClass = supertypeBuilder.declaration as ClassBuilder;
MemberBuilder? superConstructor = enumClass.findConstructorOrFactory(
"", charOffset, fileUri, libraryBuilder);
if (superConstructor == null || !superConstructor.isConstructor) {
// TODO(ahe): Ideally, we would also want to check that [Object]'s
// unnamed constructor requires no arguments. But that information isn't
// always available at this point, and it's not really a situation that
// can happen unless you start modifying the SDK sources.
// (We should add a correct message. We no longer depend on Object here.)
library.addProblem(messageNoUnnamedConstructorInObject,
objectClass.charOffset, objectClass.name.length, objectClass.fileUri);
} else {
constructor.initializers.add(new SuperInitializer(
superConstructor.member as Constructor, new Arguments.empty())
superConstructor.member as Constructor,
new Arguments.forwarded(constructor.function, libraryBuilder.library))
..parent = constructor);
}
return super.build(libraryBuilder, coreLibrary);
@ -551,13 +469,33 @@ class EnumBuilder extends SourceClassBuilder {
}
Arguments arguments = new Arguments(<Expression>[
new IntLiteral(index++),
new StringLiteral("$name.$constant")
new StringLiteral(constant),
]);
field.buildBody(coreTypes,
new ConstructorInvocation(constructor, arguments, isConst: true));
}
}
}
ProcedureBuilder toStringBuilder =
firstMemberNamed("toString") as ProcedureBuilder;
TypeBuilder supertypeBuilder = this.supertypeBuilder!;
ClassBuilder enumClass = supertypeBuilder.declaration as ClassBuilder;
MemberBuilder? nameFieldBuilder =
enumClass.lookupLocalMember("_name") as MemberBuilder?;
if (nameFieldBuilder != null) {
Field nameField = nameFieldBuilder.member as Field;
toStringBuilder.body = new ReturnStatement(new StringConcatenation([
new StringLiteral("${cls.demangledName}."),
new InstanceGet.byReference(
InstanceAccessKind.Instance, new ThisExpression(), nameField.name,
interfaceTargetReference: nameField.getterReference,
resultType: nameField.getterType),
]));
} else {}
super.buildOutlineExpressions(
library, coreTypes, delayedActionPerformers, synthesizedFunctionNodes);
}

View file

@ -54,7 +54,7 @@ abstract class MemberBuilder implements ModifierBuilder {
/// The [Member] to use when invoking this member builder.
///
/// For a constructor, a field, a regular method, a getter an operator or
/// For a constructor, a field, a regular method, a getter, an operator or
/// a factory this is the [member] itself. For a setter this is `null`.
Member? get invokeTarget;

View file

@ -1632,6 +1632,9 @@ class Object {
abstract class Enum {
}
abstract class _Enum {
}
class String {}
class Symbol {}

View file

@ -8,7 +8,9 @@
AmbiguousExtension1,
AmbiguousExtension2,
UnambiguousExtension1,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: AmbiguousExtension1:
builder-name=AmbiguousExtension1,

View file

@ -8,7 +8,9 @@
AmbiguousExtension1,
AmbiguousExtension2,
UnambiguousExtension2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: AmbiguousExtension1:
builder-name=AmbiguousExtension1,

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib1.dart.AmbiguousExtension1,
lib1.dart.AmbiguousExtension2,
lib1.dart.UnambiguousExtension1,

View file

@ -6,7 +6,9 @@
/*library: scope=[
Extension1,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: Extension1:
builder-name=Extension1,

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib.dart.Extension1,
origin.dart.Extension2]*/

View file

@ -6,7 +6,9 @@
/*library: scope=[
Extension2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: Extension2:
builder-name=Extension2,

View file

@ -6,7 +6,9 @@
/*library: scope=[
A2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {
Object field;

View file

@ -6,7 +6,9 @@
/*library: scope=[
E,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A {}

View file

@ -2,7 +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 file.
/*library: scope=[async.dart.FutureExtensions]*/
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
// @dart = 2.9

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib1.dart.E]*/
import 'lib1.dart';

View file

@ -7,7 +7,9 @@
/*library: scope=[
NamedExtension,
_extension#0,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: _extension#0:
builder-name=_extension#0,

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib.dart.NamedExtension]*/
import 'lib.dart';

View file

@ -6,7 +6,9 @@
/*library: scope=[
GeneralGeneric,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: GeneralGeneric:
builder-name=GeneralGeneric,

View file

@ -6,7 +6,9 @@
/*library: scope=[
A2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {
Object field;

View file

@ -7,7 +7,9 @@
/*library: scope=[
A2,
B2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {}

View file

@ -9,7 +9,9 @@
B2,
B3,
B4,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {}

View file

@ -6,7 +6,9 @@
/*library: scope=[
A2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {
int _instanceField;

View file

@ -5,7 +5,9 @@
/*library: scope=[
Extension,
_extension#0,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
part 'part.dart';

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
origin.dart.Extension,
origin.dart.GenericExtension]*/

View file

@ -7,7 +7,9 @@
/*library: scope=[
Extension,
GenericExtension,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: Extension:
builder-name=Extension,

View file

@ -7,7 +7,9 @@
/*library: scope=[
HiddenExtension1,
ShownExtension1,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: ShownExtension1:
builder-name=ShownExtension1,

View file

@ -7,7 +7,9 @@
/*library: scope=[
HiddenExtension2,
ShownExtension2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: HiddenExtension2:
builder-name=HiddenExtension2,

View file

@ -6,7 +6,9 @@
/*library: scope=[
ShownExtension3,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: ShownExtension3:
builder-name=ShownExtension3,

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib1.dart.ShownExtension1,
lib2.dart.ShownExtension2,
lib3.dart.ShownExtension3]*/

View file

@ -2,7 +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 file.
/*library: scope=[async.dart.FutureExtensions]*/
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
// @dart = 2.9

View file

@ -7,7 +7,9 @@
/*library: scope=[
ClashingExtension,
UniqueExtension1,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: ClashingExtension:
builder-name=ClashingExtension,

View file

@ -7,7 +7,9 @@
/*library: scope=[
ClashingExtension,
UniqueExtension2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: ClashingExtension:
builder-name=ClashingExtension,

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib1.dart.UniqueExtension1,
lib2.dart.UniqueExtension2]*/

View file

@ -7,7 +7,9 @@
/*library: scope=[
HiddenExtension1,
ShownExtension1,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: ShownExtension1:
builder-name=ShownExtension1,

View file

@ -7,7 +7,9 @@
/*library: scope=[
HiddenExtension2,
ShownExtension2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
/*class: HiddenExtension2:
builder-name=HiddenExtension2,

View file

@ -6,6 +6,8 @@
/*library: scope=[
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName,
lib1.dart.ShownExtension1,
lib2.dart.ShownExtension2]*/

View file

@ -7,7 +7,9 @@
/*library: scope=[
A2,
B2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {}

View file

@ -6,7 +6,9 @@
/*library: scope=[
A2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {
method1() {}

View file

@ -8,7 +8,9 @@
A2,
A3,
A4,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1<T> {}

View file

@ -10,7 +10,9 @@
_extension#2,
_extension#3,
_extension#4,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {}

View file

@ -7,7 +7,9 @@
/*library: scope=[
A2,
B2,
async.dart.FutureExtensions]*/
async.dart.FutureExtensions,
core.dart.EnumByName,
core.dart.EnumName]*/
class A1 {}

View file

@ -18,20 +18,20 @@ class Fisk<T extends core::Object* = dynamic> extends core::Object /*hasConstCon
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Foo extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Foo extends core::_Enum /*isEnum*/ {
static const field core::List<self::Foo*>* values = #C10;
@#C11
static const field self::Foo* bar = #C3;
@#C12
static const field self::Foo* baz = #C6;
static const field self::Foo* cafebabe = #C9;
const constructor •(core::int* index, core::String* _name) → self::Foo*
: self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Foo*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Foo::_name}{core::String*};
return "Foo.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -47,13 +47,13 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Foo.bar"
#C2 = "bar"
#C3 = self::Foo {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Foo.baz"
#C5 = "baz"
#C6 = self::Foo {index:#C4, _name:#C5}
#C7 = 2
#C8 = "Foo.cafebabe"
#C8 = "cafebabe"
#C9 = self::Foo {index:#C7, _name:#C8}
#C10 = <self::Foo*>[#C3, #C6, #C9]
#C11 = 42
@ -64,5 +64,6 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///annotation_on_enum_values.dart:
- Foo. (from org-dartlang-testcase:///annotation_on_enum_values.dart:15:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
- Fisk.fisk (from org-dartlang-testcase:///annotation_on_enum_values.dart:12:9)

View file

@ -18,20 +18,20 @@ class Fisk<T extends core::Object* = dynamic> extends core::Object /*hasConstCon
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Foo extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Foo extends core::_Enum /*isEnum*/ {
static const field core::List<self::Foo*>* values = const <self::Foo*>[self::Foo::bar, self::Foo::baz, self::Foo::cafebabe];
@self::hest
static const field self::Foo* bar = const self::Foo::•(0, "Foo.bar");
static const field self::Foo* bar = const self::Foo::•(0, "bar");
@self::Fisk::fisk<core::int*>(self::hest)
static const field self::Foo* baz = const self::Foo::•(1, "Foo.baz");
static const field self::Foo* cafebabe = const self::Foo::•(2, "Foo.cafebabe");
const constructor •(core::int* index, core::String* _name) → self::Foo*
: self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
static const field self::Foo* baz = const self::Foo::•(1, "baz");
static const field self::Foo* cafebabe = const self::Foo::•(2, "cafebabe");
const constructor •(core::int* index, core::String* name) → self::Foo*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Foo::_name}{core::String*};
return "Foo.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -48,10 +48,10 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///annotation_on_enum_values.dart:15:6 -> ListConstant(const <Foo*>[const Foo{Foo.index: 0, Foo._name: "Foo.bar"}, const Foo{Foo.index: 1, Foo._name: "Foo.baz"}, const Foo{Foo.index: 2, Foo._name: "Foo.cafebabe"}])
Evaluated: ListLiteral @ org-dartlang-testcase:///annotation_on_enum_values.dart:15:6 -> ListConstant(const <Foo*>[const Foo{_Enum.index: 0, _Enum._name: "bar"}, const Foo{_Enum.index: 1, _Enum._name: "baz"}, const Foo{_Enum.index: 2, _Enum._name: "cafebabe"}])
Evaluated: StaticGet @ org-dartlang-testcase:///annotation_on_enum_values.dart:16:4 -> IntConstant(42)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:17:3 -> InstanceConstant(const Foo{Foo.index: 0, Foo._name: "Foo.bar"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:17:3 -> InstanceConstant(const Foo{_Enum.index: 0, _Enum._name: "bar"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:18:4 -> InstanceConstant(const Fisk<int*>{Fisk.x: 42})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:19:3 -> InstanceConstant(const Foo{Foo.index: 1, Foo._name: "Foo.baz"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:20:3 -> InstanceConstant(const Foo{Foo.index: 2, Foo._name: "Foo.cafebabe"})
Extra constant evaluation: evaluated: 11, effectively constant: 6
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:19:3 -> InstanceConstant(const Foo{_Enum.index: 1, _Enum._name: "baz"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_on_enum_values.dart:20:3 -> InstanceConstant(const Foo{_Enum.index: 2, _Enum._name: "cafebabe"})
Extra constant evaluation: evaluated: 12, effectively constant: 6

View file

@ -18,20 +18,20 @@ class Fisk<T extends core::Object* = dynamic> extends core::Object /*hasConstCon
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Foo extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Foo extends core::_Enum /*isEnum*/ {
static const field core::List<self::Foo*>* values = #C10;
@#C11
static const field self::Foo* bar = #C3;
@#C12
static const field self::Foo* baz = #C6;
static const field self::Foo* cafebabe = #C9;
const constructor •(core::int* index, core::String* _name) → self::Foo*
: self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Foo*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Foo::_name}{core::String*};
return "Foo.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -47,13 +47,13 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Foo.bar"
#C2 = "bar"
#C3 = self::Foo {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Foo.baz"
#C5 = "baz"
#C6 = self::Foo {index:#C4, _name:#C5}
#C7 = 2
#C8 = "Foo.cafebabe"
#C8 = "cafebabe"
#C9 = self::Foo {index:#C7, _name:#C8}
#C10 = <self::Foo*>[#C3, #C6, #C9]
#C11 = 42
@ -64,5 +64,6 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///annotation_on_enum_values.dart:
- Foo. (from org-dartlang-testcase:///annotation_on_enum_values.dart:15:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
- Fisk.fisk (from org-dartlang-testcase:///annotation_on_enum_values.dart:12:9)

View file

@ -98,20 +98,6 @@ library;
// enum Enum {
// ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:93:3: Error: '_name' is already declared in this scope.
// _name,
// ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of '_name' is implied by this definition.
// enum AnotherEnum {
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: 'index' is already declared in this scope.
// index,
// ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'index' is implied by this definition.
// enum AnotherEnum {
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:95:3: Error: 'toString' is already declared in this scope.
// toString,
// ^^^^^^^^
@ -306,6 +292,13 @@ library;
// class Sub extends C {
// ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: Can't declare a member that conflicts with an inherited one.
// index,
// ^^^^^
// sdk/lib/core/enum.dart:74:13: Context: This is the inherited member.
// final int index;
// ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:34:3: Error: Can't use 'main' because it is declared more than once.
// main();
// ^
@ -345,14 +338,6 @@ library;
// m() => super.m();
// ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:104:38: Error: Can't use '_name' because it is declared more than once.
// "AnotherEnum._name": AnotherEnum._name,
// ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:105:38: Error: Can't use 'index' because it is declared more than once.
// "AnotherEnum.index": AnotherEnum.index,
// ^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:106:41: Error: Can't use 'toString' because it is declared more than once.
// "AnotherEnum.toString": AnotherEnum.toString,
// ^^^^^^^^
@ -495,16 +480,16 @@ Try removing the extra positional arguments.
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#4 extends core::Object implements core::Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
final field core::int* index;
final field core::String* _name;
class Enum#4 extends core::_Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
static const field core::List<self::Enum#4*>* values = #C4;
static const field self::Enum#4* a = #C3;
const constructor •(core::int* index, core::String* _name) → self::Enum#4*
: self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Enum#4*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#4::_name}{core::String*};
return "Enum#4.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -515,18 +500,18 @@ class Enum#4 extends core::Object implements core::Enum /*isEnum*/ { // from or
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#3 extends core::Object implements core::Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
final field core::int* index;
final field core::String* _name;
class Enum#3 extends core::_Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
static const field core::List<self::Enum#3*>* values = #C12;
static const field self::Enum#3* a = #C5;
static const field self::Enum#3* b = #C8;
static const field self::Enum#3* c = #C11;
const constructor •(core::int* index, core::String* _name) → self::Enum#3*
: self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Enum#3*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#3::_name}{core::String*};
return "Enum#3.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -537,18 +522,18 @@ class Enum#3 extends core::Object implements core::Enum /*isEnum*/ { // from or
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#2 extends core::Object implements core::Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
final field core::int* index;
final field core::String* _name;
class Enum#2 extends core::_Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
static const field core::List<self::Enum#2*>* values = #C17;
static const field self::Enum#2* Enum = #C14;
static const field self::Enum#2* a = #C15;
static const field self::Enum#2* b = #C16;
const constructor •(core::int* index, core::String* _name) → self::Enum#2*
: self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Enum#2*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#2::_name}{core::String*};
return "Enum#2.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -559,18 +544,18 @@ class Enum#2 extends core::Object implements core::Enum /*isEnum*/ { // from or
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#1 extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Enum#1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum#1*>* values = #C21;
static const field self::Enum#1* a = #C18;
static const field self::Enum#1* b = #C19;
static const field self::Enum#1* c = #C20;
const constructor •(core::int* index, core::String* _name) → self::Enum#1*
: self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Enum#1*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#1::_name}{core::String*};
return "Enum#1.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -581,18 +566,18 @@ class Enum#1 extends core::Object implements core::Enum /*isEnum*/ {
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum*>* values = #C25;
static const field self::Enum* Enum = #C22;
static const field self::Enum* a = #C23;
static const field self::Enum* b = #C24;
const constructor •(core::int* index, core::String* _name) → self::Enum*
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Enum*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum::_name}{core::String*};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -603,18 +588,19 @@ class Enum extends core::Object implements core::Enum /*isEnum*/ {
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class AnotherEnum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
static const field core::List<self::AnotherEnum*>* values = #C32;
static const field self::AnotherEnum* a = #C27;
static const field self::AnotherEnum* b = #C29;
static const field self::AnotherEnum* c = #C31;
const constructor •(core::int* index, core::String* _name) → self::AnotherEnum*
: self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
class AnotherEnum extends core::_Enum /*isEnum*/ {
static const field core::List<self::AnotherEnum*>* values = #C35;
static const field self::AnotherEnum* a = #C26;
static const field self::AnotherEnum* b = #C27;
static const field self::AnotherEnum* c = #C28;
static const field self::AnotherEnum* _name = #C31;
static const field self::AnotherEnum* index = #C34;
const constructor •(core::int* index, core::String* name) → self::AnotherEnum*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::AnotherEnum::_name}{core::String*};
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -648,11 +634,7 @@ Try inserting an identifier before '('.
^";
}
static method useAnotherEnum() → dynamic {
<core::String*, core::Object*>{"AnotherEnum.a": #C27, "AnotherEnum.b": #C29, "AnotherEnum.c": #C31, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:104:38: Error: Can't use '_name' because it is declared more than once.
\"AnotherEnum._name\": AnotherEnum._name,
^^^^^", "AnotherEnum.index": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:105:38: Error: Can't use 'index' because it is declared more than once.
\"AnotherEnum.index\": AnotherEnum.index,
^^^^^", "AnotherEnum.toString": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:106:41: Error: Can't use 'toString' because it is declared more than once.
<core::String*, core::Object*>{"AnotherEnum.a": #C26, "AnotherEnum.b": #C27, "AnotherEnum.c": #C28, "AnotherEnum._name": #C31, "AnotherEnum.index": #C34, "AnotherEnum.toString": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:106:41: Error: Can't use 'toString' because it is declared more than once.
\"AnotherEnum.toString\": AnotherEnum.toString,
^^^^^^^^", "AnotherEnum.values": invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:107:39: Error: Can't use 'values' because it is declared more than once.
\"AnotherEnum.values\": AnotherEnum.values,
@ -665,18 +647,18 @@ import self as self2;
constants {
#C1 = 0
#C2 = "Enum.a"
#C2 = "a"
#C3 = self::Enum#4 {index:#C1, _name:#C2}
#C4 = <self::Enum#4*>[#C3]
#C5 = self::Enum#3 {index:#C1, _name:#C2}
#C6 = 1
#C7 = "Enum.b"
#C7 = "b"
#C8 = self::Enum#3 {index:#C6, _name:#C7}
#C9 = 2
#C10 = "Enum.c"
#C10 = "c"
#C11 = self::Enum#3 {index:#C9, _name:#C10}
#C12 = <self::Enum#3*>[#C5, #C8, #C11]
#C13 = "Enum.Enum"
#C13 = "Enum"
#C14 = self::Enum#2 {index:#C1, _name:#C13}
#C15 = self::Enum#2 {index:#C6, _name:#C2}
#C16 = self::Enum#2 {index:#C9, _name:#C7}
@ -689,19 +671,23 @@ constants {
#C23 = self::Enum {index:#C6, _name:#C2}
#C24 = self::Enum {index:#C9, _name:#C7}
#C25 = <self::Enum*>[#C22, #C23, #C24]
#C26 = "AnotherEnum.a"
#C27 = self::AnotherEnum {index:#C1, _name:#C26}
#C28 = "AnotherEnum.b"
#C29 = self::AnotherEnum {index:#C6, _name:#C28}
#C30 = "AnotherEnum.c"
#C31 = self::AnotherEnum {index:#C9, _name:#C30}
#C32 = <self::AnotherEnum*>[#C27, #C29, #C31]
#C26 = self::AnotherEnum {index:#C1, _name:#C2}
#C27 = self::AnotherEnum {index:#C6, _name:#C7}
#C28 = self::AnotherEnum {index:#C9, _name:#C10}
#C29 = 3
#C30 = "_name"
#C31 = self::AnotherEnum {index:#C29, _name:#C30}
#C32 = 4
#C33 = "index"
#C34 = self::AnotherEnum {index:#C32, _name:#C33}
#C35 = <self::AnotherEnum*>[#C26, #C27, #C28, #C31, #C34]
}
Constructor coverage from constants:
org-dartlang-testcase:///duplicated_declarations.dart:
- Enum#1. (from org-dartlang-testcase:///duplicated_declarations.dart:83:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
- Enum. (from org-dartlang-testcase:///duplicated_declarations.dart:76:6)
- AnotherEnum. (from org-dartlang-testcase:///duplicated_declarations.dart:89:6)

View file

@ -98,20 +98,6 @@ library;
// enum Enum {
// ^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:93:3: Error: '_name' is already declared in this scope.
// _name,
// ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of '_name' is implied by this definition.
// enum AnotherEnum {
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: 'index' is already declared in this scope.
// index,
// ^^^^^
// pkg/front_end/testcases/general/duplicated_declarations.dart:89:6: Context: Previous declaration of 'index' is implied by this definition.
// enum AnotherEnum {
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:95:3: Error: 'toString' is already declared in this scope.
// toString,
// ^^^^^^^^
@ -306,6 +292,13 @@ library;
// class Sub extends C {
// ^
//
// pkg/front_end/testcases/general/duplicated_declarations.dart:94:3: Error: Can't declare a member that conflicts with an inherited one.
// index,
// ^^^^^
// sdk/lib/core/enum.dart:74:13: Context: This is the inherited member.
// final int index;
// ^^^^^
//
import self as self;
import "dart:core" as core;
@ -419,16 +412,16 @@ class Sub extends core::Object {
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#4 extends core::Object implements core::Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
final field core::int* index;
final field core::String* _name;
class Enum#4 extends core::_Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
static const field core::List<self::Enum#4*>* values = const <self::Enum#4*>[self::Enum#4::a];
static const field self::Enum#4* a = const self::Enum#4::•(0, "Enum.a");
const constructor •(core::int* index, core::String* _name) → self::Enum#4*
: self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
static const field self::Enum#4* a = const self::Enum#4::•(0, "a");
const constructor •(core::int* index, core::String* name) → self::Enum#4*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#4::_name}{core::String*};
return "Enum#4.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -439,18 +432,18 @@ class Enum#4 extends core::Object implements core::Enum /*isEnum*/ { // from or
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#3 extends core::Object implements core::Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
final field core::int* index;
final field core::String* _name;
class Enum#3 extends core::_Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
static const field core::List<self::Enum#3*>* values = const <self::Enum#3*>[self::Enum#3::a, self::Enum#3::b, self::Enum#3::c];
static const field self::Enum#3* a = const self::Enum#3::•(0, "Enum.a");
static const field self::Enum#3* b = const self::Enum#3::•(1, "Enum.b");
static const field self::Enum#3* c = const self::Enum#3::•(2, "Enum.c");
const constructor •(core::int* index, core::String* _name) → self::Enum#3*
: self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
static const field self::Enum#3* a = const self::Enum#3::•(0, "a");
static const field self::Enum#3* b = const self::Enum#3::•(1, "b");
static const field self::Enum#3* c = const self::Enum#3::•(2, "c");
const constructor •(core::int* index, core::String* name) → self::Enum#3*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#3::_name}{core::String*};
return "Enum#3.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -461,18 +454,18 @@ class Enum#3 extends core::Object implements core::Enum /*isEnum*/ { // from or
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#2 extends core::Object implements core::Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
final field core::int* index;
final field core::String* _name;
class Enum#2 extends core::_Enum /*isEnum*/ { // from org-dartlang-testcase:///duplicated_declarations_part.dart
static const field core::List<self::Enum#2*>* values = const <self::Enum#2*>[self::Enum#2::Enum, self::Enum#2::a, self::Enum#2::b];
static const field self::Enum#2* Enum = const self::Enum#2::•(0, "Enum.Enum");
static const field self::Enum#2* a = const self::Enum#2::•(1, "Enum.a");
static const field self::Enum#2* b = const self::Enum#2::•(2, "Enum.b");
const constructor •(core::int* index, core::String* _name) → self::Enum#2*
: self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
static const field self::Enum#2* Enum = const self::Enum#2::•(0, "Enum");
static const field self::Enum#2* a = const self::Enum#2::•(1, "a");
static const field self::Enum#2* b = const self::Enum#2::•(2, "b");
const constructor •(core::int* index, core::String* name) → self::Enum#2*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#2::_name}{core::String*};
return "Enum#2.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -483,18 +476,18 @@ class Enum#2 extends core::Object implements core::Enum /*isEnum*/ { // from or
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum#1 extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Enum#1 extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum#1*>* values = const <self::Enum#1*>[self::Enum#1::a, self::Enum#1::b, self::Enum#1::c];
static const field self::Enum#1* a = const self::Enum#1::•(0, "Enum.a");
static const field self::Enum#1* b = const self::Enum#1::•(1, "Enum.b");
static const field self::Enum#1* c = const self::Enum#1::•(2, "Enum.c");
const constructor •(core::int* index, core::String* _name) → self::Enum#1*
: self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
static const field self::Enum#1* a = const self::Enum#1::•(0, "a");
static const field self::Enum#1* b = const self::Enum#1::•(1, "b");
static const field self::Enum#1* c = const self::Enum#1::•(2, "c");
const constructor •(core::int* index, core::String* name) → self::Enum#1*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum#1::_name}{core::String*};
return "Enum#1.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -505,18 +498,18 @@ class Enum#1 extends core::Object implements core::Enum /*isEnum*/ {
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum*>* values = const <self::Enum*>[self::Enum::Enum, self::Enum::a, self::Enum::b];
static const field self::Enum* Enum = const self::Enum::•(0, "Enum.Enum");
static const field self::Enum* a = const self::Enum::•(1, "Enum.a");
static const field self::Enum* b = const self::Enum::•(2, "Enum.b");
const constructor •(core::int* index, core::String* _name) → self::Enum*
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
static const field self::Enum* Enum = const self::Enum::•(0, "Enum");
static const field self::Enum* a = const self::Enum::•(1, "a");
static const field self::Enum* b = const self::Enum::•(2, "b");
const constructor •(core::int* index, core::String* name) → self::Enum*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Enum::_name}{core::String*};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -527,18 +520,19 @@ class Enum extends core::Object implements core::Enum /*isEnum*/ {
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class AnotherEnum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
static const field core::List<self::AnotherEnum*>* values = const <self::AnotherEnum*>[self::AnotherEnum::a, self::AnotherEnum::b, self::AnotherEnum::c];
static const field self::AnotherEnum* a = const self::AnotherEnum::•(0, "AnotherEnum.a");
static const field self::AnotherEnum* b = const self::AnotherEnum::•(1, "AnotherEnum.b");
static const field self::AnotherEnum* c = const self::AnotherEnum::•(2, "AnotherEnum.c");
const constructor •(core::int* index, core::String* _name) → self::AnotherEnum*
: self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
class AnotherEnum extends core::_Enum /*isEnum*/ {
static const field core::List<self::AnotherEnum*>* values = const <self::AnotherEnum*>[self::AnotherEnum::a, self::AnotherEnum::b, self::AnotherEnum::c, self::AnotherEnum::_name, self::AnotherEnum::index];
static const field self::AnotherEnum* a = const self::AnotherEnum::•(0, "a");
static const field self::AnotherEnum* b = const self::AnotherEnum::•(1, "b");
static const field self::AnotherEnum* c = const self::AnotherEnum::•(2, "c");
static const field self::AnotherEnum* _name = const self::AnotherEnum::•(3, "_name");
static const field self::AnotherEnum* index = const self::AnotherEnum::•(4, "index");
const constructor •(core::int* index, core::String* name) → self::AnotherEnum*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::AnotherEnum::_name}{core::String*};
return "AnotherEnum.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -563,26 +557,28 @@ import self as self2;
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:86:6 -> ListConstant(const <Enum#4*>[const Enum#4{Enum#4.index: 0, Enum#4._name: "Enum.a"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:87:3 -> InstanceConstant(const Enum#4{Enum#4.index: 0, Enum#4._name: "Enum.a"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:80:6 -> ListConstant(const <Enum#3*>[const Enum#3{Enum#3.index: 0, Enum#3._name: "Enum.a"}, const Enum#3{Enum#3.index: 1, Enum#3._name: "Enum.b"}, const Enum#3{Enum#3.index: 2, Enum#3._name: "Enum.c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:81:3 -> InstanceConstant(const Enum#3{Enum#3.index: 0, Enum#3._name: "Enum.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:82:3 -> InstanceConstant(const Enum#3{Enum#3.index: 1, Enum#3._name: "Enum.b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:83:3 -> InstanceConstant(const Enum#3{Enum#3.index: 2, Enum#3._name: "Enum.c"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:73:6 -> ListConstant(const <Enum#2*>[const Enum#2{Enum#2.index: 0, Enum#2._name: "Enum.Enum"}, const Enum#2{Enum#2.index: 1, Enum#2._name: "Enum.a"}, const Enum#2{Enum#2.index: 2, Enum#2._name: "Enum.b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:74:3 -> InstanceConstant(const Enum#2{Enum#2.index: 0, Enum#2._name: "Enum.Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:75:3 -> InstanceConstant(const Enum#2{Enum#2.index: 1, Enum#2._name: "Enum.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:77:3 -> InstanceConstant(const Enum#2{Enum#2.index: 2, Enum#2._name: "Enum.b"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:83:6 -> ListConstant(const <Enum#1*>[const Enum#1{Enum#1.index: 0, Enum#1._name: "Enum.a"}, const Enum#1{Enum#1.index: 1, Enum#1._name: "Enum.b"}, const Enum#1{Enum#1.index: 2, Enum#1._name: "Enum.c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:84:3 -> InstanceConstant(const Enum#1{Enum#1.index: 0, Enum#1._name: "Enum.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:85:3 -> InstanceConstant(const Enum#1{Enum#1.index: 1, Enum#1._name: "Enum.b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:86:3 -> InstanceConstant(const Enum#1{Enum#1.index: 2, Enum#1._name: "Enum.c"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:76:6 -> ListConstant(const <Enum*>[const Enum{Enum.index: 0, Enum._name: "Enum.Enum"}, const Enum{Enum.index: 1, Enum._name: "Enum.a"}, const Enum{Enum.index: 2, Enum._name: "Enum.b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:77:3 -> InstanceConstant(const Enum{Enum.index: 0, Enum._name: "Enum.Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:78:3 -> InstanceConstant(const Enum{Enum.index: 1, Enum._name: "Enum.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:80:3 -> InstanceConstant(const Enum{Enum.index: 2, Enum._name: "Enum.b"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:89:6 -> ListConstant(const <AnotherEnum*>[const AnotherEnum{AnotherEnum.index: 0, AnotherEnum._name: "AnotherEnum.a"}, const AnotherEnum{AnotherEnum.index: 1, AnotherEnum._name: "AnotherEnum.b"}, const AnotherEnum{AnotherEnum.index: 2, AnotherEnum._name: "AnotherEnum.c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:90:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 0, AnotherEnum._name: "AnotherEnum.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:91:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 1, AnotherEnum._name: "AnotherEnum.b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:92:3 -> InstanceConstant(const AnotherEnum{AnotherEnum.index: 2, AnotherEnum._name: "AnotherEnum.c"})
Extra constant evaluation: evaluated: 46, effectively constant: 22
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:86:6 -> ListConstant(const <Enum#4*>[const Enum#4{_Enum.index: 0, _Enum._name: "a"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:87:3 -> InstanceConstant(const Enum#4{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:80:6 -> ListConstant(const <Enum#3*>[const Enum#3{_Enum.index: 0, _Enum._name: "a"}, const Enum#3{_Enum.index: 1, _Enum._name: "b"}, const Enum#3{_Enum.index: 2, _Enum._name: "c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:81:3 -> InstanceConstant(const Enum#3{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:82:3 -> InstanceConstant(const Enum#3{_Enum.index: 1, _Enum._name: "b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:83:3 -> InstanceConstant(const Enum#3{_Enum.index: 2, _Enum._name: "c"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations_part.dart:73:6 -> ListConstant(const <Enum#2*>[const Enum#2{_Enum.index: 0, _Enum._name: "Enum"}, const Enum#2{_Enum.index: 1, _Enum._name: "a"}, const Enum#2{_Enum.index: 2, _Enum._name: "b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:74:3 -> InstanceConstant(const Enum#2{_Enum.index: 0, _Enum._name: "Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:75:3 -> InstanceConstant(const Enum#2{_Enum.index: 1, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations_part.dart:77:3 -> InstanceConstant(const Enum#2{_Enum.index: 2, _Enum._name: "b"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:83:6 -> ListConstant(const <Enum#1*>[const Enum#1{_Enum.index: 0, _Enum._name: "a"}, const Enum#1{_Enum.index: 1, _Enum._name: "b"}, const Enum#1{_Enum.index: 2, _Enum._name: "c"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:84:3 -> InstanceConstant(const Enum#1{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:85:3 -> InstanceConstant(const Enum#1{_Enum.index: 1, _Enum._name: "b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:86:3 -> InstanceConstant(const Enum#1{_Enum.index: 2, _Enum._name: "c"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:76:6 -> ListConstant(const <Enum*>[const Enum{_Enum.index: 0, _Enum._name: "Enum"}, const Enum{_Enum.index: 1, _Enum._name: "a"}, const Enum{_Enum.index: 2, _Enum._name: "b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:77:3 -> InstanceConstant(const Enum{_Enum.index: 0, _Enum._name: "Enum"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:78:3 -> InstanceConstant(const Enum{_Enum.index: 1, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:80:3 -> InstanceConstant(const Enum{_Enum.index: 2, _Enum._name: "b"})
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_declarations.dart:89:6 -> ListConstant(const <AnotherEnum*>[const AnotherEnum{_Enum.index: 0, _Enum._name: "a"}, const AnotherEnum{_Enum.index: 1, _Enum._name: "b"}, const AnotherEnum{_Enum.index: 2, _Enum._name: "c"}, const AnotherEnum{_Enum.index: 3, _Enum._name: "_name"}, const AnotherEnum{_Enum.index: 4, _Enum._name: "index"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:90:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:91:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 1, _Enum._name: "b"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:92:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 2, _Enum._name: "c"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:93:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 3, _Enum._name: "_name"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///duplicated_declarations.dart:94:3 -> InstanceConstant(const AnotherEnum{_Enum.index: 4, _Enum._name: "index"})
Extra constant evaluation: evaluated: 54, effectively constant: 24

View file

@ -3,18 +3,18 @@ import self as self;
import "dart:core" as core;
@#C1
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = #C11;
static const field self::E* E1 = #C4;
static const field self::E* E2 = #C7;
static const field self::E* E3 = #C10;
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -31,13 +31,13 @@ static method main() → dynamic {}
constants {
#C1 = null
#C2 = 0
#C3 = "E.E1"
#C3 = "E1"
#C4 = self::E {index:#C2, _name:#C3}
#C5 = 1
#C6 = "E.E2"
#C6 = "E2"
#C7 = self::E {index:#C5, _name:#C6}
#C8 = 2
#C9 = "E.E3"
#C9 = "E3"
#C10 = self::E {index:#C8, _name:#C9}
#C11 = <self::E*>[#C4, #C7, #C10]
}
@ -46,4 +46,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///metadata_enum.dart:
- E. (from org-dartlang-testcase:///metadata_enum.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -3,18 +3,18 @@ import self as self;
import "dart:core" as core;
@self::a
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = const <self::E*>[self::E::E1, self::E::E2, self::E::E3];
static const field self::E* E1 = const self::E::•(0, "E.E1");
static const field self::E* E2 = const self::E::•(1, "E.E2");
static const field self::E* E3 = const self::E::•(2, "E.E3");
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
static const field self::E* E1 = const self::E::•(0, "E1");
static const field self::E* E2 = const self::E::•(1, "E2");
static const field self::E* E3 = const self::E::•(2, "E3");
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -32,8 +32,8 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: StaticGet @ org-dartlang-testcase:///metadata_enum.dart:7:2 -> NullConstant(null)
Evaluated: ListLiteral @ org-dartlang-testcase:///metadata_enum.dart:8:6 -> ListConstant(const <E*>[const E{E.index: 0, E._name: "E.E1"}, const E{E.index: 1, E._name: "E.E2"}, const E{E.index: 2, E._name: "E.E3"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///metadata_enum.dart:8:10 -> InstanceConstant(const E{E.index: 0, E._name: "E.E1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///metadata_enum.dart:8:14 -> InstanceConstant(const E{E.index: 1, E._name: "E.E2"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///metadata_enum.dart:8:18 -> InstanceConstant(const E{E.index: 2, E._name: "E.E3"})
Extra constant evaluation: evaluated: 9, effectively constant: 5
Evaluated: ListLiteral @ org-dartlang-testcase:///metadata_enum.dart:8:6 -> ListConstant(const <E*>[const E{_Enum.index: 0, _Enum._name: "E1"}, const E{_Enum.index: 1, _Enum._name: "E2"}, const E{_Enum.index: 2, _Enum._name: "E3"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///metadata_enum.dart:8:10 -> InstanceConstant(const E{_Enum.index: 0, _Enum._name: "E1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///metadata_enum.dart:8:14 -> InstanceConstant(const E{_Enum.index: 1, _Enum._name: "E2"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///metadata_enum.dart:8:18 -> InstanceConstant(const E{_Enum.index: 2, _Enum._name: "E3"})
Extra constant evaluation: evaluated: 10, effectively constant: 5

View file

@ -3,18 +3,18 @@ import self as self;
import "dart:core" as core;
@#C1
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = #C11;
static const field self::E* E1 = #C4;
static const field self::E* E2 = #C7;
static const field self::E* E3 = #C10;
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -31,13 +31,13 @@ static method main() → dynamic {}
constants {
#C1 = null
#C2 = 0
#C3 = "E.E1"
#C3 = "E1"
#C4 = self::E {index:#C2, _name:#C3}
#C5 = 1
#C6 = "E.E2"
#C6 = "E2"
#C7 = self::E {index:#C5, _name:#C6}
#C8 = 2
#C9 = "E.E3"
#C9 = "E3"
#C10 = self::E {index:#C8, _name:#C9}
#C11 = <self::E*>[#C4, #C7, #C10]
}
@ -46,4 +46,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///metadata_enum.dart:
- E. (from org-dartlang-testcase:///metadata_enum.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -30,19 +30,19 @@ library from "org-dartlang-test:///main.dart" as main {
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C14;
static const field main::CompilationStrategy* direct = #C4;
static const field main::CompilationStrategy* toKernel = #C7;
static const field main::CompilationStrategy* toData = #C10;
static const field main::CompilationStrategy* fromData = #C13;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -63,16 +63,16 @@ library from "org-dartlang-test:///main.dart" as main {
constants {
#C1 = dart.core::_Override {}
#C2 = 0
#C3 = "CompilationStrategy.direct"
#C3 = "direct"
#C4 = main::CompilationStrategy {index:#C2, _name:#C3}
#C5 = 1
#C6 = "CompilationStrategy.toKernel"
#C6 = "toKernel"
#C7 = main::CompilationStrategy {index:#C5, _name:#C6}
#C8 = 2
#C9 = "CompilationStrategy.toData"
#C9 = "toData"
#C10 = main::CompilationStrategy {index:#C8, _name:#C9}
#C11 = 3
#C12 = "CompilationStrategy.fromData"
#C12 = "fromData"
#C13 = main::CompilationStrategy {index:#C11, _name:#C12}
#C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
}

View file

@ -30,19 +30,19 @@ library from "org-dartlang-test:///main.dart" as main {
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C14;
static const field main::CompilationStrategy* direct = #C4;
static const field main::CompilationStrategy* toKernel = #C7;
static const field main::CompilationStrategy* toData = #C10;
static const field main::CompilationStrategy* fromData = #C13;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -63,16 +63,16 @@ library from "org-dartlang-test:///main.dart" as main {
constants {
#C1 = dart.core::_Override {}
#C2 = 0
#C3 = "CompilationStrategy.direct"
#C3 = "direct"
#C4 = main::CompilationStrategy {index:#C2, _name:#C3}
#C5 = 1
#C6 = "CompilationStrategy.toKernel"
#C6 = "toKernel"
#C7 = main::CompilationStrategy {index:#C5, _name:#C6}
#C8 = 2
#C9 = "CompilationStrategy.toData"
#C9 = "toData"
#C10 = main::CompilationStrategy {index:#C8, _name:#C9}
#C11 = 3
#C12 = "CompilationStrategy.fromData"
#C12 = "fromData"
#C13 = main::CompilationStrategy {index:#C11, _name:#C12}
#C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
}

View file

@ -37,19 +37,19 @@ library from "org-dartlang-test:///main.dart" as main {
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C14;
static const field main::CompilationStrategy* direct = #C4;
static const field main::CompilationStrategy* toKernel = #C7;
static const field main::CompilationStrategy* toData = #C10;
static const field main::CompilationStrategy* fromData = #C13;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -70,16 +70,16 @@ library from "org-dartlang-test:///main.dart" as main {
constants {
#C1 = dart.core::_Override {}
#C2 = 0
#C3 = "CompilationStrategy.direct"
#C3 = "direct"
#C4 = main::CompilationStrategy {index:#C2, _name:#C3}
#C5 = 1
#C6 = "CompilationStrategy.toKernel"
#C6 = "toKernel"
#C7 = main::CompilationStrategy {index:#C5, _name:#C6}
#C8 = 2
#C9 = "CompilationStrategy.toData"
#C9 = "toData"
#C10 = main::CompilationStrategy {index:#C8, _name:#C9}
#C11 = 3
#C12 = "CompilationStrategy.fromData"
#C12 = "fromData"
#C13 = main::CompilationStrategy {index:#C11, _name:#C12}
#C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
}

View file

@ -37,19 +37,19 @@ library from "org-dartlang-test:///main.dart" as main {
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C14;
static const field main::CompilationStrategy* direct = #C4;
static const field main::CompilationStrategy* toKernel = #C7;
static const field main::CompilationStrategy* toData = #C10;
static const field main::CompilationStrategy* fromData = #C13;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -70,16 +70,16 @@ library from "org-dartlang-test:///main.dart" as main {
constants {
#C1 = dart.core::_Override {}
#C2 = 0
#C3 = "CompilationStrategy.direct"
#C3 = "direct"
#C4 = main::CompilationStrategy {index:#C2, _name:#C3}
#C5 = 1
#C6 = "CompilationStrategy.toKernel"
#C6 = "toKernel"
#C7 = main::CompilationStrategy {index:#C5, _name:#C6}
#C8 = 2
#C9 = "CompilationStrategy.toData"
#C9 = "toData"
#C10 = main::CompilationStrategy {index:#C8, _name:#C9}
#C11 = 3
#C12 = "CompilationStrategy.fromData"
#C12 = "fromData"
#C13 = main::CompilationStrategy {index:#C11, _name:#C12}
#C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
}

View file

@ -30,19 +30,19 @@ library from "org-dartlang-test:///main.dart" as main {
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C14;
static const field main::CompilationStrategy* direct = #C4;
static const field main::CompilationStrategy* toKernel = #C7;
static const field main::CompilationStrategy* toData = #C10;
static const field main::CompilationStrategy* fromData = #C13;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -63,16 +63,16 @@ library from "org-dartlang-test:///main.dart" as main {
constants {
#C1 = dart.core::_Override {}
#C2 = 0
#C3 = "CompilationStrategy.direct"
#C3 = "direct"
#C4 = main::CompilationStrategy {index:#C2, _name:#C3}
#C5 = 1
#C6 = "CompilationStrategy.toKernel"
#C6 = "toKernel"
#C7 = main::CompilationStrategy {index:#C5, _name:#C6}
#C8 = 2
#C9 = "CompilationStrategy.toData"
#C9 = "toData"
#C10 = main::CompilationStrategy {index:#C8, _name:#C9}
#C11 = 3
#C12 = "CompilationStrategy.fromData"
#C12 = "fromData"
#C13 = main::CompilationStrategy {index:#C11, _name:#C12}
#C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
}

View file

@ -42,9 +42,7 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
@#C1
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C15;
@#C1
static const field main::CompilationStrategy* direct = #C5;
@ -54,11 +52,13 @@ library from "org-dartlang-test:///main.dart" as main {
static const field main::CompilationStrategy* toData = #C11;
@#C1
static const field main::CompilationStrategy* fromData = #C14;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -82,16 +82,16 @@ constants {
#C1 = "hello"
#C2 = dart.core::_Override {}
#C3 = 0
#C4 = "CompilationStrategy.direct"
#C4 = "direct"
#C5 = main::CompilationStrategy {index:#C3, _name:#C4}
#C6 = 1
#C7 = "CompilationStrategy.toKernel"
#C7 = "toKernel"
#C8 = main::CompilationStrategy {index:#C6, _name:#C7}
#C9 = 2
#C10 = "CompilationStrategy.toData"
#C10 = "toData"
#C11 = main::CompilationStrategy {index:#C9, _name:#C10}
#C12 = 3
#C13 = "CompilationStrategy.fromData"
#C13 = "fromData"
#C14 = main::CompilationStrategy {index:#C12, _name:#C13}
#C15 = <main::CompilationStrategy*>[#C5, #C8, #C11, #C14]
}

View file

@ -42,9 +42,7 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
@#C1
class CompilationStrategy extends dart.core::Object implements dart.core::Enum /*isEnum*/ {
final field dart.core::int* index;
final field dart.core::String* _name;
class CompilationStrategy extends dart.core::_Enum /*isEnum*/ {
static const field dart.core::List<main::CompilationStrategy*>* values = #C15;
@#C1
static const field main::CompilationStrategy* direct = #C5;
@ -54,11 +52,13 @@ library from "org-dartlang-test:///main.dart" as main {
static const field main::CompilationStrategy* toData = #C11;
@#C1
static const field main::CompilationStrategy* fromData = #C14;
const constructor •(dart.core::int* index, dart.core::String* _name) → main::CompilationStrategy*
: main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
const constructor •(dart.core::int* index, dart.core::String* name) → main::CompilationStrategy*
: super dart.core::_Enum::•(index, name)
;
method toString() → dart.core::String*
return this.{main::CompilationStrategy::_name}{dart.core::String*};
return "CompilationStrategy.${this.{dart.core::_Enum::_name}{dart.core::String}}";
abstract member-signature get index() → dart.core::int*; -> dart.core::_Enum::index
abstract member-signature get _name() → dart.core::String*; -> dart.core::_Enum::_name
abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
@ -82,16 +82,16 @@ constants {
#C1 = "hello"
#C2 = dart.core::_Override {}
#C3 = 0
#C4 = "CompilationStrategy.direct"
#C4 = "direct"
#C5 = main::CompilationStrategy {index:#C3, _name:#C4}
#C6 = 1
#C7 = "CompilationStrategy.toKernel"
#C7 = "toKernel"
#C8 = main::CompilationStrategy {index:#C6, _name:#C7}
#C9 = 2
#C10 = "CompilationStrategy.toData"
#C10 = "toData"
#C11 = main::CompilationStrategy {index:#C9, _name:#C10}
#C12 = 3
#C13 = "CompilationStrategy.fromData"
#C13 = "fromData"
#C14 = main::CompilationStrategy {index:#C12, _name:#C13}
#C15 = <main::CompilationStrategy*>[#C5, #C8, #C11, #C14]
}

View file

@ -2,16 +2,16 @@ library test;
import self as self;
import "dart:core" as core;
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = #C4;
static const field self::E* v1 = #C3;
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -29,7 +29,7 @@ static method main() → dynamic {
constants {
#C1 = 0
#C2 = "E.v1"
#C2 = "v1"
#C3 = self::E {index:#C1, _name:#C2}
#C4 = <self::E*>[#C3]
}
@ -38,4 +38,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///inferred_type_is_enum.dart:
- E. (from org-dartlang-testcase:///inferred_type_is_enum.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,16 +2,16 @@ library test;
import self as self;
import "dart:core" as core;
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = const <self::E*>[self::E::v1];
static const field self::E* v1 = const self::E::•(0, "E.v1");
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
static const field self::E* v1 = const self::E::•(0, "v1");
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -28,6 +28,6 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///inferred_type_is_enum.dart:8:6 -> ListConstant(const <E*>[const E{E.index: 0, E._name: "E.v1"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///inferred_type_is_enum.dart:8:10 -> InstanceConstant(const E{E.index: 0, E._name: "E.v1"})
Extra constant evaluation: evaluated: 6, effectively constant: 2
Evaluated: ListLiteral @ org-dartlang-testcase:///inferred_type_is_enum.dart:8:6 -> ListConstant(const <E*>[const E{_Enum.index: 0, _Enum._name: "v1"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///inferred_type_is_enum.dart:8:10 -> InstanceConstant(const E{_Enum.index: 0, _Enum._name: "v1"})
Extra constant evaluation: evaluated: 7, effectively constant: 2

View file

@ -2,16 +2,16 @@ library test;
import self as self;
import "dart:core" as core;
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = #C4;
static const field self::E* v1 = #C3;
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -29,7 +29,7 @@ static method main() → dynamic {
constants {
#C1 = 0
#C2 = "E.v1"
#C2 = "v1"
#C3 = self::E {index:#C1, _name:#C2}
#C4 = <self::E*>[#C3]
}
@ -38,4 +38,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///inferred_type_is_enum.dart:
- E. (from org-dartlang-testcase:///inferred_type_is_enum.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,16 +2,16 @@ library test;
import self as self;
import "dart:core" as core;
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = #C4;
static const field self::E* v1 = #C3;
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -29,7 +29,7 @@ static method main() → dynamic {
constants {
#C1 = 0
#C2 = "E.v1"
#C2 = "v1"
#C3 = self::E {index:#C1, _name:#C2}
#C4 = <self::E*>[#C3]
}
@ -38,4 +38,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///inferred_type_is_enum_values.dart:
- E. (from org-dartlang-testcase:///inferred_type_is_enum_values.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,16 +2,16 @@ library test;
import self as self;
import "dart:core" as core;
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = const <self::E*>[self::E::v1];
static const field self::E* v1 = const self::E::•(0, "E.v1");
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
static const field self::E* v1 = const self::E::•(0, "v1");
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -28,6 +28,6 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///inferred_type_is_enum_values.dart:8:6 -> ListConstant(const <E*>[const E{E.index: 0, E._name: "E.v1"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///inferred_type_is_enum_values.dart:8:10 -> InstanceConstant(const E{E.index: 0, E._name: "E.v1"})
Extra constant evaluation: evaluated: 6, effectively constant: 2
Evaluated: ListLiteral @ org-dartlang-testcase:///inferred_type_is_enum_values.dart:8:6 -> ListConstant(const <E*>[const E{_Enum.index: 0, _Enum._name: "v1"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///inferred_type_is_enum_values.dart:8:10 -> InstanceConstant(const E{_Enum.index: 0, _Enum._name: "v1"})
Extra constant evaluation: evaluated: 7, effectively constant: 2

View file

@ -2,16 +2,16 @@ library test;
import self as self;
import "dart:core" as core;
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self::E*>* values = #C4;
static const field self::E* v1 = #C3;
const constructor •(core::int* index, core::String* _name) → self::E*
: self::E::index = index, self::E::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::E*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::E::_name}{core::String*};
return "E.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -29,7 +29,7 @@ static method main() → dynamic {
constants {
#C1 = 0
#C2 = "E.v1"
#C2 = "v1"
#C3 = self::E {index:#C1, _name:#C2}
#C4 = <self::E*>[#C3]
}
@ -38,4 +38,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///inferred_type_is_enum_values.dart:
- E. (from org-dartlang-testcase:///inferred_type_is_enum_values.dart:8:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -58,17 +58,15 @@ import "dart:async" as asy;
import "dart:async";
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum a = #C3;
static const field self::Enum b = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method returnImplicit() → core::String {
core::print("foo");
@ -223,10 +221,10 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Enum.a"
#C2 = "a"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.b"
#C5 = "b"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum>[#C3, #C6]
}
@ -235,4 +233,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///return_null.dart:
- Enum. (from org-dartlang-testcase:///return_null.dart:43:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -58,17 +58,15 @@ import "dart:async" as asy;
import "dart:async";
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum a = #C3;
static const field self::Enum b = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method returnImplicit() → core::String {
core::print("foo");
@ -621,10 +619,10 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Enum.a"
#C2 = "a"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.b"
#C5 = "b"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum>[#C3, #C6]
}
@ -633,4 +631,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///return_null.dart:
- Enum. (from org-dartlang-testcase:///return_null.dart:43:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -59,17 +59,15 @@ import "dart:_internal" as _in;
import "dart:async";
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum a = #C3;
static const field self::Enum b = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method returnImplicit() → core::String {
core::print("foo");
@ -230,10 +228,10 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Enum.a"
#C2 = "a"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.b"
#C5 = "b"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum*>[#C3, #C6]
}
@ -242,4 +240,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///return_null.dart:
- Enum. (from org-dartlang-testcase:///return_null.dart:43:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -5,17 +5,15 @@ import "dart:async" as asy;
import "dart:async";
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::a, self::Enum::b];
static const field self::Enum a = const self::Enum::•(0, "Enum.a");
static const field self::Enum b = const self::Enum::•(1, "Enum.b");
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
static const field self::Enum a = const self::Enum::•(0, "a");
static const field self::Enum b = const self::Enum::•(1, "b");
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method returnImplicit() → core::String
;
@ -52,7 +50,7 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///return_null.dart:43:6 -> ListConstant(const <Enum*>[const Enum{Enum.index: 0, Enum._name: "Enum.a"}, const Enum{Enum.index: 1, Enum._name: "Enum.b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///return_null.dart:43:13 -> InstanceConstant(const Enum{Enum.index: 0, Enum._name: "Enum.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///return_null.dart:43:16 -> InstanceConstant(const Enum{Enum.index: 1, Enum._name: "Enum.b"})
Extra constant evaluation: evaluated: 7, effectively constant: 3
Evaluated: ListLiteral @ org-dartlang-testcase:///return_null.dart:43:6 -> ListConstant(const <Enum*>[const Enum{_Enum.index: 0, _Enum._name: "a"}, const Enum{_Enum.index: 1, _Enum._name: "b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///return_null.dart:43:13 -> InstanceConstant(const Enum{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///return_null.dart:43:16 -> InstanceConstant(const Enum{_Enum.index: 1, _Enum._name: "b"})
Extra constant evaluation: evaluated: 8, effectively constant: 3

View file

@ -59,17 +59,15 @@ import "dart:_internal" as _in;
import "dart:async";
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum a = #C3;
static const field self::Enum b = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method returnImplicit() → core::String {
core::print("foo");
@ -628,10 +626,10 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Enum.a"
#C2 = "a"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.b"
#C5 = "b"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum*>[#C3, #C6]
}
@ -640,4 +638,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///return_null.dart:
- Enum. (from org-dartlang-testcase:///return_null.dart:43:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -9,17 +9,15 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum e1 = #C3;
static const field self::Enum e2 = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Enum? e) → core::int {
switch(e) {
@ -102,10 +100,10 @@ static method expect(dynamic expected, dynamic actual) → dynamic {
constants {
#C1 = 0
#C2 = "Enum.e1"
#C2 = "e1"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.e2"
#C5 = "e2"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum>[#C3, #C6]
#C8 = null
@ -115,4 +113,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///switch_nullable_enum.dart:
- Enum. (from org-dartlang-testcase:///switch_nullable_enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -9,17 +9,15 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum e1 = #C3;
static const field self::Enum e2 = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Enum? e) → core::int {
switch(e) {
@ -102,10 +100,10 @@ static method expect(dynamic expected, dynamic actual) → dynamic {
constants {
#C1 = 0
#C2 = "Enum.e1"
#C2 = "e1"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.e2"
#C5 = "e2"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum>[#C3, #C6]
#C8 = null
@ -115,4 +113,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///switch_nullable_enum.dart:
- Enum. (from org-dartlang-testcase:///switch_nullable_enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -10,17 +10,15 @@ import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum e1 = #C3;
static const field self::Enum e2 = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Enum? e) → core::int {
switch(e) {
@ -106,10 +104,10 @@ static method expect(dynamic expected, dynamic actual) → dynamic {
constants {
#C1 = 0
#C2 = "Enum.e1"
#C2 = "e1"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.e2"
#C5 = "e2"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum*>[#C3, #C6]
#C8 = null
@ -119,4 +117,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///switch_nullable_enum.dart:
- Enum. (from org-dartlang-testcase:///switch_nullable_enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,17 +2,15 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::e1, self::Enum::e2];
static const field self::Enum e1 = const self::Enum::•(0, "Enum.e1");
static const field self::Enum e2 = const self::Enum::•(1, "Enum.e2");
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
static const field self::Enum e1 = const self::Enum::•(0, "e1");
static const field self::Enum e2 = const self::Enum::•(1, "e2");
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Enum? e) → core::int
;
@ -31,7 +29,7 @@ static method expect(dynamic expected, dynamic actual) → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///switch_nullable_enum.dart:5:6 -> ListConstant(const <Enum*>[const Enum{Enum.index: 0, Enum._name: "Enum.e1"}, const Enum{Enum.index: 1, Enum._name: "Enum.e2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///switch_nullable_enum.dart:5:13 -> InstanceConstant(const Enum{Enum.index: 0, Enum._name: "Enum.e1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///switch_nullable_enum.dart:5:17 -> InstanceConstant(const Enum{Enum.index: 1, Enum._name: "Enum.e2"})
Extra constant evaluation: evaluated: 7, effectively constant: 3
Evaluated: ListLiteral @ org-dartlang-testcase:///switch_nullable_enum.dart:5:6 -> ListConstant(const <Enum*>[const Enum{_Enum.index: 0, _Enum._name: "e1"}, const Enum{_Enum.index: 1, _Enum._name: "e2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///switch_nullable_enum.dart:5:13 -> InstanceConstant(const Enum{_Enum.index: 0, _Enum._name: "e1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///switch_nullable_enum.dart:5:17 -> InstanceConstant(const Enum{_Enum.index: 1, _Enum._name: "e2"})
Extra constant evaluation: evaluated: 8, effectively constant: 3

View file

@ -10,17 +10,15 @@ import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class Enum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class Enum extends core::_Enum /*isEnum*/ {
static const field core::List<self::Enum> values = #C7;
static const field self::Enum e1 = #C3;
static const field self::Enum e2 = #C6;
const constructor •(core::int index, core::String _name) → self::Enum
: self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::Enum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::Enum::_name}{core::String};
return "Enum.${this.{core::_Enum::_name}{core::String}}";
}
static method method1(self::Enum? e) → core::int {
switch(e) {
@ -106,10 +104,10 @@ static method expect(dynamic expected, dynamic actual) → dynamic {
constants {
#C1 = 0
#C2 = "Enum.e1"
#C2 = "e1"
#C3 = self::Enum {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Enum.e2"
#C5 = "e2"
#C6 = self::Enum {index:#C4, _name:#C5}
#C7 = <self::Enum*>[#C3, #C6]
#C8 = null
@ -119,4 +117,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///switch_nullable_enum.dart:
- Enum. (from org-dartlang-testcase:///switch_nullable_enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -428,17 +428,15 @@ class OptInClass6b extends core::Object {
: uns::OptInClass6b::field = field, super core::Object::•()
;
}
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<uns::E> values = #C8;
static const field uns::E e1 = #C3;
static const field uns::E e2 = #C6;
const constructor •(core::int index, core::String _name) → uns::E
: uns::E::index = index, uns::E::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → uns::E
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{uns::E::_name}{core::String};
return "E.${this.{core::_Enum::_name}{core::String}}";
}
extension OptInExtension on uns::OptInClass1 {
operator [] = uns::OptInExtension|[];
@ -611,10 +609,10 @@ Try providing type arguments for the literal explicitly to disambiguate it.
constants {
#C1 = 0
#C2 = "E.e1"
#C2 = "e1"
#C3 = uns::E {index:#C1, _name:#C2}
#C4 = 1
#C5 = "E.e2"
#C5 = "e2"
#C6 = uns::E {index:#C4, _name:#C5}
#C7 = null
#C8 = <uns::E*>[#C3, #C6]
@ -624,4 +622,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///unsound_checks_lib.dart:
- E. (from org-dartlang-testcase:///unsound_checks_lib.dart:145:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -201,17 +201,15 @@ class OptInClass6b extends core::Object {
constructor •(core::int field) → self2::OptInClass6b
;
}
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<self2::E> values = const <self2::E>[self2::E::e1, self2::E::e2];
static const field self2::E e1 = const self2::E::•(0, "E.e1");
static const field self2::E e2 = const self2::E::•(1, "E.e2");
const constructor •(core::int index, core::String _name) → self2::E
: self2::E::index = index, self2::E::_name = _name, super core::Object::•()
static const field self2::E e1 = const self2::E::•(0, "e1");
static const field self2::E e2 = const self2::E::•(1, "e2");
const constructor •(core::int index, core::String name) → self2::E
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self2::E::_name}{core::String};
return "E.${this.{core::_Enum::_name}{core::String}}";
}
extension OptInExtension on self2::OptInClass1 {
operator [] = self2::OptInExtension|[];
@ -296,7 +294,7 @@ static method handleInvalid(dynamic d) → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///unsound_checks_lib.dart:145:6 -> ListConstant(const <E*>[const E{E.index: 0, E._name: "E.e1"}, const E{E.index: 1, E._name: "E.e2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///unsound_checks_lib.dart:145:10 -> InstanceConstant(const E{E.index: 0, E._name: "E.e1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///unsound_checks_lib.dart:145:14 -> InstanceConstant(const E{E.index: 1, E._name: "E.e2"})
Extra constant evaluation: evaluated: 7, effectively constant: 3
Evaluated: ListLiteral @ org-dartlang-testcase:///unsound_checks_lib.dart:145:6 -> ListConstant(const <E*>[const E{_Enum.index: 0, _Enum._name: "e1"}, const E{_Enum.index: 1, _Enum._name: "e2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///unsound_checks_lib.dart:145:10 -> InstanceConstant(const E{_Enum.index: 0, _Enum._name: "e1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///unsound_checks_lib.dart:145:14 -> InstanceConstant(const E{_Enum.index: 1, _Enum._name: "e2"})
Extra constant evaluation: evaluated: 8, effectively constant: 3

View file

@ -428,17 +428,15 @@ class OptInClass6b extends core::Object {
: uns::OptInClass6b::field = field, super core::Object::•()
;
}
class E extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class E extends core::_Enum /*isEnum*/ {
static const field core::List<uns::E> values = #C8;
static const field uns::E e1 = #C3;
static const field uns::E e2 = #C6;
const constructor •(core::int index, core::String _name) → uns::E
: uns::E::index = index, uns::E::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → uns::E
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{uns::E::_name}{core::String};
return "E.${this.{core::_Enum::_name}{core::String}}";
}
extension OptInExtension on uns::OptInClass1 {
operator [] = uns::OptInExtension|[];
@ -611,10 +609,10 @@ Try providing type arguments for the literal explicitly to disambiguate it.
constants {
#C1 = 0
#C2 = "E.e1"
#C2 = "e1"
#C3 = uns::E {index:#C1, _name:#C2}
#C4 = 1
#C5 = "E.e2"
#C5 = "e2"
#C6 = uns::E {index:#C4, _name:#C5}
#C7 = null
#C8 = <uns::E*>[#C3, #C6]
@ -639,10 +637,11 @@ Evaluated: VariableGet @ org-dartlang-testcase:///unsound_checks_lib.dart:39:56
Evaluated: VariableGet @ org-dartlang-testcase:///unsound_checks_lib.dart:39:56 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///unsound_checks_lib.dart:134:5 -> IntConstant(0)
Evaluated: VariableGet @ org-dartlang-testcase:///unsound_checks_lib.dart:134:5 -> IntConstant(0)
Extra constant evaluation: evaluated: 719, effectively constant: 18
Extra constant evaluation: evaluated: 720, effectively constant: 18
Constructor coverage from constants:
org-dartlang-testcase:///unsound_checks_lib.dart:
- E. (from org-dartlang-testcase:///unsound_checks_lib.dart:145:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,17 +2,17 @@ library;
import self as self;
import "dart:core" as core;
class Foo extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Foo extends core::_Enum /*isEnum*/ {
static const field core::List<self::Foo*>* values = #C7;
static const field self::Foo* ec1 = #C3;
static const field self::Foo* ec2 = #C6;
const constructor •(core::int* index, core::String* _name) → self::Foo*
: self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Foo*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Foo::_name}{core::String*};
return "Foo.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -27,10 +27,10 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Foo.ec1"
#C2 = "ec1"
#C3 = self::Foo {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Foo.ec2"
#C5 = "ec2"
#C6 = self::Foo {index:#C4, _name:#C5}
#C7 = <self::Foo*>[#C3, #C6]
}
@ -39,4 +39,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///enum.dart:
- Foo. (from org-dartlang-testcase:///enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,17 +2,17 @@ library;
import self as self;
import "dart:core" as core;
class Foo extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Foo extends core::_Enum /*isEnum*/ {
static const field core::List<self::Foo*>* values = const <self::Foo*>[self::Foo::ec1, self::Foo::ec2];
static const field self::Foo* ec1 = const self::Foo::•(0, "Foo.ec1");
static const field self::Foo* ec2 = const self::Foo::•(1, "Foo.ec2");
const constructor •(core::int* index, core::String* _name) → self::Foo*
: self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
static const field self::Foo* ec1 = const self::Foo::•(0, "ec1");
static const field self::Foo* ec2 = const self::Foo::•(1, "ec2");
const constructor •(core::int* index, core::String* name) → self::Foo*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Foo::_name}{core::String*};
return "Foo.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -28,7 +28,7 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///enum.dart:5:6 -> ListConstant(const <Foo*>[const Foo{Foo.index: 0, Foo._name: "Foo.ec1"}, const Foo{Foo.index: 1, Foo._name: "Foo.ec2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:6:3 -> InstanceConstant(const Foo{Foo.index: 0, Foo._name: "Foo.ec1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:7:3 -> InstanceConstant(const Foo{Foo.index: 1, Foo._name: "Foo.ec2"})
Extra constant evaluation: evaluated: 7, effectively constant: 3
Evaluated: ListLiteral @ org-dartlang-testcase:///enum.dart:5:6 -> ListConstant(const <Foo*>[const Foo{_Enum.index: 0, _Enum._name: "ec1"}, const Foo{_Enum.index: 1, _Enum._name: "ec2"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:6:3 -> InstanceConstant(const Foo{_Enum.index: 0, _Enum._name: "ec1"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:7:3 -> InstanceConstant(const Foo{_Enum.index: 1, _Enum._name: "ec2"})
Extra constant evaluation: evaluated: 8, effectively constant: 3

View file

@ -2,17 +2,17 @@ library;
import self as self;
import "dart:core" as core;
class Foo extends core::Object implements core::Enum /*isEnum*/ {
final field core::int* index;
final field core::String* _name;
class Foo extends core::_Enum /*isEnum*/ {
static const field core::List<self::Foo*>* values = #C7;
static const field self::Foo* ec1 = #C3;
static const field self::Foo* ec2 = #C6;
const constructor •(core::int* index, core::String* _name) → self::Foo*
: self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
const constructor •(core::int* index, core::String* name) → self::Foo*
: super core::_Enum::•(index, name)
;
method toString() → core::String*
return this.{self::Foo::_name}{core::String*};
return "Foo.${this.{core::_Enum::_name}{core::String}}";
abstract member-signature get index() → core::int*; -> core::_Enum::index
abstract member-signature get _name() → core::String*; -> core::_Enum::_name
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@ -27,10 +27,10 @@ static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "Foo.ec1"
#C2 = "ec1"
#C3 = self::Foo {index:#C1, _name:#C2}
#C4 = 1
#C5 = "Foo.ec2"
#C5 = "ec2"
#C6 = self::Foo {index:#C4, _name:#C5}
#C7 = <self::Foo*>[#C3, #C6]
}
@ -39,4 +39,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///enum.dart:
- Foo. (from org-dartlang-testcase:///enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,26 +2,24 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class A extends core::_Enum /*isEnum*/ {
static const field core::List<self::A> values = #C7;
static const field self::A a = #C3;
static const field self::A b = #C6;
const constructor •(core::int index, core::String _name) → self::A
: self::A::index = index, self::A::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::A
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::A::_name}{core::String};
return "A.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "A.a"
#C2 = "a"
#C3 = self::A {index:#C1, _name:#C2}
#C4 = 1
#C5 = "A.b"
#C5 = "b"
#C6 = self::A {index:#C4, _name:#C5}
#C7 = <self::A>[#C3, #C6]
}
@ -30,4 +28,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///enum.dart:
- A. (from org-dartlang-testcase:///enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,26 +2,24 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class A extends core::_Enum /*isEnum*/ {
static const field core::List<self::A> values = #C7;
static const field self::A a = #C3;
static const field self::A b = #C6;
const constructor •(core::int index, core::String _name) → self::A
: self::A::index = index, self::A::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::A
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::A::_name}{core::String};
return "A.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "A.a"
#C2 = "a"
#C3 = self::A {index:#C1, _name:#C2}
#C4 = 1
#C5 = "A.b"
#C5 = "b"
#C6 = self::A {index:#C4, _name:#C5}
#C7 = <self::A>[#C3, #C6]
}
@ -30,4 +28,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///enum.dart:
- A. (from org-dartlang-testcase:///enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,26 +2,24 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class A extends core::_Enum /*isEnum*/ {
static const field core::List<self::A> values = #C7;
static const field self::A a = #C3;
static const field self::A b = #C6;
const constructor •(core::int index, core::String _name) → self::A
: self::A::index = index, self::A::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::A
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::A::_name}{core::String};
return "A.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "A.a"
#C2 = "a"
#C3 = self::A {index:#C1, _name:#C2}
#C4 = 1
#C5 = "A.b"
#C5 = "b"
#C6 = self::A {index:#C4, _name:#C5}
#C7 = <self::A*>[#C3, #C6]
}
@ -30,4 +28,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///enum.dart:
- A. (from org-dartlang-testcase:///enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -2,24 +2,22 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class A extends core::_Enum /*isEnum*/ {
static const field core::List<self::A> values = const <self::A>[self::A::a, self::A::b];
static const field self::A a = const self::A::•(0, "A.a");
static const field self::A b = const self::A::•(1, "A.b");
const constructor •(core::int index, core::String _name) → self::A
: self::A::index = index, self::A::_name = _name, super core::Object::•()
static const field self::A a = const self::A::•(0, "a");
static const field self::A b = const self::A::•(1, "b");
const constructor •(core::int index, core::String name) → self::A
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::A::_name}{core::String};
return "A.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic
;
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///enum.dart:5:6 -> ListConstant(const <A*>[const A{A.index: 0, A._name: "A.a"}, const A{A.index: 1, A._name: "A.b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:6:3 -> InstanceConstant(const A{A.index: 0, A._name: "A.a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:7:3 -> InstanceConstant(const A{A.index: 1, A._name: "A.b"})
Extra constant evaluation: evaluated: 7, effectively constant: 3
Evaluated: ListLiteral @ org-dartlang-testcase:///enum.dart:5:6 -> ListConstant(const <A*>[const A{_Enum.index: 0, _Enum._name: "a"}, const A{_Enum.index: 1, _Enum._name: "b"}])
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:6:3 -> InstanceConstant(const A{_Enum.index: 0, _Enum._name: "a"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///enum.dart:7:3 -> InstanceConstant(const A{_Enum.index: 1, _Enum._name: "b"})
Extra constant evaluation: evaluated: 8, effectively constant: 3

View file

@ -2,26 +2,24 @@ library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class A extends core::_Enum /*isEnum*/ {
static const field core::List<self::A> values = #C7;
static const field self::A a = #C3;
static const field self::A b = #C6;
const constructor •(core::int index, core::String _name) → self::A
: self::A::index = index, self::A::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::A
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::A::_name}{core::String};
return "A.${this.{core::_Enum::_name}{core::String}}";
}
static method main() → dynamic {}
constants {
#C1 = 0
#C2 = "A.a"
#C2 = "a"
#C3 = self::A {index:#C1, _name:#C2}
#C4 = 1
#C5 = "A.b"
#C5 = "b"
#C6 = self::A {index:#C4, _name:#C5}
#C7 = <self::A*>[#C3, #C6]
}
@ -30,4 +28,5 @@ constants {
Constructor coverage from constants:
org-dartlang-testcase:///enum.dart:
- A. (from org-dartlang-testcase:///enum.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:76:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

View file

@ -1673,7 +1673,7 @@ class ExtensionMemberDescriptor {
/// The name of the extension member.
///
/// The name of the generated top-level member is mangled to ensure
/// uniqueness. This name is used to lookup an extension method the
/// uniqueness. This name is used to lookup an extension method in the
/// extension itself.
Name name;

View file

@ -19,18 +19,16 @@ class Foo extends core::Object implements self::IFoo {
method toString() → core::String
return "I am a Foo";
}
class FooEnum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class FooEnum extends core::_Enum /*isEnum*/ {
static const field core::List<self::FooEnum> values = #C11;
static const field self::FooEnum A = #C4;
static const field self::FooEnum B = #C7;
static const field self::FooEnum C = #C10;
const constructor •(core::int index, core::String _name) → self::FooEnum
: self::FooEnum::index = index, self::FooEnum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::FooEnum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::FooEnum::_name}{core::String};
return "FooEnum.${this.{core::_Enum::_name}{core::String}}";
}
class Keep extends core::Object {
synthetic constructor •() → self::Keep
@ -53,13 +51,13 @@ static method main() → void {
constants {
#C1 = core::_Override {}
#C2 = 0
#C3 = "FooEnum.A"
#C3 = "A"
#C4 = self::FooEnum {index:#C2, _name:#C3}
#C5 = 1
#C6 = "FooEnum.B"
#C6 = "B"
#C7 = self::FooEnum {index:#C5, _name:#C6}
#C8 = 2
#C9 = "FooEnum.C"
#C9 = "C"
#C10 = self::FooEnum {index:#C8, _name:#C9}
#C11 = <self::FooEnum*>[#C4, #C7, #C10]
#C12 = "flutter:keep-to-string"

View file

@ -19,18 +19,16 @@ class Foo extends core::Object implements self::IFoo {
method toString() → core::String
return super.toString();
}
class FooEnum extends core::Object implements core::Enum /*isEnum*/ {
final field core::int index;
final field core::String _name;
class FooEnum extends core::_Enum /*isEnum*/ {
static const field core::List<self::FooEnum> values = #C11;
static const field self::FooEnum A = #C4;
static const field self::FooEnum B = #C7;
static const field self::FooEnum C = #C10;
const constructor •(core::int index, core::String _name) → self::FooEnum
: self::FooEnum::index = index, self::FooEnum::_name = _name, super core::Object::•()
const constructor •(core::int index, core::String name) → self::FooEnum
: super core::_Enum::•(index, name)
;
method toString() → core::String
return this.{self::FooEnum::_name}{core::String};
return "FooEnum.${this.{core::_Enum::_name}{core::String}}";
}
class Keep extends core::Object {
synthetic constructor •() → self::Keep
@ -53,13 +51,13 @@ static method main() → void {
constants {
#C1 = core::_Override {}
#C2 = 0
#C3 = "FooEnum.A"
#C3 = "A"
#C4 = self::FooEnum {index:#C2, _name:#C3}
#C5 = 1
#C6 = "FooEnum.B"
#C6 = "B"
#C7 = self::FooEnum {index:#C5, _name:#C6}
#C8 = 2
#C9 = "FooEnum.C"
#C9 = "C"
#C10 = self::FooEnum {index:#C8, _name:#C9}
#C11 = <self::FooEnum*>[#C4, #C7, #C10]
#C12 = "flutter:keep-to-string"

View file

@ -17,24 +17,22 @@ RESULT: _T {}?
------------ TestEnum. ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
%index = _Parameter #1 [_T (dart.core::int)+?]
%_name = _Parameter #2 [_T (dart.core::String)+?]
t3 = _Call direct set [#lib::TestEnum.index] (%this, %index)
t4 = _Call direct set [#lib::TestEnum._name] (%this, %_name)
t5 = _Call direct [dart.core::Object.] (%this)
%name = _Parameter #2 [_T (dart.core::String)+?]
t3 = _Call direct [dart.core::_Enum.] (%this, %index, %name)
RESULT: _T {}?
------------ TestEnum.toString ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
t1* = _Call virtual get [#lib::TestEnum._name] (%this)
RESULT: t1
t1 = _Call virtual get [dart.core::_Enum._name] (%this)
RESULT: _T (dart.core::String)+
------------ TestEnum.values ------------
RESULT: _T (dart.core::_ImmutableList, const <#lib::TestEnum*>[const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"}])
RESULT: _T (dart.core::_ImmutableList, const <#lib::TestEnum*>[const #lib::TestEnum{dart.core::_Enum.index: 0, dart.core::_Enum._name: "v1"}, const #lib::TestEnum{dart.core::_Enum.index: 1, dart.core::_Enum._name: "v2"}])
------------ TestEnum.v1 ------------
RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"})
RESULT: _T (#lib::TestEnum, const #lib::TestEnum{dart.core::_Enum.index: 0, dart.core::_Enum._name: "v1"})
------------ TestEnum.v2 ------------
RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"})
RESULT: _T (#lib::TestEnum, const #lib::TestEnum{dart.core::_Enum.index: 1, dart.core::_Enum._name: "v2"})
------------ foo ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
@ -129,8 +127,8 @@ t2 = _Call direct [#lib::foo] (t1)
RESULT: _T {}?
------------ if9 ------------
%x = _Parameter #0 [_T (#lib::TestEnum)+?]
t1* = _Call [dart.core::Object.==] (%x, _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}))
t2 = _Call direct [#lib::foo] (_T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}))
t1* = _Call [dart.core::Object.==] (%x, _T (#lib::TestEnum, const #lib::TestEnum{dart.core::_Enum.index: 0, dart.core::_Enum._name: "v1"}))
t2 = _Call direct [#lib::foo] (_T (#lib::TestEnum, const #lib::TestEnum{dart.core::_Enum.index: 0, dart.core::_Enum._name: "v1"}))
RESULT: _T {}?
------------ conditional1 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]

View file

@ -2,11 +2,9 @@ library #lib /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class _AttributeName extends core::Object implements core::Enum /*isEnum*/ {
[@vm.inferred-type.metadata=dart.core::_Smi] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] [@vm.unboxing-info.metadata=()->i] final field core::int index;
[@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] final field core::String _name;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method toString() → core::String
return [@vm.direct-call.metadata=#lib::_AttributeName._name] [@vm.inferred-type.metadata=dart.core::_OneByteString] this.{self::_AttributeName::_name}{core::String};
class _AttributeName extends core::_Enum /*isEnum*/ {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method toString() → core::String
return "_AttributeName.${[@vm.direct-call.metadata=dart.core::_Enum._name] this.{core::_Enum::_name}{core::String}}";
}
class _Attribute extends core::Object {
constructor _() → self::_Attribute
@ -23,11 +21,11 @@ static method main() → void {
}
constants {
#C1 = 1
#C2 = "_AttributeName.sibling"
#C2 = "sibling"
#C3 = self::_AttributeName {index:#C1, _name:#C2}
#C4 = 3
#C5 = 0
#C6 = "_AttributeName.name"
#C6 = "name"
#C7 = self::_AttributeName {index:#C5, _name:#C6}
#C8 = <core::int*, self::_AttributeName*>{#C1:#C3, #C4:#C7)
}

View file

@ -11,11 +11,9 @@ class A extends core::Object {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] method getBar() → core::String
return "bar";
}
class B extends core::Object implements core::Enum /*isEnum*/ {
[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i] final field core::int index;
[@vm.inferred-type.metadata=dart.core::_OneByteString (value: "B.b2")] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] final field core::String _name;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method toString() → core::String
return [@vm.direct-call.metadata=#lib::B._name] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "B.b2")] this.{self::B::_name}{core::String};
class B extends core::_Enum /*isEnum*/ {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method toString() → core::String
return "B.${[@vm.direct-call.metadata=dart.core::_Enum._name] this.{core::_Enum::_name}{core::String}}";
}
static method test0() → void {
core::print(#C1);
@ -65,7 +63,7 @@ constants {
#C4 = 3.14
#C5 = "bazz"
#C6 = 1
#C7 = "B.b2"
#C7 = "b2"
#C8 = self::B {index:#C6, _name:#C7}
#C9 = 2
#C10 = 3

View file

@ -2,11 +2,9 @@ library #lib /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class _AttributeName extends core::Object implements core::Enum /*isEnum*/ {
[@vm.inferred-type.metadata=dart.core::_Smi] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] [@vm.unboxing-info.metadata=()->i] final field core::int index;
[@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] final field core::String _name;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method toString() → core::String
return [@vm.direct-call.metadata=#lib::_AttributeName._name] [@vm.inferred-type.metadata=dart.core::_OneByteString] this.{self::_AttributeName::_name}{core::String};
class _AttributeName extends core::_Enum /*isEnum*/ {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method toString() → core::String
return "_AttributeName.${[@vm.direct-call.metadata=dart.core::_Enum._name] this.{core::_Enum::_name}{core::String}}";
}
class _Attribute extends core::Object {
constructor _() → self::_Attribute
@ -25,9 +23,9 @@ constants {
#C1 = 0
#C2 = 1
#C3 = <core::int*>{#C1, #C2}
#C4 = "_AttributeName.name"
#C4 = "name"
#C5 = self::_AttributeName {index:#C1, _name:#C4}
#C6 = "_AttributeName.sibling"
#C6 = "sibling"
#C7 = self::_AttributeName {index:#C2, _name:#C6}
#C8 = <self::_AttributeName*>[#C5, #C7]
}

View file

@ -16,13 +16,12 @@ library enum_from_lib_used_as_type.lib.dart /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
abstract class Enum extends core::Object implements core::Enum {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3265] abstract get /*isLegacy*/ index() → core::int;
abstract class Enum extends core::_Enum {
}
class Class extends core::Object {
synthetic constructor •() → self::Class
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3266,getterSelectorId:3267] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
return [@vm.inferred-type.metadata=!] e.{self::Enum::index}{core::int};
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3261,getterSelectorId:3262] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}

View file

@ -3,15 +3,14 @@ import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
abstract class Enum extends core::Object implements core::Enum {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] abstract get /*isLegacy*/ index() → core::int;
abstract class Enum extends core::_Enum {
}
class Class extends core::Object {
synthetic constructor •() → self::Class
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
return [@vm.inferred-type.metadata=!] e.{self::Enum::index}{core::int};
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}
static method main() → dynamic {
core::List<dynamic> list = [@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::•<dynamic>(0);

View file

@ -2,7 +2,7 @@ library #lib /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
abstract class A extends core::Object implements core::Enum {
abstract class A extends core::_Enum {
}
abstract class B extends core::Object {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] abstract method foo() → void;

View file

@ -6,21 +6,19 @@ import "dart:_internal" as _in;
import "file:pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.lib.dart";
abstract class UnusedEnum extends core::Object implements core::Enum {
abstract class UnusedEnum extends core::_Enum {
}
class UsedEnum extends core::Object implements core::Enum /*isEnum*/ {
[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] [@vm.unboxing-info.metadata=()->i] final field core::int index;
[@vm.inferred-type.metadata=dart.core::_OneByteString (value: "UsedEnum.usedValue")] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] final field core::String _name;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method toString() → core::String
return [@vm.direct-call.metadata=#lib::UsedEnum._name] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "UsedEnum.usedValue")] this.{self::UsedEnum::_name}{core::String};
class UsedEnum extends core::_Enum /*isEnum*/ {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method toString() → core::String
return "UsedEnum.${[@vm.direct-call.metadata=dart.core::_Enum._name] this.{core::_Enum::_name}{core::String}}";
}
abstract class UnusedInterface extends core::Object {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] abstract get /*isLegacy*/ usedInterfaceField() → core::int?;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] abstract set /*isLegacy*/ usedInterfaceField(core::int? value) → void;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] abstract get /*isLegacy*/ usedInterfaceField() → core::int?;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] abstract set /*isLegacy*/ usedInterfaceField(core::int? value) → void;
}
class UsedClass extends core::Object implements self::UnusedInterface {
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] field core::int? usedField = null;
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field core::int? usedInterfaceField = null;
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field core::int? usedField = null;
[@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] field core::int? usedInterfaceField = null;
synthetic constructor •() → self::UsedClass
: super core::Object::•()
;
@ -40,20 +38,19 @@ static method main() → dynamic {
}
constants {
#C1 = 1
#C2 = "UsedEnum.usedValue"
#C2 = "usedValue"
#C3 = self::UsedEnum {index:#C1, _name:#C2}
}
library tree_shake_enum_from_lib.lib.dart /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
abstract class ConstEnum extends core::Object implements core::Enum {
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3271] abstract get /*isLegacy*/ index() → core::int;
abstract class ConstEnum extends core::_Enum {
}
class ConstClass extends core::Object {
synthetic constructor •() → self::ConstClass
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3272,getterSelectorId:3273] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
return [@vm.inferred-type.metadata=!] e.{self::ConstEnum::index}{core::int};
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3265,getterSelectorId:3266] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}

View file

@ -1225,12 +1225,16 @@ void ClassFinalizer::AllocateEnumValues(const Class& enum_cls) {
Thread* thread = Thread::Current();
Zone* zone = thread->zone();
// The enum_cls is the actual declared class.
// The shared super-class holds the fields for index and name.
const Class& super_cls = Class::Handle(zone, enum_cls.SuperClass());
const Field& index_field =
Field::Handle(zone, enum_cls.LookupInstanceField(Symbols::Index()));
Field::Handle(zone, super_cls.LookupInstanceField(Symbols::Index()));
ASSERT(!index_field.IsNull());
const Field& name_field = Field::Handle(
zone, enum_cls.LookupInstanceFieldAllowPrivate(Symbols::_name()));
zone, super_cls.LookupInstanceFieldAllowPrivate(Symbols::_name()));
ASSERT(!name_field.IsNull());
const String& enum_name = String::Handle(zone, enum_cls.ScrubbedName());

View file

@ -2211,7 +2211,7 @@ TEST_CASE(IsolateReload_EnumDelete) {
lib = TestCase::ReloadTestScript(kReloadScript);
EXPECT_VALID(lib);
EXPECT_STREQ("Deleted enum value from Fruit true -1",
EXPECT_STREQ("Fruit.Deleted enum value from Fruit true -1",
SimpleInvokeStr(lib, "main"));
}

Some files were not shown because too many files have changed in this diff Show more