[PL] Support handling IR error types
This commit is contained in:
committed by
Space Team
parent
161c3fccb6
commit
16da1af525
+11
-2
@@ -30,7 +30,11 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageUtils.Module as PLModule
|
||||
|
||||
internal class ClassifierExplorer(private val builtIns: IrBuiltIns, private val stubGenerator: MissingDeclarationStubGenerator) {
|
||||
internal class ClassifierExplorer(
|
||||
private val builtIns: IrBuiltIns,
|
||||
private val stubGenerator: MissingDeclarationStubGenerator,
|
||||
private val allowErrorTypes: Boolean
|
||||
) {
|
||||
private val exploredSymbols = ExploredClassifiers()
|
||||
|
||||
private val permittedAnnotationArrayParameterSymbols: Set<IrClassSymbol> by lazy {
|
||||
@@ -72,7 +76,12 @@ internal class ClassifierExplorer(private val builtIns: IrBuiltIns, private val
|
||||
?: arguments.firstUnusable { it.typeOrNull?.exploreType(visitedSymbols) }
|
||||
?: Usable
|
||||
is IrDynamicType -> Usable
|
||||
else -> throw IllegalArgumentException("Unsupported IR type: ${this::class.java}, $this")
|
||||
else -> {
|
||||
if (this is IrErrorType && allowErrorTypes)
|
||||
Usable
|
||||
else
|
||||
throw IllegalArgumentException("Unsupported IR type: ${this::class.java}, $this")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-2
@@ -18,20 +18,22 @@ import org.jetbrains.kotlin.ir.util.allUnbound
|
||||
|
||||
fun createPartialLinkageSupportForLinker(
|
||||
partialLinkageConfig: PartialLinkageConfig,
|
||||
allowErrorTypes: Boolean,
|
||||
builtIns: IrBuiltIns,
|
||||
messageLogger: IrMessageLogger
|
||||
): PartialLinkageSupportForLinker = if (partialLinkageConfig.isEnabled)
|
||||
PartialLinkageSupportForLinkerImpl(builtIns, partialLinkageConfig.logLevel, messageLogger)
|
||||
PartialLinkageSupportForLinkerImpl(builtIns, allowErrorTypes, partialLinkageConfig.logLevel, messageLogger)
|
||||
else
|
||||
PartialLinkageSupportForLinker.DISABLED
|
||||
|
||||
internal class PartialLinkageSupportForLinkerImpl(
|
||||
builtIns: IrBuiltIns,
|
||||
allowErrorTypes: Boolean,
|
||||
logLevel: PartialLinkageLogLevel,
|
||||
messageLogger: IrMessageLogger
|
||||
) : PartialLinkageSupportForLinker {
|
||||
private val stubGenerator = MissingDeclarationStubGenerator(builtIns)
|
||||
private val classifierExplorer = ClassifierExplorer(builtIns, stubGenerator)
|
||||
private val classifierExplorer = ClassifierExplorer(builtIns, stubGenerator, allowErrorTypes)
|
||||
private val patcher = PartiallyLinkedIrTreePatcher(builtIns, classifierExplorer, stubGenerator, logLevel, messageLogger)
|
||||
|
||||
override val isEnabled get() = true
|
||||
|
||||
Reference in New Issue
Block a user