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

Side by Side Diff: pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart

Issue 3009633002: Add tests for list and async marker (Closed)
Patch Set: Created 3 years, 3 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../closure.dart'; 7 import '../closure.dart';
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common_elements.dart'; 9 import '../common_elements.dart';
10 import '../compiler.dart'; 10 import '../compiler.dart';
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 new KernelTypeGraphBuilder(member, compiler, _elementMap, this, body); 118 new KernelTypeGraphBuilder(member, compiler, _elementMap, this, body);
119 return visitor.run(); 119 return visitor.run();
120 } 120 }
121 121
122 @override 122 @override
123 FunctionEntity lookupCallMethod(ClassEntity cls) { 123 FunctionEntity lookupCallMethod(ClassEntity cls) {
124 throw new UnimplementedError('KernelInferrerEngine.lookupCallMethod'); 124 throw new UnimplementedError('KernelInferrerEngine.lookupCallMethod');
125 } 125 }
126 126
127 @override 127 @override
128 void forEachParameter(FunctionEntity method, void f(Local parameter)) {
129 throw new UnimplementedError('KernelInferrerEngine.forEachParameter');
130 }
131
132 @override
133 ir.Node computeMemberBody(MemberEntity member) { 128 ir.Node computeMemberBody(MemberEntity member) {
134 MemberDefinition definition = _elementMap.getMemberDefinition(member); 129 MemberDefinition definition = _elementMap.getMemberDefinition(member);
135 switch (definition.kind) { 130 switch (definition.kind) {
136 case MemberKind.regular: 131 case MemberKind.regular:
137 ir.Member node = definition.node; 132 ir.Member node = definition.node;
138 if (node is ir.Field) { 133 if (node is ir.Field) {
139 return node.initializer; 134 return node.initializer;
140 } else if (node is ir.Procedure) { 135 } else if (node is ir.Procedure) {
141 return node.function; 136 return node.function;
142 } 137 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 bool checkListNode(ir.Node node) => true; 193 bool checkListNode(ir.Node node) => true;
199 194
200 @override 195 @override
201 bool checkLoopPhiNode(ir.Node node) => true; 196 bool checkLoopPhiNode(ir.Node node) => true;
202 197
203 @override 198 @override
204 bool checkPhiNode(ir.Node node) => true; 199 bool checkPhiNode(ir.Node node) => true;
205 200
206 @override 201 @override
207 void forEachParameter(FunctionEntity function, void f(Local parameter)) { 202 void forEachParameter(FunctionEntity function, void f(Local parameter)) {
208 throw new UnimplementedError('KernelTypeSystemStrategy.forEachParameter'); 203 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(function);
204
205 void processFunctionNode(ir.FunctionNode node) {
206 for (ir.VariableDeclaration variable in node.positionalParameters) {
207 f(localsMap.getLocalVariable(variable));
208 }
209 for (ir.VariableDeclaration variable in node.namedParameters) {
210 f(localsMap.getLocalVariable(variable));
211 }
212 }
213
214 MemberDefinition definition = _elementMap.getMemberDefinition(function);
215 switch (definition.kind) {
216 case MemberKind.regular:
217 ir.Node node = definition.node;
218 if (node is ir.Procedure) {
219 processFunctionNode(node.function);
220 return;
221 }
222 break;
223 case MemberKind.constructor:
224 case MemberKind.constructorBody:
225 ir.Node node = definition.node;
226 if (node is ir.Procedure) {
227 processFunctionNode(node.function);
228 return;
229 } else if (node is ir.Constructor) {
230 processFunctionNode(node.function);
231 return;
232 }
233 break;
234 case MemberKind.closureCall:
235 ir.Node node = definition.node;
236 if (node is ir.FunctionDeclaration) {
237 processFunctionNode(node.function);
238 return;
239 } else if (node is ir.FunctionExpression) {
240 processFunctionNode(node.function);
241 return;
242 }
243 break;
244 default:
245 }
246 failedAt(function, "Unexpected function definition $definition.");
209 } 247 }
210 248
211 @override 249 @override
212 ParameterTypeInformation createParameterTypeInformation( 250 ParameterTypeInformation createParameterTypeInformation(
213 Local parameter, TypeSystem<ir.Node> types) { 251 Local parameter, TypeSystem<ir.Node> types) {
214 MemberEntity context = parameter.memberContext; 252 MemberEntity context = parameter.memberContext;
215 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(context); 253 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(context);
216 ir.FunctionNode functionNode = 254 ir.FunctionNode functionNode =
217 localsMap.getFunctionNodeForParameter(parameter); 255 localsMap.getFunctionNodeForParameter(parameter);
218 DartType type = 256 DartType type =
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 ConstructorEntity constructor = member; 300 ConstructorEntity constructor = member;
263 if (constructor.isFactoryConstructor) { 301 if (constructor.isFactoryConstructor) {
264 DartType type = _elementEnvironment.getFunctionType(constructor); 302 DartType type = _elementEnvironment.getFunctionType(constructor);
265 return new FactoryConstructorTypeInformation(constructor, type); 303 return new FactoryConstructorTypeInformation(constructor, type);
266 } else { 304 } else {
267 return new GenerativeConstructorTypeInformation(constructor); 305 return new GenerativeConstructorTypeInformation(constructor);
268 } 306 }
269 } 307 }
270 } 308 }
271 } 309 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/inferrer_engine.dart ('k') | pkg/compiler/lib/src/kernel/element_map_mixins.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698