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 | 4 |
5 library fasta.member_builder; | 5 library fasta.member_builder; |
6 | 6 |
7 import 'builder.dart' show Builder, ClassBuilder, ModifierBuilder; | 7 import 'builder.dart' |
| 8 show Builder, ClassBuilder, LibraryBuilder, ModifierBuilder; |
8 | 9 |
9 abstract class MemberBuilder extends ModifierBuilder { | 10 abstract class MemberBuilder extends ModifierBuilder { |
10 /// For top-level members, the parent is set correctly during | 11 /// For top-level members, the parent is set correctly during |
11 /// construction. However, for class members, the parent is initially the | 12 /// construction. However, for class members, the parent is initially the |
12 /// library and updated later. | 13 /// library and updated later. |
13 Builder parent; | 14 Builder parent; |
14 | 15 |
15 String get name; | 16 String get name; |
16 | 17 |
17 MemberBuilder(Builder parent, int charOffset) | 18 MemberBuilder(Builder parent, int charOffset) |
18 : parent = parent, | 19 : parent = parent, |
19 super(parent, charOffset); | 20 super(parent, charOffset); |
20 | 21 |
21 bool get isInstanceMember => isClassMember && !isStatic; | 22 bool get isInstanceMember => isClassMember && !isStatic; |
22 | 23 |
23 bool get isClassMember => parent is ClassBuilder; | 24 bool get isClassMember => parent is ClassBuilder; |
24 | 25 |
25 bool get isTopLevel => !isClassMember; | 26 bool get isTopLevel => !isClassMember; |
26 | 27 |
27 bool get isNative => false; | 28 bool get isNative => false; |
28 | 29 |
29 bool get isRedirectingGenerativeConstructor => false; | 30 bool get isRedirectingGenerativeConstructor => false; |
30 | 31 |
| 32 LibraryBuilder get library { |
| 33 if (parent is LibraryBuilder) { |
| 34 LibraryBuilder library = parent; |
| 35 return library.partOfLibrary ?? library; |
| 36 } else { |
| 37 ClassBuilder cls = parent; |
| 38 return cls.library; |
| 39 } |
| 40 } |
| 41 |
31 @override | 42 @override |
32 String get fullNameForErrors => name; | 43 String get fullNameForErrors => name; |
33 } | 44 } |
OLD | NEW |