diff options
author | Jiaxiang Chen <jiaxiang@google.com> | 2023-01-11 16:20:59 -0800 |
---|---|---|
committer | KSP Auto Pick <kotlin-symbol-processing@google.com> | 2023-01-12 10:01:00 +0000 |
commit | 348cca880d7886eade42366d646bac33f77f0adb (patch) | |
tree | bd139de75ef6214ba6d92bae6f683911c195152d | |
parent | 66f46fd64c0469967911ed4413c8e857d8eacd3f (diff) | |
download | ksp-348cca880d7886eade42366d646bac33f77f0adb.tar.gz |
use correct overridee check for properties declared in constructors.
fixes #1182
(cherry picked from commit 609eef76563c1782fb3271ae40ead6e0a5090ab7)
3 files changed, 12 insertions, 3 deletions
diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/kotlin/KSPropertyDeclarationParameterImpl.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/kotlin/KSPropertyDeclarationParameterImpl.kt index 22da2cd7..03674f73 100644 --- a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/kotlin/KSPropertyDeclarationParameterImpl.kt +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/kotlin/KSPropertyDeclarationParameterImpl.kt @@ -91,9 +91,8 @@ class KSPropertyDeclarationParameterImpl private constructor(val ktParameter: Kt override fun isDelegated(): Boolean = false override fun findOverridee(): KSPropertyDeclaration? { - return ResolverImpl.instance!!.resolvePropertyDeclaration(this)?.original?.overriddenDescriptors - ?.singleOrNull { it.overriddenDescriptors.isEmpty() } - ?.toKSPropertyDeclaration() + return ResolverImpl.instance!!.resolvePropertyDeclaration(this)?.original + ?.findClosestOverridee()?.toKSPropertyDeclaration() } override fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R { diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/OverrideeProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/OverrideeProcessor.kt index da1cf045..9015f41b 100644 --- a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/OverrideeProcessor.kt +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/OverrideeProcessor.kt @@ -42,6 +42,7 @@ class OverrideeProcessor : AbstractTestProcessor() { logSubject(resolver, "JavaAccessorImpl") logSubject(resolver, "JavaAnno") logSubject(resolver, "JavaAnnos") + logSubject(resolver, "PrimaryConstructorOverride") return emptyList() } diff --git a/test-utils/testData/api/overridee.kt b/test-utils/testData/api/overridee.kt index 8e502322..39173f93 100644 --- a/test-utils/testData/api/overridee.kt +++ b/test-utils/testData/api/overridee.kt @@ -89,6 +89,9 @@ // JavaAnno.intParam() -> null // JavaAnnos: // JavaAnnos.value() -> null +// PrimaryConstructorOverride: +// PrimaryConstructorOverride.x -> KtInterfaceWithProperty.x +// PrimaryConstructorOverride.y -> KtInterfaceWithProperty.y // END // MODULE: lib // FILE: lib.kt @@ -151,6 +154,12 @@ interface KtInterfaceWithProperty { var y:Int } +interface Intermediate: KtInterfaceWithProperty + +class PrimaryConstructorOverride(override val x: Int): Intermediate { + override val y: Int = 1 +} + abstract class GrandBase { open var openGrandBaseProp: Int = 0 abstract var abstractGrandBaseProp: Int = 0 |