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:
Mikhail Glukhikh
2021-05-21 10:36:24 +03:00
parent cf531dbbe6
commit 1b7425f428
4 changed files with 53 additions and 0 deletions
@@ -0,0 +1,36 @@
// TARGET_BACKEND: JVM_IR
// WITH_RUNTIME
// MODULE: maven
// FILE: MavenProject.kt
interface MavenProject
// MODULE: lib(maven)
// FILE: lib.kt
abstract class AbstractMavenImportHandler {
abstract fun getOptions(enabledCompilerPlugins: List<String>, compilerPluginOptions: List<String>): List<String>?
protected open fun getOptions(
mavenProject: MavenProject,
enabledCompilerPlugins: List<String>,
compilerPluginOptions: List<String>
): List<String>? = getOptions(enabledCompilerPlugins, compilerPluginOptions)
}
// MODULE: main(lib)
// FILE: sam.kt
class SamWithReceiverMavenProjectImportHandler : AbstractMavenImportHandler() {
override fun getOptions(enabledCompilerPlugins: List<String>, compilerPluginOptions: List<String>): List<String>? {
return null
}
}
// FILE: main.kt
fun box(): String {
val result = SamWithReceiverMavenProjectImportHandler()
return result.getOptions(emptyList(), emptyList())?.get(0) ?: "OK"
}