Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1643)

Unified Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 2682553002: Fix lingering switch statement test failures. (Closed)
Patch Set: associateNode Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/kernel_visitor.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/resolution/members.dart
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
index 8644d31efde6798b5217772ab86f9c0d38f47a29..e2c8b91da449e3b8953ac6a33b0a3af9de9c4fbe 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -4601,6 +4601,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
JumpTarget breakElement = getOrDefineTarget(node);
Map<String, LabelDefinition> continueLabels = <String, LabelDefinition>{};
+ Set<SwitchCase> switchCasesWithContinues = new Set<SwitchCase>();
Link<Node> cases = node.cases.nodes;
while (!cases.isEmpty) {
SwitchCase switchCase = cases.head;
@@ -4668,12 +4669,22 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
node.cases.accept(this);
statementScope.exitSwitch();
+ continueLabels.forEach((String key, LabelDefinition label) {
+ if (label.isContinueTarget) {
+ JumpTarget targetElement = label.target;
+ SwitchCase switchCase = targetElement.statement;
+ switchCasesWithContinues.add(switchCase);
+ }
+ });
+
// Clean-up unused labels.
continueLabels.forEach((String key, LabelDefinition label) {
if (!label.isContinueTarget) {
JumpTarget targetElement = label.target;
SwitchCase switchCase = targetElement.statement;
- registry.undefineTarget(switchCase);
+ if (!switchCasesWithContinues.contains(switchCase)) {
+ registry.undefineTarget(switchCase);
+ }
registry.undefineLabel(label.label);
}
});
« no previous file with comments | « pkg/compiler/lib/src/kernel/kernel_visitor.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698