AA FIR: unwrap fake override constructor
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt
index 710548d..113f34c 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt
@@ -248,8 +248,9 @@
fun buildConstructorSymbol(firSymbol: FirConstructorSymbol): KtFirConstructorSymbol {
val originalFirSymbol = firSymbol.fir.originalConstructorIfTypeAlias?.symbol ?: firSymbol
- return symbolsCache.cache(originalFirSymbol) {
- KtFirConstructorSymbol(originalFirSymbol, firResolveSession, token, this@KtSymbolByFirBuilder)
+ val unwrapped = originalFirSymbol.originalIfFakeOverride() ?: originalFirSymbol
+ return symbolsCache.cache(unwrapped) {
+ KtFirConstructorSymbol(unwrapped, firResolveSession, token, this@KtSymbolByFirBuilder)
}
}
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt
index 860591f..7043321 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt
@@ -63,7 +63,7 @@
}
override fun getContainingModule(symbol: KtSymbol): KtModule {
- return symbol.getContainingKtModule(analysisSession.firResolveSession)
+ return symbol.getContainingKtModule(analysisSession.firResolveSession)
}
private fun getContainingDeclarationForBackingFieldSymbol(symbol: KtSymbolWithKind): KtSymbolWithKind {
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt
index 9fcf33a..2f6ac44 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt
@@ -8,7 +8,6 @@
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
-import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
@@ -16,13 +15,12 @@
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
-val KtSymbol.firSymbol: FirBasedSymbol<*>
+internal val KtSymbol.firSymbol: FirBasedSymbol<*>
get() {
require(this is KtFirSymbol<*>)
return this.firSymbol
}
-
fun FirBasedSymbol<*>.getContainingKtModule(firResolveSession: LLFirResolveSession): KtModule {
val target = when (this) {
is FirCallableSymbol -> {
diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt b/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt
index 303d02e..146b0c0 100644
--- a/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt
+++ b/analysis/analysis-api/testData/symbols/symbolByReference/constructorViaTypeAlias.txt
@@ -6,7 +6,7 @@
hasStableParameterNames: false
isExtension: false
isPrimary: false
- origin: SUBSTITUTION_OVERRIDE
+ origin: JAVA
receiverType: null
returnType: java/util/ArrayList<E>
symbolKind: CLASS_MEMBER
@@ -17,5 +17,5 @@
KtValueParameterSymbol(c)
]
visibility: Public
- getContainingModule: KtSourceModule "Sources of main"
+ getContainingModule: KtSdkModule "SDK jdk"
deprecationStatus: null
\ No newline at end of file