aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiaxiang Chen <jiaxiang@google.com>2023-01-11 16:20:59 -0800
committerKSP Auto Pick <kotlin-symbol-processing@google.com>2023-01-12 10:01:00 +0000
commit348cca880d7886eade42366d646bac33f77f0adb (patch)
treebd139de75ef6214ba6d92bae6f683911c195152d
parent66f46fd64c0469967911ed4413c8e857d8eacd3f (diff)
downloadksp-348cca880d7886eade42366d646bac33f77f0adb.tar.gz
use correct overridee check for properties declared in constructors.
fixes #1182 (cherry picked from commit 609eef76563c1782fb3271ae40ead6e0a5090ab7)
-rw-r--r--compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/kotlin/KSPropertyDeclarationParameterImpl.kt5
-rw-r--r--test-utils/src/main/kotlin/com/google/devtools/ksp/processor/OverrideeProcessor.kt1
-rw-r--r--test-utils/testData/api/overridee.kt9
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