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.kernel_builder; | |
6 | |
7 export 'kernel_class_builder.dart' show | |
8 KernelClassBuilder; | |
9 | |
10 export 'kernel_enum_builder.dart' show | |
11 KernelEnumBuilder; | |
12 | |
13 export 'kernel_field_builder.dart' show | |
14 KernelFieldBuilder; | |
15 | |
16 export 'kernel_formal_parameter_builder.dart' show | |
17 KernelFormalParameterBuilder; | |
18 | |
19 export 'kernel_function_type_alias_builder.dart' show | |
20 KernelFunctionTypeAliasBuilder; | |
21 | |
22 export 'kernel_interface_type_builder.dart' show | |
23 KernelInterfaceTypeBuilder; | |
24 | |
25 export 'kernel_library_builder.dart' show | |
26 KernelLibraryBuilder; | |
27 | |
28 export 'kernel_mixin_application_builder.dart' show | |
29 KernelMixinApplicationBuilder; | |
30 | |
31 export 'kernel_named_mixin_application_builder.dart' show | |
32 KernelNamedMixinApplicationBuilder; | |
33 | |
34 export 'kernel_procedure_builder.dart' show | |
35 KernelConstructorBuilder, | |
36 KernelFunctionBuilder, | |
37 KernelProcedureBuilder; | |
38 | |
39 export 'kernel_type_builder.dart' show | |
40 KernelTypeBuilder; | |
41 | |
42 export 'kernel_type_variable_builder.dart' show | |
43 KernelTypeVariableBuilder; | |
44 | |
45 export '../builder/builder.dart'; | |
46 | |
47 export 'kernel_variable_builder.dart' show | |
48 KernelVariableBuilder; | |
49 | |
50 export 'kernel_invalid_type_builder.dart' show | |
51 KernelInvalidTypeBuilder; | |
52 | |
53 import 'package:kernel/text/ast_to_text.dart' show | |
54 Printer; | |
55 | |
56 import 'package:kernel/ast.dart' show | |
57 Class, | |
58 DartType, | |
59 DynamicType, | |
60 Field, | |
61 Library, | |
62 Member, | |
63 Procedure, | |
64 TypeParameter; | |
65 | |
66 import '../errors.dart' show | |
67 inputError; | |
68 | |
69 List<DartType> computeDefaultTypeArguments( | |
70 List<TypeParameter> typeParameters, List<DartType> arguments) { | |
71 if (arguments == null) { | |
72 return new List<DartType>.filled( | |
73 typeParameters.length, const DynamicType()); | |
74 } | |
75 if (arguments.length < typeParameters.length) { | |
76 arguments = new List<DartType>.from(arguments); | |
77 } | |
78 for (int i = arguments.length; i < typeParameters.length; i++) { | |
Johnni Winther
2017/01/18 12:42:39
Move the for loop into the then-branch above.
ahe
2017/01/18 15:21:49
Done.
| |
79 arguments.add(const DynamicType()); | |
80 } | |
81 if (arguments.length > typeParameters.length) { | |
Johnni Winther
2017/01/18 12:42:39
Make this an else branch of the if statement above
ahe
2017/01/18 15:21:50
Done.
| |
82 return arguments.sublist(0, typeParameters.length); | |
83 } else { | |
84 return arguments; | |
85 } | |
86 } | |
87 | |
88 dynamic memberError(Member member, Object error, [int charOffset]) { | |
89 String name = member.name?.name; | |
90 if (name == "") { | |
91 name = Printer.emptyNameString; | |
92 } else if (name == null) { | |
93 name = "<anon>"; | |
94 } | |
95 Library library = member.enclosingLibrary; | |
96 Class cls = member.enclosingClass; | |
97 String fileUri; | |
98 if (member is Procedure) { | |
99 fileUri = member.fileUri; | |
100 } else if (member is Field) { | |
101 fileUri = member.fileUri; | |
102 } | |
103 fileUri ??= cls?.fileUri ?? library.fileUri; | |
104 Uri uri = fileUri == null ? library.importUri : Uri.base.resolve(fileUri); | |
105 charOffset ??= -1; | |
106 if (charOffset == -1) { | |
107 charOffset = member.fileOffset ?? -1; | |
108 } | |
109 if (charOffset == -1) { | |
110 charOffset = cls?.fileOffset ?? -1; | |
111 } | |
112 name = (cls == null ? "" : "${cls.name}::") + name; | |
113 return inputError(uri, charOffset, "Error in $name: $error"); | |
114 } | |
OLD | NEW |