Skip to content

Commit 472bf29

Browse files
Disable type inference: Don't generate shadow wrappers
Change-Id: Ibab49c3614f5e54fe15bdcb135f25db7070d84ca Reviewed-on: https://dart-review.googlesource.com/c/86342 Reviewed-by: Dmitry Stefantsov <[email protected]>
1 parent f504d61 commit 472bf29

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
274274

275275
bool get legacyMode => library.loader.target.legacyMode;
276276

277+
@override
277278
bool get disableTypeInference => library.disableTypeInference;
278279

279280
bool get inConstructor {
@@ -4859,19 +4860,22 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
48594860

48604861
@override
48614862
Expression wrapSyntheticExpression(Expression desugared, int charOffset) {
4863+
if (disableTypeInference) return desugared;
48624864
return shadow.SyntheticWrapper.wrapSyntheticExpression(desugared)
48634865
..fileOffset = charOffset;
48644866
}
48654867

48664868
@override
48674869
Expression desugarSyntheticExpression(Expression node) {
4870+
if (disableTypeInference) return node;
48684871
shadow.SyntheticExpressionJudgment shadowNode = node;
48694872
return shadowNode.desugared;
48704873
}
48714874

48724875
@override
48734876
Expression wrapInvalidConstructorInvocation(Expression desugared,
48744877
Member constructor, Arguments arguments, int charOffset) {
4878+
if (disableTypeInference) return desugared;
48754879
return shadow.SyntheticWrapper.wrapInvalidConstructorInvocation(
48764880
desugared, constructor, arguments)
48774881
..fileOffset = charOffset;
@@ -4880,13 +4884,15 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
48804884
@override
48814885
Expression wrapInvalidWrite(
48824886
Expression desugared, Expression expression, int charOffset) {
4887+
if (disableTypeInference) return desugared;
48834888
return shadow.SyntheticWrapper.wrapInvalidWrite(desugared, expression)
48844889
..fileOffset = charOffset;
48854890
}
48864891

48874892
@override
48884893
Expression wrapUnresolvedTargetInvocation(
48894894
Expression desugared, Arguments arguments, int charOffset) {
4895+
if (disableTypeInference) return desugared;
48904896
return shadow.SyntheticWrapper.wrapUnresolvedTargetInvocation(
48914897
desugared, arguments)
48924898
..fileOffset = charOffset;
@@ -4895,6 +4901,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
48954901
@override
48964902
Expression wrapUnresolvedVariableAssignment(
48974903
Expression desugared, bool isCompound, Expression rhs, int charOffset) {
4904+
if (disableTypeInference) return desugared;
48984905
return shadow.SyntheticWrapper.wrapUnresolvedVariableAssignment(
48994906
desugared, isCompound, rhs)
49004907
..fileOffset = charOffset;

pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ abstract class ExpressionGeneratorHelper implements InferenceHelper {
5757

5858
Forest get forest;
5959

60+
bool get disableTypeInference;
61+
6062
Constructor lookupConstructor(Name name, {bool isSuper});
6163

6264
Expression toValue(node);

pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ abstract class KernelExpressionGenerator implements ExpressionGenerator {
284284

285285
Expression _finish(
286286
Expression body, ComplexAssignmentJudgment complexAssignment) {
287-
if (complexAssignment != null) {
287+
if (!helper.disableTypeInference && complexAssignment != null) {
288288
complexAssignment.desugared = body;
289289
return complexAssignment;
290290
} else {
@@ -578,6 +578,7 @@ class KernelNullAwarePropertyAccessGenerator extends KernelGenerator
578578
..fileOffset = offset;
579579
if (complexAssignment != null) {
580580
body = makeLet(receiver, nullAwareGuard);
581+
if (helper.disableTypeInference) return body;
581582
shadow.PropertyAssignmentJudgment kernelPropertyAssign =
582583
complexAssignment;
583584
kernelPropertyAssign.nullAwareGuard = nullAwareGuard;

0 commit comments

Comments
 (0)