Chromium Code Reviews| 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 |