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

Unified Diff: frog/tests/leg_only/src/CascadeTest.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, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | lib/compiler/implementation/resolver.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: frog/tests/leg_only/src/CascadeTest.dart
diff --git a/frog/tests/leg_only/src/CascadeTest.dart b/frog/tests/leg_only/src/CascadeTest.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a3053abbc43323316610d63bf5fcdf7f0190a9e4
--- /dev/null
+++ b/frog/tests/leg_only/src/CascadeTest.dart
@@ -0,0 +1,46 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Test cascades.
+
+class A {
+ int x;
+ int y;
+ A(this.x, this.y);
+ A setX(int x) { this.x = x; return this; }
+ void setY(int y) { this.y = y; }
+ Function swap() {
+ int tmp = x;
+ x = y;
+ y = tmp;
+ return this.swap;
+ }
+ void check(int x, int y) {
+ Expect.equals(x, this.x);
+ Expect.equals(y, this.y);
+ }
+ int operator[](var i) {
+ if (i == 0) return x;
+ if (i == 1) return y;
+ if (i == "swap") return this.swap;
+ return null;
+ }
+ int operator[]=(int i, int value) {
+ if (i == 0) {
+ x = value;
+ } else if (i == 1) {
+ y = value;
+ }
+ }
+}
+
+main() {
+ A a = new A(1, 2);
+ a..check(1, 2)..swap()..check(2, 1)..x = 4
+ ..check(4, 1)..setX(10)..check(10, 1)..y = 5
+ ..check(10, 5)..swap()()()..check(5, 10)..[0] = 2
+ ..check(2, 10)..setX(10).setY(3)..check(10, 3)
sra1 2012/03/30 21:52:20 Could you reformat it so that the assignment forms
Lasse Reichstein Nielsen 2012/04/10 08:12:43 Good point. I wasn't expecting it to work, but th
+ ..["swap"]()()()..check(3, 10);
+ a..(42); /// 01: compile-time error
+}
« no previous file with comments | « no previous file | lib/compiler/implementation/resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698