| 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 part of js_backend; | 5 part of js_backend; |
| 6 | 6 |
| 7 abstract class _NamerName extends jsAst.Name { | 7 abstract class _NamerName extends jsAst.Name { |
| 8 int get _kind; | 8 int get _kind; |
| 9 _NamerName get _target => this; | 9 _NamerName get _target => this; |
| 10 | 10 |
| 11 String toString() { | 11 String toString() { |
| 12 if (DEBUG_MODE) { | 12 if (DEBUG_MODE) { |
| 13 return 'Name($key)'; | 13 return 'Name($key)'; |
| 14 } | 14 } |
| 15 throw new UnsupportedError("Cannot convert a name to a string"); | 15 throw new UnsupportedError("Cannot convert a name to a string"); |
| 16 } | 16 } |
| 17 } | 17 } |
| 18 | 18 |
| 19 enum _NamerNameKinds { | 19 enum _NamerNameKinds { StringBacked, Getter, Setter, Async, Compound, Token } |
| 20 StringBacked, | |
| 21 Getter, | |
| 22 Setter, | |
| 23 Async, | |
| 24 Compound, | |
| 25 Token | |
| 26 } | |
| 27 | 20 |
| 28 class StringBackedName extends _NamerName { | 21 class StringBackedName extends _NamerName { |
| 29 final String name; | 22 final String name; |
| 30 int get _kind => _NamerNameKinds.StringBacked.index; | 23 int get _kind => _NamerNameKinds.StringBacked.index; |
| 31 | 24 |
| 32 StringBackedName(this.name); | 25 StringBackedName(this.name); |
| 33 | 26 |
| 34 String get key => name; | 27 String get key => name; |
| 35 | 28 |
| 36 operator==(other) { | 29 operator ==(other) { |
| 37 if (other is _NameReference) other = other._target; | 30 if (other is _NameReference) other = other._target; |
| 38 if (identical(this, other)) return true; | 31 if (identical(this, other)) return true; |
| 39 return (other is StringBackedName) && other.name == name; | 32 return (other is StringBackedName) && other.name == name; |
| 40 } | 33 } |
| 41 | 34 |
| 42 int get hashCode => name.hashCode; | 35 int get hashCode => name.hashCode; |
| 43 | 36 |
| 44 int compareTo(_NamerName other) { | 37 int compareTo(_NamerName other) { |
| 45 other = other._target; | 38 other = other._target; |
| 46 if (other._kind != _kind) return other._kind - _kind; | 39 if (other._kind != _kind) return other._kind - _kind; |
| 47 return name.compareTo(other.name); | 40 return name.compareTo(other.name); |
| 48 } | 41 } |
| 49 } | 42 } |
| 50 | 43 |
| 51 abstract class _PrefixedName extends _NamerName implements jsAst.AstContainer { | 44 abstract class _PrefixedName extends _NamerName implements jsAst.AstContainer { |
| 52 final jsAst.Name prefix; | 45 final jsAst.Name prefix; |
| 53 final jsAst.Name base; | 46 final jsAst.Name base; |
| 54 int get _kind; | 47 int get _kind; |
| 55 | 48 |
| 56 Iterable<jsAst.Node> get containedNodes => [prefix, base]; | 49 Iterable<jsAst.Node> get containedNodes => [prefix, base]; |
| 57 | 50 |
| 58 _PrefixedName(this.prefix, this.base); | 51 _PrefixedName(this.prefix, this.base); |
| 59 | 52 |
| 60 String get name => prefix.name + base.name; | 53 String get name => prefix.name + base.name; |
| 61 | 54 |
| 62 String get key => prefix.key + base.key; | 55 String get key => prefix.key + base.key; |
| 63 | 56 |
| 64 bool operator==(other) { | 57 bool operator ==(other) { |
| 65 if (other is _NameReference) other = other._target; | 58 if (other is _NameReference) other = other._target; |
| 66 if (identical(this, other)) return true; | 59 if (identical(this, other)) return true; |
| 67 if (other is! _PrefixedName) return false; | 60 if (other is! _PrefixedName) return false; |
| 68 return other.base == base && other.prefix == prefix; | 61 return other.base == base && other.prefix == prefix; |
| 69 } | 62 } |
| 70 | 63 |
| 71 int get hashCode => base.hashCode * 13 + prefix.hashCode; | 64 int get hashCode => base.hashCode * 13 + prefix.hashCode; |
| 72 | 65 |
| 73 int compareTo(_NamerName other) { | 66 int compareTo(_NamerName other) { |
| 74 other = other._target; | 67 other = other._target; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 | 111 |
| 119 String get name { | 112 String get name { |
| 120 if (_cachedName == null) { | 113 if (_cachedName == null) { |
| 121 _cachedName = _parts.map((jsAst.Name name) => name.name).join(); | 114 _cachedName = _parts.map((jsAst.Name name) => name.name).join(); |
| 122 } | 115 } |
| 123 return _cachedName; | 116 return _cachedName; |
| 124 } | 117 } |
| 125 | 118 |
| 126 String get key => _parts.map((_NamerName name) => name.key).join(); | 119 String get key => _parts.map((_NamerName name) => name.key).join(); |
| 127 | 120 |
| 128 bool operator==(other) { | 121 bool operator ==(other) { |
| 129 if (other is _NameReference) other = other._target; | 122 if (other is _NameReference) other = other._target; |
| 130 if (identical(this, other)) return true; | 123 if (identical(this, other)) return true; |
| 131 if (other is! CompoundName) return false; | 124 if (other is! CompoundName) return false; |
| 132 if (other._parts.length != _parts.length) return false; | 125 if (other._parts.length != _parts.length) return false; |
| 133 for (int i = 0; i < _parts.length; ++i) { | 126 for (int i = 0; i < _parts.length; ++i) { |
| 134 if (other._parts[i] != _parts[i]) return false; | 127 if (other._parts[i] != _parts[i]) return false; |
| 135 } | 128 } |
| 136 return true; | 129 return true; |
| 137 } | 130 } |
| 138 | 131 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 int compareTo(_NamerName other) { | 174 int compareTo(_NamerName other) { |
| 182 other = other._target; | 175 other = other._target; |
| 183 if (other._kind != _kind) return other._kind - _kind; | 176 if (other._kind != _kind) return other._kind - _kind; |
| 184 TokenName otherToken = other; | 177 TokenName otherToken = other; |
| 185 return key.compareTo(otherToken.key); | 178 return key.compareTo(otherToken.key); |
| 186 } | 179 } |
| 187 | 180 |
| 188 markSeen(jsAst.TokenCounter counter) => _rc++; | 181 markSeen(jsAst.TokenCounter counter) => _rc++; |
| 189 | 182 |
| 190 @override | 183 @override |
| 191 bool operator==(other) { | 184 bool operator ==(other) { |
| 192 if (other is _NameReference) other = other._target; | 185 if (other is _NameReference) other = other._target; |
| 193 if (identical(this, other)) return true; | 186 if (identical(this, other)) return true; |
| 194 return false; | 187 return false; |
| 195 } | 188 } |
| 196 | 189 |
| 197 @override | 190 @override |
| 198 int get hashCode => super.hashCode; | 191 int get hashCode => super.hashCode; |
| 199 | 192 |
| 200 finalize() { | 193 finalize() { |
| 201 assert(invariant(NO_LOCATION_SPANNABLE, !isFinalized, | 194 assert(invariant(NO_LOCATION_SPANNABLE, !isFinalized, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 213 Iterable<jsAst.Node> get containedNodes => [_target]; | 206 Iterable<jsAst.Node> get containedNodes => [_target]; |
| 214 | 207 |
| 215 _NameReference(this._target); | 208 _NameReference(this._target); |
| 216 | 209 |
| 217 String get name => _target.name; | 210 String get name => _target.name; |
| 218 | 211 |
| 219 @override | 212 @override |
| 220 int compareTo(_NamerName other) => _target.compareTo(other); | 213 int compareTo(_NamerName other) => _target.compareTo(other); |
| 221 | 214 |
| 222 @override | 215 @override |
| 223 bool operator==(other) => _target == other; | 216 bool operator ==(other) => _target == other; |
| 224 | 217 |
| 225 @override | 218 @override |
| 226 int get hashCode => _target.hashCode; | 219 int get hashCode => _target.hashCode; |
| 227 } | 220 } |
| OLD | NEW |