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

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

Issue 3009043002: Handle variable declarations in inferrer (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 '../../compiler_new.dart'; 7 import '../../compiler_new.dart';
8 import '../closure.dart'; 8 import '../closure.dart';
9 import '../common.dart'; 9 import '../common.dart';
10 import '../common_elements.dart'; 10 import '../common_elements.dart';
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 bool isFieldInitializerPotentiallyNull( 137 bool isFieldInitializerPotentiallyNull(
138 FieldEntity field, ir.Node initializer) { 138 FieldEntity field, ir.Node initializer) {
139 // TODO(johnniwinther): Implement the ad-hoc check in ast inferrer? 139 // TODO(johnniwinther): Implement the ad-hoc check in ast inferrer?
140 return true; 140 return true;
141 } 141 }
142 142
143 @override 143 @override
144 TypeInformation computeMemberTypeInformation( 144 TypeInformation computeMemberTypeInformation(
145 MemberEntity member, ir.Node body) { 145 MemberEntity member, ir.Node body) {
146 KernelTypeGraphBuilder visitor = new KernelTypeGraphBuilder( 146 KernelTypeGraphBuilder visitor = new KernelTypeGraphBuilder(
147 options, closedWorld, _closureDataLookup, this, member, body); 147 options,
148 closedWorld,
149 _closureDataLookup,
150 this,
151 member,
152 body,
153 _elementMap,
154 _globalLocalsMap.getLocalsMap(member));
148 return visitor.run(); 155 return visitor.run();
149 } 156 }
150 157
151 @override 158 @override
152 FunctionEntity lookupCallMethod(ClassEntity cls) { 159 FunctionEntity lookupCallMethod(ClassEntity cls) {
153 throw new UnimplementedError('KernelInferrerEngine.lookupCallMethod'); 160 throw new UnimplementedError('KernelInferrerEngine.lookupCallMethod');
154 } 161 }
155 162
156 @override 163 @override
157 ir.Node computeMemberBody(MemberEntity member) { 164 ir.Node computeMemberBody(MemberEntity member) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 failedAt(function, "Unexpected function definition $definition."); 282 failedAt(function, "Unexpected function definition $definition.");
276 } 283 }
277 284
278 @override 285 @override
279 ParameterTypeInformation createParameterTypeInformation( 286 ParameterTypeInformation createParameterTypeInformation(
280 Local parameter, TypeSystem<ir.Node> types) { 287 Local parameter, TypeSystem<ir.Node> types) {
281 MemberEntity context = parameter.memberContext; 288 MemberEntity context = parameter.memberContext;
282 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(context); 289 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(context);
283 ir.FunctionNode functionNode = 290 ir.FunctionNode functionNode =
284 localsMap.getFunctionNodeForParameter(parameter); 291 localsMap.getFunctionNodeForParameter(parameter);
285 DartType type = 292 DartType type = localsMap.getLocalType(_elementMap, parameter);
286 _elementMap.getDartType(localsMap.getParameterType(parameter));
287 MemberEntity member; 293 MemberEntity member;
288 bool isClosure = false; 294 bool isClosure = false;
289 if (functionNode.parent is ir.Member) { 295 if (functionNode.parent is ir.Member) {
290 member = _elementMap.getMember(functionNode.parent); 296 member = _elementMap.getMember(functionNode.parent);
291 } else if (functionNode.parent is ir.FunctionExpression || 297 } else if (functionNode.parent is ir.FunctionExpression ||
292 functionNode.parent is ir.FunctionDeclaration) { 298 functionNode.parent is ir.FunctionDeclaration) {
293 ClosureRepresentationInfo info = 299 ClosureRepresentationInfo info =
294 _closureDataLookup.getClosureInfo(functionNode.parent); 300 _closureDataLookup.getClosureInfo(functionNode.parent);
295 member = info.callMethod; 301 member = info.callMethod;
296 isClosure = true; 302 isClosure = true;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 ConstructorEntity constructor = member; 336 ConstructorEntity constructor = member;
331 if (constructor.isFactoryConstructor) { 337 if (constructor.isFactoryConstructor) {
332 DartType type = _elementEnvironment.getFunctionType(constructor); 338 DartType type = _elementEnvironment.getFunctionType(constructor);
333 return new FactoryConstructorTypeInformation(constructor, type); 339 return new FactoryConstructorTypeInformation(constructor, type);
334 } else { 340 } else {
335 return new GenerativeConstructorTypeInformation(constructor); 341 return new GenerativeConstructorTypeInformation(constructor);
336 } 342 }
337 } 343 }
338 } 344 }
339 } 345 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/builder_kernel.dart ('k') | pkg/compiler/lib/src/js_model/locals.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698