Chromium Code Reviews| 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) { | |
|
Jennifer Messerly
2011/11/18 18:51:29
this was extract:method
| |
| 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() { | |
|
Jennifer Messerly
2011/11/18 18:51:29
this and _getMemberInParents are just moved from D
| |
| 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 | |
| OLD | NEW |