blob: d8aea40ec240a93f5ff2d41735acb3c1846663a2 [file] [log] [blame]
 // 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. // @dart = 2.9 import "package:expect/expect.dart"; // 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); } operator [](var i) { if (i == 0) return x; if (i == 1) return y; if (i == "swap") return this.swap; return null; } 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); // ^ // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER // [cfe] Expected an identifier, but got ''. // ^ // [cfe] Expected an identifier, but got '('. a..37; // ^^ // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER // [cfe] Expected an identifier, but got '37'. a.."foo"; // ^^^^^ // [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER // [cfe] Expected an identifier, but got '"foo"'. }