Fixes after rebase, not related to IrLibraryFile
This commit is contained in:
committed by
TeamCityServer
parent
08b950fc2a
commit
f4d358069c
+6
-2
@@ -118,7 +118,9 @@ open class JvmGeneratorExtensionsImpl(
|
|||||||
allowErrorNodes: Boolean
|
allowErrorNodes: Boolean
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val serializedIr = (irClass.source as? KotlinJvmBinarySourceElement)?.binaryClass?.classHeader?.serializedIr ?: return false
|
val serializedIr = (irClass.source as? KotlinJvmBinarySourceElement)?.binaryClass?.classHeader?.serializedIr ?: return false
|
||||||
deserializeClassFromByteArray(serializedIr, stubGenerator, irClass, allowErrorNodes)
|
deserializeClassFromByteArray(
|
||||||
|
serializedIr, stubGenerator, irClass, JvmIrTypeSystemContext(stubGenerator.irBuiltIns), allowErrorNodes
|
||||||
|
)
|
||||||
irClass.transform(SingletonObjectJvmStaticTransformer(stubGenerator.irBuiltIns, cachedFields), null)
|
irClass.transform(SingletonObjectJvmStaticTransformer(stubGenerator.irBuiltIns, cachedFields), null)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -130,7 +132,9 @@ open class JvmGeneratorExtensionsImpl(
|
|||||||
allowErrorNodes: Boolean
|
allowErrorNodes: Boolean
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val serializedIr = (irClass.source as? JvmPackagePartSource)?.knownJvmBinaryClass?.classHeader?.serializedIr ?: return false
|
val serializedIr = (irClass.source as? JvmPackagePartSource)?.knownJvmBinaryClass?.classHeader?.serializedIr ?: return false
|
||||||
deserializeIrFileFromByteArray(serializedIr, stubGenerator, irClass, allowErrorNodes)
|
deserializeIrFileFromByteArray(
|
||||||
|
serializedIr, stubGenerator, irClass, JvmIrTypeSystemContext(stubGenerator.irBuiltIns), allowErrorNodes
|
||||||
|
)
|
||||||
irClass.transform(SingletonObjectJvmStaticTransformer(stubGenerator.irBuiltIns, cachedFields), null)
|
irClass.transform(SingletonObjectJvmStaticTransformer(stubGenerator.irBuiltIns, cachedFields), null)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm.serialization
|
package org.jetbrains.kotlin.backend.jvm.serialization
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
|
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr
|
import org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr
|
||||||
@@ -21,7 +22,9 @@ class JvmIrSerializerSession(
|
|||||||
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
||||||
externallyVisibleOnly: Boolean = true,
|
externallyVisibleOnly: Boolean = true,
|
||||||
skipExpects: Boolean = false,
|
skipExpects: Boolean = false,
|
||||||
) : IrFileSerializer(messageLogger, declarationTable, expectDescriptorToSymbol, externallyVisibleOnly, skipExpects) {
|
) : IrFileSerializer(
|
||||||
|
messageLogger, declarationTable, expectDescriptorToSymbol, CompatibilityMode.CURRENT, externallyVisibleOnly, skipExpects
|
||||||
|
) {
|
||||||
|
|
||||||
// Usage protocol: construct an instance, call only one of `serializeIrFile()` and `serializeTopLevelClass()` only once.
|
// Usage protocol: construct an instance, call only one of `serializeIrFile()` and `serializeTopLevelClass()` only once.
|
||||||
|
|
||||||
|
|||||||
+15
-10
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.declarations.lazy.LazyIrFactory
|
|||||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
|
||||||
|
import org.jetbrains.kotlin.ir.types.IrTypeSystemContext
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
@@ -31,6 +32,7 @@ fun deserializeClassFromByteArray(
|
|||||||
byteArray: ByteArray,
|
byteArray: ByteArray,
|
||||||
stubGenerator: DeclarationStubGenerator,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
irClass: IrClass,
|
irClass: IrClass,
|
||||||
|
typeSystemContext: IrTypeSystemContext,
|
||||||
allowErrorNodes: Boolean,
|
allowErrorNodes: Boolean,
|
||||||
) {
|
) {
|
||||||
val irBuiltIns = stubGenerator.irBuiltIns
|
val irBuiltIns = stubGenerator.irBuiltIns
|
||||||
@@ -73,19 +75,21 @@ fun deserializeClassFromByteArray(
|
|||||||
deserializeBodies = true,
|
deserializeBodies = true,
|
||||||
symbolDeserializer,
|
symbolDeserializer,
|
||||||
DefaultFakeOverrideClassFilter,
|
DefaultFakeOverrideClassFilter,
|
||||||
makeSimpleFakeOverrideBuilder(symbolTable, irBuiltIns, symbolDeserializer)
|
makeSimpleFakeOverrideBuilder(symbolTable, typeSystemContext, symbolDeserializer),
|
||||||
|
compatibilityMode = CompatibilityMode.CURRENT,
|
||||||
)
|
)
|
||||||
|
|
||||||
deserializer.deserializeIrClass(irProto.irClass)
|
deserializer.deserializeIrClass(irProto.irClass)
|
||||||
|
|
||||||
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
||||||
buildFakeOverridesForLocalClasses(stubGenerator.symbolTable, stubGenerator.irBuiltIns, symbolDeserializer, irClass)
|
buildFakeOverridesForLocalClasses(stubGenerator.symbolTable, typeSystemContext, symbolDeserializer, irClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deserializeIrFileFromByteArray(
|
fun deserializeIrFileFromByteArray(
|
||||||
byteArray: ByteArray,
|
byteArray: ByteArray,
|
||||||
stubGenerator: DeclarationStubGenerator,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
facadeClass: IrClass,
|
facadeClass: IrClass,
|
||||||
|
typeSystemContext: IrTypeSystemContext,
|
||||||
allowErrorNodes: Boolean,
|
allowErrorNodes: Boolean,
|
||||||
) {
|
) {
|
||||||
val irBuiltIns = stubGenerator.irBuiltIns
|
val irBuiltIns = stubGenerator.irBuiltIns
|
||||||
@@ -121,7 +125,7 @@ fun deserializeIrFileFromByteArray(
|
|||||||
|
|
||||||
val lazyIrFactory = LazyIrFactory(irBuiltIns.irFactory)
|
val lazyIrFactory = LazyIrFactory(irBuiltIns.irFactory)
|
||||||
|
|
||||||
val fakeOverrideBuilder = makeSimpleFakeOverrideBuilder(symbolTable, irBuiltIns, symbolDeserializer)
|
val fakeOverrideBuilder = makeSimpleFakeOverrideBuilder(symbolTable, typeSystemContext, symbolDeserializer)
|
||||||
|
|
||||||
val deserializer = IrDeclarationDeserializer(
|
val deserializer = IrDeclarationDeserializer(
|
||||||
irBuiltIns, symbolTable, lazyIrFactory, irLibraryFile, facadeClass,
|
irBuiltIns, symbolTable, lazyIrFactory, irLibraryFile, facadeClass,
|
||||||
@@ -130,14 +134,15 @@ fun deserializeIrFileFromByteArray(
|
|||||||
deserializeBodies = true,
|
deserializeBodies = true,
|
||||||
symbolDeserializer,
|
symbolDeserializer,
|
||||||
DefaultFakeOverrideClassFilter,
|
DefaultFakeOverrideClassFilter,
|
||||||
fakeOverrideBuilder
|
fakeOverrideBuilder,
|
||||||
|
compatibilityMode = CompatibilityMode.CURRENT,
|
||||||
)
|
)
|
||||||
for (declarationProto in irProto.declarationList) {
|
for (declarationProto in irProto.declarationList) {
|
||||||
deserializer.deserializeDeclaration(declarationProto)
|
deserializer.deserializeDeclaration(declarationProto)
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
||||||
buildFakeOverridesForLocalClasses(stubGenerator.symbolTable, stubGenerator.irBuiltIns, symbolDeserializer, facadeClass)
|
buildFakeOverridesForLocalClasses(stubGenerator.symbolTable, typeSystemContext, symbolDeserializer, facadeClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
private class IrLibraryFileFromAnnotation(
|
private class IrLibraryFileFromAnnotation(
|
||||||
@@ -195,7 +200,7 @@ private fun referencePublicSymbol(
|
|||||||
// TODO: implement properly
|
// TODO: implement properly
|
||||||
fun makeSimpleFakeOverrideBuilder(
|
fun makeSimpleFakeOverrideBuilder(
|
||||||
symbolTable: SymbolTable,
|
symbolTable: SymbolTable,
|
||||||
irBuiltIns: IrBuiltIns,
|
typeSystemContext: IrTypeSystemContext,
|
||||||
symbolDeserializer: IrSymbolDeserializer
|
symbolDeserializer: IrSymbolDeserializer
|
||||||
): FakeOverrideBuilder {
|
): FakeOverrideBuilder {
|
||||||
return FakeOverrideBuilder(
|
return FakeOverrideBuilder(
|
||||||
@@ -210,18 +215,18 @@ fun makeSimpleFakeOverrideBuilder(
|
|||||||
},
|
},
|
||||||
symbolTable,
|
symbolTable,
|
||||||
JvmIrMangler,
|
JvmIrMangler,
|
||||||
irBuiltIns,
|
typeSystemContext,
|
||||||
fakeOverrideDeclarationTable = PrePopulatedDeclarationTable(symbolDeserializer.deserializedSymbols)
|
fakeOverrideDeclarationTable = PrePopulatedDeclarationTable(symbolDeserializer.deserializedSymbols)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildFakeOverridesForLocalClasses(
|
private fun buildFakeOverridesForLocalClasses(
|
||||||
symbolTable: SymbolTable,
|
symbolTable: SymbolTable,
|
||||||
irBuiltIns: IrBuiltIns,
|
typeSystemContext: IrTypeSystemContext,
|
||||||
symbolDeserializer: IrSymbolDeserializer,
|
symbolDeserializer: IrSymbolDeserializer,
|
||||||
toplevel: IrClass
|
toplevel: IrClass
|
||||||
) {
|
) {
|
||||||
val builder = makeSimpleFakeOverrideBuilder(symbolTable, irBuiltIns, symbolDeserializer)
|
val builder = makeSimpleFakeOverrideBuilder(symbolTable, typeSystemContext, symbolDeserializer)
|
||||||
toplevel.acceptChildrenVoid(object : IrElementVisitorVoid {
|
toplevel.acceptChildrenVoid(object : IrElementVisitorVoid {
|
||||||
override fun visitElement(element: IrElement) {
|
override fun visitElement(element: IrElement) {
|
||||||
element.acceptChildrenVoid(this)
|
element.acceptChildrenVoid(this)
|
||||||
@@ -229,7 +234,7 @@ private fun buildFakeOverridesForLocalClasses(
|
|||||||
|
|
||||||
override fun visitClass(declaration: IrClass) {
|
override fun visitClass(declaration: IrClass) {
|
||||||
if (declaration.visibility == DescriptorVisibilities.LOCAL) {
|
if (declaration.visibility == DescriptorVisibilities.LOCAL) {
|
||||||
builder.provideFakeOverrides(declaration)
|
builder.provideFakeOverrides(declaration, CompatibilityMode.CURRENT)
|
||||||
}
|
}
|
||||||
super.visitClass(declaration)
|
super.visitClass(declaration)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user