[pigeon] added a test to assert circular references (#397)
diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart
index 8a09b6b..7273139 100644
--- a/packages/pigeon/test/pigeon_lib_test.dart
+++ b/packages/pigeon/test/pigeon_lib_test.dart
@@ -378,6 +378,34 @@
}
}
+ test('test circular references', () {
+ final Pigeon dartle = Pigeon.setup();
+ _withTempFile('compilationError.dart', (File file) {
+ file.writeAsStringSync('''
+class Foo {
+ Bar? bar;
+}
+
+class Bar {
+ Foo? foo;
+}
+
+@HostApi()
+abstract class NotificationsHostApi {
+ void doit(Foo foo);
+}
+''');
+ final ParseResults results =
+ dartle.parseFile(file.path, ignoresInvalidImports: true);
+ expect(results.errors.length, 0);
+ expect(results.root.classes.length, 2);
+ final Class foo = results.root.classes
+ .firstWhere((Class aClass) => aClass.name == 'Foo');
+ expect(foo.fields.length, 1);
+ expect(foo.fields[0].dataType, 'Bar');
+ });
+ });
+
test('test compilation error', () {
final Pigeon dartle = Pigeon.setup();
_withTempFile('compilationError.dart', (File file) {