FIR mangler: fix alias-based type handling #KT-42770 Fixed

This commit is contained in:
Mikhail Glukhikh
2020-10-19 13:43:44 +03:00
parent 6251568e17
commit 44459e8ac7
6 changed files with 96 additions and 0 deletions
@@ -14,8 +14,10 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.visitors.FirVisitor
@@ -199,6 +201,10 @@ open class FirJvmMangleComputer(
when (type) {
is ConeLookupTagBasedType -> {
when (val symbol = type.lookupTag.toSymbol(session)) {
is FirTypeAliasSymbol -> {
mangleType(tBuilder, type.fullyExpandedType(session))
return
}
is FirClassSymbol -> symbol.fir.accept(copy(MangleMode.FQNAME), false)
is FirTypeParameterSymbol -> tBuilder.mangleTypeParameterReference(symbol.fir)
}
@@ -1772,6 +1772,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/firProblems/putIfAbsent.kt");
}
@TestMetadata("SignatureClash.kt")
public void testSignatureClash() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/SignatureClash.kt");
}
@TestMetadata("V8ArrayToList.kt")
public void testV8ArrayToList() throws Exception {
runTest("compiler/testData/ir/irText/firProblems/V8ArrayToList.kt");