OLD | NEW |
---|---|
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 interface TreeElements { | 5 interface TreeElements { |
6 Element operator[](Node node); | 6 Element operator[](Node node); |
7 Selector getSelector(Send send); | 7 Selector getSelector(Send send); |
8 } | 8 } |
9 | 9 |
10 class TreeElementMapping implements TreeElements { | 10 class TreeElementMapping implements TreeElements { |
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
837 | 837 |
838 visitNamedArgument(NamedArgument node) { | 838 visitNamedArgument(NamedArgument node) { |
839 visit(node.expression); | 839 visit(node.expression); |
840 } | 840 } |
841 | 841 |
842 visitSwitchStatement(SwitchStatement node) { | 842 visitSwitchStatement(SwitchStatement node) { |
843 compiler.unimplemented('switch', node: node); | 843 compiler.unimplemented('switch', node: node); |
844 } | 844 } |
845 | 845 |
846 visitTryStatement(TryStatement node) { | 846 visitTryStatement(TryStatement node) { |
847 compiler.unimplemented('try', node: node); | 847 visit(node.tryBlock); |
848 if (node.catchBlocks.isEmpty() && node.finallyBlock == null) { | |
849 error(node, MessageKind.NO_CATCH_NOR_FINALLY); | |
ahe
2012/02/07 19:10:35
The precise location here is:
node.getEndToken.ne
ngeoffray
2012/02/08 09:52:23
Added a TODO because there is no API for compiler
ahe
2012/02/08 10:19:27
Please file a bug and assign it to me.
Cheers,
Pe
ngeoffray
2012/02/08 10:23:21
Done: http://code.google.com/p/dart/issues/detail?
ahe
2012/02/08 10:27:12
Thank you. I can see that you put the issue number
| |
850 } | |
851 visit(node.catchBlocks); | |
852 visit(node.finallyBlock); | |
848 } | 853 } |
849 | 854 |
850 visitCatchBlock(CatchBlock node) { | 855 visitCatchBlock(CatchBlock node) { |
851 compiler.unimplemented('catch', node: node); | 856 Scope scope = new BlockScope(context); |
857 if (node.formals.isEmpty()) { | |
858 error(node, MessageKind.EMPTY_CATCH_DECLARATION); | |
859 } else if (!node.formals.nodes.tail.isEmpty() | |
860 && !node.formals.nodes.tail.tail.isEmpty()) { | |
861 error(node.formals.nodes.tail.tail.head, | |
ahe
2012/02/07 19:10:35
} else if (!node.formals.nodes.tail.isEmpty()) {
ngeoffray
2012/02/08 09:52:23
Done.
| |
862 MessageKind.TOO_MANY_CATCH_DECLARATIONS); | |
863 } | |
864 visitIn(node.formals, scope); | |
865 visitIn(node.block, scope); | |
852 } | 866 } |
853 | 867 |
854 visitTypedef(Typedef node) { | 868 visitTypedef(Typedef node) { |
855 compiler.unimplemented('typedef', node: node); | 869 compiler.unimplemented('typedef', node: node); |
856 } | 870 } |
857 } | 871 } |
858 | 872 |
859 class ClassResolverVisitor extends AbstractVisitor<Type> { | 873 class ClassResolverVisitor extends AbstractVisitor<Type> { |
860 Compiler compiler; | 874 Compiler compiler; |
861 Scope context; | 875 Scope context; |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1165 class TopScope extends Scope { | 1179 class TopScope extends Scope { |
1166 LibraryElement get library() => element; | 1180 LibraryElement get library() => element; |
1167 | 1181 |
1168 TopScope(LibraryElement library) : super(null, library); | 1182 TopScope(LibraryElement library) : super(null, library); |
1169 Element lookup(SourceString name) => library.find(name); | 1183 Element lookup(SourceString name) => library.find(name); |
1170 | 1184 |
1171 Element add(Element element) { | 1185 Element add(Element element) { |
1172 throw "Cannot add an element in the top scope"; | 1186 throw "Cannot add an element in the top scope"; |
1173 } | 1187 } |
1174 } | 1188 } |
OLD | NEW |