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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | lib/compiler/implementation/resolver.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 // Test cascades.
6
7 class A {
8 int x;
9 int y;
10
11 A(this.x, this.y);
12
13 A setX(int x) { this.x = x; return this; }
14
15 void setY(int y) { this.y = y; }
16
17 Function swap() {
18 int tmp = x;
19 x = y;
20 y = tmp;
21 return this.swap;
22 }
23
24 void check(int x, int y) {
25 Expect.equals(x, this.x);
26 Expect.equals(y, this.y);
27 }
28
29 int operator[](var i) {
30 if (i == 0) return x;
31 if (i == 1) return y;
32 if (i == "swap") return this.swap;
33 return null;
34 }
35
36 int operator[]=(int i, int value) {
37 if (i == 0) {
38 x = value;
39 } else if (i == 1) {
40 y = value;
41 }
42 }
43
44 /**
45 * A pseudo-keyword.
46 */
47 import() {
48 x++;
49 }
50 }
51
52 main() {
53 A a = new A(1, 2);
54 a..check(1, 2)
55 ..swap()..check(2, 1)
56 ..x = 4..y = 9..check(4, 9)
57 ..setX(10)..check(10, 9)
58 ..y = 5..check(10, 5)
59 ..swap()()()..check(5, 10)
60 ..[0] = 2..check(2, 10)
61 ..setX(10).setY(3)..check(10, 3)
62 ..setX(7)["swap"]()..check(3, 7)
63 ..import()..check(4, 7)
64 ..["swap"]()()()..check(7, 4);
65 a.check(7,4);
66 a..(42); /// 01: compile-time error
67 a..37; /// 02: compile-time error
68 a.."foo"; /// 03: compile-time error
69 }
OLDNEW
« 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