| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 class Type implements Named, Hashable { | 5 class Type implements Named, Hashable { |
| 6 final String name; | 6 final String name; |
| 7 bool isTested; | 7 bool isTested; |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * For core types (int, String, etc) this is the generated type assertion | 10 * For core types (int, String, etc) this is the generated type assertion |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 DefinedType get genericType() => this; | 101 DefinedType get genericType() => this; |
| 102 | 102 |
| 103 // TODO(jmesserly): what should these do for ParameterType? | 103 // TODO(jmesserly): what should these do for ParameterType? |
| 104 List<Type> get interfaces() => null; | 104 List<Type> get interfaces() => null; |
| 105 Type get parent() => null; | 105 Type get parent() => null; |
| 106 | 106 |
| 107 Map<String, Member> getAllMembers() => {}; | 107 Map<String, Member> getAllMembers() => {}; |
| 108 | 108 |
| 109 int hashCode() => name.hashCode(); | 109 int hashCode() => name.hashCode(); |
| 110 | 110 |
| 111 void _checkOverride(Member member) { |
| 112 // always look in parents to check that any overloads are legal |
| 113 var parentMember = _getMemberInParents(member.name); |
| 114 if (parentMember != null) { |
| 115 // TODO(jimhug): Ensure that this is only done once. |
| 116 if (!member.isPrivate || member.library == parentMember.library) { |
| 117 member.override(parentMember); |
| 118 } |
| 119 } |
| 120 } |
| 121 |
| 122 Member _createNotEqualMember() { |
| 123 // Add a != method just like the == one. |
| 124 MethodMember eq = members['\$eq']; |
| 125 if (eq == null) { |
| 126 world.internalError('INTERNAL: object does not define ==', |
| 127 definition.span); |
| 128 } |
| 129 final ne = new MethodMember('\$ne', this, eq.definition); |
| 130 ne.isGenerated = true; |
| 131 ne.returnType = eq.returnType; |
| 132 ne.parameters = eq.parameters; |
| 133 ne.isStatic = eq.isStatic; |
| 134 ne.isAbstract = eq.isAbstract; |
| 135 // TODO - What else to fill in? |
| 136 return ne; |
| 137 } |
| 138 |
| 139 Member _getMemberInParents(String memberName) { |
| 140 // print('getting $memberName in parents of $name, $isClass'); |
| 141 // Now look in my parents. |
| 142 if (isClass) { |
| 143 if (parent != null) { |
| 144 return parent.getMember(memberName); |
| 145 } else if (isObject) { // Could also be a top type so need check. |
| 146 // Create synthetic != method if needed. |
| 147 if (memberName == '\$ne') { |
| 148 var ret = _createNotEqualMember(); |
| 149 members[memberName] = ret; |
| 150 return ret; |
| 151 } |
| 152 return null; |
| 153 } |
| 154 } else { |
| 155 // TODO(jimhug): Will probably check types more than once - errors? |
| 156 if (interfaces != null && interfaces.length > 0) { |
| 157 for (var i in interfaces) { |
| 158 var ret = i.getMember(memberName); |
| 159 if (ret != null) { |
| 160 return ret; |
| 161 } |
| 162 } |
| 163 return null; |
| 164 } else { |
| 165 return world.objectType.getMember(memberName); |
| 166 } |
| 167 } |
| 168 } |
| 169 |
| 111 void ensureSubtypeOf(Type other, SourceSpan span, [bool typeErrors=false]) { | 170 void ensureSubtypeOf(Type other, SourceSpan span, [bool typeErrors=false]) { |
| 112 if (!isSubtypeOf(other)) { | 171 if (!isSubtypeOf(other)) { |
| 113 var msg = 'type $name is not a subtype of ${other.name}'; | 172 var msg = 'type $name is not a subtype of ${other.name}'; |
| 114 if (typeErrors) { | 173 if (typeErrors) { |
| 115 world.error(msg, span); | 174 world.error(msg, span); |
| 116 } else { | 175 } else { |
| 117 world.warning(msg, span); | 176 world.warning(msg, span); |
| 118 } | 177 } |
| 119 } | 178 } |
| 120 } | 179 } |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 Definition get definition() => type.definition; | 474 Definition get definition() => type.definition; |
| 416 FactoryMap get factories() => type.factories; | 475 FactoryMap get factories() => type.factories; |
| 417 Collection<Type> get typeArgsInOrder() => type.typeArgsInOrder; | 476 Collection<Type> get typeArgsInOrder() => type.typeArgsInOrder; |
| 418 DefinedType get genericType() => type.genericType; | 477 DefinedType get genericType() => type.genericType; |
| 419 List<Type> get interfaces() => type.interfaces; | 478 List<Type> get interfaces() => type.interfaces; |
| 420 Type get parent() => type.parent; | 479 Type get parent() => type.parent; |
| 421 Map<String, Member> getAllMembers() => type.getAllMembers(); | 480 Map<String, Member> getAllMembers() => type.getAllMembers(); |
| 422 bool get isNativeType() => type.isNativeType; | 481 bool get isNativeType() => type.isNativeType; |
| 423 } | 482 } |
| 424 | 483 |
error: old chunk mismatch |
None
| OLD | NEW |