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

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: Address review comments. 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 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..e9f9b780ef3e68673578e8d78903f99dc8c60497
--- /dev/null
+++ b/frog/tests/leg_only/src/CascadeTest.dart
@@ -0,0 +1,69 @@
+// 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;
+ }
+ }
+
+ /**
+ * A pseudo-keyword.
+ */
+ import() {
+ x++;
+ }
+}
+
+main() {
+ A a = new A(1, 2);
+ a..check(1, 2)
+ ..swap()..check(2, 1)
+ ..x = 4..y = 9..check(4, 9)
+ ..setX(10)..check(10, 9)
+ ..y = 5..check(10, 5)
+ ..swap()()()..check(5, 10)
+ ..[0] = 2..check(2, 10)
+ ..setX(10).setY(3)..check(10, 3)
+ ..setX(7)["swap"]()..check(3, 7)
+ ..import()..check(4, 7)
+ ..["swap"]()()()..check(7, 4);
+ a.check(7,4);
+ a..(42); /// 01: compile-time error
+ a..37; /// 02: compile-time error
+ a.."foo"; /// 03: 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