| Index: pkg/compiler/lib/src/resolution/members.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
|
| index c2814fd28db77a5d09ab66accd77f358a1853ad8..c0732346b733bd53310a80c3fb2bf0b617badefc 100644
|
| --- a/pkg/compiler/lib/src/resolution/members.dart
|
| +++ b/pkg/compiler/lib/src/resolution/members.dart
|
| @@ -4,6 +4,8 @@
|
|
|
| library dart2js.resolution.members;
|
|
|
| +import '../common/names.dart' show
|
| + Selectors;
|
| import '../compiler.dart' show
|
| Compiler,
|
| isPrivateName;
|
| @@ -418,8 +420,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (isNamedConstructor(node)) {
|
| String constructorName = node.selector.asIdentifier().source;
|
| return new Selector.callConstructor(
|
| - constructorName,
|
| - enclosingElement.library);
|
| + new Name(constructorName, enclosingElement.library));
|
| } else {
|
| return new Selector.callDefaultConstructor();
|
| }
|
| @@ -807,7 +808,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (op == null) {
|
| // Unsupported operator. An error has been reported during parsing.
|
| return new Selector.call(
|
| - source, library, node.argumentsNode.slowLength(), []);
|
| + new Name(source, library), node.argumentsNode.slowLength(), []);
|
| }
|
| return node.arguments.isEmpty
|
| ? new Selector.unaryOperator(op)
|
| @@ -817,9 +818,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| Identifier identifier = node.selector.asIdentifier();
|
| if (node.isPropertyAccess) {
|
| assert(!isSet);
|
| - return new Selector.getter(identifier.source, library);
|
| + return new Selector.getter(
|
| + new Name(identifier.source, library));
|
| } else if (isSet) {
|
| - return new Selector.setter(identifier.source, library);
|
| + return new Selector.setter(
|
| + new Name(identifier.source, library, isSetter: true));
|
| }
|
|
|
| // Compute the arity and the list of named arguments.
|
| @@ -838,13 +841,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| if (element != null && element.isConstructor) {
|
| return new Selector.callConstructor(
|
| - element.name, library, arity, named);
|
| + new Name(element.name, library), arity, named);
|
| }
|
|
|
| // If we're invoking a closure, we do not have an identifier.
|
| return (identifier == null)
|
| ? new Selector.callClosure(arity, named)
|
| - : new Selector.call(identifier.source, library, arity, named);
|
| + : new Selector.call(new Name(identifier.source, library), arity, named);
|
| }
|
|
|
| Selector resolveSelector(Send node, Element element) {
|
| @@ -4094,7 +4097,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| ResolutionResult visitStringInterpolation(StringInterpolation node) {
|
| registry.registerInstantiatedType(coreTypes.stringType);
|
| registry.registerStringInterpolation();
|
| - registerImplicitInvocation('toString', 0);
|
| + registerImplicitInvocation(Selectors.toString_);
|
|
|
| bool isValidAsConstant = true;
|
| List<ConstantExpression> parts = <ConstantExpression>[];
|
| @@ -4177,19 +4180,18 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| return const NoneResult();
|
| }
|
|
|
| - registerImplicitInvocation(String name, int arity) {
|
| - Selector selector = new Selector.call(name, null, arity);
|
| + registerImplicitInvocation(Selector selector) {
|
| registry.registerDynamicInvocation(new UniverseSelector(selector, null));
|
| }
|
|
|
| ResolutionResult visitAsyncForIn(AsyncForIn node) {
|
| registry.registerAsyncForIn(node);
|
| - registry.setCurrentSelector(node, compiler.currentSelector);
|
| + registry.setCurrentSelector(node, Selectors.current);
|
| registry.registerDynamicGetter(
|
| - new UniverseSelector(compiler.currentSelector, null));
|
| - registry.setMoveNextSelector(node, compiler.moveNextSelector);
|
| + new UniverseSelector(Selectors.current, null));
|
| + registry.setMoveNextSelector(node, Selectors.moveNext);
|
| registry.registerDynamicInvocation(
|
| - new UniverseSelector(compiler.moveNextSelector, null));
|
| + new UniverseSelector(Selectors.moveNext, null));
|
|
|
| visit(node.expression);
|
|
|
| @@ -4201,15 +4203,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| ResolutionResult visitSyncForIn(SyncForIn node) {
|
| registry.registerSyncForIn(node);
|
| - registry.setIteratorSelector(node, compiler.iteratorSelector);
|
| + registry.setIteratorSelector(node, Selectors.iterator);
|
| registry.registerDynamicGetter(
|
| - new UniverseSelector(compiler.iteratorSelector, null));
|
| - registry.setCurrentSelector(node, compiler.currentSelector);
|
| + new UniverseSelector(Selectors.iterator, null));
|
| + registry.setCurrentSelector(node, Selectors.current);
|
| registry.registerDynamicGetter(
|
| - new UniverseSelector(compiler.currentSelector, null));
|
| - registry.setMoveNextSelector(node, compiler.moveNextSelector);
|
| + new UniverseSelector(Selectors.current, null));
|
| + registry.setMoveNextSelector(node, Selectors.moveNext);
|
| registry.registerDynamicInvocation(
|
| - new UniverseSelector(compiler.moveNextSelector, null));
|
| + new UniverseSelector(Selectors.moveNext, null));
|
|
|
| visit(node.expression);
|
|
|
| @@ -4241,7 +4243,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (identifier == null) {
|
| compiler.reportError(send.selector, MessageKind.INVALID_FOR_IN);
|
| } else {
|
| - loopVariableSelector = new Selector.setter(identifier.source, library);
|
| + loopVariableSelector = new Selector.setter(
|
| + new Name(identifier.source, library));
|
| }
|
| if (send.receiver != null) {
|
| compiler.reportError(send.receiver, MessageKind.INVALID_FOR_IN);
|
| @@ -4256,7 +4259,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (identifier == null) {
|
| compiler.reportError(first, MessageKind.INVALID_FOR_IN);
|
| } else {
|
| - loopVariableSelector = new Selector.setter(identifier.source, library);
|
| + loopVariableSelector = new Selector.setter(
|
| + new Name(identifier.source, library));
|
| loopVariable = registry.getDefinition(identifier);
|
| }
|
| } else {
|
|
|