Chromium Code Reviews| 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 bed7ceab5d75bb77881adc235fdb1b0ee357414c..809c71ec49529680936526a8f17731d0e056f74d 100644 |
| --- a/pkg/compiler/lib/src/elements/modelx.dart |
| +++ b/pkg/compiler/lib/src/elements/modelx.dart |
| @@ -1597,10 +1597,6 @@ abstract class VariableElementX extends ElementX |
| // cases, for example, for function typed parameters. |
| Token get position => token; |
| - accept(ElementVisitor visitor, arg) { |
| - return visitor.visitVariableElement(this, arg); |
| - } |
| - |
| DeclarationSite get declarationSite => variables; |
| } |
| @@ -1619,6 +1615,10 @@ class LocalVariableElementX extends VariableElementX |
| MemberElement get memberContext => executableContext.memberContext; |
| bool get isLocal => true; |
| + |
| + accept(ElementVisitor visitor, arg) { |
| + return visitor.visitLocalVariableElement(this, arg); |
| + } |
| } |
| class FieldElementX extends VariableElementX |
| @@ -2843,6 +2843,9 @@ class EnumConstructorElementX extends ConstructorElementX { |
| @override |
| FunctionExpression parseNode(Parsing parsing) => node; |
| + |
| + @override |
| + SourceSpan get sourcePosition => enclosingClass.sourcePosition; |
| } |
| class EnumMethodElementX extends MethodElementX { |
| @@ -2859,6 +2862,9 @@ class EnumMethodElementX extends MethodElementX { |
| @override |
| FunctionExpression parseNode(Parsing parsing) => node; |
| + |
| + @override |
| + SourceSpan get sourcePosition => enclosingClass.sourcePosition; |
| } |
| class EnumFormalElementX extends InitializingFormalElementX { |
| @@ -2869,6 +2875,9 @@ class EnumFormalElementX extends InitializingFormalElementX { |
| : super(constructor, variables, identifier, null, fieldElement) { |
| typeCache = fieldElement.type; |
| } |
| + |
| + @override |
| + SourceSpan get sourcePosition => enclosingClass.sourcePosition; |
| } |
| class EnumFieldElementX extends FieldElementX { |
| @@ -2883,6 +2892,30 @@ class EnumFieldElementX extends FieldElementX { |
| variableList.modifiers, new NodeList.singleton(definition)); |
| initializerCache = initializer; |
| } |
| + |
| + @override |
| + SourceSpan get sourcePosition => enclosingClass.sourcePosition; |
|
Siggi Cherem (dart-lang)
2016/04/08 16:18:24
why don't we keep the source-position of the enum-
Johnni Winther
2016/04/11 08:18:24
The enum fields are the synthetic `index` and `val
Siggi Cherem (dart-lang)
2016/04/11 16:28:18
Not sure I followed. If I write:
enum C {
v1,
Johnni Winther
2016/04/12 07:26:29
Yes. I'll update the comments.
|
| +} |
| + |
| +class EnumConstantElementX extends EnumFieldElementX |
| + implements EnumConstantElement { |
| + final int index; |
| + |
| + EnumConstantElementX( |
| + Identifier name, |
| + EnumClassElementX enumClass, |
| + VariableList variableList, |
| + Node definition, |
| + Expression initializer, |
| + this.index) |
| + : super(name, enumClass, variableList, definition, initializer); |
| + |
| + @override |
| + SourceSpan get sourcePosition { |
| + return new SourceSpan( |
| + enclosingClass.sourcePosition.uri, |
| + position.charOffset, position.charEnd); |
| + } |
| } |
| abstract class MixinApplicationElementX extends BaseClassElementX |
| @@ -3188,7 +3221,9 @@ abstract class AstElementMixin implements AstElement { |
| /// itself. |
| AstElement get definingElement; |
| - bool get hasResolvedAst => definingElement.hasTreeElements; |
| + bool get hasResolvedAst { |
| + return definingElement.hasNode && definingElement.hasTreeElements; |
| + } |
| ResolvedAst get resolvedAst { |
| return new ResolvedAst(declaration, |