Skip to content

Commit

Permalink
fix property accessor modifier logic
Browse files Browse the repository at this point in the history
(cherry picked from commit e649b3b)
  • Loading branch information
neetopia authored and KSP Auto Pick committed Jun 3, 2024
1 parent 82871d8 commit e34a635
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,14 @@ internal fun KtFunctionLikeSymbol.toModifiers(): Set<Modifier> {
result.add(Modifier.OVERRIDE)
}
}
is KtPropertyAccessorSymbol -> {
if (visibility != JavaVisibilities.PackageVisibility) {
result.add(visibility.toModifier())
}
if (modality != Modality.OPEN) {
result.add(modality.toModifier())
}
}
else -> Unit
}
return result
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,13 @@ abstract class KSPropertyAccessorImpl(
}

override val modifiers: Set<Modifier> by lazy {
((ktPropertyAccessorSymbol.psi as? KtModifierListOwner)?.toKSModifiers() ?: emptySet()).let {
(
if (origin == Origin.JAVA_LIB || origin == Origin.KOTLIN_LIB || origin == Origin.SYNTHETIC) {
(ktPropertyAccessorSymbol.toModifiers())
} else {
(ktPropertyAccessorSymbol.psi as? KtModifierListOwner)?.toKSModifiers() ?: emptySet()
}
).let {
if (origin == Origin.SYNTHETIC &&
(receiver.parentDeclaration as? KSClassDeclaration)?.classKind == ClassKind.INTERFACE
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ class LateinitPropertiesProcessor : AbstractTestProcessor() {
}

override fun visitPropertyDeclaration(property: KSPropertyDeclaration, data: Unit) {
lateinitPropertiesNames.add("setter, ${property.setter?.modifiers?.sorted()}, $property")
lateinitPropertiesNames.add("getter, ${property.getter?.modifiers?.sorted()}, $property")
if (Modifier.LATEINIT in property.modifiers) {
lateinitPropertiesNames += property.simpleName.asString()
}
Expand Down
16 changes: 14 additions & 2 deletions test-utils/testData/api/lateinitProperties.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,31 @@
// WITH_RUNTIME
// TEST PROCESSOR: LateinitPropertiesProcessor
// EXPECTED:
// getter, [PRIVATE, FINAL], prop1
// getter, [PRIVATE, FINAL], propSource1
// getter, [PUBLIC, FINAL], prop2
// getter, [PUBLIC, FINAL], prop3
// getter, [PUBLIC, FINAL], propSource2
// getter, [PUBLIC, FINAL], propSource3
// prop1
// prop2
// prop3
// propSource1
// propSource2
// propSource3
// setter, [PRIVATE, FINAL], prop1
// setter, [PRIVATE, FINAL], propSource1
// setter, [PUBLIC, FINAL], prop2
// setter, [PUBLIC, FINAL], prop3
// setter, [PUBLIC, FINAL], propSource2
// setter, [PUBLIC, FINAL], propSource3
// END
// MODULE: lib
// FILE: compiledProperties.kt
package test.compiled

open class Foo {
lateinit var prop1: Any
lateinit private var prop1: Any
companion object {
lateinit var prop2: Any
}
Expand All @@ -45,7 +57,7 @@ object Bar : Foo() {
package test.source

open class FooSource {
lateinit var propSource1: Any
lateinit private var propSource1: Any
companion object {
lateinit var propSource2: Any
}
Expand Down

0 comments on commit e34a635

Please sign in to comment.