OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library fasta.builder; | |
6 | |
7 import '../errors.dart' show | |
8 internalError; | |
9 | |
10 export 'class_builder.dart' show | |
11 ClassBuilder; | |
12 | |
13 export 'field_builder.dart' show | |
14 FieldBuilder; | |
15 | |
16 export 'library_builder.dart' show | |
17 LibraryBuilder; | |
18 | |
19 export 'procedure_builder.dart' show | |
20 ProcedureBuilder; | |
21 | |
22 export 'type_builder.dart' show | |
23 TypeBuilder; | |
24 | |
25 export 'formal_parameter_builder.dart' show | |
26 FormalParameterBuilder; | |
27 | |
28 export 'metadata_builder.dart' show | |
29 MetadataBuilder; | |
30 | |
31 export 'type_variable_builder.dart' show | |
32 TypeVariableBuilder; | |
33 | |
34 export 'function_type_alias_builder.dart' show | |
35 FunctionTypeAliasBuilder; | |
36 | |
37 export 'named_mixin_application_builder.dart' show | |
38 NamedMixinApplicationBuilder; | |
39 | |
40 export 'mixin_application_builder.dart' show | |
41 MixinApplicationBuilder; | |
42 | |
43 export 'enum_builder.dart' show | |
44 EnumBuilder; | |
45 | |
46 export 'type_declaration_builder.dart' show | |
47 TypeDeclarationBuilder; | |
48 | |
49 export 'interface_type_builder.dart' show | |
50 InterfaceTypeBuilder; | |
51 | |
52 export 'constructor_reference_builder.dart' show | |
53 ConstructorReferenceBuilder; | |
54 | |
55 export '../source/unhandled_listener.dart' show | |
56 Unhandled; | |
57 | |
58 export 'member_builder.dart' show | |
59 MemberBuilder; | |
60 | |
61 export 'modifier_builder.dart' show | |
62 ModifierBuilder; | |
63 | |
64 export 'prefix_builder.dart' show | |
65 PrefixBuilder; | |
66 | |
67 export 'invalid_type_builder.dart' show | |
68 InvalidTypeBuilder; | |
69 | |
70 export 'mixed_accessor.dart' show | |
71 MixedAccessor; | |
72 | |
73 export 'scope.dart' show | |
74 AccessErrorBuilder; | |
75 | |
76 export 'dynamic_type_builder.dart' show | |
77 DynamicTypeBuilder; | |
78 | |
79 import 'library_builder.dart' show | |
80 LibraryBuilder; | |
81 | |
82 abstract class Builder { | |
83 // TODO(ahe): Move to member builder or something. Then we can make this a | |
84 // const class. | |
85 Builder next; | |
86 | |
87 int resolveTypes(Builder parent) => 0; | |
Johnni Winther
2017/01/16 13:01:19
Add dartdoc. Especially what the returned value me
ahe
2017/01/16 15:26:33
Done.
| |
88 | |
89 int resolveConstructors(Builder parent) => 0; | |
90 | |
91 int convertConstructors(Builder parent) => 0; | |
92 | |
93 Builder combineAmbiguousImport(String name, Builder other, | |
Johnni Winther
2017/01/16 13:01:19
Add dartdoc. Especially what role [library] has.
ahe
2017/01/16 15:26:33
Done.
| |
94 LibraryBuilder library) { | |
95 if (other == this) return this; | |
96 bool isLocal = false; | |
97 Builder preferred; | |
98 Builder hidden; | |
99 if (library.members[name] == this) { | |
100 isLocal = true; | |
101 preferred = this; | |
102 hidden = other; | |
103 } else if (getUri(other)?.scheme == "dart" && | |
104 getUri(this)?.scheme != "dart") { | |
105 preferred = this; | |
106 hidden = other; | |
107 } else if (getUri(this)?.scheme == "dart" && | |
108 getUri(other)?.scheme != "dart") { | |
109 preferred = other; | |
110 hidden = this; | |
111 } else { | |
112 print("${library.uri}: Note: '$name' is imported from both " | |
113 "'${getUri(this)}' and '${getUri(other)}'."); | |
114 return library.buildAmbiguousBuilder(name, this, other); | |
115 } | |
116 if (isLocal) { | |
117 print("${library.uri}: Note: local definition of '$name' hides imported " | |
118 "version from '${getUri(other)}'."); | |
119 } else { | |
120 print("${library.uri}: import of '$name' (from '${getUri(preferred)}') " | |
121 "hides imported version from '${getUri(hidden)}'."); | |
122 } | |
123 return preferred; | |
124 } | |
125 | |
126 Builder get parent => null; | |
127 | |
128 bool get isFinal => false; | |
129 | |
130 bool get isField => false; | |
131 | |
132 bool get isRegularMethod => false; | |
133 | |
134 bool get isGetter => false; | |
135 | |
136 bool get isSetter => false; | |
137 | |
138 bool get isInstanceMember => false; | |
139 | |
140 bool get isStatic => false; | |
141 | |
142 bool get isTopLevel => false; | |
143 | |
144 bool get isTypeDeclaration => false; | |
145 | |
146 bool get isConstructor => false; | |
147 | |
148 bool get isFactory => false; | |
149 | |
150 bool get isLocal => false; | |
151 | |
152 get target => internalError("Unsupported operation $runtimeType."); | |
153 | |
154 bool get hasProblem => false; | |
155 | |
156 static Uri getUri(Builder builder) { | |
157 if (builder == null) return internalError("Builder is null."); | |
158 while (builder != null) { | |
159 if (builder is LibraryBuilder) return builder.uri; | |
160 builder = builder.parent; | |
161 } | |
162 return internalError("No library parent."); | |
163 } | |
164 } | |
OLD | NEW |