[Lombok] Support RawTypes in fields wtih @Singular in K2 version
^KT-53657 Fixed
This commit is contained in:
committed by
teamcity
parent
06119a4670
commit
a78d43c1ec
+8
-6
@@ -186,9 +186,11 @@ class BuilderGenerator(session: FirSession) : FirDeclarationGenerationExtension(
|
||||
val addMultipleParameterType: FirTypeRef
|
||||
val valueParameters: List<ConeLombokValueParameter>
|
||||
|
||||
val fallbackParameterType = DummyJavaClassType.ObjectType.takeIf { javaClassifierType.isRaw }
|
||||
|
||||
when (typeName) {
|
||||
in LombokNames.SUPPORTED_COLLECTIONS -> {
|
||||
val parameterType = javaClassifierType.parameterType(0) ?: return
|
||||
val parameterType = javaClassifierType.parameterType(0) ?: fallbackParameterType ?: return
|
||||
valueParameters = listOf(
|
||||
ConeLombokValueParameter(nameInSingularForm, parameterType.toRef())
|
||||
)
|
||||
@@ -204,8 +206,8 @@ class BuilderGenerator(session: FirSession) : FirDeclarationGenerationExtension(
|
||||
}
|
||||
|
||||
in LombokNames.SUPPORTED_MAPS -> {
|
||||
val keyType = javaClassifierType.parameterType(0) ?: return
|
||||
val valueType = javaClassifierType.parameterType(1) ?: return
|
||||
val keyType = javaClassifierType.parameterType(0) ?: fallbackParameterType ?: return
|
||||
val valueType = javaClassifierType.parameterType(1) ?: fallbackParameterType ?: return
|
||||
valueParameters = listOf(
|
||||
ConeLombokValueParameter(Name.identifier("key"), keyType.toRef()),
|
||||
ConeLombokValueParameter(Name.identifier("value"), valueType.toRef()),
|
||||
@@ -217,9 +219,9 @@ class BuilderGenerator(session: FirSession) : FirDeclarationGenerationExtension(
|
||||
}
|
||||
|
||||
in LombokNames.SUPPORTED_TABLES -> {
|
||||
val rowKeyType = javaClassifierType.parameterType(0) ?: return
|
||||
val columnKeyType = javaClassifierType.parameterType(1) ?: return
|
||||
val valueType = javaClassifierType.parameterType(2) ?: return
|
||||
val rowKeyType = javaClassifierType.parameterType(0) ?: fallbackParameterType ?: return
|
||||
val columnKeyType = javaClassifierType.parameterType(1) ?: fallbackParameterType ?: return
|
||||
val valueType = javaClassifierType.parameterType(2) ?: fallbackParameterType ?: return
|
||||
|
||||
valueParameters = listOf(
|
||||
ConeLombokValueParameter(Name.identifier("rowKey"), rowKeyType.toRef()),
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object JavaClasses {
|
||||
val Object = DummyJavaClass("Object", javaLangName("Object"), numberOfTypeParameters = 0)
|
||||
val Iterable = DummyJavaClass("Iterable", javaLangName("Iterable"), numberOfTypeParameters = 1)
|
||||
val Collection = DummyJavaClass("Collection", javaUtilName("Collection"), numberOfTypeParameters = 1)
|
||||
val Map = DummyJavaClass("Map", javaUtilName("Map"), numberOfTypeParameters = 2)
|
||||
|
||||
@@ -90,6 +90,10 @@ class DummyJavaClassType(
|
||||
override val classifier: JavaClass,
|
||||
override val typeArguments: List<JavaType?>
|
||||
) : JavaClassifierType {
|
||||
companion object {
|
||||
val ObjectType = DummyJavaClassType(JavaClasses.Object, typeArguments = emptyList())
|
||||
}
|
||||
|
||||
override val annotations: Collection<JavaAnnotation>
|
||||
get() = emptyList()
|
||||
override val isDeprecatedInJavaDoc: Boolean
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// WITH_STDLIB
|
||||
// FULL_JDK
|
||||
// FILE: User.java
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.Singular;
|
||||
|
||||
@Builder
|
||||
@Data
|
||||
public class User {
|
||||
@Singular private java.util.Map numbers;
|
||||
@Singular private java.util.List statuses;
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
fun box(): String {
|
||||
val userBuilder = User.builder()
|
||||
.status(10)
|
||||
.status("hello")
|
||||
.statuses(listOf("world", 20))
|
||||
.number("1", 1)
|
||||
.numbers(mapOf(2 to "2"))
|
||||
|
||||
val user = userBuilder.build()
|
||||
|
||||
val expectedNumbers = mapOf("1" to 1, 2 to "2")
|
||||
val expectedStatuses = listOf(10, "hello", "world", 20)
|
||||
|
||||
return if (
|
||||
user.numbers == expectedNumbers &&
|
||||
user.statuses == expectedStatuses
|
||||
) {
|
||||
"OK"
|
||||
} else {
|
||||
"Error: $user"
|
||||
}
|
||||
}
|
||||
Generated
+6
@@ -61,6 +61,12 @@ public class BlackBoxCodegenTestForLombokGenerated extends AbstractBlackBoxCodeg
|
||||
runTest("plugins/lombok/testData/box/builderGuava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("builderRawSingular.kt")
|
||||
public void testBuilderRawSingular() throws Exception {
|
||||
runTest("plugins/lombok/testData/box/builderRawSingular.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("builderSingular.kt")
|
||||
public void testBuilderSingular() throws Exception {
|
||||
|
||||
Generated
+6
@@ -61,6 +61,12 @@ public class FirBlackBoxCodegenTestForLombokGenerated extends AbstractFirBlackBo
|
||||
runTest("plugins/lombok/testData/box/builderGuava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("builderRawSingular.kt")
|
||||
public void testBuilderRawSingular() throws Exception {
|
||||
runTest("plugins/lombok/testData/box/builderRawSingular.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("builderSingular.kt")
|
||||
public void testBuilderSingular() throws Exception {
|
||||
|
||||
Generated
+6
@@ -61,6 +61,12 @@ public class IrBlackBoxCodegenTestForLombokGenerated extends AbstractIrBlackBoxC
|
||||
runTest("plugins/lombok/testData/box/builderGuava.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("builderRawSingular.kt")
|
||||
public void testBuilderRawSingular() throws Exception {
|
||||
runTest("plugins/lombok/testData/box/builderRawSingular.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("builderSingular.kt")
|
||||
public void testBuilderSingular() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user