Chromium Code Reviews| Index: pkg/analyzer/lib/src/dart/element/element.dart |
| diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart |
| index d46c864189b0b3cf1b6516337cd738da05af5e83..05224094157a1b161787fb32910c79d3f903a909 100644 |
| --- a/pkg/analyzer/lib/src/dart/element/element.dart |
| +++ b/pkg/analyzer/lib/src/dart/element/element.dart |
| @@ -474,6 +474,9 @@ class ClassElementImpl extends ElementImpl |
| } |
| @override |
| + TypeParameterizedElementMixin get typeParameterContext => this; |
| + |
| + @override |
| List<TypeParameterElement> get typeParameters { |
| if (_unlinkedClass != null) { |
| return super.typeParameters; |
| @@ -1268,9 +1271,9 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl |
| @override |
| String get identifier => source.encoding; |
| + |
| @override |
| ElementKind get kind => ElementKind.COMPILATION_UNIT; |
| - |
|
Paul Berry
2016/05/25 17:16:52
Nit: keep this blank line.
|
| @override |
|
Brian Wilkerson
2016/05/25 17:18:47
Strange to have the blank line go away. Is that th
scheglov
2016/05/25 17:26:59
It might be just me.
Fixed.
|
| List<ElementAnnotation> get metadata { |
| if (_unlinkedPart != null) { |
| @@ -1333,6 +1336,9 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl |
| } |
| @override |
| + TypeParameterizedElementMixin get typeParameterContext => null; |
| + |
| + @override |
| List<ClassElement> get types => _types; |
| /** |
| @@ -2345,6 +2351,13 @@ abstract class ElementImpl implements Element { |
| setModifier(Modifier.SYNTHETIC, isSynthetic); |
| } |
| + /** |
| + * Return the context to resolve type parameters in. |
|
Paul Berry
2016/05/25 17:16:52
Comment should specify that `null` will be returne
scheglov
2016/05/25 17:26:59
Done.
|
| + */ |
| + TypeParameterizedElementMixin get typeParameterContext { |
| + return _enclosingElement?.typeParameterContext; |
| + } |
| + |
| @override |
| CompilationUnit get unit => context.resolveCompilationUnit(source, library); |
| @@ -2987,6 +3000,9 @@ abstract class ExecutableElementImpl extends ElementImpl |
| } |
| @override |
| + TypeParameterizedElementMixin get typeParameterContext => this; |
| + |
| + @override |
| List<TypeParameterElement> get typeParameters => _typeParameters; |
| /** |
| @@ -3392,11 +3408,7 @@ class FunctionElementImpl extends ExecutableElementImpl |
| @override |
| TypeParameterizedElementMixin get enclosingTypeParameterContext { |
| - Element enclosingElement = this.enclosingElement; |
| - if (enclosingElement is TypeParameterizedElementMixin) { |
| - return enclosingElement; |
| - } |
| - return null; |
| + return (enclosingElement as ElementImpl).typeParameterContext; |
| } |
| @override |
| @@ -3622,6 +3634,9 @@ class FunctionTypeAliasElementImpl extends ElementImpl |
| } |
| @override |
| + TypeParameterizedElementMixin get typeParameterContext => this; |
| + |
| + @override |
| List<TypeParameterElement> get typeParameters { |
| if (_unlinkedTypedef != null) { |
| return super.typeParameters; |
| @@ -6076,11 +6091,7 @@ class PropertyAccessorElementImpl extends ExecutableElementImpl |
| @override |
| TypeParameterizedElementMixin get enclosingTypeParameterContext { |
| - Element enclosingElement = this.enclosingElement; |
| - if (enclosingElement is TypeParameterizedElementMixin) { |
| - return enclosingElement; |
| - } |
| - return null; |
| + return (enclosingElement as ElementImpl).typeParameterContext; |
| } |
| /** |
| @@ -6239,12 +6250,12 @@ abstract class ResynthesizerContext { |
| /** |
| * Build [ElementAnnotationImpl] for the given [UnlinkedConst]. |
| */ |
| - ElementAnnotationImpl buildAnnotation(Element context, UnlinkedConst uc); |
| + ElementAnnotationImpl buildAnnotation(ElementImpl context, UnlinkedConst uc); |
| /** |
| * Build [Expression] for the given [UnlinkedConst]. |
| */ |
| - Expression buildExpression(Element context, UnlinkedConst uc); |
| + Expression buildExpression(ElementImpl context, UnlinkedConst uc); |
| /** |
| * Build explicit top-level property accessors. |