mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 09:43:18 +00:00
Avoid setting node.staticType twice in PostfixExpressionResolver.
Also, add an assertion to `SharedInferenceLogWriter` to prevent accidentally setting static types more than once in the future. Change-Id: If96a40c5490d91b67e061158b2b92af90c05d4d2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/372602 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
63de2edc74
commit
7d649303c2
|
@ -675,7 +675,11 @@ abstract class SharedInferenceLogWriterImpl<Type extends SharedType,
|
|||
expectedKind: StateKind.expression);
|
||||
addEvent(
|
||||
new Event(message: 'EXPRESSION ${describe(expression)} HAS NO TYPE'));
|
||||
(state as ExpressionState).typeRecorded = true;
|
||||
ExpressionState state = this.state as ExpressionState;
|
||||
if (state.typeRecorded) {
|
||||
fail('A type (or lack thereof) was already recorded for this expression');
|
||||
}
|
||||
state.typeRecorded = true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -736,7 +740,11 @@ abstract class SharedInferenceLogWriterImpl<Type extends SharedType,
|
|||
expectedKind: StateKind.expression);
|
||||
addEvent(
|
||||
new Event(message: 'STATIC TYPE OF ${describe(expression)} IS $type'));
|
||||
(state as ExpressionState).typeRecorded = true;
|
||||
ExpressionState state = this.state as ExpressionState;
|
||||
if (state.typeRecorded) {
|
||||
fail('A type (or lack thereof) was already recorded for this expression');
|
||||
}
|
||||
state.typeRecorded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -179,9 +179,9 @@ class PostfixExpressionResolver {
|
|||
?.write(node, element, operatorReturnType, null);
|
||||
}
|
||||
}
|
||||
node.recordStaticType(receiverType, resolver: _resolver);
|
||||
}
|
||||
|
||||
node.recordStaticType(receiverType, resolver: _resolver);
|
||||
_resolver.nullShortingTermination(node);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue