Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Unified Diff: pkg/analyzer/lib/src/summary/link.dart

Issue 1986853003: Move TypeParameterizedElementForLink and TypeParameterElementForLink to impl. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fixes for review comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/link.dart
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
index 158cb3bed23474a681b9d4841faf78ac3193ae88..87af2c0a22a6ed992dce8d3ac63d7f0bbbb83873 100644
--- a/pkg/analyzer/lib/src/summary/link.dart
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -160,7 +160,7 @@ Map<String, LinkedLibraryBuilder> setupForLink(
EntityRefBuilder _createLinkedType(
DartType type,
CompilationUnitElementInBuildUnit compilationUnit,
- TypeParameterizedElementForLink typeParameterContext,
+ TypeParameterizedElementMixin typeParameterContext,
{int slot}) {
EntityRefBuilder result = new EntityRefBuilder(slot: slot);
if (type is InterfaceType) {
@@ -179,7 +179,7 @@ EntityRefBuilder _createLinkedType(
result.reference = compilationUnit.addRawReference('*bottom*');
return result;
} else if (type is TypeParameterType) {
- TypeParameterElementForLink element = type.element;
+ TypeParameterElementImpl element = type.element;
if (typeParameterContext.isTypeParameterInScope(element)) {
result.paramReference =
typeParameterContext.typeParameterNestingLevel - element.nestingLevel;
@@ -251,7 +251,7 @@ EntityRefBuilder _createLinkedType(
UnlinkedParamBuilder _serializeSyntheticParam(
ParameterElement parameter,
CompilationUnitElementInBuildUnit compilationUnit,
- TypeParameterizedElementForLink typeParameterContext) {
+ TypeParameterizedElementMixin typeParameterContext) {
UnlinkedParamBuilder b = new UnlinkedParamBuilder();
b.name = parameter.name;
switch (parameter.parameterKind) {
@@ -290,7 +290,7 @@ void _storeTypeArguments(
List<DartType> typeArguments,
EntityRefBuilder encodedType,
CompilationUnitElementInBuildUnit compilationUnit,
- TypeParameterizedElementForLink typeParameterContext) {
+ TypeParameterizedElementMixin typeParameterContext) {
int count = typeArguments.length;
List<EntityRefBuilder> encodedTypeArguments =
new List<EntityRefBuilder>(count);
@@ -363,6 +363,9 @@ abstract class ClassElementForLink extends Object
String get name;
@override
+ ResynthesizerContext get resynthesizerContext => enclosingElement;
+
+ @override
ConstructorElementForLink get unnamedConstructor;
@override
@@ -399,7 +402,7 @@ abstract class ClassElementForLink extends Object
* linking.
*/
class ClassElementForLink_Class extends ClassElementForLink
- with TypeParameterizedElementForLink {
+ with TypeParameterizedElementMixin {
/**
* The unlinked representation of the class in the summary.
*/
@@ -459,9 +462,6 @@ class ClassElementForLink_Class extends ClassElementForLink
}
@override
- CompilationUnitElementForLink get compilationUnit => enclosingElement;
-
- @override
List<ConstructorElementForLink> get constructors {
if (_constructors == null) {
_constructors = <ConstructorElementForLink>[];
@@ -485,7 +485,7 @@ class ClassElementForLink_Class extends ClassElementForLink
String get displayName => _unlinkedClass.name;
@override
- TypeParameterizedElementForLink get enclosingTypeParameterContext => null;
+ TypeParameterizedElementMixin get enclosingTypeParameterContext => null;
@override
List<FieldElementForLink_ClassField> get fields {
@@ -549,6 +549,10 @@ class ClassElementForLink_Class extends ClassElementForLink
_type ??= buildType((int i) => typeParameterTypes[i], null);
@override
+ List<UnlinkedTypeParam> get unlinkedTypeParams =>
+ _unlinkedClass.typeParameters;
+
+ @override
ConstructorElementForLink get unnamedConstructor {
if (!_unnamedConstructorComputed) {
for (ConstructorElementForLink constructor in constructors) {
@@ -563,10 +567,6 @@ class ClassElementForLink_Class extends ClassElementForLink
}
@override
- List<UnlinkedTypeParam> get _unlinkedTypeParams =>
- _unlinkedClass.typeParameters;
-
- @override
DartType buildType(
DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
int numTypeParameters = _unlinkedClass.typeParameters.length;
@@ -630,7 +630,7 @@ class ClassElementForLink_Class extends ClassElementForLink
*/
InterfaceType _computeInterfaceType(EntityRef typeRef) {
if (typeRef != null) {
- DartType type = enclosingElement._resolveTypeRef(typeRef, this);
+ DartType type = enclosingElement.resolveTypeRef(typeRef, this);
if (type is InterfaceType) {
return type;
}
@@ -740,7 +740,7 @@ class ClassElementForLink_Enum extends ClassElementForLink {
* summary during linking.
*/
abstract class CompilationUnitElementForLink
- implements CompilationUnitElementImpl {
+ implements CompilationUnitElementImpl, ResynthesizerContext {
/**
* The unlinked representation of the compilation unit in the
* summary.
@@ -937,12 +937,45 @@ abstract class CompilationUnitElementForLink
* given slot, `dynamic` is returned.
*/
DartType getLinkedType(
- int slot, TypeParameterizedElementForLink typeParameterContext);
+ int slot, TypeParameterizedElementMixin typeParameterContext);
@override
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
@override
+ DartType resolveTypeRef(
+ EntityRef type, TypeParameterizedElementMixin typeParameterContext,
+ {bool defaultVoid: false, bool instantiateToBoundsAllowed: true}) {
+ if (type == null) {
+ if (defaultVoid) {
+ return VoidTypeImpl.instance;
+ } else {
+ return DynamicTypeImpl.instance;
+ }
+ }
+ if (type.paramReference != 0) {
+ return typeParameterContext.getTypeParameterType(type.paramReference);
+ } else if (type.syntheticReturnType != null) {
+ // TODO(paulberry): implement.
+ throw new UnimplementedError();
+ } else if (type.implicitFunctionTypeIndices.isNotEmpty) {
+ // TODO(paulberry): implement.
+ throw new UnimplementedError();
+ } else {
+ DartType getTypeArgument(int i) {
+ if (i < type.typeArguments.length) {
+ return resolveTypeRef(type.typeArguments[i], typeParameterContext);
+ } else {
+ return DynamicTypeImpl.instance;
+ }
+ }
+ ReferenceableElementForLink element = _resolveRef(type.reference);
+ return element.buildType(
+ getTypeArgument, type.implicitFunctionTypeIndices);
+ }
+ }
+
+ @override
String toString() => enclosingElement.toString();
/**
@@ -992,45 +1025,6 @@ abstract class CompilationUnitElementForLink
}
return _references[index];
}
-
- /**
- * Resolve an [EntityRef] into a type. If the reference is
- * unresolved, return [DynamicTypeImpl.instance].
- *
- * TODO(paulberry): or should we have a class representing an
- * unresolved type, for consistency with the full element model?
- */
- DartType _resolveTypeRef(
- EntityRef type, TypeParameterizedElementForLink typeParameterContext,
- {bool defaultVoid: false}) {
- if (type == null) {
- if (defaultVoid) {
- return VoidTypeImpl.instance;
- } else {
- return DynamicTypeImpl.instance;
- }
- }
- if (type.paramReference != 0) {
- return typeParameterContext.getTypeParameterType(type.paramReference);
- } else if (type.syntheticReturnType != null) {
- // TODO(paulberry): implement.
- throw new UnimplementedError();
- } else if (type.implicitFunctionTypeIndices.isNotEmpty) {
- // TODO(paulberry): implement.
- throw new UnimplementedError();
- } else {
- DartType getTypeArgument(int i) {
- if (i < type.typeArguments.length) {
- return _resolveTypeRef(type.typeArguments[i], typeParameterContext);
- } else {
- return DynamicTypeImpl.instance;
- }
- }
- ReferenceableElementForLink element = _resolveRef(type.reference);
- return element.buildType(
- getTypeArgument, type.implicitFunctionTypeIndices);
- }
- }
}
/**
@@ -1187,7 +1181,7 @@ class CompilationUnitElementInBuildUnit extends CompilationUnitElementForLink {
@override
DartType getLinkedType(
- int slot, TypeParameterizedElementForLink typeParameterContext) {
+ int slot, TypeParameterizedElementMixin typeParameterContext) {
// This method should only be called on compilation units that come from
// dependencies, never on compilation units that are part of the current
// build unit.
@@ -1236,7 +1230,7 @@ class CompilationUnitElementInBuildUnit extends CompilationUnitElementForLink {
* unit's linked type list.
*/
void _storeLinkedType(int slot, DartType linkedType,
- TypeParameterizedElementForLink typeParameterContext) {
+ TypeParameterizedElementMixin typeParameterContext) {
if (slot != 0) {
if (linkedType != null && !linkedType.isDynamic) {
_linkedUnit.types.add(_createLinkedType(
@@ -1293,9 +1287,9 @@ class CompilationUnitElementInDependency extends CompilationUnitElementForLink {
@override
DartType getLinkedType(
- int slot, TypeParameterizedElementForLink typeParameterContext) {
+ int slot, TypeParameterizedElementMixin typeParameterContext) {
if (slot < _linkedTypeRefs.length) {
- return _resolveTypeRef(_linkedTypeRefs[slot], typeParameterContext);
+ return resolveTypeRef(_linkedTypeRefs[slot], typeParameterContext);
} else {
return DynamicTypeImpl.instance;
}
@@ -1755,7 +1749,7 @@ abstract class DependencyWalker<NodeType extends Node<NodeType>> {
* linking.
*/
abstract class ExecutableElementForLink extends Object
- with TypeParameterizedElementForLink, ParameterParentElementForLink
+ with TypeParameterizedElementMixin, ParameterParentElementForLink
implements ExecutableElementImpl {
/**
* The unlinked representation of the method in the summary.
@@ -1782,7 +1776,7 @@ abstract class ExecutableElementForLink extends Object
return null;
} else {
return _declaredReturnType ??=
- compilationUnit._resolveTypeRef(_unlinkedExecutable.returnType, this);
+ compilationUnit.resolveTypeRef(_unlinkedExecutable.returnType, this);
}
}
@@ -1853,6 +1847,9 @@ abstract class ExecutableElementForLink extends Object
}
@override
+ ResynthesizerContext get resynthesizerContext => compilationUnit;
+
+ @override
DartType get returnType => declaredReturnType ?? inferredReturnType;
@override
@@ -1865,13 +1862,13 @@ abstract class ExecutableElementForLink extends Object
FunctionTypeImpl get type => _type ??= new FunctionTypeImpl(this);
@override
- TypeParameterizedElementForLink get typeParameterContext => this;
+ TypeParameterizedElementMixin get typeParameterContext => this;
@override
List<UnlinkedParam> get unlinkedParameters => _unlinkedExecutable.parameters;
@override
- List<UnlinkedTypeParam> get _unlinkedTypeParams =>
+ List<UnlinkedTypeParam> get unlinkedTypeParams =>
_unlinkedExecutable.typeParameters;
@override
@@ -1917,7 +1914,7 @@ abstract class ExecutableElementForLink_NonLocal
Element get enclosingElement => enclosingClass ?? compilationUnit;
@override
- TypeParameterizedElementForLink get enclosingTypeParameterContext =>
+ TypeParameterizedElementMixin get enclosingTypeParameterContext =>
enclosingClass;
/**
@@ -2274,7 +2271,7 @@ class ExprTypeComputer {
stack.add(enclosingClass.buildType((int i) {
// Type argument explicitly specified.
if (i < ref.typeArguments.length) {
- return unit._resolveTypeRef(
+ return unit.resolveTypeRef(
ref.typeArguments[i], variable._typeParameterContext);
}
// In strong mode, type argument defaults to bound (if any).
@@ -2414,7 +2411,7 @@ class ExprTypeComputer {
DartType _getNextTypeRef() {
EntityRef ref = _getNextRef();
- return unit._resolveTypeRef(ref, variable._typeParameterContext);
+ return unit.resolveTypeRef(ref, variable._typeParameterContext);
}
/**
@@ -2601,7 +2598,7 @@ class FieldElementForLink_ClassField extends VariableElementForLink
}
@override
- TypeParameterizedElementForLink get _typeParameterContext => enclosingElement;
+ TypeParameterizedElementMixin get _typeParameterContext => enclosingElement;
/**
* Store the results of type inference for this field in
@@ -2675,7 +2672,7 @@ class FunctionElementForLink_FunctionTypedParam extends Object
final ParameterElementForLink enclosingElement;
@override
- final TypeParameterizedElementForLink typeParameterContext;
+ final TypeParameterizedElementMixin typeParameterContext;
@override
final List<UnlinkedParam> unlinkedParameters;
@@ -2703,7 +2700,7 @@ class FunctionElementForLink_FunctionTypedParam extends Object
if (enclosingElement._unlinkedParam.type == null) {
_returnType = DynamicTypeImpl.instance;
} else {
- _returnType = enclosingElement.compilationUnit._resolveTypeRef(
+ _returnType = enclosingElement.compilationUnit.resolveTypeRef(
enclosingElement._unlinkedParam.type, typeParameterContext);
}
}
@@ -2735,7 +2732,7 @@ class FunctionElementForLink_Initializer extends Object
@override
VariableElementForLink get enclosingElement => _variable;
- TypeParameterizedElementForLink get enclosingTypeParameterContext =>
+ TypeParameterizedElementMixin get enclosingTypeParameterContext =>
_variable.enclosingElement is ClassElementForLink
? _variable.enclosingElement
: null;
@@ -2811,7 +2808,7 @@ class FunctionElementForLink_Local_NonSynthetic extends ExecutableElementForLink
: super(compilationUnit, unlinkedExecutable);
@override
- TypeParameterizedElementForLink get enclosingTypeParameterContext =>
+ TypeParameterizedElementMixin get enclosingTypeParameterContext =>
enclosingElement;
@override
@@ -2836,7 +2833,7 @@ class FunctionElementForLink_Local_NonSynthetic extends ExecutableElementForLink
*/
class FunctionTypeAliasElementForLink extends Object
with
- TypeParameterizedElementForLink,
+ TypeParameterizedElementMixin,
ParameterParentElementForLink,
ReferenceableElementForLink
implements FunctionTypeAliasElement, ElementImpl {
@@ -2859,10 +2856,7 @@ class FunctionTypeAliasElementForLink extends Object
}
@override
- CompilationUnitElementForLink get compilationUnit => enclosingElement;
-
- @override
- TypeParameterizedElementForLink get enclosingTypeParameterContext => null;
+ TypeParameterizedElementMixin get enclosingTypeParameterContext => null;
@override
String get identifier => _unlinkedTypedef.name;
@@ -2880,17 +2874,20 @@ class FunctionTypeAliasElementForLink extends Object
String get name => _unlinkedTypedef.name;
@override
+ ResynthesizerContext get resynthesizerContext => enclosingElement;
+
+ @override
DartType get returnType => _returnType ??=
- enclosingElement._resolveTypeRef(_unlinkedTypedef.returnType, this);
+ enclosingElement.resolveTypeRef(_unlinkedTypedef.returnType, this);
@override
- TypeParameterizedElementForLink get typeParameterContext => this;
+ TypeParameterizedElementMixin get typeParameterContext => this;
@override
List<UnlinkedParam> get unlinkedParameters => _unlinkedTypedef.parameters;
@override
- List<UnlinkedTypeParam> get _unlinkedTypeParams =>
+ List<UnlinkedTypeParam> get unlinkedTypeParams =>
_unlinkedTypedef.typeParameters;
@override
@@ -3604,7 +3601,7 @@ class ParameterElementForLink implements ParameterElementImpl {
/**
* The innermost enclosing element that can declare type parameters.
*/
- final TypeParameterizedElementForLink _typeParameterContext;
+ final TypeParameterizedElementMixin _typeParameterContext;
/**
* If this parameter has a default value and the enclosing library
@@ -3676,7 +3673,7 @@ class ParameterElementForLink implements ParameterElementImpl {
_declaredType = DynamicTypeImpl.instance;
}
} else {
- _declaredType = compilationUnit._resolveTypeRef(
+ _declaredType = compilationUnit.resolveTypeRef(
_unlinkedParam.type, _typeParameterContext);
}
}
@@ -3753,8 +3750,13 @@ abstract class ParameterParentElementForLink implements Element {
_parameters = new List<ParameterElementForLink>(numParameters);
for (int i = 0; i < numParameters; i++) {
UnlinkedParam unlinkedParam = unlinkedParameters[i];
- _parameters[i] = new ParameterElementForLink(this, unlinkedParam,
- typeParameterContext, typeParameterContext.compilationUnit, i);
+ _parameters[i] = new ParameterElementForLink(
+ this,
+ unlinkedParam,
+ typeParameterContext,
+ typeParameterContext.resynthesizerContext
+ as CompilationUnitElementForLink,
+ i);
}
}
return _parameters;
@@ -3765,7 +3767,7 @@ abstract class ParameterParentElementForLink implements Element {
* may be [this], or may be a parent when there are function-typed
* parameters).
*/
- TypeParameterizedElementForLink get typeParameterContext;
+ TypeParameterizedElementMixin get typeParameterContext;
/**
* Get the list of unlinked parameters of this element.
@@ -3884,9 +3886,6 @@ class PropertyAccessorElementForLink_Executable
DartType get asStaticType => returnType;
@override
- bool get isStatic => enclosingClass == null || super.isStatic;
-
- @override
PropertyAccessorElementForLink_Executable get correspondingGetter =>
variable.getter;
@@ -3899,6 +3898,9 @@ class PropertyAccessorElementForLink_Executable
_unlinkedExecutable.kind == UnlinkedExecutableKind.setter;
@override
+ bool get isStatic => enclosingClass == null || super.isStatic;
+
+ @override
ElementKind get kind => _unlinkedExecutable.kind ==
UnlinkedExecutableKind.getter ? ElementKind.GETTER : ElementKind.SETTER;
@@ -4164,6 +4166,9 @@ class TopLevelFunctionElementForLink extends ExecutableElementForLink_NonLocal
DartType get asStaticType => type;
@override
+ String get identifier => _unlinkedExecutable.name;
+
+ @override
bool get isStatic => true;
@override
@@ -4199,7 +4204,7 @@ class TopLevelVariableElementForLink extends VariableElementForLink
LibraryElementForLink get library => compilationUnit.library;
@override
- TypeParameterizedElementForLink get _typeParameterContext => null;
+ TypeParameterizedElementMixin get _typeParameterContext => null;
/**
* Store the results of type inference for this variable in
@@ -4328,154 +4333,6 @@ class TypeInferenceNode extends Node<TypeInferenceNode> {
String toString() => 'TypeInferenceNode($variableElement)';
}
-/**
- * Element representing a type parameter resynthesized from a summary during
- * linking.
- */
-class TypeParameterElementForLink implements TypeParameterElementImpl {
- /**
- * The unlinked representation of the type parameter in the summary.
- */
- final UnlinkedTypeParam _unlinkedTypeParam;
-
- /**
- * The number of type parameters whose scope overlaps this one, and which are
- * declared earlier in the file.
- */
- final int nestingLevel;
-
- @override
- final TypeParameterizedElementForLink enclosingElement;
-
- TypeParameterTypeImpl _type;
- ElementLocation _location;
-
- DartType _bound;
-
- TypeParameterElementForLink(
- this.enclosingElement, this._unlinkedTypeParam, this.nestingLevel);
-
- @override
- DartType get bound {
- if (_unlinkedTypeParam.bound == null) {
- return null;
- }
- return _bound ??= enclosingElement.compilationUnit
- ._resolveTypeRef(_unlinkedTypeParam.bound, enclosingElement);
- }
-
- @override
- String get identifier => name;
-
- @override
- ElementKind get kind => ElementKind.TYPE_PARAMETER;
-
- @override
- ElementLocation get location =>
- _location ??= new ElementLocationImpl.con1(this);
-
- @override
- String get name => _unlinkedTypeParam.name;
-
- @override
- TypeParameterTypeImpl get type => _type ??= new TypeParameterTypeImpl(this);
-
- @override
- noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-/**
- * Mixin representing an element which can have type parameters.
- */
-abstract class TypeParameterizedElementForLink
- implements TypeParameterizedElement {
- List<TypeParameterType> _typeParameterTypes;
- List<TypeParameterElementForLink> _typeParameters;
- int _nestingLevel;
-
- /**
- * Get the compilation unit in which this element is declared.
- */
- CompilationUnitElementForLink get compilationUnit;
-
- /**
- * Get the type parameter context enclosing this one, if any.
- */
- TypeParameterizedElementForLink get enclosingTypeParameterContext;
-
- /**
- * Find out how many type parameters are in scope in this context.
- */
- int get typeParameterNestingLevel =>
- _nestingLevel ??= _unlinkedTypeParams.length +
- (enclosingTypeParameterContext?.typeParameterNestingLevel ?? 0);
-
- List<TypeParameterElementForLink> get typeParameters {
- if (_typeParameters == null) {
- int enclosingNestingLevel =
- enclosingTypeParameterContext?.typeParameterNestingLevel ?? 0;
- int numTypeParameters = _unlinkedTypeParams.length;
- _typeParameters =
- new List<TypeParameterElementForLink>(numTypeParameters);
- for (int i = 0; i < numTypeParameters; i++) {
- _typeParameters[i] = new TypeParameterElementForLink(
- this, _unlinkedTypeParams[i], enclosingNestingLevel + i);
- }
- }
- return _typeParameters;
- }
-
- /**
- * Get a list of [TypeParameterType] objects corresponding to the
- * element's type parameters.
- */
- List<TypeParameterType> get typeParameterTypes {
- if (_typeParameterTypes == null) {
- _typeParameterTypes = typeParameters
- .map((TypeParameterElementForLink e) => e.type)
- .toList();
- }
- return _typeParameterTypes;
- }
-
- /**
- * Get the [UnlinkedTypeParam]s representing the type parameters declared by
- * this element.
- */
- List<UnlinkedTypeParam> get _unlinkedTypeParams;
-
- /**
- * Convert the given [index] into a type parameter type.
- */
- TypeParameterType getTypeParameterType(int index) {
- List<TypeParameterType> types = typeParameterTypes;
- if (index <= types.length) {
- return types[types.length - index];
- } else if (enclosingTypeParameterContext != null) {
- return enclosingTypeParameterContext
- .getTypeParameterType(index - types.length);
- } else {
- // If we get here, it means that a summary contained a type parameter index
- // that was out of range.
- throw new RangeError('Invalid type parameter index');
- }
- }
-
- /**
- * Find out if the given [typeParameter] is in scope in this context.
- */
- bool isTypeParameterInScope(TypeParameterElementForLink typeParameter) {
- if (typeParameter.enclosingElement == this) {
- return true;
- } else if (enclosingTypeParameterContext != null) {
- return enclosingTypeParameterContext
- .isTypeParameterInScope(typeParameter);
- } else {
- return false;
- }
- }
-}
-
class TypeProviderForLink implements TypeProvider {
final Linker _linker;
@@ -4685,7 +4542,7 @@ abstract class VariableElementForLink
if (unlinkedVariable.type == null) {
return null;
} else {
- return _declaredType ??= compilationUnit._resolveTypeRef(
+ return _declaredType ??= compilationUnit.resolveTypeRef(
unlinkedVariable.type, _typeParameterContext);
}
}
@@ -4777,7 +4634,7 @@ abstract class VariableElementForLink
* The context in which type parameters should be interpreted, or `null` if
* there are no type parameters in scope.
*/
- TypeParameterizedElementForLink get _typeParameterContext;
+ TypeParameterizedElementMixin get _typeParameterContext;
@override
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698