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"); |
+} |