| 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 |