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

Unified Diff: pkg/kernel/lib/verifier.dart

Issue 2746923002: Implement nested switches and missing switch continue targets. (Closed)
Patch Set: Long line. Created 3 years, 9 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/front_end/lib/src/fasta/testing/kernel_chain.dart ('k') | tests/co19/co19-kernel.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/lib/verifier.dart
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart
index b3675b319d863850883aad32df81f8808a38204b..5de5288050a1f34662a64a0b0d64b456eb98626d 100644
--- a/pkg/kernel/lib/verifier.dart
+++ b/pkg/kernel/lib/verifier.dart
@@ -31,7 +31,9 @@ class VerificationError {
return "$file:${location.line}:${location.column}: Verification error:"
" $details";
} else {
- return "Verification error: $details\nContext: '$context'.\nNode: '$node'.";
+ return "Verification error: $details\n"
+ "Context: '$context'.\n"
+ "Node: '$node'.";
}
}
}
@@ -430,6 +432,21 @@ class VerifyingVisitor extends RecursiveVisitor {
}
@override
+ visitContinueSwitchStatement(ContinueSwitchStatement node) {
+ if (node.target == null) {
+ problem(node, "No target.");
+ } else if (node.target.parent == null) {
+ problem(node, "Target has no parent.");
+ } else {
+ SwitchStatement statement = node.target.parent;
+ for (SwitchCase switchCase in statement.cases) {
+ if (switchCase == node.target) return;
+ }
+ problem(node, "Switch case isn't child of parent.");
+ }
+ }
+
+ @override
defaultMemberReference(Member node) {
if (node.transformerFlags & TransformerFlag.seenByVerifier == 0) {
problem(
« no previous file with comments | « pkg/front_end/lib/src/fasta/testing/kernel_chain.dart ('k') | tests/co19/co19-kernel.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698