Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart

Issue 2672993003: Handle type variables. (Closed)
Patch Set: Add comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_library_builder; 5 library fasta.kernel_library_builder;
6 6
7 import 'package:kernel/ast.dart'; 7 import 'package:kernel/ast.dart';
8 8
9 import 'package:kernel/clone.dart' show 9 import 'package:kernel/clone.dart' show
10 CloneVisitor; 10 CloneVisitor;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 KernelTypeBuilder addVoidType() { 89 KernelTypeBuilder addVoidType() {
90 return new KernelInterfaceTypeBuilder("void", null); 90 return new KernelInterfaceTypeBuilder("void", null);
91 } 91 }
92 92
93 ClassBuilder addClass(List<MetadataBuilder> metadata, 93 ClassBuilder addClass(List<MetadataBuilder> metadata,
94 int modifiers, String className, 94 int modifiers, String className,
95 List<TypeVariableBuilder> typeVariables, KernelTypeBuilder supertype, 95 List<TypeVariableBuilder> typeVariables, KernelTypeBuilder supertype,
96 List<KernelTypeBuilder> interfaces) { 96 List<KernelTypeBuilder> interfaces) {
97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className, 97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className,
98 typeVariables, supertype, interfaces, classMembers, classTypes, this, 98 typeVariables, supertype, interfaces, classMembers, declarationTypes,
99 this,
99 new List<ConstructorReferenceBuilder>.from(constructorReferences)); 100 new List<ConstructorReferenceBuilder>.from(constructorReferences));
100 constructorReferences.clear(); 101 constructorReferences.clear();
101 classMembers.forEach((String name, MemberBuilder builder) { 102 classMembers.forEach((String name, MemberBuilder builder) {
102 while (builder != null) { 103 while (builder != null) {
103 builder.parent = cls; 104 builder.parent = cls;
104 builder = builder.next; 105 builder = builder.next;
105 } 106 }
106 }); 107 });
107 // Nested scope began in `OutlineBuilder.beginClassDeclaration`. 108 // Nested scope began in `OutlineBuilder.beginClassDeclaration`.
108 endNestedScope(); 109 endNestedScope();
109 return addBuilder(className, cls); 110 return addBuilder(className, cls);
110 } 111 }
111 112
112 NamedMixinApplicationBuilder addNamedMixinApplication( 113 NamedMixinApplicationBuilder addNamedMixinApplication(
113 List<MetadataBuilder> metadata, String name, 114 List<MetadataBuilder> metadata, String name,
114 List<TypeVariableBuilder> typeVariables, int modifiers, 115 List<TypeVariableBuilder> typeVariables, int modifiers,
115 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces) { 116 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces) {
116 NamedMixinApplicationBuilder builder = 117 NamedMixinApplicationBuilder builder =
117 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables, 118 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables,
118 modifiers, mixinApplication, interfaces, classTypes, this); 119 modifiers, mixinApplication, interfaces, declarationTypes, this);
119 // Nested scope began in `OutlineBuilder.beginNamedMixinApplication`. 120 // Nested scope began in `OutlineBuilder.beginNamedMixinApplication`.
120 endNestedScope(); 121 endNestedScope();
121 return addBuilder(name, builder); 122 return addBuilder(name, builder);
122 } 123 }
123 124
124 FieldBuilder addField(List<MetadataBuilder> metadata, 125 FieldBuilder addField(List<MetadataBuilder> metadata,
125 int modifiers, KernelTypeBuilder type, String name) { 126 int modifiers, KernelTypeBuilder type, String name) {
126 return addBuilder(name, 127 return addBuilder(name,
127 new KernelFieldBuilder(metadata, type, name, modifiers)); 128 new KernelFieldBuilder(metadata, type, name, modifiers));
128 } 129 }
129 130
130 ProcedureBuilder addProcedure(List<MetadataBuilder> metadata, 131 ProcedureBuilder addProcedure(List<MetadataBuilder> metadata,
131 int modifiers, KernelTypeBuilder returnType, String name, 132 int modifiers, KernelTypeBuilder returnType, String name,
132 List<TypeVariableBuilder> typeVariables, 133 List<TypeVariableBuilder> typeVariables,
133 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, 134 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier,
134 ProcedureKind kind) { 135 ProcedureKind kind) {
136 // Nested scope began in `OutlineBuilder.beginMethod` or
137 // `OutlineBuilder.beginTopLevelMethod`.
138 endNestedScope().resolveTypes(typeVariables);
135 return addBuilder(name, 139 return addBuilder(name,
136 new KernelProcedureBuilder(metadata, modifiers, returnType, name, 140 new KernelProcedureBuilder(metadata, modifiers, returnType, name,
137 typeVariables, formals, asyncModifier, kind)); 141 typeVariables, formals, asyncModifier, kind));
138 } 142 }
139 143
140 void addFactoryMethod(List<MetadataBuilder> metadata, 144 void addFactoryMethod(List<MetadataBuilder> metadata,
141 ConstructorReferenceBuilder constructorName, 145 ConstructorReferenceBuilder constructorName,
142 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, 146 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier,
143 ConstructorReferenceBuilder redirectionTarget) { 147 ConstructorReferenceBuilder redirectionTarget) {
144 String name = constructorName.name; 148 String name = constructorName.name;
145 assert(constructorName.suffix == null); 149 assert(constructorName.suffix == null);
146 addBuilder(name, 150 addBuilder(name,
147 new KernelProcedureBuilder(metadata, staticMask, null, name, null, 151 new KernelProcedureBuilder(metadata, staticMask, null, name, null,
148 formals, asyncModifier, ProcedureKind.Factory, redirectionTarget)); 152 formals, asyncModifier, ProcedureKind.Factory, redirectionTarget));
149 } 153 }
150 154
151 EnumBuilder addEnum(List<MetadataBuilder> metadata, String name, 155 EnumBuilder addEnum(List<MetadataBuilder> metadata, String name,
152 List<String> constants) { 156 List<String> constants) {
153 return addBuilder(name, 157 return addBuilder(name,
154 new KernelEnumBuilder(metadata, name, constants, this)); 158 new KernelEnumBuilder(metadata, name, constants, this));
155 } 159 }
156 160
157 FunctionTypeAliasBuilder addFunctionTypeAlias(List<MetadataBuilder> metadata, 161 FunctionTypeAliasBuilder addFunctionTypeAlias(List<MetadataBuilder> metadata,
158 KernelTypeBuilder returnType, String name, 162 KernelTypeBuilder returnType, String name,
159 List<TypeVariableBuilder> typeVariables, 163 List<TypeVariableBuilder> typeVariables,
160 List<FormalParameterBuilder> formals) { 164 List<FormalParameterBuilder> formals) {
161 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder( 165 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder(
162 metadata, returnType, name, typeVariables, formals, classTypes, this); 166 metadata, returnType, name, typeVariables, formals, declarationTypes,
167 this);
163 // Nested scope began in `OutlineBuilder.beginFunctionTypeAlias`. 168 // Nested scope began in `OutlineBuilder.beginFunctionTypeAlias`.
164 endNestedScope(); 169 endNestedScope();
165 return addBuilder(name, typedef); 170 return addBuilder(name, typedef);
166 } 171 }
167 172
168 KernelFormalParameterBuilder addFormalParameter( 173 KernelFormalParameterBuilder addFormalParameter(
169 List<MetadataBuilder> metadata, int modifiers, 174 List<MetadataBuilder> metadata, int modifiers,
170 KernelTypeBuilder type, String name, bool hasThis) { 175 KernelTypeBuilder type, String name, bool hasThis) {
171 return new KernelFormalParameterBuilder( 176 return new KernelFormalParameterBuilder(
172 metadata, modifiers, type, name, hasThis); 177 metadata, modifiers, type, name, hasThis);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 } 275 }
271 expression.value = 276 expression.value =
272 defaultArgumentFrom(names[expression.name].initializer) 277 defaultArgumentFrom(names[expression.name].initializer)
273 ..parent = expression; 278 ..parent = expression;
274 } 279 }
275 } 280 }
276 } 281 }
277 return argumentsWithMissingDefaultValues.length; 282 return argumentsWithMissingDefaultValues.length;
278 } 283 }
279 } 284 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/builder/type_builder.dart ('k') | pkg/front_end/lib/src/fasta/parser/listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698