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 1123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1134 error(argument, MessageKind.INVALID_ARGUMENT_AFTER_NAMED); | 1134 error(argument, MessageKind.INVALID_ARGUMENT_AFTER_NAMED); |
1135 } | 1135 } |
1136 } | 1136 } |
1137 mapping.setSelector(node, new Selector.invocation(count, namedArguments)); | 1137 mapping.setSelector(node, new Selector.invocation(count, namedArguments)); |
1138 } | 1138 } |
1139 | 1139 |
1140 visitSend(Send node) { | 1140 visitSend(Send node) { |
1141 Element target = resolveSend(node); | 1141 Element target = resolveSend(node); |
1142 if (node.isOperator) { | 1142 if (node.isOperator) { |
1143 Operator op = node.selector.asOperator(); | 1143 Operator op = node.selector.asOperator(); |
1144 if (op.source.stringValue === 'is') { | 1144 if (op.source.stringValue === 'is' || op.source.stringValue === 'as') { |
1145 resolveTypeTest(node.arguments.head); | 1145 resolveTypeTest(node.arguments.head); |
1146 assert(node.arguments.tail.isEmpty()); | 1146 assert(node.arguments.tail.isEmpty()); |
1147 mapping.setSelector(node, Selector.BINARY_OPERATOR); | 1147 mapping.setSelector(node, Selector.BINARY_OPERATOR); |
1148 } else if (node.arguments.isEmpty()) { | 1148 } else if (node.arguments.isEmpty()) { |
1149 assert(op.token.kind !== PLUS_TOKEN); | 1149 assert(op.token.kind !== PLUS_TOKEN); |
1150 mapping.setSelector(node, Selector.UNARY_OPERATOR); | 1150 mapping.setSelector(node, Selector.UNARY_OPERATOR); |
1151 } else { | 1151 } else { |
1152 visit(node.argumentsNode); | 1152 visit(node.argumentsNode); |
1153 mapping.setSelector(node, Selector.BINARY_OPERATOR); | 1153 mapping.setSelector(node, Selector.BINARY_OPERATOR); |
1154 } | 1154 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1226 const SourceString('operator'), | 1226 const SourceString('operator'), |
1227 const SourceString('[]=')); | 1227 const SourceString('[]=')); |
1228 } else if (node.selector.asOperator() != null) { | 1228 } else if (node.selector.asOperator() != null) { |
1229 switch (name.stringValue) { | 1229 switch (name.stringValue) { |
1230 case '===': | 1230 case '===': |
1231 case '!==': | 1231 case '!==': |
1232 case '!': | 1232 case '!': |
1233 case '&&': | 1233 case '&&': |
1234 case '||': | 1234 case '||': |
1235 case 'is': | 1235 case 'is': |
| 1236 case 'as': |
1236 case '>>>': | 1237 case '>>>': |
1237 return null; | 1238 return null; |
1238 } | 1239 } |
1239 name = Elements.constructOperatorName( | 1240 name = Elements.constructOperatorName( |
1240 const SourceString('operator'), | 1241 const SourceString('operator'), |
1241 name, | 1242 name, |
1242 node.argumentsNode is Prefix); | 1243 node.argumentsNode is Prefix); |
1243 } | 1244 } |
1244 Selector selector = mapping.getSelector(node); | 1245 Selector selector = mapping.getSelector(node); |
1245 if (Selector.GETTER === selector) { | 1246 if (Selector.GETTER === selector) { |
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2184 | 2185 |
2185 TopScope(LibraryElement library) : super(null, library); | 2186 TopScope(LibraryElement library) : super(null, library); |
2186 Element lookup(SourceString name) { | 2187 Element lookup(SourceString name) { |
2187 return library.find(name); | 2188 return library.find(name); |
2188 } | 2189 } |
2189 | 2190 |
2190 Element add(Element newElement) { | 2191 Element add(Element newElement) { |
2191 throw "Cannot add an element in the top scope"; | 2192 throw "Cannot add an element in the top scope"; |
2192 } | 2193 } |
2193 } | 2194 } |
OLD | NEW |