Chromium Code Reviews| 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 2bfb6e13987cb7c3029e9e077c9940ef56bbdeb6..c7a347a1635086928df517c249a0cdcb560f1f66 100644 |
| --- a/pkg/compiler/lib/src/serialization/modelz.dart |
| +++ b/pkg/compiler/lib/src/serialization/modelz.dart |
| @@ -64,17 +64,12 @@ abstract class ElementZ extends Element with ElementCommon { |
| FunctionElement asFunctionElement() => null; |
| @override |
| - Scope buildScope() => _unsupported('analyzableElement'); |
| + Scope buildScope() => _unsupported('buildScope'); |
| @override |
| ClassElement get enclosingClass => null; |
| @override |
| - Element get enclosingClassOrCompilationUnit { |
| - return _unsupported('enclosingClassOrCompilationUnit'); |
| - } |
| - |
| - @override |
| LibraryElement get implementationLibrary => library; |
| @override |
| @@ -110,9 +105,8 @@ abstract class ElementZ extends Element with ElementCommon { |
| @override |
| bool get isStatic => false; |
| - // TODO(johnniwinther): Find a more precise semantics for this. |
| @override |
| - bool get isSynthesized => true; |
| + bool get isSynthesized => false; |
| @override |
| bool get isTopLevel => false; |
| @@ -133,10 +127,14 @@ abstract class DeserializedElementZ extends ElementZ { |
| @override |
| String get name => _decoder.getString(Key.NAME); |
| + // TODO(johnniwinther): Should this be cached? |
| + @override |
| + int get sourceOffset => _decoder.getInt(Key.OFFSET, isOptional: true); |
| + |
| @override |
| SourceSpan get sourcePosition { |
| // TODO(johnniwinther): Should this be cached? |
| - int offset = _decoder.getInt(Key.OFFSET, isOptional: true); |
| + int offset = sourceOffset; |
| if (offset == null) return null; |
| Uri uri = _decoder.getUri(Key.URI, isOptional: true); |
| if (uri == null) { |
| @@ -328,6 +326,9 @@ class AbstractFieldElementZ extends ElementZ implements AbstractFieldElement { |
| Element get enclosingElement => _canonicalElement.enclosingElement; |
| @override |
| + int get sourceOffset => _canonicalElement.sourceOffset; |
| + |
| + @override |
| SourceSpan get sourcePosition => _canonicalElement.sourcePosition; |
| @override |
| @@ -768,23 +769,9 @@ abstract class ClassElementMixin implements ElementZ, ClassElement { |
| ElementKind get kind => ElementKind.CLASS; |
| @override |
| - void addBackendMember(Element element) => _unsupported('addBackendMember'); |
| - |
| - @override |
| - void forEachBackendMember(void f(Element member)) { |
| - _unsupported('forEachBackendMember'); |
| - } |
| - |
| - @override |
| - bool get hasBackendMembers => _unsupported('hasBackendMembers'); |
| - |
| - @override |
| bool get hasConstructor => _unsupported('hasConstructor'); |
| @override |
| - bool hasFieldShadowedBy(Element fieldMember) => _unsupported(''); |
| - |
| - @override |
| bool get hasIncompleteHierarchy => _unsupported('hasIncompleteHierarchy'); |
| @override |
| @@ -794,11 +781,6 @@ abstract class ClassElementMixin implements ElementZ, ClassElement { |
| bool get isEnumClass => false; |
| @override |
| - Element lookupBackendMember(String memberName) { |
| - return _unsupported('lookupBackendMember'); |
| - } |
| - |
| - @override |
| ConstructorElement lookupDefaultConstructor() { |
| ConstructorElement constructor = lookupConstructor(""); |
| if (constructor != null && constructor.parameters.isEmpty) { |
| @@ -808,9 +790,6 @@ abstract class ClassElementMixin implements ElementZ, ClassElement { |
| } |
| @override |
| - void reverseBackendMembers() => _unsupported('reverseBackendMembers'); |
| - |
| - @override |
| ClassElement get superclass => supertype != null ? supertype.element : null; |
| @override |
| @@ -1035,6 +1014,9 @@ class UnnamedMixinApplicationElementZ extends ElementZ |
| InterfaceType get mixinType => interfaces.head; |
| @override |
| + int get sourceOffset => _subclass.sourceOffset; |
| + |
| + @override |
| SourceSpan get sourcePosition => _subclass.sourcePosition; |
| } |
| @@ -1064,7 +1046,10 @@ abstract class ConstructorElementZ extends DeserializedElementZ |
| ParametersMixin, |
| TypedElementMixin, |
| MemberElementMixin |
| - implements ConstructorElement { |
| + implements |
| + ConstructorElement, |
| + // TODO(johnniwinther): Sort out whether a constructor is a method. |
| + MethodElement { |
| ConstantConstructor _constantConstructor; |
| ConstructorElement _effectiveTarget; |
| @@ -1129,13 +1114,13 @@ abstract class ConstructorElementZ extends DeserializedElementZ |
| @override |
| ConstructorElement get immediateRedirectionTarget => null; |
| + // TODO(johnniwinther): Should serialization support erroneous element |
| + // relations? |
|
Siggi Cherem (dart-lang)
2016/04/28 17:23:15
it might not be worth while. We can fail early and
Johnni Winther
2016/04/29 09:31:37
They will be needed for warnings such as a call to
|
| @override |
| - bool get isEffectiveTargetMalformed { |
| - return _unsupported('isEffectiveTargetMalformed'); |
| - } |
| + bool get isEffectiveTargetMalformed => false; |
| @override |
| - bool get isCyclicRedirection => _unsupported('isCyclicRedirection'); |
| + bool get isCyclicRedirection => false; |
| @override |
| bool get isRedirectingFactory => false; |
| @@ -1158,6 +1143,9 @@ class GenerativeConstructorElementZ extends ConstructorElementZ { |
| @override |
| bool get isRedirectingGenerative => _decoder.getBool(Key.IS_REDIRECTING); |
| + |
| + @override |
| + bool get isSynthesized => definingConstructor != null; |
| } |
| class FactoryConstructorElementZ extends ConstructorElementZ { |
| @@ -1298,6 +1286,9 @@ class ForwardingConstructorElementZ extends ElementZ |
| bool get isRedirectingGenerative => false; |
| @override |
| + bool get isSynthesized => true; |
| + |
| + @override |
| ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR; |
| @override |
| @@ -1327,6 +1318,9 @@ class ForwardingConstructorElementZ extends ElementZ |
| PrefixElement get redirectionDeferredPrefix => null; |
| @override |
| + int get sourceOffset => enclosingClass.sourceOffset; |
| + |
| + @override |
| SourceSpan get sourcePosition => enclosingClass.sourcePosition; |
| @override |
| @@ -1806,6 +1800,9 @@ class SyntheticTypeVariableElementZ extends ElementZ |
| LibraryElement get library => typeDeclaration.library; |
| @override |
| + int get sourceOffset => typeDeclaration.sourceOffset; |
| + |
| + @override |
| SourceSpan get sourcePosition => typeDeclaration.sourcePosition; |
| } |