| // Copyright (c) 2011, 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. |
| |
| /// @assertion An expression e may always be enclosed in parentheses, but this |
| /// never has any semantic effect on e. |
| /// @description Checks that any expression can be enclosed in parentheses. |
| /// @author msyabro |
| |
| // SharedOptions=--enable-experiment=triple-shift |
| |
| class C { |
| method() {} |
| var id; |
| test() { |
| //number literals |
| (1); |
| (0.5); |
| |
| //string literals |
| (''); |
| (""); |
| |
| //null |
| (null); |
| |
| //this |
| (this); |
| |
| //boolean literals |
| (true); |
| |
| //list literal |
| ([1, 2, 3]); |
| |
| //map literal |
| ({'1': 1, '2': 2}); |
| |
| //function expressions |
| (()=> 1); |
| (() {}); |
| |
| //instance creation |
| (new C()); |
| |
| //invocation |
| var o = new C(); |
| (o.method()); |
| (method()); |
| (o.id); |
| |
| //assignment |
| (id = 1); |
| (id += 1); |
| (id -= 1); |
| |
| //conditional expression |
| (true ? true : false); |
| |
| //logical expressions |
| (true || true); |
| (false && false); |
| |
| //bitwise expressions |
| (1 ^ 1); |
| (0 & 1); |
| (0 | 0); |
| |
| //relational expressions |
| (1 < 2); |
| (3 > 2); |
| |
| //equality |
| (identical(this, this)); |
| ('' == ""); |
| (1 != 1); |
| |
| //shift expressions |
| (1 << 1); |
| (2 >> 1); |
| |
| //triple shift expressions |
| (25 >>> 1); |
| |
| //additive expressions |
| (1 + 2); |
| (0 - 0); |
| |
| //multiplicative expressions |
| (2 * 1); |
| (1 / 1); |
| (0 ~/ 1); |
| (9 % 3); |
| |
| //unary expressions |
| (id++); |
| (--id); |
| (-1); |
| (~1); |
| (!false); |
| |
| //identifier reference |
| (id); |
| |
| //type test |
| (1 is int); |
| (2 is! int); |
| |
| // type cast |
| (1 as int); |
| } |
| } |
| |
| main() { |
| new C().test(); |
| } |