|  | // Copyright (c) 2019, 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. | 
|  |  | 
|  | // Tests syntax edge cases. | 
|  | import 'package:expect/expect.dart'; | 
|  |  | 
|  | void main() { | 
|  | // Trailing comma after then. | 
|  | Expect.listEquals([1], [if (true) 1]); | 
|  | Expect.mapEquals({1: 1}, {if (true) 1: 1}); | 
|  | Expect.setEquals({1}, {if (true) 1}); | 
|  |  | 
|  | // Trailing comma after else. | 
|  | Expect.listEquals([1], [if (true) 1 else 2]); | 
|  | Expect.mapEquals({1: 1}, {if (true) 1: 1 else 2: 2}); | 
|  | Expect.setEquals({1}, {if (true) 1 else 2}); | 
|  |  | 
|  | // Trailing comma after for. | 
|  | Expect.listEquals([1], [1, for (; false;) 2]); | 
|  | Expect.mapEquals({1: 1}, {1: 1, for (; false;) 2: 2}); | 
|  | Expect.setEquals({1}, {1, for (; false;) 2}); | 
|  |  | 
|  | // Dangling else. | 
|  | Expect.listEquals( | 
|  | [1], | 
|  | [ | 
|  | if (true) | 
|  | if (false) 0 else 1, | 
|  | ], | 
|  | ); | 
|  | Expect.listEquals( | 
|  | [1], | 
|  | [ | 
|  | if (true) | 
|  | if (false) 0 else 1 | 
|  | else | 
|  | 2, | 
|  | ], | 
|  | ); | 
|  | Expect.listEquals( | 
|  | [2], | 
|  | [ | 
|  | if (false) | 
|  | if (false) 0 else 1 | 
|  | else | 
|  | 2, | 
|  | ], | 
|  | ); | 
|  |  | 
|  | // Precedence of then. | 
|  | Expect.listEquals([1, 2, 3], [1, if (true) true ? 2 : 0, 3]); | 
|  | var a = 0; | 
|  | Expect.listEquals([1, 2, 3], [1, if (true) a = 2, 3]); | 
|  |  | 
|  | // Precedence of else. | 
|  | Expect.listEquals([1, 2, 3], [1, if (false) 0 else true ? 2 : 0, 3]); | 
|  | a = 0; | 
|  | Expect.listEquals([1, 2, 3], [1, if (false) 0 else a = 2, 3]); | 
|  |  | 
|  | // Precedence of for. | 
|  | Expect.listEquals( | 
|  | [1, 2, 3], | 
|  | [1, for (var i = 0; i < 1; i++) true ? 2 : 0, 3], | 
|  | ); | 
|  | a = 0; | 
|  | Expect.listEquals([1, 2, 3], [1, for (var i = 0; i < 1; i++) a = 2, 3]); | 
|  | } |