OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library kernel.class_hierarchy; | 4 library kernel.class_hierarchy; |
5 | 5 |
6 import 'ast.dart'; | 6 import 'ast.dart'; |
7 import 'dart:math'; | 7 import 'dart:math'; |
8 import 'dart:typed_data'; | 8 import 'dart:typed_data'; |
9 import 'type_algebra.dart'; | 9 import 'type_algebra.dart'; |
10 | 10 |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 result[storeIndex++] = inheritedMember; | 408 result[storeIndex++] = inheritedMember; |
409 ++j; | 409 ++j; |
410 } else { | 410 } else { |
411 result[storeIndex++] = declaredMember; | 411 result[storeIndex++] = declaredMember; |
412 ++i; | 412 ++i; |
413 ++j; // Move past overridden member. | 413 ++j; // Move past overridden member. |
414 } | 414 } |
415 } | 415 } |
416 // One of the two lists is now exhausted, copy over the remains. | 416 // One of the two lists is now exhausted, copy over the remains. |
417 while (i < declared.length) { | 417 while (i < declared.length) { |
418 result[storeIndex++] = declared[i++]; | 418 Member declaredMember = declared[i++]; |
| 419 if (skipAbstractMembers && declaredMember.isAbstract) continue; |
| 420 result[storeIndex++] = declaredMember; |
419 } | 421 } |
420 while (j < inherited.length) { | 422 while (j < inherited.length) { |
421 result[storeIndex++] = inherited[j++]; | 423 Member inheritedMember = inherited[j++]; |
| 424 if (skipAbstractMembers && inheritedMember.isAbstract) continue; |
| 425 result[storeIndex++] = inheritedMember; |
422 } | 426 } |
423 result.length = storeIndex; | 427 result.length = storeIndex; |
424 return result; | 428 return result; |
425 } | 429 } |
426 | 430 |
427 /// Returns the subset of members in [inherited] for which a member with the | 431 /// Returns the subset of members in [inherited] for which a member with the |
428 /// same name does not occur in [declared]. | 432 /// same name does not occur in [declared]. |
429 /// | 433 /// |
430 /// The input lists must be sorted, and the returned list is sorted. | 434 /// The input lists must be sorted, and the returned list is sorted. |
431 static List<Member> _getUnshadowedInheritedMembers( | 435 static List<Member> _getUnshadowedInheritedMembers( |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 | 847 |
844 /// Non-final instance fields and setters implemented by this class | 848 /// Non-final instance fields and setters implemented by this class |
845 /// (declared or inherited). | 849 /// (declared or inherited). |
846 List<Member> implementedSetters; | 850 List<Member> implementedSetters; |
847 | 851 |
848 List<Member> interfaceGettersAndCalls; | 852 List<Member> interfaceGettersAndCalls; |
849 List<Member> interfaceSetters; | 853 List<Member> interfaceSetters; |
850 | 854 |
851 _ClassInfo(this.classNode); | 855 _ClassInfo(this.classNode); |
852 } | 856 } |
OLD | NEW |