| Index: pkg/compiler/lib/src/serialization/modelz.dart
|
| diff --git a/pkg/compiler/lib/src/serialization/modelz.dart b/pkg/compiler/lib/src/serialization/modelz.dart
|
| index 82d02af543c8d63ae3e934af3a2e81527828fc21..3c10292cf4e2079c6d044f9dc1d819f0af9b7bb2 100644
|
| --- a/pkg/compiler/lib/src/serialization/modelz.dart
|
| +++ b/pkg/compiler/lib/src/serialization/modelz.dart
|
| @@ -249,20 +249,32 @@ abstract class AnalyzableElementMixin implements AnalyzableElement, ElementZ {
|
| TreeElements get treeElements => _unsupported('treeElements');
|
| }
|
|
|
| -abstract class AstElementMixin implements AstElement, ElementZ {
|
| +abstract class AstElementMixinZ implements AstElement, ElementZ {
|
| + ResolvedAst _resolvedAst;
|
| +
|
| // TODO(johnniwinther): This is needed for the token invariant assertion. Find
|
| // another way to bypass the test for modelz.
|
| @override
|
| bool get hasNode => false;
|
|
|
| @override
|
| - bool get hasResolvedAst => _unsupported('hasResolvedAst');
|
| + bool get hasResolvedAst => _resolvedAst != null;
|
|
|
| @override
|
| get node => _unsupported('node');
|
|
|
| @override
|
| - ResolvedAst get resolvedAst => _unsupported('resolvedAst');
|
| + ResolvedAst get resolvedAst {
|
| + assert(invariant(this, _resolvedAst != null,
|
| + message: "ResolvedAst has not been set for $this."));
|
| + return _resolvedAst;
|
| + }
|
| +
|
| + void set resolvedAst(ResolvedAst value) {
|
| + assert(invariant(this, _resolvedAst == null,
|
| + message: "ResolvedAst has already been set for $this."));
|
| + _resolvedAst = value;
|
| + }
|
| }
|
|
|
| abstract class ContainerMixin
|
| @@ -801,7 +813,7 @@ abstract class ClassElementMixin implements ElementZ, ClassElement {
|
| class ClassElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| ClassElementCommon,
|
| class_members.ClassMemberMixin,
|
| ContainerMixin,
|
| @@ -922,7 +934,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ
|
| class_members.ClassMemberMixin,
|
| TypeDeclarationMixin<InterfaceType>,
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| MixinApplicationElementCommon,
|
| MixinApplicationElementMixin {
|
| final String name;
|
| @@ -1043,7 +1055,7 @@ class EnumClassElementZ extends ClassElementZ implements EnumClassElement {
|
| abstract class ConstructorElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| ClassMemberMixin,
|
| FunctionTypedElementMixin,
|
| ParametersMixin,
|
| @@ -1224,7 +1236,7 @@ class RedirectingFactoryConstructorElementZ extends ConstructorElementZ {
|
| }
|
|
|
| class ForwardingConstructorElementZ extends ElementZ
|
| - with AnalyzableElementMixin, AstElementMixin
|
| + with AnalyzableElementMixin, AstElementMixinZ
|
| implements ConstructorElement {
|
| final MixinApplicationElement enclosingClass;
|
| final ConstructorElement definingConstructor;
|
| @@ -1359,7 +1371,7 @@ abstract class MemberElementMixin
|
| abstract class FieldElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| TypedElementMixin,
|
| MemberElementMixin
|
| implements FieldElement {
|
| @@ -1426,7 +1438,7 @@ class InstanceFieldElementZ extends FieldElementZ
|
| abstract class FunctionElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| ParametersMixin,
|
| FunctionTypedElementMixin,
|
| TypedElementMixin,
|
| @@ -1505,7 +1517,7 @@ abstract class LocalExecutableMixin
|
| class LocalFunctionElementZ extends DeserializedElementZ
|
| with
|
| LocalExecutableMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| ParametersMixin,
|
| FunctionTypedElementMixin,
|
| TypedElementMixin
|
| @@ -1529,7 +1541,7 @@ class LocalFunctionElementZ extends DeserializedElementZ
|
| abstract class GetterElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| FunctionTypedElementMixin,
|
| ParametersMixin,
|
| TypedElementMixin,
|
| @@ -1569,7 +1581,7 @@ class InstanceGetterElementZ extends GetterElementZ
|
| abstract class SetterElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| FunctionTypedElementMixin,
|
| ParametersMixin,
|
| TypedElementMixin,
|
| @@ -1661,7 +1673,7 @@ abstract class TypeDeclarationMixin<T extends GenericType>
|
| class TypedefElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| LibraryMemberMixin,
|
| ParametersMixin,
|
| TypeDeclarationMixin<TypedefType>
|
| @@ -1703,7 +1715,7 @@ class TypedefElementZ extends DeserializedElementZ
|
| }
|
|
|
| class TypeVariableElementZ extends DeserializedElementZ
|
| - with AnalyzableElementMixin, AstElementMixin, TypedElementMixin
|
| + with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin
|
| implements TypeVariableElement {
|
| TypeDeclarationElement _typeDeclaration;
|
| TypeVariableType _type;
|
| @@ -1761,7 +1773,7 @@ class TypeVariableElementZ extends DeserializedElementZ
|
| }
|
|
|
| class SyntheticTypeVariableElementZ extends ElementZ
|
| - with AnalyzableElementMixin, AstElementMixin
|
| + with AnalyzableElementMixin, AstElementMixinZ
|
| implements TypeVariableElement {
|
| final TypeDeclarationElement typeDeclaration;
|
| final int index;
|
| @@ -1825,7 +1837,7 @@ class SyntheticTypeVariableElementZ extends ElementZ
|
| }
|
|
|
| abstract class ParameterElementZ extends DeserializedElementZ
|
| - with AnalyzableElementMixin, AstElementMixin, TypedElementMixin
|
| + with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin
|
| implements ParameterElement {
|
| FunctionElement _functionDeclaration;
|
| ConstantExpression _constant;
|
| @@ -1938,7 +1950,7 @@ class InitializingFormalElementZ extends ParameterElementZ
|
| class LocalVariableElementZ extends DeserializedElementZ
|
| with
|
| AnalyzableElementMixin,
|
| - AstElementMixin,
|
| + AstElementMixinZ,
|
| LocalExecutableMixin,
|
| TypedElementMixin
|
| implements LocalVariableElement {
|
|
|