From 638eccac1695f67a586f68588422a7cfeecd1914 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 7 Nov 2022 12:04:45 +0100 Subject: [PATCH] [AA K2] add missing resolve for signature creation ^KT-54311 --- .../analysis/api/fir/symbols/pointers/pointerUtils.kt | 7 +++++-- .../singleSymbolByPsi/propertyWithReceiverAnnotation.kt | 2 +- .../testData/symbols/symbolByPsi/classMembes.kt | 2 +- .../contextReceivers/contextReceiversOnClass.kt | 2 +- .../symbolByPsi/implicitConstructorDelegationCall.kt | 2 +- .../testData/symbols/symbolByPsi/topLevelProperties.kt | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt index 750582a0cd3..9ef9d38a044 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/pointers/pointerUtils.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession import org.jetbrains.kotlin.analysis.low.level.api.fir.ideSessionComponents import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.renderWithType import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.scopes.FirScope @@ -16,6 +17,7 @@ import org.jetbrains.kotlin.fir.scopes.processClassifiersByName import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol +import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name @@ -59,13 +61,14 @@ internal inline fun Collection return declaration } } + return null } -internal fun FirBasedSymbol<*>.createSignature(): IdSignature = - fir.createSignature() +internal fun FirBasedSymbol<*>.createSignature(): IdSignature = fir.createSignature() internal fun FirDeclaration.createSignature(): IdSignature { + lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) val signatureComposer = moduleData.session.ideSessionComponents.signatureComposer return signatureComposer.composeSignature(this, allowLocalClasses = true) ?: error("Could not compose signature for ${this.renderWithType()}, looks like it is private or local") diff --git a/analysis/analysis-api/testData/symbols/singleSymbolByPsi/propertyWithReceiverAnnotation.kt b/analysis/analysis-api/testData/symbols/singleSymbolByPsi/propertyWithReceiverAnnotation.kt index 3ecefccb1b5..606e7da6b87 100644 --- a/analysis/analysis-api/testData/symbols/singleSymbolByPsi/propertyWithReceiverAnnotation.kt +++ b/analysis/analysis-api/testData/symbols/singleSymbolByPsi/propertyWithReceiverAnnotation.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 annotation class ReceiverAnnotation @Target(AnnotationTarget.TYPE) annotation class ReceiverTypeAnnotation diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/classMembes.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/classMembes.kt index ce5e0441b49..4107db847f7 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/classMembes.kt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/classMembes.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 class A { val a: Int = 10 fun x() = 10 diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt index 36ace6c97fb..24be0ba99ad 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/contextReceivers/contextReceiversOnClass.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 context(kotlin.Int, s@kotlin.String) class A { constructor(int: Int) {} diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/implicitConstructorDelegationCall.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/implicitConstructorDelegationCall.kt index 6de6ecaa1b5..4ecce810a8e 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/implicitConstructorDelegationCall.kt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/implicitConstructorDelegationCall.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 class A { constructor(i: Int) } diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/topLevelProperties.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/topLevelProperties.kt index 40b509edb96..733f5016a8a 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/topLevelProperties.kt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/topLevelProperties.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 val x: Int = 10 val Int.y get() = this