From 70da19bd22b09f5351d43ae6011f39b0aac5a891 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 3 Aug 2022 13:43:58 +0300 Subject: [PATCH] [Lombok K2] Fix name convention for @With on boolean fields ^KT-53451 Fixed ^KT-53370 --- .../kotlin/lombok/k2/generators/WithGenerator.kt | 10 +++++++++- plugins/lombok/testData/box/withBooleanField.kt | 1 - 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/generators/WithGenerator.kt b/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/generators/WithGenerator.kt index 0bb8df15296..cdbc13df966 100644 --- a/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/generators/WithGenerator.kt +++ b/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/generators/WithGenerator.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.toEffectiveVisibility import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef +import org.jetbrains.kotlin.fir.types.isBoolean import org.jetbrains.kotlin.lombok.config.AccessLevel import org.jetbrains.kotlin.lombok.k2.config.ConeLombokAnnotations.With import org.jetbrains.kotlin.lombok.k2.config.LombokService @@ -33,6 +34,7 @@ import org.jetbrains.kotlin.lombok.utils.collectWithNotNull import org.jetbrains.kotlin.lombok.utils.toPropertyNameCapitalized import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.types.typeUtil.isBoolean class WithGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) { private val lombokService: LombokService @@ -98,7 +100,13 @@ class WithGenerator(session: FirSession) : FirDeclarationGenerationExtension(ses private fun computeWithName(field: FirJavaField, withInfo: With): Name? { if (withInfo.visibility == AccessLevel.NONE) return null - val functionName = "with" + toPropertyNameCapitalized(field.name.identifier) + val rawPropertyName = field.name.identifier + val propertyName = if (field.returnTypeRef.isPrimitiveBoolean() && rawPropertyName.startsWith("is")) { + rawPropertyName.removePrefix("is") + } else { + rawPropertyName + } + val functionName = "with" + toPropertyNameCapitalized(propertyName) return Name.identifier(functionName) } } diff --git a/plugins/lombok/testData/box/withBooleanField.kt b/plugins/lombok/testData/box/withBooleanField.kt index 656da4aa7ba..a4a5a352fc7 100644 --- a/plugins/lombok/testData/box/withBooleanField.kt +++ b/plugins/lombok/testData/box/withBooleanField.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // ISSUE: KT-53451, KT-53370 // FILE: UserData.java