| 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 14682443fb5167df1b4f91bcd0ad316d72a4d23a..123385a688d3f96648bd2f8732c3299940425998 100644
|
| --- a/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| +++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| @@ -1546,6 +1546,12 @@ class _ResynthesizerContext implements ResynthesizerContext {
|
| }
|
|
|
| @override
|
| + DartType resolveLinkedType(
|
| + int slot, TypeParameterizedElementMixin typeParameterContext) {
|
| + return _unitResynthesizer.buildLinkedType(slot, typeParameterContext);
|
| + }
|
| +
|
| + @override
|
| DartType resolveTypeRef(
|
| EntityRef type, TypeParameterizedElementMixin typeParameterContext,
|
| {bool defaultVoid: false, bool instantiateToBoundsAllowed: true}) {
|
| @@ -2108,10 +2114,8 @@ class _UnitResynthesizer {
|
| bool isSetter =
|
| serializedExecutable.kind == UnlinkedExecutableKind.setter;
|
| executableElement.returnType = buildLinkedType(
|
| - serializedExecutable.inferredReturnTypeSlot,
|
| - _currentTypeParameterizedElement) ??
|
| - buildType(
|
| - serializedExecutable.returnType, _currentTypeParameterizedElement,
|
| + serializedExecutable.inferredReturnTypeSlot, executableElement) ??
|
| + buildType(serializedExecutable.returnType, executableElement,
|
| defaultVoid: isSetter && summaryResynthesizer.strongMode);
|
| }
|
| executableElement.type = new FunctionTypeImpl.elementWithNameAndArgs(
|
| @@ -2319,49 +2323,35 @@ class _UnitResynthesizer {
|
| UnlinkedParam serializedParameter, ElementImpl enclosingElement,
|
| {bool synthetic: false}) {
|
| ParameterElementImpl parameterElement;
|
| - bool isLazilyResynthesized = false;
|
| - int nameOffset = synthetic ? -1 : serializedParameter.nameOffset;
|
| if (serializedParameter.isInitializingFormal) {
|
| FieldFormalParameterElementImpl initializingParameter;
|
| if (serializedParameter.kind == UnlinkedParamKind.required) {
|
| - initializingParameter = new FieldFormalParameterElementImpl(
|
| - serializedParameter.name, nameOffset);
|
| + initializingParameter =
|
| + new FieldFormalParameterElementImpl.forSerialized(
|
| + serializedParameter, enclosingElement);
|
| } else {
|
| - DefaultFieldFormalParameterElementImpl defaultParameter =
|
| - new DefaultFieldFormalParameterElementImpl(
|
| - serializedParameter.name, nameOffset);
|
| - initializingParameter = defaultParameter;
|
| - if (serializedParameter.defaultValue != null) {
|
| - defaultParameter.constantInitializer = _buildConstExpression(
|
| - enclosingElement, serializedParameter.defaultValue);
|
| - defaultParameter.defaultValueCode =
|
| - serializedParameter.defaultValueCode;
|
| - }
|
| + initializingParameter =
|
| + new DefaultFieldFormalParameterElementImpl.forSerialized(
|
| + serializedParameter, enclosingElement);
|
| }
|
| parameterElement = initializingParameter;
|
| - initializingParameter.field = fields[serializedParameter.name];
|
| } else {
|
| if (serializedParameter.kind == UnlinkedParamKind.required) {
|
| parameterElement = new ParameterElementImpl.forSerialized(
|
| serializedParameter, enclosingElement);
|
| - isLazilyResynthesized = true;
|
| } else {
|
| - DefaultParameterElementImpl defaultParameter =
|
| - new DefaultParameterElementImpl.forSerialized(
|
| - serializedParameter, enclosingElement);
|
| - isLazilyResynthesized = true;
|
| - parameterElement = defaultParameter;
|
| + parameterElement = new DefaultParameterElementImpl.forSerialized(
|
| + serializedParameter, enclosingElement);
|
| }
|
| }
|
| parameterElement.synthetic = synthetic;
|
| - if (!isLazilyResynthesized) {
|
| - buildAnnotations(parameterElement, serializedParameter.annotations);
|
| - buildCodeRange(parameterElement, serializedParameter.codeRange);
|
| - }
|
| if (serializedParameter.isFunctionTyped) {
|
| FunctionElementImpl parameterTypeElement =
|
| - new FunctionElementImpl('', -1);
|
| - parameterTypeElement.synthetic = true;
|
| + new FunctionElementImpl_forFunctionTypedParameter(
|
| + unit, parameterElement);
|
| + if (!synthetic) {
|
| + parameterTypeElement.enclosingElement = parameterElement;
|
| + }
|
| List<ParameterElement> subParameters = serializedParameter.parameters
|
| .map((UnlinkedParam p) =>
|
| buildParameter(p, parameterTypeElement, synthetic: synthetic))
|
| @@ -2371,29 +2361,12 @@ class _UnitResynthesizer {
|
| } else {
|
| parameterElement.parameters = subParameters;
|
| parameterTypeElement.shareParameters(subParameters);
|
| - parameterTypeElement.enclosingElement = parameterElement;
|
| }
|
| parameterTypeElement.returnType =
|
| buildType(serializedParameter.type, _currentTypeParameterizedElement);
|
| parameterElement.type = new FunctionTypeImpl.elementWithNameAndArgs(
|
| parameterTypeElement, null, getCurrentTypeArguments(), false);
|
| parameterTypeElement.type = parameterElement.type;
|
| - } else {
|
| - if (serializedParameter.isInitializingFormal &&
|
| - serializedParameter.type == null) {
|
| - // The type is inherited from the matching field.
|
| - parameterElement.type =
|
| - fields[serializedParameter.name]?.type ?? DynamicTypeImpl.instance;
|
| - } else {
|
| - parameterElement.type = buildLinkedType(
|
| - serializedParameter.inferredTypeSlot,
|
| - _currentTypeParameterizedElement) ??
|
| - buildType(
|
| - serializedParameter.type, _currentTypeParameterizedElement);
|
| - }
|
| - if (!isLazilyResynthesized) {
|
| - parameterElement.hasImplicitType = serializedParameter.type == null;
|
| - }
|
| }
|
| buildVariableInitializer(parameterElement, serializedParameter.initializer);
|
| switch (serializedParameter.kind) {
|
| @@ -2407,12 +2380,6 @@ class _UnitResynthesizer {
|
| parameterElement.parameterKind = ParameterKind.REQUIRED;
|
| break;
|
| }
|
| - if (!isLazilyResynthesized) {
|
| - if (serializedParameter.visibleOffset != 0) {
|
| - parameterElement.setVisibleRange(serializedParameter.visibleOffset,
|
| - serializedParameter.visibleLength);
|
| - }
|
| - }
|
| return parameterElement;
|
| }
|
|
|
| @@ -2461,8 +2428,8 @@ class _UnitResynthesizer {
|
| if (type.paramReference != 0) {
|
| return typeParameterContext.getTypeParameterType(type.paramReference);
|
| } else if (type.syntheticReturnType != null) {
|
| - FunctionElementImpl element = new FunctionElementImpl('', -1);
|
| - element.synthetic = true;
|
| + FunctionElementImpl element =
|
| + new FunctionElementImpl_forLUB(unit, typeParameterContext);
|
| element.parameters = type.syntheticParams
|
| .map((UnlinkedParam param) =>
|
| buildParameter(param, element, synthetic: true))
|
| @@ -2674,8 +2641,8 @@ class _UnitResynthesizer {
|
| void buildVariableCommonParts(
|
| VariableElementImpl element, UnlinkedVariable serializedVariable) {
|
| element.type = buildLinkedType(serializedVariable.inferredTypeSlot,
|
| - _currentTypeParameterizedElement) ??
|
| - buildType(serializedVariable.type, _currentTypeParameterizedElement);
|
| + element.typeParameterContext) ??
|
| + buildType(serializedVariable.type, element.typeParameterContext);
|
| buildVariableInitializer(element, serializedVariable.initializer);
|
| }
|
|
|
|
|