| // 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.type_declaration_builder; |
| |
| import 'builder.dart' |
| show Builder, MetadataBuilder, ModifierBuilder, TypeBuilder; |
| |
| import '../util/relativize.dart' show relativizeUri; |
| |
| abstract class TypeDeclarationBuilder<T extends TypeBuilder, R> |
| extends ModifierBuilder { |
| final List<MetadataBuilder> metadata; |
| |
| final int modifiers; |
| |
| final String name; |
| |
| Builder parent; |
| |
| final Uri fileUri; |
| final String relativeFileUri; |
| |
| TypeDeclarationBuilder( |
| this.metadata, this.modifiers, this.name, Builder parent, int charOffset, |
| [Uri fileUri]) |
| : fileUri = fileUri ?? parent?.fileUri, |
| relativeFileUri = |
| fileUri != null ? relativizeUri(fileUri) : parent?.relativeFileUri, |
| super(parent, charOffset, fileUri ?? parent?.fileUri); |
| |
| bool get isTypeDeclaration => true; |
| |
| R buildType(List<T> arguments); |
| |
| /// [arguments] have already been built. |
| R buildTypesWithBuiltArguments(List<R> arguments); |
| } |