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

Unified Diff: lib/kernel_visitor.dart

Issue 2205263002: Implement fall-through errors. (Closed) Base URL: git@github.com:dart-lang/rasta.git@errors
Patch Set: Created 4 years, 4 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
Index: lib/kernel_visitor.dart
diff --git a/lib/kernel_visitor.dart b/lib/kernel_visitor.dart
index c536447dce9978f57303a7aeaf4a0de0b2aa8a43..395c9b93625be12ed5a9f480e3c09409bb1c5010 100644
--- a/lib/kernel_visitor.dart
+++ b/lib/kernel_visitor.dart
@@ -176,6 +176,9 @@ import 'kernel.dart' show
ConstructorTarget,
Kernel;
+import 'kernel/fall_through_visitor.dart' show
+ fallsThrough;
+
/// Translates dart2js AST nodes [Node] into Kernel IR [ir.TreeNode].
///
/// Most methods in this class have a prefix that follows these conventions:
@@ -1042,6 +1045,14 @@ class KernelVisitor extends Object
hasVariableDeclaration = true;
}
}
+ if (statements.isEmpty || fallsThrough(statements.last)) {
+ statements.add(
+ new ir.ExpressionStatement(
+ new ir.Throw(
+ new ir.StaticInvocation(
+ kernel.getFallThroughErrorBuilder(),
+ new ir.Arguments.empty()))));
+ }
ir.Statement body;
if (!hasVariableDeclaration && statements.length == 1) {
body = statements.single;

Powered by Google App Engine
This is Rietveld 408576698