Chromium Code Reviews| Index: gen.dart |
| =================================================================== |
| --- gen.dart (revision 839) |
| +++ gen.dart (working copy) |
| @@ -1340,6 +1340,10 @@ |
| for (int i=0; i < case_.cases.length; i++) { |
| var expr = case_.cases[i]; |
| if (expr == null) { |
| + // Default can only be the last case. |
| + if (i < case_.cases.length - 1) { |
| + world.error('default clause must be the last case', case_.span); |
| + } |
| writer.writeln('default:'); |
| } else { |
| var value = visitValue(expr); |
| @@ -1350,6 +1354,14 @@ |
| for (var stmt in case_.statements) { |
| stmt.visit(this); |
|
jimhug
2011/10/27 17:45:11
This needs to do some sort of minimal checking for
Emily Fortuna
2011/10/27 17:59:04
Done in the next CL.
|
| } |
| + if (case_ != node.cases[node.cases.length - 1]) { |
| + var span = case_.statements[case_.statements.length - 1].span; |
| + //TODO(efortuna): This error message isn't 100% correct because |
| + // constructors are not being built correctly. Check back when I've |
| + // fixed constructors. |
| + writer.writeln('\$throw(new FallThroughError("${span.file.filename}",' + |
| + ' ${span.file.getLine(span.start)}))'); |
| + } |
| writer.exitBlock(''); |
| _popBlock(); |
| } |