[dartdevc] Clearing labeled statement caches before entering inline JS while statements.

Change-Id: I249913cebba553b8fad8a7646688807a968c2e85
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180443
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Mark Zhou <markzipan@google.com>
This commit is contained in:
Mark Zhou 2021-01-21 23:55:57 +00:00 committed by commit-bot@chromium.org
parent e8b7fe9ca2
commit 0d275a6b7c

View file

@ -3989,7 +3989,12 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
[_visitExpression(node.iterable)]);
var iter = _emitTemporaryId('iter');
return js.statement(
var savedContinueTargets = _currentContinueTargets;
var savedBreakTargets = _currentBreakTargets;
_currentContinueTargets = <LabeledStatement>[];
_currentBreakTargets = <LabeledStatement>[];
var awaitForStmt = js.statement(
'{'
' let # = #;'
' try {'
@ -4007,6 +4012,9 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
js_ast.Yield(js.call('#.cancel()', iter))
..sourceInformation = _nodeStart(node.variable)
]);
_currentContinueTargets = savedContinueTargets;
_currentBreakTargets = savedBreakTargets;
return awaitForStmt;
}
@override