| Index: pkg/analyzer/lib/src/summary/resynthesize.dart
|
| diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| index 32ce287f80591789335a03a2e1dbeb67f66b1a98..234f46a35500c80a0cf52cb9eedf062b992666de 100644
|
| --- a/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| +++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| @@ -594,8 +594,7 @@ class _ConstExprBuilder {
|
| */
|
| TypeAnnotation _newTypeName() {
|
| EntityRef typeRef = uc.references[refPtr++];
|
| - DartType type =
|
| - resynthesizer.buildType(typeRef, context?.typeParameterContext);
|
| + DartType type = resynthesizer.buildType(context, typeRef);
|
| return _buildTypeAst(type);
|
| }
|
|
|
| @@ -643,7 +642,7 @@ class _ConstExprBuilder {
|
| return;
|
| }
|
| InterfaceType definingType = resynthesizer._createConstructorDefiningType(
|
| - context?.typeParameterContext, info, ref.typeArguments);
|
| + context, info, ref.typeArguments);
|
| constructorElement =
|
| resynthesizer._getConstructorForInfo(definingType, info);
|
| typeNode = _buildTypeAst(definingType);
|
| @@ -1439,24 +1438,21 @@ class _ResynthesizerContext implements ResynthesizerContext {
|
|
|
| @override
|
| ConstructorElement resolveConstructorRef(
|
| - TypeParameterizedElementMixin typeParameterContext, EntityRef entry) {
|
| - return _unitResynthesizer._getConstructorForEntry(
|
| - typeParameterContext, entry);
|
| + ElementImpl context, EntityRef entry) {
|
| + return _unitResynthesizer._getConstructorForEntry(context, entry);
|
| }
|
|
|
| @override
|
| - DartType resolveLinkedType(
|
| - int slot, TypeParameterizedElementMixin typeParameterContext) {
|
| - return _unitResynthesizer.buildLinkedType(slot, typeParameterContext);
|
| + DartType resolveLinkedType(ElementImpl context, int slot) {
|
| + return _unitResynthesizer.buildLinkedType(context, slot);
|
| }
|
|
|
| @override
|
| - DartType resolveTypeRef(
|
| - EntityRef type, TypeParameterizedElementMixin typeParameterContext,
|
| + DartType resolveTypeRef(ElementImpl context, EntityRef type,
|
| {bool defaultVoid: false,
|
| bool instantiateToBoundsAllowed: true,
|
| bool declaredType: false}) {
|
| - return _unitResynthesizer.buildType(type, typeParameterContext,
|
| + return _unitResynthesizer.buildType(context, type,
|
| defaultVoid: defaultVoid,
|
| instantiateToBoundsAllowed: instantiateToBoundsAllowed,
|
| declaredType: declaredType);
|
| @@ -1625,8 +1621,7 @@ class _UnitResynthesizer {
|
| * Build the appropriate [DartType] object corresponding to a slot id in the
|
| * [LinkedUnit.types] table.
|
| */
|
| - DartType buildLinkedType(
|
| - int slot, TypeParameterizedElementMixin typeParameterContext) {
|
| + DartType buildLinkedType(ElementImpl context, int slot) {
|
| if (slot == 0) {
|
| // A slot id of 0 means there is no [DartType] object to build.
|
| return null;
|
| @@ -1637,7 +1632,7 @@ class _UnitResynthesizer {
|
| // stored in this slot.
|
| return null;
|
| }
|
| - return buildType(type, typeParameterContext);
|
| + return buildType(context, type);
|
| }
|
|
|
| /**
|
| @@ -1646,8 +1641,7 @@ class _UnitResynthesizer {
|
| * deserialized, so handles are used to avoid having to deserialize other
|
| * libraries in the process.
|
| */
|
| - DartType buildType(
|
| - EntityRef type, TypeParameterizedElementMixin typeParameterContext,
|
| + DartType buildType(ElementImpl context, EntityRef type,
|
| {bool defaultVoid: false,
|
| bool instantiateToBoundsAllowed: true,
|
| bool declaredType: false}) {
|
| @@ -1659,20 +1653,20 @@ class _UnitResynthesizer {
|
| }
|
| }
|
| if (type.paramReference != 0) {
|
| - return typeParameterContext.getTypeParameterType(type.paramReference);
|
| + return context.typeParameterContext
|
| + .getTypeParameterType(type.paramReference);
|
| } else if (type.entityKind == EntityRefKind.genericFunctionType) {
|
| GenericFunctionTypeElement element =
|
| - new GenericFunctionTypeElementImpl.forSerialized(
|
| - type, typeParameterContext);
|
| + new GenericFunctionTypeElementImpl.forSerialized(context, type);
|
| return element.type;
|
| } else if (type.syntheticReturnType != null) {
|
| - FunctionElementImpl element =
|
| - new FunctionElementImpl_forLUB(unit, typeParameterContext, type);
|
| + FunctionElementImpl element = new FunctionElementImpl_forLUB(
|
| + unit, context.typeParameterContext, type);
|
| return element.type;
|
| } else {
|
| DartType getTypeArgument(int i) {
|
| if (i < type.typeArguments.length) {
|
| - return buildType(type.typeArguments[i], typeParameterContext,
|
| + return buildType(context, type.typeArguments[i],
|
| declaredType: declaredType);
|
| } else {
|
| return DynamicTypeImpl.instance;
|
| @@ -1929,18 +1923,15 @@ class _UnitResynthesizer {
|
| * [typeArgumentRefs] to the given linked [info]. Return [DynamicTypeImpl]
|
| * if the [info] is unresolved.
|
| */
|
| - DartType _createConstructorDefiningType(
|
| - TypeParameterizedElementMixin typeParameterContext,
|
| - _ReferenceInfo info,
|
| - List<EntityRef> typeArgumentRefs) {
|
| + DartType _createConstructorDefiningType(ElementImpl context,
|
| + _ReferenceInfo info, List<EntityRef> typeArgumentRefs) {
|
| bool isClass = info.element is ClassElement;
|
| _ReferenceInfo classInfo = isClass ? info : info.enclosing;
|
| if (classInfo == null) {
|
| return DynamicTypeImpl.instance;
|
| }
|
| - List<DartType> typeArguments = typeArgumentRefs
|
| - .map((t) => buildType(t, typeParameterContext))
|
| - .toList();
|
| + List<DartType> typeArguments =
|
| + typeArgumentRefs.map((t) => buildType(context, t)).toList();
|
| return classInfo.buildType(true, typeArguments.length, (i) {
|
| if (i < typeArguments.length) {
|
| return typeArguments[i];
|
| @@ -1954,10 +1945,10 @@ class _UnitResynthesizer {
|
| * Return the [ConstructorElement] corresponding to the given [entry].
|
| */
|
| ConstructorElement _getConstructorForEntry(
|
| - TypeParameterizedElementMixin typeParameterContext, EntityRef entry) {
|
| + ElementImpl context, EntityRef entry) {
|
| _ReferenceInfo info = getReferenceInfo(entry.reference);
|
| - DartType type = _createConstructorDefiningType(
|
| - typeParameterContext, info, entry.typeArguments);
|
| + DartType type =
|
| + _createConstructorDefiningType(context, info, entry.typeArguments);
|
| if (type is InterfaceType) {
|
| return _getConstructorForInfo(type, info);
|
| }
|
|
|