Chromium Code Reviews| Index: dart/frog/leg/scanner/scanner_task.dart |
| diff --git a/dart/frog/leg/scanner/scanner_task.dart b/dart/frog/leg/scanner/scanner_task.dart |
| index 76072b368d69e529da41e67f4b183a81ffd01e24..4d9642ab38b1e6773dbe26085b6c1094da14119c 100644 |
| --- a/dart/frog/leg/scanner/scanner_task.dart |
| +++ b/dart/frog/leg/scanner/scanner_task.dart |
| @@ -23,7 +23,22 @@ class ScannerTask extends CompilerTask { |
| Link<Element> scanElements(CompilationUnitElement compilationUnit) { |
| Script script = compilationUnit.script; |
| - Token tokens = new StringScanner(script.text).tokenize(); |
| + Token tokens; |
| + try { |
| + tokens = new StringScanner(script.text).tokenize(); |
| + } catch (MalformedInputException ex) { |
| + Token token; |
| + var message; |
| + if (ex.message is int) { |
| + token = new Token(EOF_INFO, ex.message); |
| + message = 'unexpected character'; |
| + } else { |
| + token = new Token(EOF_INFO, 0); |
| + message = ex.message; |
| + } |
| + compiler.cancel(message, token: token); |
| + throw 'unrecoverable error'; |
|
karlklose
2012/01/17 16:54:36
Compiler.cancel should terminate the compilation,
|
| + } |
| ElementListener listener = new ElementListener(compiler, compilationUnit); |
| PartialParser parser = new PartialParser(listener); |
| parser.parseUnit(tokens); |