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

Side by Side Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 2359453002: Handle local functions in kernel_impact. (Closed)
Patch Set: Updated cf. comments. Created 4 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 dart2js.resolution.members; 5 library dart2js.resolution.members;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/names.dart' show Selectors; 8 import '../common/names.dart' show Selectors;
9 import '../common/resolution.dart' show Resolution; 9 import '../common/resolution.dart' show Resolution;
10 import '../compile_time_constants.dart'; 10 import '../compile_time_constants.dart';
(...skipping 4139 matching lines...) Expand 10 before | Expand all | Expand 10 after
4150 conditionResult.constant, thenResult.constant, elseResult.constant); 4150 conditionResult.constant, thenResult.constant, elseResult.constant);
4151 registry.setConstant(node, constant); 4151 registry.setConstant(node, constant);
4152 return new ConstantResult(node, constant); 4152 return new ConstantResult(node, constant);
4153 } 4153 }
4154 return const NoneResult(); 4154 return const NoneResult();
4155 } 4155 }
4156 4156
4157 ResolutionResult visitStringInterpolation(StringInterpolation node) { 4157 ResolutionResult visitStringInterpolation(StringInterpolation node) {
4158 // TODO(johnniwinther): This should be a consequence of the registration 4158 // TODO(johnniwinther): This should be a consequence of the registration
4159 // of [registerStringInterpolation]. 4159 // of [registerStringInterpolation].
4160 registry.registerTypeUse(new TypeUse.instantiation(coreTypes.stringType));
4161 registry.registerFeature(Feature.STRING_INTERPOLATION); 4160 registry.registerFeature(Feature.STRING_INTERPOLATION);
4162 registerImplicitInvocation(Selectors.toString_);
4163 4161
4164 bool isValidAsConstant = true; 4162 bool isValidAsConstant = true;
4165 List<ConstantExpression> parts = <ConstantExpression>[]; 4163 List<ConstantExpression> parts = <ConstantExpression>[];
4166 4164
4167 void resolvePart(Node subnode) { 4165 void resolvePart(Node subnode) {
4168 ResolutionResult result = visit(subnode); 4166 ResolutionResult result = visit(subnode);
4169 if (isValidAsConstant && result.isConstant) { 4167 if (isValidAsConstant && result.isConstant) {
4170 parts.add(result.constant); 4168 parts.add(result.constant);
4171 } else { 4169 } else {
4172 isValidAsConstant = false; 4170 isValidAsConstant = false;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
4237 if (!target.statement.isValidContinueTarget()) { 4235 if (!target.statement.isValidContinueTarget()) {
4238 reporter.reportErrorMessage(node.target, MessageKind.INVALID_CONTINUE); 4236 reporter.reportErrorMessage(node.target, MessageKind.INVALID_CONTINUE);
4239 } 4237 }
4240 label.setContinueTarget(); 4238 label.setContinueTarget();
4241 registry.useLabel(node, label); 4239 registry.useLabel(node, label);
4242 } 4240 }
4243 registry.registerTargetOf(node, target); 4241 registry.registerTargetOf(node, target);
4244 return const NoneResult(); 4242 return const NoneResult();
4245 } 4243 }
4246 4244
4247 registerImplicitInvocation(Selector selector) {
4248 registry.registerDynamicUse(new DynamicUse(selector, null));
4249 }
4250
4251 ResolutionResult visitAsyncForIn(AsyncForIn node) { 4245 ResolutionResult visitAsyncForIn(AsyncForIn node) {
4252 if (!resolution.target.supportsAsyncAwait) { 4246 if (!resolution.target.supportsAsyncAwait) {
4253 reporter.reportErrorMessage( 4247 reporter.reportErrorMessage(
4254 node.awaitToken, MessageKind.ASYNC_AWAIT_NOT_SUPPORTED); 4248 node.awaitToken, MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
4255 } else { 4249 } else {
4256 if (!currentAsyncMarker.isAsync) { 4250 if (!currentAsyncMarker.isAsync) {
4257 reporter.reportErrorMessage( 4251 reporter.reportErrorMessage(
4258 node.awaitToken, MessageKind.INVALID_AWAIT_FOR_IN); 4252 node.awaitToken, MessageKind.INVALID_AWAIT_FOR_IN);
4259 } 4253 }
4260 registry.registerFeature(Feature.ASYNC_FOR_IN); 4254 registry.registerFeature(Feature.ASYNC_FOR_IN);
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
4730 } 4724 }
4731 return const NoneResult(); 4725 return const NoneResult();
4732 } 4726 }
4733 } 4727 }
4734 4728
4735 /// Looks up [name] in [scope] and unwraps the result. 4729 /// Looks up [name] in [scope] and unwraps the result.
4736 Element lookupInScope( 4730 Element lookupInScope(
4737 DiagnosticReporter reporter, Node node, Scope scope, String name) { 4731 DiagnosticReporter reporter, Node node, Scope scope, String name) {
4738 return Elements.unwrap(scope.lookup(name), reporter, node); 4732 return Elements.unwrap(scope.lookup(name), reporter, node);
4739 } 4733 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/kernel_visitor.dart ('k') | pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698