Skip to content

Commit e34a635

Browse files
neetopiaKSP Auto Pick
authored and
KSP Auto Pick
committed
fix property accessor modifier logic
(cherry picked from commit e649b3b)
1 parent 82871d8 commit e34a635

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSFunctionDeclarationImpl.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,14 @@ internal fun KtFunctionLikeSymbol.toModifiers(): Set<Modifier> {
238238
result.add(Modifier.OVERRIDE)
239239
}
240240
}
241+
is KtPropertyAccessorSymbol -> {
242+
if (visibility != JavaVisibilities.PackageVisibility) {
243+
result.add(visibility.toModifier())
244+
}
245+
if (modality != Modality.OPEN) {
246+
result.add(modality.toModifier())
247+
}
248+
}
241249
else -> Unit
242250
}
243251
return result

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSPropertyAccessorImpl.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@ abstract class KSPropertyAccessorImpl(
5050
}
5151

5252
override val modifiers: Set<Modifier> by lazy {
53-
((ktPropertyAccessorSymbol.psi as? KtModifierListOwner)?.toKSModifiers() ?: emptySet()).let {
53+
(
54+
if (origin == Origin.JAVA_LIB || origin == Origin.KOTLIN_LIB || origin == Origin.SYNTHETIC) {
55+
(ktPropertyAccessorSymbol.toModifiers())
56+
} else {
57+
(ktPropertyAccessorSymbol.psi as? KtModifierListOwner)?.toKSModifiers() ?: emptySet()
58+
}
59+
).let {
5460
if (origin == Origin.SYNTHETIC &&
5561
(receiver.parentDeclaration as? KSClassDeclaration)?.classKind == ClassKind.INTERFACE
5662
) {

test-utils/src/main/kotlin/com/google/devtools/ksp/processor/LateinitPropertiesProcessor.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class LateinitPropertiesProcessor : AbstractTestProcessor() {
3131
}
3232

3333
override fun visitPropertyDeclaration(property: KSPropertyDeclaration, data: Unit) {
34+
lateinitPropertiesNames.add("setter, ${property.setter?.modifiers?.sorted()}, $property")
35+
lateinitPropertiesNames.add("getter, ${property.getter?.modifiers?.sorted()}, $property")
3436
if (Modifier.LATEINIT in property.modifiers) {
3537
lateinitPropertiesNames += property.simpleName.asString()
3638
}

test-utils/testData/api/lateinitProperties.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,31 @@
1818
// WITH_RUNTIME
1919
// TEST PROCESSOR: LateinitPropertiesProcessor
2020
// EXPECTED:
21+
// getter, [PRIVATE, FINAL], prop1
22+
// getter, [PRIVATE, FINAL], propSource1
23+
// getter, [PUBLIC, FINAL], prop2
24+
// getter, [PUBLIC, FINAL], prop3
25+
// getter, [PUBLIC, FINAL], propSource2
26+
// getter, [PUBLIC, FINAL], propSource3
2127
// prop1
2228
// prop2
2329
// prop3
2430
// propSource1
2531
// propSource2
2632
// propSource3
33+
// setter, [PRIVATE, FINAL], prop1
34+
// setter, [PRIVATE, FINAL], propSource1
35+
// setter, [PUBLIC, FINAL], prop2
36+
// setter, [PUBLIC, FINAL], prop3
37+
// setter, [PUBLIC, FINAL], propSource2
38+
// setter, [PUBLIC, FINAL], propSource3
2739
// END
2840
// MODULE: lib
2941
// FILE: compiledProperties.kt
3042
package test.compiled
3143

3244
open class Foo {
33-
lateinit var prop1: Any
45+
lateinit private var prop1: Any
3446
companion object {
3547
lateinit var prop2: Any
3648
}
@@ -45,7 +57,7 @@ object Bar : Foo() {
4557
package test.source
4658

4759
open class FooSource {
48-
lateinit var propSource1: Any
60+
lateinit private var propSource1: Any
4961
companion object {
5062
lateinit var propSource2: Any
5163
}

0 commit comments

Comments
 (0)