FIR2IR: Support initialSignatureDescriptor

It will be used for overrides of renamed special built-ins during signature mapping
to obtain initial signature
This commit is contained in:
Denis.Zharkov
2021-02-17 18:08:16 +03:00
parent 23705a269f
commit 4b0aeb7105
5 changed files with 49 additions and 5 deletions
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
import org.jetbrains.kotlin.fir.initialSignatureAttr
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
import org.jetbrains.kotlin.fir.java.declarations.*
import org.jetbrains.kotlin.fir.render
@@ -55,7 +56,13 @@ class FirSignatureEnhancement(
function: FirFunctionSymbol<*>,
name: Name?
): FirFunctionSymbol<*> {
return enhancements.getOrPut(function) { enhance(function, name) } as FirFunctionSymbol<*>
return enhancements.getOrPut(function) {
enhance(function, name).also { enhancedVersion ->
(enhancedVersion.fir.initialSignatureAttr as? FirSimpleFunction)?.let {
enhancedVersion.fir.initialSignatureAttr = enhancedFunction(it.symbol, it.name).fir
}
}
} as FirFunctionSymbol<*>
}
fun enhancedProperty(property: FirVariableSymbol<*>, name: Name): FirVariableSymbol<*> {