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 Type getType(TypeAnnotation annotation); | 8 Type getType(TypeAnnotation annotation); |
9 } | 9 } |
10 | 10 |
(...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 error(argument, MessageKind.INVALID_ARGUMENT_AFTER_NAMED); | 1043 error(argument, MessageKind.INVALID_ARGUMENT_AFTER_NAMED); |
1044 } | 1044 } |
1045 } | 1045 } |
1046 mapping.setSelector(node, new Selector.invocation(count, namedArguments)); | 1046 mapping.setSelector(node, new Selector.invocation(count, namedArguments)); |
1047 } | 1047 } |
1048 | 1048 |
1049 visitSend(Send node) { | 1049 visitSend(Send node) { |
1050 Element target = resolveSend(node); | 1050 Element target = resolveSend(node); |
1051 if (node.isOperator) { | 1051 if (node.isOperator) { |
1052 Operator op = node.selector.asOperator(); | 1052 Operator op = node.selector.asOperator(); |
1053 if (op.source.stringValue === 'is') { | 1053 if (op.source.stringValue === 'is' || op.source.stringValue === 'as') { |
1054 resolveTypeTest(node.arguments.head); | 1054 resolveTypeTest(node.arguments.head); |
1055 assert(node.arguments.tail.isEmpty()); | 1055 assert(node.arguments.tail.isEmpty()); |
1056 mapping.setSelector(node, Selector.BINARY_OPERATOR); | 1056 mapping.setSelector(node, Selector.BINARY_OPERATOR); |
1057 } else if (node.arguments.isEmpty()) { | 1057 } else if (node.arguments.isEmpty()) { |
1058 assert(op.token.kind !== PLUS_TOKEN); | 1058 assert(op.token.kind !== PLUS_TOKEN); |
1059 mapping.setSelector(node, Selector.UNARY_OPERATOR); | 1059 mapping.setSelector(node, Selector.UNARY_OPERATOR); |
1060 } else { | 1060 } else { |
1061 visit(node.argumentsNode); | 1061 visit(node.argumentsNode); |
1062 mapping.setSelector(node, Selector.BINARY_OPERATOR); | 1062 mapping.setSelector(node, Selector.BINARY_OPERATOR); |
1063 } | 1063 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1135 const SourceString('operator'), | 1135 const SourceString('operator'), |
1136 const SourceString('[]=')); | 1136 const SourceString('[]=')); |
1137 } else if (node.selector.asOperator() != null) { | 1137 } else if (node.selector.asOperator() != null) { |
1138 switch (name.stringValue) { | 1138 switch (name.stringValue) { |
1139 case '===': | 1139 case '===': |
1140 case '!==': | 1140 case '!==': |
1141 case '!': | 1141 case '!': |
1142 case '&&': | 1142 case '&&': |
1143 case '||': | 1143 case '||': |
1144 case 'is': | 1144 case 'is': |
| 1145 case 'as': |
1145 case '>>>': | 1146 case '>>>': |
1146 return null; | 1147 return null; |
1147 } | 1148 } |
1148 name = Elements.constructOperatorName( | 1149 name = Elements.constructOperatorName( |
1149 const SourceString('operator'), | 1150 const SourceString('operator'), |
1150 name, | 1151 name, |
1151 node.argumentsNode is Prefix); | 1152 node.argumentsNode is Prefix); |
1152 } | 1153 } |
1153 Selector selector = mapping.getSelector(node); | 1154 Selector selector = mapping.getSelector(node); |
1154 if (Selector.GETTER === selector) { | 1155 if (Selector.GETTER === selector) { |
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2093 | 2094 |
2094 TopScope(LibraryElement library) : super(null, library); | 2095 TopScope(LibraryElement library) : super(null, library); |
2095 Element lookup(SourceString name) { | 2096 Element lookup(SourceString name) { |
2096 return library.find(name); | 2097 return library.find(name); |
2097 } | 2098 } |
2098 | 2099 |
2099 Element add(Element newElement) { | 2100 Element add(Element newElement) { |
2100 throw "Cannot add an element in the top scope"; | 2101 throw "Cannot add an element in the top scope"; |
2101 } | 2102 } |
2102 } | 2103 } |
OLD | NEW |