| Index: pkg/analyzer/lib/src/summary/summarize_const_expr.dart
|
| diff --git a/pkg/analyzer/lib/src/summary/summarize_const_expr.dart b/pkg/analyzer/lib/src/summary/summarize_const_expr.dart
|
| index ea6f9a5caf401f9d34ce9686d99c6884ec9fd380..1dcef1619acf879a6f5e8e45c78614ce20b1b2a7 100644
|
| --- a/pkg/analyzer/lib/src/summary/summarize_const_expr.dart
|
| +++ b/pkg/analyzer/lib/src/summary/summarize_const_expr.dart
|
| @@ -46,7 +46,7 @@ abstract class AbstractConstExprSerializer {
|
| /**
|
| * See [UnlinkedConstBuilder.isInvalid].
|
| */
|
| - bool isInvalid = false;
|
| + bool isValidConst = true;
|
|
|
| /**
|
| * See [UnlinkedConstBuilder.operations].
|
| @@ -92,7 +92,7 @@ abstract class AbstractConstExprSerializer {
|
| try {
|
| _serialize(expr);
|
| } on StateError {
|
| - isInvalid = true;
|
| + isValidConst = false;
|
| }
|
| }
|
|
|
| @@ -136,10 +136,8 @@ abstract class AbstractConstExprSerializer {
|
| * serializer.
|
| */
|
| UnlinkedConstBuilder toBuilder() {
|
| - if (isInvalid) {
|
| - return new UnlinkedConstBuilder(isInvalid: true);
|
| - }
|
| return new UnlinkedConstBuilder(
|
| + isValidConst: isValidConst,
|
| operations: operations,
|
| assignmentOperators: assignmentOperators,
|
| ints: ints,
|
| @@ -225,6 +223,9 @@ abstract class AbstractConstExprSerializer {
|
| operations.add(UnlinkedConstOperation.pushReference);
|
| }
|
| } else if (expr is InstanceCreationExpression) {
|
| + if (!expr.isConst) {
|
| + isValidConst = false;
|
| + }
|
| serializeInstanceCreation(
|
| serializeConstructorName(
|
| expr.constructorName.type, expr.constructorName.name),
|
| @@ -251,6 +252,7 @@ abstract class AbstractConstExprSerializer {
|
| } else if (expr is ParenthesizedExpression) {
|
| _serialize(expr.expression);
|
| } else if (expr is IndexExpression) {
|
| + isValidConst = false;
|
| _serialize(expr.target);
|
| _serialize(expr.index);
|
| operations.add(UnlinkedConstOperation.extractIndex);
|
| @@ -282,6 +284,7 @@ abstract class AbstractConstExprSerializer {
|
| }
|
|
|
| void _serializeAssignment(AssignmentExpression expr) {
|
| + isValidConst = false;
|
| // Push the value.
|
| _serialize(expr.rightHandSide);
|
| // Push the assignment operator.
|
| @@ -407,6 +410,10 @@ abstract class AbstractConstExprSerializer {
|
| }
|
|
|
| void _serializeMethodInvocation(MethodInvocation invocation) {
|
| + if (invocation.target != null ||
|
| + invocation.methodName.name != 'identical') {
|
| + isValidConst = false;
|
| + }
|
| Expression target = invocation.target;
|
| SimpleIdentifier methodName = invocation.methodName;
|
| ArgumentList argumentList = invocation.argumentList;
|
| @@ -464,6 +471,7 @@ abstract class AbstractConstExprSerializer {
|
|
|
| void _serializePrefixPostfixIncDec(
|
| Expression operand, UnlinkedExprAssignOperator operator) {
|
| + isValidConst = false;
|
| assignmentOperators.add(operator);
|
| _pushAssignable(operand);
|
| }
|
|
|