From 59160ba428916d737e2463e2db2863855de8e6da Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Tue, 29 Jun 2021 10:05:35 -0700 Subject: [PATCH] [pigeon] added a test to assert circular references (#397) --- packages/pigeon/test/pigeon_lib_test.dart | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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) {