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: lib/compiler/implementation/resolver.dart

Issue 9958009: Implement cascaded calls. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Proof-of-concept implementation of cascade Created 8 years, 8 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
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 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 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 // fields they reference are visible, but must be resolved independently. 665 // fields they reference are visible, but must be resolved independently.
666 if (element.kind == ElementKind.FIELD_PARAMETER) { 666 if (element.kind == ElementKind.FIELD_PARAMETER) {
667 useElement(parameterNode, element); 667 useElement(parameterNode, element);
668 } else { 668 } else {
669 defineElement(variableDefinitions.definitions.nodes.head, element); 669 defineElement(variableDefinitions.definitions.nodes.head, element);
670 } 670 }
671 parameterNodes = parameterNodes.tail; 671 parameterNodes = parameterNodes.tail;
672 }); 672 });
673 } 673 }
674 674
675 visitCascade(Cascade node) {
676 visit(node.expression);
677 }
678
679 visitCascadeReceiver(CascadeReceiver node) {
680 visit(node.expression);
681 }
682
675 Element visitClassNode(ClassNode node) { 683 Element visitClassNode(ClassNode node) {
676 cancel(node, "shouldn't be called"); 684 cancel(node, "shouldn't be called");
677 } 685 }
678 686
679 visitIn(Node node, Scope scope) { 687 visitIn(Node node, Scope scope) {
680 context = scope; 688 context = scope;
681 Element element = visit(node); 689 Element element = visit(node);
682 context = context.parent; 690 context = context.parent;
683 return element; 691 return element;
684 } 692 }
(...skipping 1107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 1800
1793 TopScope(LibraryElement library) : super(null, library); 1801 TopScope(LibraryElement library) : super(null, library);
1794 Element lookup(SourceString name) { 1802 Element lookup(SourceString name) {
1795 return library.find(name); 1803 return library.find(name);
1796 } 1804 }
1797 1805
1798 Element add(Element element) { 1806 Element add(Element element) {
1799 throw "Cannot add an element in the top scope"; 1807 throw "Cannot add an element in the top scope";
1800 } 1808 }
1801 } 1809 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698