FIR mangler: handle situation with invisible type in f/o signature
Before this commit, FIR mangler effectively dropped f/o parameter with invisible type from this module. It could lead to signature clashes. Now we insert classId in mangler string instead. This fixes FIR bootstrap.
This commit is contained in:
+5
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
@@ -214,6 +215,10 @@ open class FirJvmMangleComputer(
|
||||
}
|
||||
is FirClassSymbol -> symbol.fir.accept(copy(MangleMode.FQNAME), false)
|
||||
is FirTypeParameterSymbol -> tBuilder.mangleTypeParameterReference(symbol.fir)
|
||||
// This is performed for a case with invisible class-like symbol in fake override
|
||||
null -> (type.lookupTag as? ConeClassLikeLookupTag)?.let {
|
||||
tBuilder.append(it.classId)
|
||||
}
|
||||
}
|
||||
|
||||
type.typeArguments.asList().ifNotEmpty {
|
||||
|
||||
+6
@@ -15662,6 +15662,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/fir/noSymbolForIntRangeIterator.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("SamWithReceiverMavenProjectImportHandler.kt")
|
||||
public void testSamWithReceiverMavenProjectImportHandler() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/fir/SamWithReceiverMavenProjectImportHandler.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("SuspendExtension.kt")
|
||||
public void testSuspendExtension() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user