OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart_printer_test; | 5 library dart_printer_test; |
6 | 6 |
7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
8 import 'package:expect/expect.dart'; | 8 import 'package:expect/expect.dart'; |
9 import 'package:compiler/src/constants/values.dart'; | 9 import 'package:compiler/src/constants/values.dart'; |
10 import 'package:compiler/src/dart_backend/backend_ast_nodes.dart'; | 10 import 'package:compiler/src/dart_backend/backend_ast_nodes.dart'; |
11 import 'package:compiler/src/dart_backend/backend_ast_to_frontend_ast.dart' | 11 import 'package:compiler/src/dart_backend/backend_ast_to_frontend_ast.dart' |
12 show TreePrinter; | 12 show TreePrinter; |
13 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; | 13 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; |
14 import 'package:compiler/src/diagnostics/messages.dart'; | 14 import 'package:compiler/src/diagnostics/messages.dart'; |
15 import 'package:compiler/src/diagnostics/spannable.dart' show Spannable; | 15 import 'package:compiler/src/diagnostics/spannable.dart' show Spannable; |
16 import 'package:compiler/src/parser/listener.dart'; | 16 import 'package:compiler/src/parser/listener.dart'; |
17 import 'package:compiler/src/parser/parser.dart'; | 17 import 'package:compiler/src/parser/parser.dart'; |
18 import 'package:compiler/src/scanner/scanner.dart'; | 18 import 'package:compiler/src/scanner/scanner.dart'; |
19 import 'package:compiler/src/tokens/token.dart'; | 19 import 'package:compiler/src/tokens/token.dart'; |
20 import 'package:compiler/src/tokens/token_constants.dart'; | 20 import 'package:compiler/src/tokens/token_constants.dart'; |
21 import 'package:compiler/src/io/source_file.dart'; | 21 import 'package:compiler/src/io/source_file.dart'; |
22 import 'package:compiler/src/string_validator.dart'; | 22 import 'package:compiler/src/string_validator.dart'; |
23 import 'package:compiler/src/tree/tree.dart' show DartString; | 23 import 'package:compiler/src/tree/tree.dart' show DartString; |
24 import 'package:compiler/src/tree/tree.dart' as tree; | 24 import 'package:compiler/src/tree/tree.dart' as tree; |
| 25 import '../options_helper.dart'; |
25 | 26 |
26 /// For debugging the [AstBuilder] stack. Prints information about [x]. | 27 /// For debugging the [AstBuilder] stack. Prints information about [x]. |
27 void show(x) { | 28 void show(x) { |
28 StringBuffer buf = new StringBuffer(); | 29 StringBuffer buf = new StringBuffer(); |
29 Unparser unparser = new Unparser(buf); | 30 Unparser unparser = new Unparser(buf); |
30 void unparse(x) { | 31 void unparse(x) { |
31 if (x is Expression) | 32 if (x is Expression) |
32 unparser.writeExpression(x); | 33 unparser.writeExpression(x); |
33 else if (x is TypeAnnotation) | 34 else if (x is TypeAnnotation) |
34 unparser.writeType(x); | 35 unparser.writeType(x); |
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 throw new Error(); | 667 throw new Error(); |
667 } | 668 } |
668 } | 669 } |
669 } | 670 } |
670 | 671 |
671 Expression parseExpression(String code) { | 672 Expression parseExpression(String code) { |
672 SourceFile file = new StringSourceFile.fromName('', code); | 673 SourceFile file = new StringSourceFile.fromName('', code); |
673 Scanner scan = new Scanner(file); | 674 Scanner scan = new Scanner(file); |
674 Token tok = scan.tokenize(); | 675 Token tok = scan.tokenize(); |
675 AstBuilder builder = new AstBuilder(); | 676 AstBuilder builder = new AstBuilder(); |
676 Parser parser = new Parser(builder); | 677 Parser parser = new Parser(builder, new MockParserOptions()); |
677 tok = parser.parseExpression(tok); | 678 tok = parser.parseExpression(tok); |
678 if (builder.stack.length != 1 || tok.kind != EOF_TOKEN) { | 679 if (builder.stack.length != 1 || tok.kind != EOF_TOKEN) { |
679 throw "Parse error in $code"; | 680 throw "Parse error in $code"; |
680 } | 681 } |
681 return builder.pop(); | 682 return builder.pop(); |
682 } | 683 } |
683 Statement parseStatement(String code) { | 684 Statement parseStatement(String code) { |
684 SourceFile file = new StringSourceFile.fromName('', code); | 685 SourceFile file = new StringSourceFile.fromName('', code); |
685 Scanner scan = new Scanner(file); | 686 Scanner scan = new Scanner(file); |
686 Token tok = scan.tokenize(); | 687 Token tok = scan.tokenize(); |
687 AstBuilder builder = new AstBuilder(); | 688 AstBuilder builder = new AstBuilder(); |
688 Parser parser = new Parser(builder); | 689 Parser parser = new Parser(builder, new MockParserOptions()); |
689 tok = parser.parseStatement(tok); | 690 tok = parser.parseStatement(tok); |
690 if (builder.stack.length != 1 || tok.kind != EOF_TOKEN) { | 691 if (builder.stack.length != 1 || tok.kind != EOF_TOKEN) { |
691 throw "Parse error in $code"; | 692 throw "Parse error in $code"; |
692 } | 693 } |
693 return builder.pop(); | 694 return builder.pop(); |
694 } | 695 } |
695 | 696 |
696 String unparseExpression(Expression exp) { | 697 String unparseExpression(Expression exp) { |
697 StringBuffer buf = new StringBuffer(); | 698 StringBuffer buf = new StringBuffer(); |
698 new Unparser(buf).writeExpression(exp); | 699 new Unparser(buf).writeExpression(exp); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 checkStatement("do while(x); while (y);"); | 980 checkStatement("do while(x); while (y);"); |
980 checkStatement("{do; while(x); while (y);}"); | 981 checkStatement("{do; while(x); while (y);}"); |
981 | 982 |
982 checkStatement('switch(x) { case 1: case 2: return y; }'); | 983 checkStatement('switch(x) { case 1: case 2: return y; }'); |
983 checkStatement('switch(x) { default: return y; }'); | 984 checkStatement('switch(x) { default: return y; }'); |
984 checkStatement('switch(x) { case 1: x=y; default: return y; }'); | 985 checkStatement('switch(x) { case 1: x=y; default: return y; }'); |
985 checkStatement('switch(x) { case 1: x=y; y=z; break; default: return y; }'); | 986 checkStatement('switch(x) { case 1: x=y; y=z; break; default: return y; }'); |
986 | 987 |
987 } | 988 } |
988 | 989 |
OLD | NEW |