| Index: pkg/compiler/lib/src/elements/modelx.dart
|
| diff --git a/pkg/compiler/lib/src/elements/modelx.dart b/pkg/compiler/lib/src/elements/modelx.dart
|
| index d435f4aa9c96e0acd7784ba785f71ee035330c3b..fbffa06d55267a19963a1b67bb0d401a609ab3ce 100644
|
| --- a/pkg/compiler/lib/src/elements/modelx.dart
|
| +++ b/pkg/compiler/lib/src/elements/modelx.dart
|
| @@ -1450,13 +1450,13 @@ class FunctionSignatureX implements FunctionSignature {
|
| final FunctionType type;
|
| final bool hasOptionalParameters;
|
|
|
| - FunctionSignatureX(this.requiredParameters,
|
| - Link<Element> optionalParameters,
|
| - this.requiredParameterCount,
|
| - this.optionalParameterCount,
|
| - this.optionalParametersAreNamed,
|
| - this.orderedOptionalParameters,
|
| - this.type)
|
| + FunctionSignatureX({this.requiredParameters: const Link<Element>(),
|
| + this.requiredParameterCount: 0,
|
| + Link<Element> optionalParameters: const Link<Element>(),
|
| + this.optionalParameterCount: 0,
|
| + this.optionalParametersAreNamed: false,
|
| + this.orderedOptionalParameters: const <Element>[],
|
| + this.type})
|
| : optionalParameters = optionalParameters,
|
| hasOptionalParameters = !optionalParameters.isEmpty;
|
|
|
| @@ -1718,8 +1718,7 @@ class DeferredLoaderGetterElementX extends FunctionElementX {
|
| if (functionSignatureCache != null) return functionSignature;
|
| compiler.withCurrentElement(this, () {
|
| DartType inner = new FunctionType(this);
|
| - functionSignatureCache = new FunctionSignatureX(const Link(),
|
| - const Link(), 0, 0, false, [], inner);
|
| + functionSignatureCache = new FunctionSignatureX(type: inner);
|
| });
|
| return functionSignatureCache;
|
| }
|
| @@ -1820,9 +1819,7 @@ class SynthesizedConstructorElementX extends ConstructorElementX {
|
| if (functionSignatureCache != null) return functionSignatureCache;
|
| if (isDefaultConstructor) {
|
| return functionSignatureCache = new FunctionSignatureX(
|
| - const Link<Element>(), const Link<Element>(), 0, 0, false,
|
| - const <Element>[],
|
| - new FunctionType(this, enclosingClass.thisType));
|
| + type: new FunctionType(this, enclosingClass.thisType));
|
| }
|
| if (definingConstructor.isErroneous) {
|
| return functionSignatureCache =
|
| @@ -1973,6 +1970,9 @@ abstract class BaseClassElementX extends ElementX
|
|
|
| bool get isUnnamedMixinApplication => false;
|
|
|
| + @override
|
| + bool get isEnumClass => false;
|
| +
|
| InterfaceType computeType(Compiler compiler) {
|
| if (thisTypeCache == null) {
|
| computeThisAndRawType(compiler, computeTypeParameters(compiler));
|
| @@ -2355,8 +2355,6 @@ abstract class ClassElementX extends BaseClassElementX {
|
| ClassElementX(String name, Element enclosing, int id, int initialState)
|
| : super(name, enclosing, id, initialState);
|
|
|
| - ClassNode parseNode(Compiler compiler);
|
| -
|
| bool get isMixinApplication => false;
|
| bool get hasLocalScopeMembers => !localScope.isEmpty;
|
|
|
| @@ -2416,6 +2414,92 @@ abstract class ClassElementX extends BaseClassElementX {
|
| }
|
| }
|
|
|
| +class EnumClassElementX extends ClassElementX {
|
| + final Enum node;
|
| +
|
| + EnumClassElementX(String name, Element enclosing, int id, this.node)
|
| + : super(name, enclosing, id, STATE_NOT_STARTED);
|
| +
|
| + @override
|
| + bool get hasNode => true;
|
| +
|
| + @override
|
| + Token get position => node.name.token;
|
| +
|
| + @override
|
| + bool get isEnumClass => true;
|
| +
|
| + @override
|
| + Node parseNode(Compiler compiler) => node;
|
| +
|
| + @override
|
| + accept(ElementVisitor visitor) => visitor.visitClassElement(this);
|
| +
|
| + List<DartType> computeTypeParameters(Compiler compiler) => const <DartType>[];
|
| +}
|
| +
|
| +class EnumConstructorElementX extends ConstructorElementX {
|
| + final FunctionExpression node;
|
| +
|
| + EnumConstructorElementX(EnumClassElementX enumClass,
|
| + Modifiers modifiers,
|
| + this.node)
|
| + : super('', // Name.
|
| + ElementKind.GENERATIVE_CONSTRUCTOR,
|
| + modifiers,
|
| + enumClass);
|
| +
|
| + @override
|
| + bool get hasNode => true;
|
| +
|
| + @override
|
| + FunctionExpression parseNode(Compiler compiler) => node;
|
| +}
|
| +
|
| +class EnumMethodElementX extends FunctionElementX {
|
| + final FunctionExpression node;
|
| +
|
| + EnumMethodElementX(String name,
|
| + EnumClassElementX enumClass,
|
| + Modifiers modifiers,
|
| + this.node)
|
| + : super(name,
|
| + ElementKind.FUNCTION,
|
| + modifiers,
|
| + enumClass,
|
| + false);
|
| +
|
| + @override
|
| + bool get hasNode => true;
|
| +
|
| + @override
|
| + FunctionExpression parseNode(Compiler compiler) => node;
|
| +}
|
| +
|
| +class EnumFormalElementX extends InitializingFormalElementX {
|
| + EnumFormalElementX(ConstructorElement constructor,
|
| + VariableDefinitions variables,
|
| + Identifier identifier,
|
| + EnumFieldElementX fieldElement)
|
| + : super(constructor, variables, identifier, null, fieldElement) {
|
| + typeCache = fieldElement.type;
|
| + }
|
| +}
|
| +
|
| +class EnumFieldElementX extends FieldElementX {
|
| +
|
| + EnumFieldElementX(Identifier name,
|
| + EnumClassElementX enumClass,
|
| + VariableList variableList,
|
| + Node definition,
|
| + [Expression initializer])
|
| + : super(name, enumClass, variableList) {
|
| + definitionsCache = new VariableDefinitions(null,
|
| + variableList.modifiers, new NodeList.singleton(definition));
|
| + initializerCache = initializer;
|
| + }
|
| +}
|
| +
|
| class MixinApplicationElementX extends BaseClassElementX
|
| implements MixinApplicationElement {
|
| final Node node;
|
|
|