| 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 7075945a53e42d525b27c6102acdb6ed9c5c22e2..56102d890ce57ce3f3b7651cd3c0dd4a673f989f 100644
|
| --- a/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| +++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| @@ -1312,12 +1312,32 @@ class _LibraryResynthesizer {
|
| ParameterElement buildParameter(UnlinkedParam serializedParameter) {
|
| ParameterElementImpl parameterElement;
|
| if (serializedParameter.isInitializingFormal) {
|
| - parameterElement = new FieldFormalParameterElementImpl(
|
| - serializedParameter.name, serializedParameter.nameOffset)
|
| - ..field = fields[serializedParameter.name];
|
| + FieldFormalParameterElementImpl initializingParameter;
|
| + if (serializedParameter.defaultValue != null) {
|
| + DefaultFieldFormalParameterElementImpl defaultParameter =
|
| + new DefaultFieldFormalParameterElementImpl(
|
| + serializedParameter.name, serializedParameter.nameOffset);
|
| + initializingParameter = defaultParameter;
|
| + defaultParameter.constantInitializer =
|
| + _buildConstExpression(serializedParameter.defaultValue);
|
| + } else {
|
| + initializingParameter = new FieldFormalParameterElementImpl(
|
| + serializedParameter.name, serializedParameter.nameOffset);
|
| + }
|
| + parameterElement = initializingParameter;
|
| + initializingParameter.field = fields[serializedParameter.name];
|
| } else {
|
| - parameterElement = new ParameterElementImpl(
|
| - serializedParameter.name, serializedParameter.nameOffset);
|
| + if (serializedParameter.defaultValue != null) {
|
| + DefaultParameterElementImpl defaultParameter =
|
| + new DefaultParameterElementImpl(
|
| + serializedParameter.name, serializedParameter.nameOffset);
|
| + parameterElement = defaultParameter;
|
| + defaultParameter.constantInitializer =
|
| + _buildConstExpression(serializedParameter.defaultValue);
|
| + } else {
|
| + parameterElement = new ParameterElementImpl(
|
| + serializedParameter.name, serializedParameter.nameOffset);
|
| + }
|
| }
|
| if (serializedParameter.isFunctionTyped) {
|
| FunctionElementImpl parameterTypeElement =
|
| @@ -1467,10 +1487,8 @@ class _LibraryResynthesizer {
|
| new ConstTopLevelVariableElementImpl(
|
| serializedVariable.name, serializedVariable.nameOffset);
|
| element = constElement;
|
| - // TODO(scheglov) share const builder?
|
| - _ConstExprBuilder builder =
|
| - new _ConstExprBuilder(this, serializedVariable.constExpr);
|
| - constElement.constantInitializer = builder.build();
|
| + constElement.constantInitializer =
|
| + _buildConstExpression(serializedVariable.constExpr);
|
| } else {
|
| element = new TopLevelVariableElementImpl(
|
| serializedVariable.name, serializedVariable.nameOffset);
|
| @@ -1479,8 +1497,17 @@ class _LibraryResynthesizer {
|
| unitHolder.addTopLevelVariable(element);
|
| buildImplicitAccessors(element, unitHolder);
|
| } else {
|
| - FieldElementImpl element = new FieldElementImpl(
|
| - serializedVariable.name, serializedVariable.nameOffset);
|
| + FieldElementImpl element;
|
| + if (serializedVariable.constExpr != null) {
|
| + ConstFieldElementImpl constElement = new ConstFieldElementImpl(
|
| + serializedVariable.name, serializedVariable.nameOffset);
|
| + element = constElement;
|
| + constElement.constantInitializer =
|
| + _buildConstExpression(serializedVariable.constExpr);
|
| + } else {
|
| + element = new FieldElementImpl(
|
| + serializedVariable.name, serializedVariable.nameOffset);
|
| + }
|
| buildVariableCommonParts(element, serializedVariable);
|
| element.static = serializedVariable.isStatic;
|
| holder.addField(element);
|
| @@ -1697,6 +1724,10 @@ class _LibraryResynthesizer {
|
| referenceInfos = null;
|
| }
|
|
|
| + Expression _buildConstExpression(UnlinkedConst uc) {
|
| + return new _ConstExprBuilder(this, uc).build();
|
| + }
|
| +
|
| /**
|
| * Return the new handle of the `String.length` getter element.
|
| */
|
|
|