Index: pkg/fasta/lib/src/builder/function_type_alias_builder.dart |
diff --git a/pkg/fasta/lib/src/builder/function_type_alias_builder.dart b/pkg/fasta/lib/src/builder/function_type_alias_builder.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..78e95782a1a04b03d923006eac4ed9eecadeb339 |
--- /dev/null |
+++ b/pkg/fasta/lib/src/builder/function_type_alias_builder.dart |
@@ -0,0 +1,49 @@ |
+// 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.function_type_alias_builder; |
+ |
+import 'builder.dart' show |
+ FormalParameterBuilder, |
+ LibraryBuilder, |
+ MetadataBuilder, |
+ TypeBuilder, |
+ TypeDeclarationBuilder, |
+ TypeVariableBuilder; |
+ |
+import 'scope.dart' show |
+ Scope; |
+ |
+abstract class FunctionTypeAliasBuilder<T extends TypeBuilder, R> |
+ extends TypeDeclarationBuilder<T, R> { |
+ final T returnType; |
+ |
+ final List<TypeVariableBuilder> typeVariables; |
+ |
+ final List<FormalParameterBuilder> formals; |
+ |
+ FunctionTypeAliasBuilder( |
+ List<MetadataBuilder> metadata, this.returnType, |
+ String name, this.typeVariables, this.formals, List<T> types, |
+ LibraryBuilder parent) |
+ : super(metadata, null, name, types, parent); |
+ |
+ LibraryBuilder get parent => super.parent; |
+ |
+ int resolveTypes(LibraryBuilder library) { |
+ assert(library == parent || library == parent.partOfLibrary); |
+ Scope scope = library.scope.createNestedScope(); |
Johnni Winther
2017/01/16 13:01:19
Only create the nested scope if `typeVariable != n
ahe
2017/01/16 15:26:33
I've added a TODO. It may work in this case, but f
|
+ if (typeVariables != null) { |
+ for (TypeVariableBuilder t in typeVariables) { |
+ scope[t.name] = t; |
+ } |
+ } |
+ if (types != null) { |
+ for (T t in types) { |
+ t.resolveIn(scope); |
+ } |
+ } |
+ return types.length; |
+ } |
+} |