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

Side by Side Diff: frog/leg/resolver.dart

Issue 9310066: Generate a resolution error if a unary + is used for something other than numbers. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | frog/leg/ssa/builder.dart » ('j') | frog/leg/warnings.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 interface TreeElements { 5 interface TreeElements {
6 Element operator[](Node node); 6 Element operator[](Node node);
7 Selector getSelector(Send send); 7 Selector getSelector(Send send);
8 } 8 }
9 9
10 class TreeElementMapping implements TreeElements { 10 class TreeElementMapping implements TreeElements {
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 NamedArgument named = argument; 615 NamedArgument named = argument;
616 namedArguments.add(named.name.source); 616 namedArguments.add(named.name.source);
617 } 617 }
618 } 618 }
619 mapping.setSelector(node, new Invocation(count, namedArguments)); 619 mapping.setSelector(node, new Invocation(count, namedArguments));
620 } 620 }
621 621
622 visitSend(Send node) { 622 visitSend(Send node) {
623 Element target = resolveSend(node); 623 Element target = resolveSend(node);
624 if (node.isOperator) { 624 if (node.isOperator) {
625 if (node.selector.asIdentifier().source.stringValue === 'is') { 625 Operator op = node.selector.asOperator();
626 if (op.source.stringValue === 'is') {
626 resolveTypeTest(node.arguments.head); 627 resolveTypeTest(node.arguments.head);
627 assert(node.arguments.tail.isEmpty()); 628 assert(node.arguments.tail.isEmpty());
628 mapping.setSelector(node, Selector.BINARY_OPERATOR); 629 mapping.setSelector(node, Selector.BINARY_OPERATOR);
629 } else if (node.arguments.isEmpty()) { 630 } else if (node.arguments.isEmpty()) {
631 if (node.isPrefix && op.source.stringValue === '+'
632 && node.receiver.asLiteralInt() == null
633 && node.receiver.asLiteralDouble() == null) {
634 error(node, MessageKind.NO_UNARY_ADD);
635 }
630 mapping.setSelector(node, Selector.UNARY_OPERATOR); 636 mapping.setSelector(node, Selector.UNARY_OPERATOR);
631 } else { 637 } else {
632 visit(node.argumentsNode); 638 visit(node.argumentsNode);
633 mapping.setSelector(node, Selector.BINARY_OPERATOR); 639 mapping.setSelector(node, Selector.BINARY_OPERATOR);
634 } 640 }
635 } else if (node.isIndex) { 641 } else if (node.isIndex) {
636 visit(node.argumentsNode); 642 visit(node.argumentsNode);
637 assert(node.arguments.tail.isEmpty()); 643 assert(node.arguments.tail.isEmpty());
638 mapping.setSelector(node, Selector.INDEX); 644 mapping.setSelector(node, Selector.INDEX);
639 } else if (node.isPropertyAccess) { 645 } else if (node.isPropertyAccess) {
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 class TopScope extends Scope { 1167 class TopScope extends Scope {
1162 Universe universe; 1168 Universe universe;
1163 1169
1164 TopScope(Universe this.universe) : super(null, null); 1170 TopScope(Universe this.universe) : super(null, null);
1165 Element lookup(SourceString name) => universe.find(name); 1171 Element lookup(SourceString name) => universe.find(name);
1166 1172
1167 Element add(Element element) { 1173 Element add(Element element) {
1168 throw "Cannot add an element in the top scope"; 1174 throw "Cannot add an element in the top scope";
1169 } 1175 }
1170 } 1176 }
OLDNEW
« no previous file with comments | « no previous file | frog/leg/ssa/builder.dart » ('j') | frog/leg/warnings.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698