| // Copyright (c) 2019, 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. |
| |
| part of 'declaration_builders.dart'; |
| |
| abstract class ExtensionBuilder implements DeclarationBuilder { |
| /// The type of the on-clause of the extension declaration. |
| TypeBuilder get onType; |
| |
| /// Reference for the extension built by this builder. |
| Reference get reference; |
| |
| /// Return the [Extension] built by this builder. |
| Extension get extension; |
| |
| /// Looks up extension member by [name] taking privacy into account. |
| /// |
| /// If [setter] is `true` the sought member is a setter or assignable field. |
| /// If [required] is `true` and no member is found an internal problem is |
| /// reported. |
| /// |
| /// If the extension member is a duplicate, `null` is returned. |
| // TODO(johnniwinther): Support [AmbiguousBuilder] here and in instance |
| // member lookup to avoid reporting that the member doesn't exist when it is |
| // duplicate. |
| MemberBuilder? lookupLocalMemberByName( |
| Name name, { |
| bool setter = false, |
| bool required = false, |
| }); |
| } |
| |
| // Coverage-ignore(suite): Not run. |
| abstract class ExtensionBuilderImpl extends DeclarationBuilderImpl |
| with DeclarationBuilderMixin |
| implements ExtensionBuilder { |
| @override |
| DartType buildAliasedTypeWithBuiltArguments( |
| LibraryBuilder library, |
| Nullability nullability, |
| List<DartType> arguments, |
| TypeUse typeUse, |
| Uri fileUri, |
| int charOffset, { |
| required bool hasExplicitTypeArguments, |
| }) { |
| throw new UnsupportedError( |
| "ExtensionBuilder.buildTypesWithBuiltArguments " |
| "is not supported in library '${library.importUri}'.", |
| ); |
| } |
| |
| @override |
| Nullability computeNullabilityWithArguments( |
| List<TypeBuilder>? typeArguments, { |
| required Map<TypeParameterBuilder, TraversalState> |
| typeParametersTraversalState, |
| }) => Nullability.nonNullable; |
| } |