From 6d3188b9525dd64dfb518dca39a7199e4a00238c Mon Sep 17 00:00:00 2001 From: traceyyoshima Date: Thu, 30 Nov 2023 16:58:23 -0700 Subject: [PATCH] Set the type on `J.Identifier` to null if it resolves to `J.Unknown`. --- .../internal/KotlinTreeParserVisitor.java | 2 +- .../kotlin/KotlinTypeMappingTest.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java b/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java index 9c371a8e7..e4b20070f 100644 --- a/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java +++ b/src/main/java/org/openrewrite/kotlin/internal/KotlinTreeParserVisitor.java @@ -3430,7 +3430,7 @@ private J.Identifier createIdentifier(String name, Space prefix, Markers.EMPTY, emptyList(), name, - type, + type instanceof JavaType.Unknown ? null : type, fieldType ); } diff --git a/src/test/java/org/openrewrite/kotlin/KotlinTypeMappingTest.java b/src/test/java/org/openrewrite/kotlin/KotlinTypeMappingTest.java index 100bd9145..d108662a6 100644 --- a/src/test/java/org/openrewrite/kotlin/KotlinTypeMappingTest.java +++ b/src/test/java/org/openrewrite/kotlin/KotlinTypeMappingTest.java @@ -863,6 +863,27 @@ class A : RemoteStub() ); } + @Test + void unknownIdentifier() { + rewriteRun( + kotlin( + //language=none + "class A : RemoteStub", + spec -> spec.afterRecipe(cu -> { + new KotlinIsoVisitor() { + @Override + public J.Identifier visitIdentifier(J.Identifier identifier, Integer integer) { + if ("RemoteStub".equals(identifier.getSimpleName())) { + assertThat(identifier.getType()).isNull(); + } + return super.visitIdentifier(identifier, integer); + } + }.visit(cu, 0); + }) + ) + ); + } + @Issue("https://github.com/openrewrite/rewrite-kotlin/issues/461") @Test void multipleBounds() {