Index: pkg/fasta/lib/src/builder/builder.dart |
diff --git a/pkg/fasta/lib/src/builder/builder.dart b/pkg/fasta/lib/src/builder/builder.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cc44ae101930e567c3c17b58b7dd30fe227e3a01 |
--- /dev/null |
+++ b/pkg/fasta/lib/src/builder/builder.dart |
@@ -0,0 +1,164 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library fasta.builder; |
+ |
+import '../errors.dart' show |
+ internalError; |
+ |
+export 'class_builder.dart' show |
+ ClassBuilder; |
+ |
+export 'field_builder.dart' show |
+ FieldBuilder; |
+ |
+export 'library_builder.dart' show |
+ LibraryBuilder; |
+ |
+export 'procedure_builder.dart' show |
+ ProcedureBuilder; |
+ |
+export 'type_builder.dart' show |
+ TypeBuilder; |
+ |
+export 'formal_parameter_builder.dart' show |
+ FormalParameterBuilder; |
+ |
+export 'metadata_builder.dart' show |
+ MetadataBuilder; |
+ |
+export 'type_variable_builder.dart' show |
+ TypeVariableBuilder; |
+ |
+export 'function_type_alias_builder.dart' show |
+ FunctionTypeAliasBuilder; |
+ |
+export 'named_mixin_application_builder.dart' show |
+ NamedMixinApplicationBuilder; |
+ |
+export 'mixin_application_builder.dart' show |
+ MixinApplicationBuilder; |
+ |
+export 'enum_builder.dart' show |
+ EnumBuilder; |
+ |
+export 'type_declaration_builder.dart' show |
+ TypeDeclarationBuilder; |
+ |
+export 'interface_type_builder.dart' show |
+ InterfaceTypeBuilder; |
+ |
+export 'constructor_reference_builder.dart' show |
+ ConstructorReferenceBuilder; |
+ |
+export '../source/unhandled_listener.dart' show |
+ Unhandled; |
+ |
+export 'member_builder.dart' show |
+ MemberBuilder; |
+ |
+export 'modifier_builder.dart' show |
+ ModifierBuilder; |
+ |
+export 'prefix_builder.dart' show |
+ PrefixBuilder; |
+ |
+export 'invalid_type_builder.dart' show |
+ InvalidTypeBuilder; |
+ |
+export 'mixed_accessor.dart' show |
+ MixedAccessor; |
+ |
+export 'scope.dart' show |
+ AccessErrorBuilder; |
+ |
+export 'dynamic_type_builder.dart' show |
+ DynamicTypeBuilder; |
+ |
+import 'library_builder.dart' show |
+ LibraryBuilder; |
+ |
+abstract class Builder { |
+ // TODO(ahe): Move to member builder or something. Then we can make this a |
+ // const class. |
+ Builder next; |
+ |
+ 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.
|
+ |
+ int resolveConstructors(Builder parent) => 0; |
+ |
+ int convertConstructors(Builder parent) => 0; |
+ |
+ 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.
|
+ LibraryBuilder library) { |
+ if (other == this) return this; |
+ bool isLocal = false; |
+ Builder preferred; |
+ Builder hidden; |
+ if (library.members[name] == this) { |
+ isLocal = true; |
+ preferred = this; |
+ hidden = other; |
+ } else if (getUri(other)?.scheme == "dart" && |
+ getUri(this)?.scheme != "dart") { |
+ preferred = this; |
+ hidden = other; |
+ } else if (getUri(this)?.scheme == "dart" && |
+ getUri(other)?.scheme != "dart") { |
+ preferred = other; |
+ hidden = this; |
+ } else { |
+ print("${library.uri}: Note: '$name' is imported from both " |
+ "'${getUri(this)}' and '${getUri(other)}'."); |
+ return library.buildAmbiguousBuilder(name, this, other); |
+ } |
+ if (isLocal) { |
+ print("${library.uri}: Note: local definition of '$name' hides imported " |
+ "version from '${getUri(other)}'."); |
+ } else { |
+ print("${library.uri}: import of '$name' (from '${getUri(preferred)}') " |
+ "hides imported version from '${getUri(hidden)}'."); |
+ } |
+ return preferred; |
+ } |
+ |
+ Builder get parent => null; |
+ |
+ bool get isFinal => false; |
+ |
+ bool get isField => false; |
+ |
+ bool get isRegularMethod => false; |
+ |
+ bool get isGetter => false; |
+ |
+ bool get isSetter => false; |
+ |
+ bool get isInstanceMember => false; |
+ |
+ bool get isStatic => false; |
+ |
+ bool get isTopLevel => false; |
+ |
+ bool get isTypeDeclaration => false; |
+ |
+ bool get isConstructor => false; |
+ |
+ bool get isFactory => false; |
+ |
+ bool get isLocal => false; |
+ |
+ get target => internalError("Unsupported operation $runtimeType."); |
+ |
+ bool get hasProblem => false; |
+ |
+ static Uri getUri(Builder builder) { |
+ if (builder == null) return internalError("Builder is null."); |
+ while (builder != null) { |
+ if (builder is LibraryBuilder) return builder.uri; |
+ builder = builder.parent; |
+ } |
+ return internalError("No library parent."); |
+ } |
+} |