| // Copyright (c) 2015, 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. |
| |
| // Simple test program for sync* generator functions. |
| |
| import "package:expect/expect.dart"; |
| import "dart:async"; |
| |
| var sync = "topLevelSync"; |
| var async = "topLevelAync"; |
| var await = "topLevelAwait"; |
| var yield = "topLevelYield"; |
| |
| test01() sync* { |
| var yield = 0; // //# 01: syntax error |
| var await = 0; // //# 02: syntax error |
| bool yield() => false; //# 04: syntax error |
| bool await() => false; //# 05: syntax error |
| |
| var x1 = sync; |
| var x3 = await; // //# 08: syntax error |
| var x4 = await 55; // //# 09: compile-time error |
| var x4 = yield; // //# 10: syntax error |
| |
| var stream = new Stream.fromIterable([1, 2, 3]); |
| await for (var e in stream) print(e); // //# 11: compile-time error |
| } |
| |
| test02() sync* { |
| yield 12321; |
| return null; // //# 20: compile-time error |
| } |
| |
| test03() sync* => null; // //# 30: syntax error |
| |
| get test04 sync* => null; // //# 40: syntax error |
| set test04(a) sync* { print(a); } // //# 41: compile-time error |
| |
| class K { |
| K() sync* {} // //# 50: compile-time error |
| get nix sync* {} |
| get garnix sync* => null; // //# 51: syntax error |
| set etwas(var z) sync* { } // //# 52: compile-time error |
| sync() sync* { |
| yield sync; // Yields a tear-off of the sync() method. |
| } |
| } |
| |
| main() { |
| var x; |
| x = test01(); |
| Expect.equals("()", x.toString()); |
| x = test02(); |
| test03(); //# 30: continued |
| Expect.equals("(12321)", x.toString()); |
| x = test04; // //# 40: continued |
| test04 = x; // //# 41: continued |
| x = new K(); |
| print(x.garnix); //# 51: continued |
| x.etwas = null; //# 52: continued |
| print(x.sync().toList()); |
| Expect.equals(1, x.sync().length); |
| // Expect.isTrue(x.sync().single is Function); |
| } |