diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt index 97311dd72cd..a5b23fbdcb4 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtFunctionLikeSymbol.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.frontend.api.symbols +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName sealed class KtFunctionLikeSymbol : KtCallableSymbol(), KtTypedSymbol, KtSymbolWithKind { @@ -32,6 +33,7 @@ abstract class KtConstructorSymbol : KtFunctionLikeSymbol() { abstract override val valueParameters: List abstract val isPrimary: Boolean abstract val owner: KtClassOrObjectSymbol + abstract val ownerClassId: ClassId abstract override fun createPointer(): KtSymbolPointer } \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt index 1ca16030522..18a178f002e 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirConstructorSymbol.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion +import org.jetbrains.kotlin.name.ClassId internal class KtFirConstructorSymbol( fir: FirConstructor, @@ -39,9 +40,14 @@ internal class KtFirConstructorSymbol( override val isPrimary: Boolean get() = withValidityAssertion { fir.isPrimary } override val symbolKind: KtSymbolKind get() = KtSymbolKind.MEMBER + override val ownerClassId: ClassId + get() = withValidityAssertion { + fir.symbol.callableId.classId ?: error("ClassID should present for constructor") + } + override val owner: KtClassOrObjectSymbol by cached { val session = fir.session - val classId = fir.symbol.callableId.classId ?: error("ClassID should present for constructor") + val classId = ownerClassId val firClass = session.firSymbolProvider.getClassLikeSymbolByFqName(classId)?.fir ?: error("Class with id $classId id was not found") check(firClass is FirRegularClass) { "Owner class for constructor should be FirRegularClass, but ${firClass::class} was met" }