| Index: pkg/fasta/lib/src/kernel/kernel_builder.dart
|
| diff --git a/pkg/fasta/lib/src/kernel/kernel_builder.dart b/pkg/fasta/lib/src/kernel/kernel_builder.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7c3187c1e8809132a0bfb3837eafbdc1e8d34f3b
|
| --- /dev/null
|
| +++ b/pkg/fasta/lib/src/kernel/kernel_builder.dart
|
| @@ -0,0 +1,112 @@
|
| +// 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.kernel_builder;
|
| +
|
| +export 'kernel_class_builder.dart' show
|
| + KernelClassBuilder;
|
| +
|
| +export 'kernel_enum_builder.dart' show
|
| + KernelEnumBuilder;
|
| +
|
| +export 'kernel_field_builder.dart' show
|
| + KernelFieldBuilder;
|
| +
|
| +export 'kernel_formal_parameter_builder.dart' show
|
| + KernelFormalParameterBuilder;
|
| +
|
| +export 'kernel_function_type_alias_builder.dart' show
|
| + KernelFunctionTypeAliasBuilder;
|
| +
|
| +export 'kernel_interface_type_builder.dart' show
|
| + KernelInterfaceTypeBuilder;
|
| +
|
| +export 'kernel_library_builder.dart' show
|
| + KernelLibraryBuilder;
|
| +
|
| +export 'kernel_mixin_application_builder.dart' show
|
| + KernelMixinApplicationBuilder;
|
| +
|
| +export 'kernel_named_mixin_application_builder.dart' show
|
| + KernelNamedMixinApplicationBuilder;
|
| +
|
| +export 'kernel_procedure_builder.dart' show
|
| + KernelConstructorBuilder,
|
| + KernelFunctionBuilder,
|
| + KernelProcedureBuilder;
|
| +
|
| +export 'kernel_type_builder.dart' show
|
| + KernelTypeBuilder;
|
| +
|
| +export 'kernel_type_variable_builder.dart' show
|
| + KernelTypeVariableBuilder;
|
| +
|
| +export '../builder/builder.dart';
|
| +
|
| +export 'kernel_variable_builder.dart' show
|
| + KernelVariableBuilder;
|
| +
|
| +export 'kernel_invalid_type_builder.dart' show
|
| + KernelInvalidTypeBuilder;
|
| +
|
| +import 'package:kernel/text/ast_to_text.dart' show
|
| + Printer;
|
| +
|
| +import 'package:kernel/ast.dart' show
|
| + Class,
|
| + DartType,
|
| + DynamicType,
|
| + Field,
|
| + Library,
|
| + Member,
|
| + Procedure,
|
| + TypeParameter;
|
| +
|
| +import '../errors.dart' show
|
| + inputError;
|
| +
|
| +List<DartType> computeDefaultTypeArguments(
|
| + List<TypeParameter> typeParameters, List<DartType> arguments) {
|
| + if (arguments == null) {
|
| + return new List<DartType>.filled(
|
| + typeParameters.length, const DynamicType());
|
| + }
|
| + if (arguments.length < typeParameters.length) {
|
| + arguments = new List<DartType>.from(arguments);
|
| + for (int i = arguments.length; i < typeParameters.length; i++) {
|
| + arguments.add(const DynamicType());
|
| + }
|
| + } else if (arguments.length > typeParameters.length) {
|
| + return arguments.sublist(0, typeParameters.length);
|
| + }
|
| + return arguments;
|
| +}
|
| +
|
| +dynamic memberError(Member member, Object error, [int charOffset]) {
|
| + String name = member.name?.name;
|
| + if (name == "") {
|
| + name = Printer.emptyNameString;
|
| + } else if (name == null) {
|
| + name = "<anon>";
|
| + }
|
| + Library library = member.enclosingLibrary;
|
| + Class cls = member.enclosingClass;
|
| + String fileUri;
|
| + if (member is Procedure) {
|
| + fileUri = member.fileUri;
|
| + } else if (member is Field) {
|
| + fileUri = member.fileUri;
|
| + }
|
| + fileUri ??= cls?.fileUri ?? library.fileUri;
|
| + Uri uri = fileUri == null ? library.importUri : Uri.base.resolve(fileUri);
|
| + charOffset ??= -1;
|
| + if (charOffset == -1) {
|
| + charOffset = member.fileOffset ?? -1;
|
| + }
|
| + if (charOffset == -1) {
|
| + charOffset = cls?.fileOffset ?? -1;
|
| + }
|
| + name = (cls == null ? "" : "${cls.name}::") + name;
|
| + return inputError(uri, charOffset, "Error in $name: $error");
|
| +}
|
|
|