OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 dart2js.resolution.compute_members; | 5 part of dart2js.resolution.compute_members; |
6 | 6 |
7 class DeclaredMember implements Member { | 7 class DeclaredMember implements Member { |
8 final Name name; | 8 final Name name; |
9 final Element element; | 9 final Element element; |
10 final ResolutionInterfaceType declarer; | 10 final ResolutionInterfaceType declarer; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 | 136 |
137 Member get implementation => this; | 137 Member get implementation => this; |
138 | 138 |
139 ResolutionDartType get type => declaration.type.substByContext(instance); | 139 ResolutionDartType get type => declaration.type.substByContext(instance); |
140 | 140 |
141 ResolutionFunctionType get functionType { | 141 ResolutionFunctionType get functionType { |
142 return declaration.functionType.substByContext(instance); | 142 return declaration.functionType.substByContext(instance); |
143 } | 143 } |
144 | 144 |
145 DeclaredMember inheritFrom(ResolutionInterfaceType newInstance) { | 145 DeclaredMember inheritFrom(ResolutionInterfaceType newInstance) { |
146 assert(invariant(declaration.element, () { | 146 assert(() { |
147 // Assert that if [instance] contains type variables, then these are | 147 // Assert that if [instance] contains type variables, then these are |
148 // defined in the declaration of [newInstance] and will therefore be | 148 // defined in the declaration of [newInstance] and will therefore be |
149 // substituted into the context of [newInstance] in the created member. | 149 // substituted into the context of [newInstance] in the created member. |
150 ClassElement contextClass = Types.getClassContext(instance); | 150 ClassElement contextClass = Types.getClassContext(instance); |
151 return contextClass == null || contextClass == newInstance.element; | 151 return contextClass == null || contextClass == newInstance.element; |
152 }, message: () { | 152 }, |
153 return "Context mismatch: Context class " | 153 failedAt( |
154 "${Types.getClassContext(instance)} from $instance does match " | 154 declaration.element, |
155 "the new instance $newInstance."; | 155 "Context mismatch: Context class " |
156 })); | 156 "${Types.getClassContext(instance)} from $instance does match " |
| 157 "the new instance $newInstance.")); |
157 return _newInheritedMember(newInstance); | 158 return _newInheritedMember(newInstance); |
158 } | 159 } |
159 | 160 |
160 InheritedMember _newInheritedMember(ResolutionInterfaceType newInstance) { | 161 InheritedMember _newInheritedMember(ResolutionInterfaceType newInstance) { |
161 return new InheritedMember( | 162 return new InheritedMember( |
162 declaration, instance.substByContext(newInstance)); | 163 declaration, instance.substByContext(newInstance)); |
163 } | 164 } |
164 | 165 |
165 Iterable<Member> get declarations => <Member>[this]; | 166 Iterable<Member> get declarations => <Member>[this]; |
166 | 167 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 247 |
247 bool get isGetter => false; | 248 bool get isGetter => false; |
248 | 249 |
249 bool get isMethod => false; | 250 bool get isMethod => false; |
250 | 251 |
251 bool get isMalformed => true; | 252 bool get isMalformed => true; |
252 | 253 |
253 String toString() => "erroneous member '$name' synthesized " | 254 String toString() => "erroneous member '$name' synthesized " |
254 "from ${inheritedMembers}"; | 255 "from ${inheritedMembers}"; |
255 } | 256 } |
OLD | NEW |