| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_helper; | 5 part of _js_helper; |
| 6 | 6 |
| 7 setRuntimeTypeInfo(target, typeInfo) { | 7 setRuntimeTypeInfo(target, typeInfo) { |
| 8 assert(typeInfo == null || isJsArray(typeInfo)); | 8 assert(typeInfo == null || isJsArray(typeInfo)); |
| 9 // We have to check for null because factories may return null. | 9 // We have to check for null because factories may return null. |
| 10 if (target != null) JS('var', r'#.$builtinTypeInfo = #', target, typeInfo); | 10 if (target != null) JS('var', r'#.$builtinTypeInfo = #', target, typeInfo); |
| 11 } | 11 } |
| 12 | 12 |
| 13 getRuntimeTypeInfo(target) { | 13 getRuntimeTypeInfo(target) { |
| 14 if (target == null) return null; | 14 if (target == null) return null; |
| 15 return JS('var', r'#.$builtinTypeInfo', target); | 15 return JS('var', r'#.$builtinTypeInfo', target); |
| 16 } | 16 } |
| 17 | 17 |
| 18 getRuntimeTypeArgument(target, substitution, index) { | 18 getRuntimeTypeArgument(target, substitution, index) { |
| 19 var arguments = substitute(substitution, getRuntimeTypeInfo(target)); | 19 var arguments = substitute(substitution, getRuntimeTypeInfo(target)); |
| 20 return (arguments == null) ? null : getField(arguments, index); | 20 return (arguments == null) ? null : getField(arguments, index); |
| 21 } | 21 } |
| 22 | 22 |
| 23 class TypeImpl implements Type { | 23 class TypeImpl implements Type { |
| 24 final String typeName; | 24 final String _typeName; |
| 25 TypeImpl(this.typeName); | 25 |
| 26 toString() => typeName; | 26 TypeImpl(this._typeName); |
| 27 int get hashCode => typeName.hashCode; | 27 |
| 28 toString() => _typeName; |
| 29 |
| 30 // TODO(ahe): This is a poor hashCode as it collides with its name. |
| 31 int get hashCode => _typeName.hashCode; |
| 32 |
| 28 bool operator ==(other) { | 33 bool operator ==(other) { |
| 29 if (other is !TypeImpl) return false; | 34 return (other is TypeImpl) && _typeName == other._typeName; |
| 30 return typeName == other.typeName; | |
| 31 } | 35 } |
| 32 } | 36 } |
| 33 | 37 |
| 34 String getClassName(var object) { | 38 String getClassName(var object) { |
| 35 return JS('String', r'#.constructor.builtin$cls', getInterceptor(object)); | 39 return JS('String', r'#.constructor.builtin$cls', getInterceptor(object)); |
| 36 } | 40 } |
| 37 | 41 |
| 38 String getRuntimeTypeAsString(List runtimeType) { | 42 String getRuntimeTypeAsString(List runtimeType) { |
| 39 String className = getConstructorName(runtimeType[0]); | 43 String className = getConstructorName(runtimeType[0]); |
| 40 return '$className${joinArguments(runtimeType, 1)}'; | 44 return '$className${joinArguments(runtimeType, 1)}'; |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 // of [t]. | 239 // of [t]. |
| 236 if ((!isJsArray(s) && JS('bool', '# == null', substitution)) || | 240 if ((!isJsArray(s) && JS('bool', '# == null', substitution)) || |
| 237 !isJsArray(t)) { | 241 !isJsArray(t)) { |
| 238 return true; | 242 return true; |
| 239 } | 243 } |
| 240 // Recursively check the type arguments. | 244 // Recursively check the type arguments. |
| 241 return checkArguments(substitution, getArguments(s), getArguments(t)); | 245 return checkArguments(substitution, getArguments(s), getArguments(t)); |
| 242 } | 246 } |
| 243 | 247 |
| 244 createRuntimeType(String name) => new TypeImpl(name); | 248 createRuntimeType(String name) => new TypeImpl(name); |
| OLD | NEW |