From 85fb4539cdec0cde52f791ce86625894e3123b97 Mon Sep 17 00:00:00 2001 From: Karol Czeryna Date: Sun, 15 Dec 2024 15:15:49 +0100 Subject: [PATCH] fix converting type annotations --- .../lib/metadata_converter.dart | 5 +++- .../test/metadata_converter_test.dart | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/pkgs/_analyzer_cfe_macros/lib/metadata_converter.dart b/pkgs/_analyzer_cfe_macros/lib/metadata_converter.dart index e203f6b..a69dbea 100644 --- a/pkgs/_analyzer_cfe_macros/lib/metadata_converter.dart +++ b/pkgs/_analyzer_cfe_macros/lib/metadata_converter.dart @@ -502,7 +502,10 @@ T? convert(Object? object) => switch (object) { front_end.TypedefReference o => dart_model.TypedefReference(name: convert(o.name)) as T, front_end.TypeLiteral o => - dart_model.TypeLiteral(typeAnnotation: convert(o.typeAnnotation)) as T, + dart_model.TypeLiteral( + typeAnnotation: convertToTypeAnnotation(o.typeAnnotation), + ) + as T, front_end.TypeReference o => dart_model.TypeReference() as T, front_end.UnaryExpression o => dart_model.UnaryExpression( diff --git a/pkgs/_analyzer_cfe_macros/test/metadata_converter_test.dart b/pkgs/_analyzer_cfe_macros/test/metadata_converter_test.dart index 7153927..2e84b74 100644 --- a/pkgs/_analyzer_cfe_macros/test/metadata_converter_test.dart +++ b/pkgs/_analyzer_cfe_macros/test/metadata_converter_test.dart @@ -81,4 +81,28 @@ void main() { }); }); }); + + test('converts a type literal', () { + final invocation = TypeLiteral(NamedTypeAnnotation(TestClassReference())); + + Scope.query.run(() { + expect(convert(invocation), { + 'typeAnnotation': { + 'type': 'NamedTypeAnnotation', + 'value': { + 'reference': { + 'type': 'ClassReference', + 'value': {'name': 'Test'}, + }, + 'typeArguments': [], + }, + }, + }); + }); + }); +} + +class TestClassReference implements ClassReference { + @override + String get name => 'Test'; }