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

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

Issue 2644843006: Use packages dart_parser, dart_scanner, and compiler_util. (Closed)
Patch Set: Created 3 years, 11 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';
11 import '../constants/constructors.dart' 11 import '../constants/constructors.dart'
12 show RedirectingFactoryConstantConstructor; 12 show RedirectingFactoryConstantConstructor;
13 import '../constants/expressions.dart'; 13 import '../constants/expressions.dart';
14 import '../constants/values.dart'; 14 import '../constants/values.dart';
15 import '../core_types.dart'; 15 import '../core_types.dart';
16 import '../elements/resolution_types.dart'; 16 import '../elements/resolution_types.dart';
17 import '../elements/elements.dart'; 17 import '../elements/elements.dart';
18 import '../elements/modelx.dart' 18 import '../elements/modelx.dart'
19 show 19 show
20 ConstructorElementX, 20 ConstructorElementX,
21 ErroneousElementX, 21 ErroneousElementX,
22 FunctionElementX, 22 FunctionElementX,
23 JumpTargetX, 23 JumpTargetX,
24 LocalFunctionElementX, 24 LocalFunctionElementX,
25 LocalParameterElementX, 25 LocalParameterElementX,
26 ParameterElementX, 26 ParameterElementX,
27 VariableElementX, 27 VariableElementX,
28 VariableList; 28 VariableList;
29 import '../options.dart'; 29 import '../options.dart';
30 import '../tokens/token.dart' show isUserDefinableOperator; 30 import 'package:dart_scanner/dart_scanner.dart' show isUserDefinableOperator;
31 import '../tree/tree.dart'; 31 import '../tree/tree.dart';
32 import '../universe/call_structure.dart' show CallStructure; 32 import '../universe/call_structure.dart' show CallStructure;
33 import '../universe/feature.dart' show Feature; 33 import '../universe/feature.dart' show Feature;
34 import '../universe/selector.dart' show Selector; 34 import '../universe/selector.dart' show Selector;
35 import '../universe/use.dart' show DynamicUse, StaticUse, TypeUse; 35 import '../universe/use.dart' show DynamicUse, StaticUse, TypeUse;
36 import '../util/util.dart' show Link; 36 import '../util/util.dart' show Link;
37 import 'access_semantics.dart'; 37 import 'access_semantics.dart';
38 import 'class_members.dart' show MembersCreator; 38 import 'class_members.dart' show MembersCreator;
39 import 'constructors.dart' 39 import 'constructors.dart'
40 show ConstructorResolver, ConstructorResult, ConstructorResultKind; 40 show ConstructorResolver, ConstructorResult, ConstructorResultKind;
(...skipping 3550 matching lines...) Expand 10 before | Expand all | Expand 10 after
3591 {'modifier': currentAsyncMarker}); 3591 {'modifier': currentAsyncMarker});
3592 } 3592 }
3593 } 3593 }
3594 visit(node.expression); 3594 visit(node.expression);
3595 return const NoneResult(); 3595 return const NoneResult();
3596 } 3596 }
3597 3597
3598 ResolutionResult visitYield(Yield node) { 3598 ResolutionResult visitYield(Yield node) {
3599 if (!resolution.target.supportsAsyncAwait) { 3599 if (!resolution.target.supportsAsyncAwait) {
3600 reporter.reportErrorMessage( 3600 reporter.reportErrorMessage(
3601 node.yieldToken, MessageKind.ASYNC_AWAIT_NOT_SUPPORTED); 3601 reporter.spanFromToken(node.yieldToken),
3602 MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
3602 } else { 3603 } else {
3603 if (!currentAsyncMarker.isYielding) { 3604 if (!currentAsyncMarker.isYielding) {
3604 reporter.reportErrorMessage(node, MessageKind.INVALID_YIELD); 3605 reporter.reportErrorMessage(node, MessageKind.INVALID_YIELD);
3605 } 3606 }
3606 if (currentAsyncMarker.isAsync) { 3607 if (currentAsyncMarker.isAsync) {
3607 commonElements.streamClass.ensureResolved(resolution); 3608 commonElements.streamClass.ensureResolved(resolution);
3608 } else { 3609 } else {
3609 commonElements.iterableClass.ensureResolved(resolution); 3610 commonElements.iterableClass.ensureResolved(resolution);
3610 } 3611 }
3611 } 3612 }
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
3730 3731
3731 ResolutionResult visitThrow(Throw node) { 3732 ResolutionResult visitThrow(Throw node) {
3732 registry.registerFeature(Feature.THROW_EXPRESSION); 3733 registry.registerFeature(Feature.THROW_EXPRESSION);
3733 visit(node.expression); 3734 visit(node.expression);
3734 return const NoneResult(); 3735 return const NoneResult();
3735 } 3736 }
3736 3737
3737 ResolutionResult visitAwait(Await node) { 3738 ResolutionResult visitAwait(Await node) {
3738 if (!resolution.target.supportsAsyncAwait) { 3739 if (!resolution.target.supportsAsyncAwait) {
3739 reporter.reportErrorMessage( 3740 reporter.reportErrorMessage(
3740 node.awaitToken, MessageKind.ASYNC_AWAIT_NOT_SUPPORTED); 3741 reporter.spanFromToken(node.awaitToken),
3742 MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
3741 } else { 3743 } else {
3742 if (!currentAsyncMarker.isAsync) { 3744 if (!currentAsyncMarker.isAsync) {
3743 reporter.reportErrorMessage(node, MessageKind.INVALID_AWAIT); 3745 reporter.reportErrorMessage(node, MessageKind.INVALID_AWAIT);
3744 } 3746 }
3745 commonElements.futureClass.ensureResolved(resolution); 3747 commonElements.futureClass.ensureResolved(resolution);
3746 } 3748 }
3747 visit(node.expression); 3749 visit(node.expression);
3748 return const NoneResult(); 3750 return const NoneResult();
3749 } 3751 }
3750 3752
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
3991 registry.registerNewStructure(node, structure.resolve(node)); 3993 registry.registerNewStructure(node, structure.resolve(node));
3992 }; 3994 };
3993 } 3995 }
3994 3996
3995 analyzeConstantDeferred(node, onAnalyzed: onAnalyzed); 3997 analyzeConstantDeferred(node, onAnalyzed: onAnalyzed);
3996 } else { 3998 } else {
3997 // Not constant. 3999 // Not constant.
3998 if (resolution.commonElements.isSymbolConstructor(constructor) && 4000 if (resolution.commonElements.isSymbolConstructor(constructor) &&
3999 !resolution.mirrorUsageAnalyzerTask 4001 !resolution.mirrorUsageAnalyzerTask
4000 .hasMirrorUsage(enclosingElement)) { 4002 .hasMirrorUsage(enclosingElement)) {
4001 reporter.reportHintMessage(node.newToken, MessageKind.NON_CONST_BLOAT, 4003 reporter.reportHintMessage(reporter.spanFromToken(node.newToken),
4004 MessageKind.NON_CONST_BLOAT,
4002 {'name': commonElements.symbolClass.name}); 4005 {'name': commonElements.symbolClass.name});
4003 } 4006 }
4004 registry.registerNewStructure( 4007 registry.registerNewStructure(
4005 node, 4008 node,
4006 new NewInvokeStructure( 4009 new NewInvokeStructure(
4007 new ConstructorAccessSemantics(kind, constructor, type), 4010 new ConstructorAccessSemantics(kind, constructor, type),
4008 selector)); 4011 selector));
4009 } 4012 }
4010 4013
4011 return resolutionResult; 4014 return resolutionResult;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
4263 label.setContinueTarget(); 4266 label.setContinueTarget();
4264 registry.useLabel(node, label); 4267 registry.useLabel(node, label);
4265 } 4268 }
4266 registry.registerTargetOf(node, target); 4269 registry.registerTargetOf(node, target);
4267 return const NoneResult(); 4270 return const NoneResult();
4268 } 4271 }
4269 4272
4270 ResolutionResult visitAsyncForIn(AsyncForIn node) { 4273 ResolutionResult visitAsyncForIn(AsyncForIn node) {
4271 if (!resolution.target.supportsAsyncAwait) { 4274 if (!resolution.target.supportsAsyncAwait) {
4272 reporter.reportErrorMessage( 4275 reporter.reportErrorMessage(
4273 node.awaitToken, MessageKind.ASYNC_AWAIT_NOT_SUPPORTED); 4276 reporter.spanFromToken(node.awaitToken),
4277 MessageKind.ASYNC_AWAIT_NOT_SUPPORTED);
4274 } else { 4278 } else {
4275 if (!currentAsyncMarker.isAsync) { 4279 if (!currentAsyncMarker.isAsync) {
4276 reporter.reportErrorMessage( 4280 reporter.reportErrorMessage(
4277 node.awaitToken, MessageKind.INVALID_AWAIT_FOR_IN); 4281 reporter.spanFromToken(node.awaitToken),
4282 MessageKind.INVALID_AWAIT_FOR_IN);
4278 } 4283 }
4279 registry.registerFeature(Feature.ASYNC_FOR_IN); 4284 registry.registerFeature(Feature.ASYNC_FOR_IN);
4280 registry.registerDynamicUse(new DynamicUse(Selectors.current, null)); 4285 registry.registerDynamicUse(new DynamicUse(Selectors.current, null));
4281 registry.registerDynamicUse(new DynamicUse(Selectors.moveNext, null)); 4286 registry.registerDynamicUse(new DynamicUse(Selectors.moveNext, null));
4282 } 4287 }
4283 visit(node.expression); 4288 visit(node.expression);
4284 4289
4285 Scope blockScope = new BlockScope(scope); 4290 Scope blockScope = new BlockScope(scope);
4286 visitForInDeclaredIdentifierIn(node.declaredIdentifier, node, blockScope); 4291 visitForInDeclaredIdentifierIn(node.declaredIdentifier, node, blockScope);
4287 visitLoopBodyIn(node, node.body, blockScope); 4292 visitLoopBodyIn(node, node.body, blockScope);
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
4667 } 4672 }
4668 4673
4669 ResolutionResult visitTryStatement(TryStatement node) { 4674 ResolutionResult visitTryStatement(TryStatement node) {
4670 // TODO(karlklose): also track the information about mutated variables, 4675 // TODO(karlklose): also track the information about mutated variables,
4671 // catch, and finally-block. 4676 // catch, and finally-block.
4672 registry.registerTryStatement(); 4677 registry.registerTryStatement();
4673 4678
4674 visit(node.tryBlock); 4679 visit(node.tryBlock);
4675 if (node.catchBlocks.isEmpty && node.finallyBlock == null) { 4680 if (node.catchBlocks.isEmpty && node.finallyBlock == null) {
4676 reporter.reportErrorMessage( 4681 reporter.reportErrorMessage(
4677 node.getEndToken().next, MessageKind.NO_CATCH_NOR_FINALLY); 4682 reporter.spanFromToken(node.getEndToken().next),
4683 MessageKind.NO_CATCH_NOR_FINALLY);
4678 } 4684 }
4679 visit(node.catchBlocks); 4685 visit(node.catchBlocks);
4680 visit(node.finallyBlock); 4686 visit(node.finallyBlock);
4681 return const NoneResult(); 4687 return const NoneResult();
4682 } 4688 }
4683 4689
4684 ResolutionResult visitCatchBlock(CatchBlock node) { 4690 ResolutionResult visitCatchBlock(CatchBlock node) {
4685 registry.registerFeature(Feature.CATCH_STATEMENT); 4691 registry.registerFeature(Feature.CATCH_STATEMENT);
4686 // Check that if catch part is present, then 4692 // Check that if catch part is present, then
4687 // it has one or two formal parameters. 4693 // it has one or two formal parameters.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
4763 } 4769 }
4764 return const NoneResult(); 4770 return const NoneResult();
4765 } 4771 }
4766 } 4772 }
4767 4773
4768 /// Looks up [name] in [scope] and unwraps the result. 4774 /// Looks up [name] in [scope] and unwraps the result.
4769 Element lookupInScope( 4775 Element lookupInScope(
4770 DiagnosticReporter reporter, Node node, Scope scope, String name) { 4776 DiagnosticReporter reporter, Node node, Scope scope, String name) {
4771 return Elements.unwrap(scope.lookup(name), reporter, node); 4777 return Elements.unwrap(scope.lookup(name), reporter, node);
4772 } 4778 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698