OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 // TODO(sigmund): rename and move to common/elements.dart | 5 // TODO(sigmund): rename and move to common/elements.dart |
6 library dart2js.type_system; | 6 library dart2js.type_system; |
7 | 7 |
8 import 'common.dart'; | 8 import 'common.dart'; |
9 import 'elements/types.dart'; | 9 import 'elements/types.dart'; |
10 import 'elements/entities.dart'; | 10 import 'elements/entities.dart'; |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 {bool required: false}); | 242 {bool required: false}); |
243 | 243 |
244 /// Calls [f] for each class member declared or inherited in [cls] together | 244 /// Calls [f] for each class member declared or inherited in [cls] together |
245 /// with the class that declared the member. | 245 /// with the class that declared the member. |
246 /// | 246 /// |
247 /// TODO(johnniwinther): This should not include static members of | 247 /// TODO(johnniwinther): This should not include static members of |
248 /// superclasses. | 248 /// superclasses. |
249 void forEachClassMember( | 249 void forEachClassMember( |
250 ClassEntity cls, void f(ClassEntity declarer, MemberEntity member)); | 250 ClassEntity cls, void f(ClassEntity declarer, MemberEntity member)); |
251 | 251 |
| 252 /// Returns the declared superclass of [cls]. |
| 253 /// |
| 254 /// Unnamed mixin applications are skipped, for instance for these classes |
| 255 /// |
| 256 /// class S {} |
| 257 /// class M {} |
| 258 /// class C extends S with M {} |
| 259 /// |
| 260 /// the result of `getSuperClass(C)` is `S` and not the unnamed mixin |
| 261 /// application typically named `S+M`. |
| 262 ClassEntity getSuperClass(ClassEntity cls); |
| 263 |
252 /// Calls [f] for each class that is mixed into [cls] or one of its | 264 /// Calls [f] for each class that is mixed into [cls] or one of its |
253 /// superclasses. | 265 /// superclasses. |
254 void forEachMixin(ClassEntity cls, void f(ClassEntity mixin)); | 266 void forEachMixin(ClassEntity cls, void f(ClassEntity mixin)); |
255 | 267 |
256 /// Create the instantiation of [cls] with the given [typeArguments]. | 268 /// Create the instantiation of [cls] with the given [typeArguments]. |
257 InterfaceType createInterfaceType( | 269 InterfaceType createInterfaceType( |
258 ClassEntity cls, List<DartType> typeArguments); | 270 ClassEntity cls, List<DartType> typeArguments); |
259 | 271 |
260 /// Returns the 'raw type' of [cls]. That is, the instantiation of [cls] | 272 /// Returns the 'raw type' of [cls]. That is, the instantiation of [cls] |
261 /// where all types arguments are `dynamic`. | 273 /// where all types arguments are `dynamic`. |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 } | 524 } |
513 | 525 |
514 @override | 526 @override |
515 InterfaceType streamType([DartType elementType]) { | 527 InterfaceType streamType([DartType elementType]) { |
516 if (elementType == null) { | 528 if (elementType == null) { |
517 return getRawType(streamClass); | 529 return getRawType(streamClass); |
518 } | 530 } |
519 return createInterfaceType(streamClass, [elementType]); | 531 return createInterfaceType(streamClass, [elementType]); |
520 } | 532 } |
521 } | 533 } |
OLD | NEW |