diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart index 8a09b6b692..7273139e7e 100644 --- a/packages/pigeon/test/pigeon_lib_test.dart +++ b/packages/pigeon/test/pigeon_lib_test.dart @@ -378,6 +378,34 @@ void main() { } } + 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) {