Fir2Ir: fix mangling property type parameters for accessor signatures

This commit is contained in:
Georgy Bronnikov
2022-01-17 16:56:04 +03:00
committed by Alexander Udalov
parent 1c00f731fd
commit 6421e649ad
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinMangleComp
import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant
import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleMode import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleMode
import org.jetbrains.kotlin.backend.common.serialization.mangle.collectForMangler import org.jetbrains.kotlin.backend.common.serialization.mangle.collectForMangler
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor
@@ -21,15 +20,11 @@ import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.signaturer.irName import org.jetbrains.kotlin.fir.signaturer.irName
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.fir.visitors.FirVisitor
import org.jetbrains.kotlin.types.RawType
import org.jetbrains.kotlin.types.replace
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
@@ -141,10 +136,10 @@ open class FirJvmMangleComputer(
builder.append(it) builder.append(it)
} }
mangleSignature(isCtor, isStatic) mangleSignature(isCtor, isStatic, container)
} }
private fun FirFunction.mangleSignature(isCtor: Boolean, isStatic: Boolean) { private fun FirFunction.mangleSignature(isCtor: Boolean, isStatic: Boolean, container: FirDeclaration) {
if (!mode.signature) { if (!mode.signature) {
return return
} }
@@ -168,7 +163,7 @@ open class FirJvmMangleComputer(
appendSignature(specialValueParamPrefix(it)) appendSignature(specialValueParamPrefix(it))
mangleValueParameter(this, it) mangleValueParameter(this, it)
} }
typeParameters.filterIsInstance<FirTypeParameter>().withIndex().toList() (container as? FirTypeParametersOwner)?.typeParameters?.withIndex()?.toList().orEmpty()
.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { (index, typeParameter) -> .collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { (index, typeParameter) ->
mangleTypeParameter(this, typeParameter, index) mangleTypeParameter(this, typeParameter, index)
} }