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

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

Issue 2695453002: Generalize DeclarationBuilder.resolveTypes. (Closed)
Patch Set: 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(int charOffset) { 89 KernelTypeBuilder addVoidType(int charOffset) {
90 return new KernelNamedTypeBuilder("void", null, charOffset, fileUri); 90 return new KernelNamedTypeBuilder("void", null, charOffset, fileUri);
91 } 91 }
92 92
93 void addClass(List<MetadataBuilder> metadata, 93 void 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, int charOffset) { 96 List<KernelTypeBuilder> interfaces, int charOffset) {
97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className, 97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className,
98 typeVariables, supertype, interfaces, classMembers, declarationTypes, 98 typeVariables, supertype, interfaces, classMembers, this,
99 this,
100 new List<ConstructorReferenceBuilder>.from(constructorReferences), 99 new List<ConstructorReferenceBuilder>.from(constructorReferences),
101 charOffset); 100 charOffset);
102 constructorReferences.clear(); 101 constructorReferences.clear();
103 classMembers.forEach((String name, MemberBuilder builder) { 102 classMembers.forEach((String name, MemberBuilder builder) {
104 while (builder != null) { 103 while (builder != null) {
105 builder.parent = cls; 104 builder.parent = cls;
106 builder = builder.next; 105 builder = builder.next;
107 } 106 }
108 }); 107 });
109 // Nested declaration began in `OutlineBuilder.beginClassDeclaration`. 108 // Nested declaration began in `OutlineBuilder.beginClassDeclaration`.
110 endNestedDeclaration(); 109 endNestedDeclaration().resolveTypes(typeVariables);
111 addBuilder(className, cls, charOffset); 110 addBuilder(className, cls, charOffset);
112 } 111 }
113 112
114 void addNamedMixinApplication( 113 void addNamedMixinApplication(
115 List<MetadataBuilder> metadata, String name, 114 List<MetadataBuilder> metadata, String name,
116 List<TypeVariableBuilder> typeVariables, int modifiers, 115 List<TypeVariableBuilder> typeVariables, int modifiers,
117 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces, 116 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces,
118 int charOffset) { 117 int charOffset) {
119 NamedMixinApplicationBuilder builder = 118 NamedMixinApplicationBuilder builder =
120 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables, 119 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables,
121 modifiers, mixinApplication, interfaces, declarationTypes, this, 120 modifiers, mixinApplication, interfaces, this, charOffset);
122 charOffset);
123 // Nested declaration began in `OutlineBuilder.beginNamedMixinApplication`. 121 // Nested declaration began in `OutlineBuilder.beginNamedMixinApplication`.
124 endNestedDeclaration(); 122 endNestedDeclaration().resolveTypes(typeVariables);
125 addBuilder(name, builder, charOffset); 123 addBuilder(name, builder, charOffset);
126 } 124 }
127 125
128 void addField(List<MetadataBuilder> metadata, 126 void addField(List<MetadataBuilder> metadata,
129 int modifiers, KernelTypeBuilder type, String name, int charOffset) { 127 int modifiers, KernelTypeBuilder type, String name, int charOffset) {
130 addBuilder(name, new KernelFieldBuilder( 128 addBuilder(name, new KernelFieldBuilder(
131 metadata, type, name, modifiers, this, charOffset), charOffset); 129 metadata, type, name, modifiers, this, charOffset), charOffset);
132 } 130 }
133 131
134 void addProcedure(List<MetadataBuilder> metadata, 132 void addProcedure(List<MetadataBuilder> metadata,
135 int modifiers, KernelTypeBuilder returnType, String name, 133 int modifiers, KernelTypeBuilder returnType, String name,
136 List<TypeVariableBuilder> typeVariables, 134 List<TypeVariableBuilder> typeVariables,
137 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, 135 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier,
138 ProcedureKind kind, int charOffset, {bool isTopLevel}) { 136 ProcedureKind kind, int charOffset, {bool isTopLevel}) {
139 // Nested declaration began in `OutlineBuilder.beginMethod` or 137 // Nested declaration began in `OutlineBuilder.beginMethod` or
140 // `OutlineBuilder.beginTopLevelMethod`. 138 // `OutlineBuilder.beginTopLevelMethod`.
141 endNestedDeclaration().resolveTypes(typeVariables); 139 endNestedDeclaration().resolveTypes(typeVariables);
142 addBuilder(name, 140 addBuilder(name,
143 new KernelProcedureBuilder(metadata, modifiers, returnType, name, 141 new KernelProcedureBuilder(metadata, modifiers, returnType, name,
144 typeVariables, formals, asyncModifier, kind, this, charOffset), 142 typeVariables, formals, asyncModifier, kind, this, charOffset),
145 charOffset); 143 charOffset);
146 } 144 }
147 145
148 void addFactoryMethod(List<MetadataBuilder> metadata, 146 void addFactoryMethod(List<MetadataBuilder> metadata,
149 ConstructorReferenceBuilder constructorName, 147 ConstructorReferenceBuilder constructorName,
150 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, 148 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier,
151 ConstructorReferenceBuilder redirectionTarget, int charOffset) { 149 ConstructorReferenceBuilder redirectionTarget, int charOffset) {
150 // Nested declaration began in `OutlineBuilder.beginFactoryMethod`.
151 endNestedDeclaration().resolveTypes(null);
152 String name = constructorName.name; 152 String name = constructorName.name;
153 assert(constructorName.suffix == null); 153 assert(constructorName.suffix == null);
154 addBuilder(name, 154 addBuilder(name,
155 new KernelProcedureBuilder(metadata, staticMask, null, name, null, 155 new KernelProcedureBuilder(metadata, staticMask, null, name, null,
156 formals, asyncModifier, ProcedureKind.Factory, this, charOffset, 156 formals, asyncModifier, ProcedureKind.Factory, this, charOffset,
157 redirectionTarget), charOffset); 157 redirectionTarget), charOffset);
158 } 158 }
159 159
160 void addEnum(List<MetadataBuilder> metadata, String name, 160 void addEnum(List<MetadataBuilder> metadata, String name,
161 List<String> constants, int charOffset) { 161 List<String> constants, int charOffset) {
162 addBuilder(name, 162 addBuilder(name,
163 new KernelEnumBuilder(metadata, name, constants, this, charOffset), 163 new KernelEnumBuilder(metadata, name, constants, this, charOffset),
164 charOffset); 164 charOffset);
165 } 165 }
166 166
167 void addFunctionTypeAlias(List<MetadataBuilder> metadata, 167 void addFunctionTypeAlias(List<MetadataBuilder> metadata,
168 KernelTypeBuilder returnType, String name, 168 KernelTypeBuilder returnType, String name,
169 List<TypeVariableBuilder> typeVariables, 169 List<TypeVariableBuilder> typeVariables,
170 List<FormalParameterBuilder> formals, int charOffset) { 170 List<FormalParameterBuilder> formals, int charOffset) {
171 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder( 171 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder(
172 metadata, returnType, name, typeVariables, formals, declarationTypes, 172 metadata, returnType, name, typeVariables, formals, this, charOffset);
173 this, charOffset);
174 // Nested declaration began in `OutlineBuilder.beginFunctionTypeAlias`. 173 // Nested declaration began in `OutlineBuilder.beginFunctionTypeAlias`.
175 endNestedDeclaration(); 174 endNestedDeclaration().resolveTypes(typeVariables);
176 addBuilder(name, typedef, charOffset); 175 addBuilder(name, typedef, charOffset);
177 } 176 }
178 177
179 KernelFormalParameterBuilder addFormalParameter( 178 KernelFormalParameterBuilder addFormalParameter(
180 List<MetadataBuilder> metadata, int modifiers, 179 List<MetadataBuilder> metadata, int modifiers,
181 KernelTypeBuilder type, String name, bool hasThis, int charOffset) { 180 KernelTypeBuilder type, String name, bool hasThis, int charOffset) {
182 return new KernelFormalParameterBuilder( 181 return new KernelFormalParameterBuilder(
183 metadata, modifiers, type, name, hasThis, this, charOffset); 182 metadata, modifiers, type, name, hasThis, this, charOffset);
184 } 183 }
185 184
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 } 280 }
282 expression.value = 281 expression.value =
283 defaultArgumentFrom(names[expression.name].initializer) 282 defaultArgumentFrom(names[expression.name].initializer)
284 ..parent = expression; 283 ..parent = expression;
285 } 284 }
286 } 285 }
287 } 286 }
288 return argumentsWithMissingDefaultValues.length; 287 return argumentsWithMissingDefaultValues.length;
289 } 288 }
290 } 289 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698