[IR] Partial linkage: Rename UnlinkedDeclarationsSupport to PartialLinkageSupport
This commit is contained in:
committed by
Space Team
parent
15635482aa
commit
2f9d6f6c44
+9
-9
@@ -9,8 +9,8 @@ import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder
|
|||||||
import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker
|
import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData
|
import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.linkerissues.*
|
import org.jetbrains.kotlin.backend.common.serialization.linkerissues.*
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedDeclarationsSupport
|
import org.jetbrains.kotlin.backend.common.serialization.unlinked.PartialLinkageSupport
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedDeclarationsSupportImpl
|
import org.jetbrains.kotlin.backend.common.serialization.unlinked.PartialLinkageSupportImpl
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
@@ -53,10 +53,10 @@ abstract class KotlinIrLinker(
|
|||||||
|
|
||||||
private lateinit var linkerExtensions: Collection<IrDeserializer.IrLinkerExtension>
|
private lateinit var linkerExtensions: Collection<IrDeserializer.IrLinkerExtension>
|
||||||
|
|
||||||
val unlinkedDeclarationsSupport: UnlinkedDeclarationsSupport = if (partialLinkageEnabled)
|
val partialLinkageSupport: PartialLinkageSupport = if (partialLinkageEnabled)
|
||||||
UnlinkedDeclarationsSupportImpl(builtIns)
|
PartialLinkageSupportImpl(builtIns)
|
||||||
else
|
else
|
||||||
UnlinkedDeclarationsSupport.DISABLED
|
PartialLinkageSupport.DISABLED
|
||||||
|
|
||||||
protected open val userVisibleIrModulesSupport: UserVisibleIrModulesSupport get() = UserVisibleIrModulesSupport.DEFAULT
|
protected open val userVisibleIrModulesSupport: UserVisibleIrModulesSupport get() = UserVisibleIrModulesSupport.DEFAULT
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ abstract class KotlinIrLinker(
|
|||||||
val symbol: IrSymbol? = actualModuleDeserializer?.tryDeserializeIrSymbol(idSignature, symbolKind)
|
val symbol: IrSymbol? = actualModuleDeserializer?.tryDeserializeIrSymbol(idSignature, symbolKind)
|
||||||
|
|
||||||
return symbol ?: run {
|
return symbol ?: run {
|
||||||
if (unlinkedDeclarationsSupport.partialLinkageEnabled)
|
if (partialLinkageSupport.partialLinkageEnabled)
|
||||||
referenceDeserializedSymbol(symbolTable, null, symbolKind, idSignature)
|
referenceDeserializedSymbol(symbolTable, null, symbolKind, idSignature)
|
||||||
else
|
else
|
||||||
SignatureIdNotFoundInModuleWithDependencies(
|
SignatureIdNotFoundInModuleWithDependencies(
|
||||||
@@ -170,7 +170,7 @@ abstract class KotlinIrLinker(
|
|||||||
?: tryResolveCustomDeclaration(symbol)
|
?: tryResolveCustomDeclaration(symbol)
|
||||||
?: return null
|
?: return null
|
||||||
} catch (e: IrSymbolTypeMismatchException) {
|
} catch (e: IrSymbolTypeMismatchException) {
|
||||||
if (!unlinkedDeclarationsSupport.partialLinkageEnabled) {
|
if (!partialLinkageSupport.partialLinkageEnabled) {
|
||||||
SymbolTypeMismatch(e, deserializersForModules.values, userVisibleIrModulesSupport).raiseIssue(messageLogger)
|
SymbolTypeMismatch(e, deserializersForModules.values, userVisibleIrModulesSupport).raiseIssue(messageLogger)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -224,12 +224,12 @@ abstract class KotlinIrLinker(
|
|||||||
override fun postProcess() {
|
override fun postProcess() {
|
||||||
finalizeExpectActualLinker()
|
finalizeExpectActualLinker()
|
||||||
|
|
||||||
unlinkedDeclarationsSupport.markUsedClassifiersExcludingUnlinkedFromFakeOverrideBuilding(fakeOverrideBuilder)
|
partialLinkageSupport.markUsedClassifiersExcludingUnlinkedFromFakeOverrideBuilding(fakeOverrideBuilder)
|
||||||
|
|
||||||
fakeOverrideBuilder.provideFakeOverrides()
|
fakeOverrideBuilder.provideFakeOverrides()
|
||||||
triedToDeserializeDeclarationForSymbol.clear()
|
triedToDeserializeDeclarationForSymbol.clear()
|
||||||
|
|
||||||
unlinkedDeclarationsSupport.processUnlinkedDeclarations(messageLogger) {
|
partialLinkageSupport.processUnlinkedDeclarations(messageLogger) {
|
||||||
deserializersForModules.values.map { it.moduleFragment }
|
deserializersForModules.values.map { it.moduleFragment }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ internal inline fun <reified T : IrAnnotationContainer> checkErrorNodesAllowed(e
|
|||||||
|
|
||||||
// N.B. Checks for absence of unbound symbols only when unbound symbols are not allowed.
|
// N.B. Checks for absence of unbound symbols only when unbound symbols are not allowed.
|
||||||
fun KotlinIrLinker.checkNoUnboundSymbols(symbolTable: SymbolTable, whenDetected: String) {
|
fun KotlinIrLinker.checkNoUnboundSymbols(symbolTable: SymbolTable, whenDetected: String) {
|
||||||
if (!unlinkedDeclarationsSupport.partialLinkageEnabled)
|
if (!partialLinkageSupport.partialLinkageEnabled)
|
||||||
messageLogger.checkNoUnboundSymbols(symbolTable, whenDetected)
|
messageLogger.checkNoUnboundSymbols(symbolTable, whenDetected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ir.declarations.IrFunction
|
|||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
|
|
||||||
interface UnlinkedDeclarationsSupport {
|
interface PartialLinkageSupport {
|
||||||
val partialLinkageEnabled: Boolean
|
val partialLinkageEnabled: Boolean
|
||||||
|
|
||||||
/** For general use in IR linker. */
|
/** For general use in IR linker. */
|
||||||
@@ -28,7 +28,7 @@ interface UnlinkedDeclarationsSupport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val DISABLED = object : UnlinkedDeclarationsSupport {
|
val DISABLED = object : PartialLinkageSupport {
|
||||||
override val partialLinkageEnabled get() = false
|
override val partialLinkageEnabled get() = false
|
||||||
override fun markUsedClassifiersExcludingUnlinkedFromFakeOverrideBuilding(fakeOverrideBuilder: FakeOverrideBuilder) = Unit
|
override fun markUsedClassifiersExcludingUnlinkedFromFakeOverrideBuilding(fakeOverrideBuilder: FakeOverrideBuilder) = Unit
|
||||||
override fun markUsedClassifiersInInlineLazyIrFunction(function: IrFunction) = Unit
|
override fun markUsedClassifiersInInlineLazyIrFunction(function: IrFunction) = Unit
|
||||||
+2
-2
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.common.serialization.unlinked
|
package org.jetbrains.kotlin.backend.common.serialization.unlinked
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder
|
import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedDeclarationsSupport.UnlinkedMarkerTypeHandler
|
import org.jetbrains.kotlin.backend.common.serialization.unlinked.PartialLinkageSupport.UnlinkedMarkerTypeHandler
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.*
|
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.*
|
||||||
import org.jetbrains.kotlin.descriptors.NotFoundClasses
|
import org.jetbrains.kotlin.descriptors.NotFoundClasses
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
|||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
|
|
||||||
class UnlinkedDeclarationsSupportImpl(private val builtIns: IrBuiltIns) : UnlinkedDeclarationsSupport {
|
class PartialLinkageSupportImpl(private val builtIns: IrBuiltIns) : PartialLinkageSupport {
|
||||||
private val handler = object : UnlinkedMarkerTypeHandler {
|
private val handler = object : UnlinkedMarkerTypeHandler {
|
||||||
override val unlinkedMarkerType = IrSimpleTypeImpl(
|
override val unlinkedMarkerType = IrSimpleTypeImpl(
|
||||||
classifier = builtIns.anyClass,
|
classifier = builtIns.anyClass,
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.common.serialization.unlinked
|
package org.jetbrains.kotlin.backend.common.serialization.unlinked
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedDeclarationsSupport.UnlinkedMarkerTypeHandler
|
import org.jetbrains.kotlin.backend.common.serialization.unlinked.PartialLinkageSupport.UnlinkedMarkerTypeHandler
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.Companion.isUnlinked
|
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.Companion.isUnlinked
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
|
|||||||
+3
-3
@@ -721,12 +721,12 @@ internal class KonanIrLinker(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unlinkedDeclarationsSupport.markUsedClassifiersExcludingUnlinkedFromFakeOverrideBuilding(fakeOverrideBuilder)
|
partialLinkageSupport.markUsedClassifiersExcludingUnlinkedFromFakeOverrideBuilding(fakeOverrideBuilder)
|
||||||
unlinkedDeclarationsSupport.markUsedClassifiersInInlineLazyIrFunction(function)
|
partialLinkageSupport.markUsedClassifiersInInlineLazyIrFunction(function)
|
||||||
|
|
||||||
fakeOverrideBuilder.provideFakeOverrides()
|
fakeOverrideBuilder.provideFakeOverrides()
|
||||||
|
|
||||||
unlinkedDeclarationsSupport.processUnlinkedDeclarations(linker.messageLogger) { listOf(function) }
|
partialLinkageSupport.processUnlinkedDeclarations(linker.messageLogger) { listOf(function) }
|
||||||
|
|
||||||
return InlineFunctionOriginInfo(function, fileDeserializationState.file, inlineFunctionReference.startOffset, inlineFunctionReference.endOffset)
|
return InlineFunctionOriginInfo(function, fileDeserializationState.file, inlineFunctionReference.startOffset, inlineFunctionReference.endOffset)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user