| OLD | NEW | 
|---|
| 1 // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dart2js.selector; | 5 library dart2js.selector; | 
| 6 | 6 | 
| 7 import '../common.dart'; | 7 import '../common.dart'; | 
| 8 import '../common/names.dart' show | 8 import '../common/names.dart' show | 
| 9     Names; | 9     Names; | 
| 10 import '../elements/elements.dart' show | 10 import '../elements/elements.dart' show | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 55   List<String> get namedArguments => callStructure.namedArguments; | 55   List<String> get namedArguments => callStructure.namedArguments; | 
| 56 | 56 | 
| 57   String get name => memberName.text; | 57   String get name => memberName.text; | 
| 58 | 58 | 
| 59   LibraryElement get library => memberName.library; | 59   LibraryElement get library => memberName.library; | 
| 60 | 60 | 
| 61   Selector.internal(this.kind, | 61   Selector.internal(this.kind, | 
| 62                     this.memberName, | 62                     this.memberName, | 
| 63                     this.callStructure, | 63                     this.callStructure, | 
| 64                     this.hashCode) { | 64                     this.hashCode) { | 
| 65     assert(kind == SelectorKind.INDEX || | 65     assert(invariant(NO_LOCATION_SPANNABLE, | 
| 66            (memberName != Names.INDEX_NAME && | 66         kind == SelectorKind.INDEX || | 
| 67             memberName != Names.INDEX_SET_NAME)); | 67         (memberName != Names.INDEX_NAME && | 
| 68     assert(kind == SelectorKind.OPERATOR || | 68          memberName != Names.INDEX_SET_NAME), | 
| 69            kind == SelectorKind.INDEX || | 69         message: "kind=$kind,memberName=$memberName," | 
| 70            !Elements.isOperatorName(memberName.text) || | 70                  "callStructure:$callStructure")); | 
| 71            identical(memberName.text, '??')); | 71     assert(invariant(NO_LOCATION_SPANNABLE, | 
| 72     assert(kind == SelectorKind.CALL || | 72         kind == SelectorKind.OPERATOR || | 
| 73            kind == SelectorKind.GETTER || | 73         kind == SelectorKind.INDEX || | 
| 74            kind == SelectorKind.SETTER || | 74         !Elements.isOperatorName(memberName.text) || | 
| 75            Elements.isOperatorName(memberName.text) || | 75         memberName.text == '??', | 
| 76            identical(memberName.text, '??')); | 76         message: "kind=$kind,memberName=$memberName," | 
|  | 77                  "callStructure:$callStructure")); | 
|  | 78     assert(invariant(NO_LOCATION_SPANNABLE, | 
|  | 79         kind == SelectorKind.CALL || | 
|  | 80         kind == SelectorKind.GETTER || | 
|  | 81         kind == SelectorKind.SETTER || | 
|  | 82         Elements.isOperatorName(memberName.text) || | 
|  | 83         memberName.text == '??', | 
|  | 84         message: "kind=$kind,memberName=$memberName," | 
|  | 85                  "callStructure:$callStructure")); | 
| 77   } | 86   } | 
| 78 | 87 | 
| 79   // TODO(johnniwinther): Extract caching. | 88   // TODO(johnniwinther): Extract caching. | 
| 80   static Map<int, List<Selector>> canonicalizedValues = | 89   static Map<int, List<Selector>> canonicalizedValues = | 
| 81       new Map<int, List<Selector>>(); | 90       new Map<int, List<Selector>>(); | 
| 82 | 91 | 
| 83   factory Selector(SelectorKind kind, | 92   factory Selector(SelectorKind kind, | 
| 84                    Name name, | 93                    Name name, | 
| 85                    CallStructure callStructure) { | 94                    CallStructure callStructure) { | 
| 86     // TODO(johnniwinther): Maybe use equality instead of implicit hashing. | 95     // TODO(johnniwinther): Maybe use equality instead of implicit hashing. | 
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 278     // Add bits from the call structure. | 287     // Add bits from the call structure. | 
| 279     return Hashing.mixHashCodeBits(hash, callStructure.hashCode); | 288     return Hashing.mixHashCodeBits(hash, callStructure.hashCode); | 
| 280   } | 289   } | 
| 281 | 290 | 
| 282   String toString() { | 291   String toString() { | 
| 283     return 'Selector($kind, $name, ${callStructure.structureToString()})'; | 292     return 'Selector($kind, $name, ${callStructure.structureToString()})'; | 
| 284   } | 293   } | 
| 285 | 294 | 
| 286   Selector toCallSelector() => new Selector.callClosureFrom(this); | 295   Selector toCallSelector() => new Selector.callClosureFrom(this); | 
| 287 } | 296 } | 
| OLD | NEW | 
|---|