Index: tests/language/cyclic_typedef_test.dart |
diff --git a/tests/language/cyclic_typedef_test.dart b/tests/language/cyclic_typedef_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..61d8d0b8704d7d8cb05acf499ec6eed15f8ac7ed |
--- /dev/null |
+++ b/tests/language/cyclic_typedef_test.dart |
@@ -0,0 +1,51 @@ |
+// Copyright (c) 2013, 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. |
+ |
+// Check that cyclic reference of a typedef is a compile-time error. |
+ |
+// To test various cyclic references the definition of the [:typedef A():] is |
+// split over several lines: |
+typedef |
+ |
+// Cyclic through return type. |
+A /// 01: compile-time error |
+ |
+A // The name of the typedef |
+ |
+( // The left parenthesis of the typedef arguments. |
+ |
+// Cyclic through parameter type. |
+A a /// 02: compile-time error |
+ |
+// Cyclic through optional parameter type. |
+[A a] /// 03: compile-time error |
+ |
+// Cyclic through named parameter type. |
+{A a} /// 04: compile-time error |
+ |
+// Cyclic through generic parameter type. |
+List<A> a /// 05: compile-time error |
+ |
+// Cyclic through return type of function typed parameter. |
+A f() /// 06: compile-time error |
+ |
+// Cyclic through parameter type of function typed parameter. |
+f(A a) /// 07: compile-time error |
+ |
+// Cyclic through another typedef. |
+B b /// 08: compile-time error |
+ |
+// Cyclic through another more typedefs. |
+C c /// 09: compile-time error |
+ |
+); // The right parenthesis of the typedef arguments. |
+ |
+typedef B(A a); |
+typedef C(B b); |
+ |
+void testA(A a) {} |
+ |
+void main() { |
+ testA(null); |
+} |