mirror of
https://github.com/flutter/packages.git
synced 2025-07-18 01:07:25 +08:00
[pigeon] added a test to assert circular references (#397)
This commit is contained in:
@ -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', () {
|
test('test compilation error', () {
|
||||||
final Pigeon dartle = Pigeon.setup();
|
final Pigeon dartle = Pigeon.setup();
|
||||||
_withTempFile('compilationError.dart', (File file) {
|
_withTempFile('compilationError.dart', (File file) {
|
||||||
|
Reference in New Issue
Block a user