OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library fasta.kernel_type_variable_builder; | 5 library fasta.kernel_type_variable_builder; |
6 | 6 |
7 import 'package:kernel/ast.dart' | 7 import 'package:kernel/ast.dart' |
8 show DartType, TypeParameter, TypeParameterType; | 8 show DartType, TypeParameter, TypeParameterType; |
9 | 9 |
10 import '../errors.dart' show inputError; | 10 import '../deprecated_problems.dart' show deprecated_inputError; |
11 | 11 |
12 import 'kernel_builder.dart' | 12 import 'kernel_builder.dart' |
13 show | 13 show |
14 KernelClassBuilder, | 14 KernelClassBuilder, |
15 KernelLibraryBuilder, | 15 KernelLibraryBuilder, |
16 KernelNamedTypeBuilder, | 16 KernelNamedTypeBuilder, |
17 KernelTypeBuilder, | 17 KernelTypeBuilder, |
18 LibraryBuilder, | 18 LibraryBuilder, |
19 TypeVariableBuilder; | 19 TypeVariableBuilder; |
20 | 20 |
21 class KernelTypeVariableBuilder | 21 class KernelTypeVariableBuilder |
22 extends TypeVariableBuilder<KernelTypeBuilder, DartType> { | 22 extends TypeVariableBuilder<KernelTypeBuilder, DartType> { |
23 final TypeParameter parameter; | 23 final TypeParameter parameter; |
24 | 24 |
25 KernelTypeVariableBuilder( | 25 KernelTypeVariableBuilder( |
26 String name, KernelLibraryBuilder compilationUnit, int charOffset, | 26 String name, KernelLibraryBuilder compilationUnit, int charOffset, |
27 [KernelTypeBuilder bound]) | 27 [KernelTypeBuilder bound]) |
28 : parameter = new TypeParameter(name, null), | 28 : parameter = new TypeParameter(name, null), |
29 super(name, bound, compilationUnit, charOffset); | 29 super(name, bound, compilationUnit, charOffset); |
30 | 30 |
31 TypeParameter get target => parameter; | 31 TypeParameter get target => parameter; |
32 | 32 |
33 DartType buildType( | 33 DartType buildType( |
34 LibraryBuilder library, List<KernelTypeBuilder> arguments) { | 34 LibraryBuilder library, List<KernelTypeBuilder> arguments) { |
35 if (arguments != null) { | 35 if (arguments != null) { |
36 library.addWarning(arguments.first.charOffset, | 36 library.deprecated_addWarning(arguments.first.charOffset, |
37 "Can't use type arguments with type parameter $parameter", | 37 "Can't use type arguments with type parameter $parameter", |
38 fileUri: fileUri); | 38 fileUri: fileUri); |
39 } | 39 } |
40 return new TypeParameterType(parameter); | 40 return new TypeParameterType(parameter); |
41 } | 41 } |
42 | 42 |
43 DartType buildTypesWithBuiltArguments( | 43 DartType buildTypesWithBuiltArguments( |
44 LibraryBuilder library, List<DartType> arguments) { | 44 LibraryBuilder library, List<DartType> arguments) { |
45 if (arguments != null) { | 45 if (arguments != null) { |
46 return inputError(null, null, | 46 return deprecated_inputError(null, null, |
47 "Can't use type arguments with type parameter $parameter"); | 47 "Can't use type arguments with type parameter $parameter"); |
48 } else { | 48 } else { |
49 return buildType(library, null); | 49 return buildType(library, null); |
50 } | 50 } |
51 } | 51 } |
52 | 52 |
53 KernelTypeBuilder asTypeBuilder() { | 53 KernelTypeBuilder asTypeBuilder() { |
54 return new KernelNamedTypeBuilder(name, null, -1, null)..builder = this; | 54 return new KernelNamedTypeBuilder(name, null, -1, null)..builder = this; |
55 } | 55 } |
56 | 56 |
57 void finish(LibraryBuilder library, KernelClassBuilder object) { | 57 void finish(LibraryBuilder library, KernelClassBuilder object) { |
58 parameter.bound ??= | 58 parameter.bound ??= |
59 bound?.build(library) ?? object.buildType(library, null); | 59 bound?.build(library) ?? object.buildType(library, null); |
60 } | 60 } |
61 } | 61 } |
OLD | NEW |