diff --git a/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSClassDeclarationImpl.kt b/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSClassDeclarationImpl.kt index ac5f89cf1a..e5161bb546 100644 --- a/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSClassDeclarationImpl.kt +++ b/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/KSClassDeclarationImpl.kt @@ -33,7 +33,6 @@ import org.jetbrains.kotlin.analysis.api.components.buildTypeParameterType import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.descriptors.java.JavaVisibilities import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.psi.KtObjectDeclaration class KSClassDeclarationImpl private constructor(internal val ktClassOrObjectSymbol: KtClassOrObjectSymbol) : KSClassDeclaration, @@ -99,7 +98,7 @@ class KSClassDeclarationImpl private constructor(internal val ktClassOrObjectSym } override val isCompanionObject: Boolean by lazy { - (ktClassOrObjectSymbol.psi as? KtObjectDeclaration)?.isCompanion() ?: false + ktClassOrObjectSymbol.classKind == KtClassKind.COMPANION_OBJECT } override fun getSealedSubclasses(): Sequence { diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ClassWithCompanionProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ClassWithCompanionProcessor.kt index fb2b0e1e0d..0d509d7fae 100644 --- a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ClassWithCompanionProcessor.kt +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ClassWithCompanionProcessor.kt @@ -17,6 +17,7 @@ package com.google.devtools.ksp.processor +import com.google.devtools.ksp.getClassDeclarationByName import com.google.devtools.ksp.processing.Resolver import com.google.devtools.ksp.symbol.KSAnnotated import com.google.devtools.ksp.symbol.KSClassDeclaration @@ -29,6 +30,7 @@ class ClassWithCompanionProcessor : AbstractTestProcessor() { override fun process(resolver: Resolver): List { resolver.getNewFiles().forEach { it.accept(CompanionVisitor(), Unit) } + resolver.getClassDeclarationByName("A")?.accept(CompanionVisitor(), Unit) return emptyList() } diff --git a/test-utils/testData/api/companion.kt b/test-utils/testData/api/companion.kt index 1ca09b756c..a984be1bb7 100644 --- a/test-utils/testData/api/companion.kt +++ b/test-utils/testData/api/companion.kt @@ -22,8 +22,17 @@ // companion:false // obj:false // K:true +// A:false +// Companion:true // END +// MODULE: lib +// FILE: a.kt +class A { + companion object {} +} + +// MODULE: main(lib) class Foo { object companion {} object obj {}