JVM_IR: deal with JvmStatic in imported IR
This commit is contained in:
committed by
TeamCityServer
parent
96ce124268
commit
931733f8cc
+8
-3
@@ -25,8 +25,6 @@ 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.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class IrLoweringContext(backendContext: BackendContext) : IrGeneratorContextBase(backendContext.irBuiltIns)
|
|
||||||
|
|
||||||
class DeclarationIrBuilder(
|
class DeclarationIrBuilder(
|
||||||
generatorContext: IrGeneratorContext,
|
generatorContext: IrGeneratorContext,
|
||||||
symbol: IrSymbol,
|
symbol: IrSymbol,
|
||||||
@@ -59,12 +57,19 @@ open class VariableRemapper(val mapping: Map<IrValueParameter, IrValueDeclaratio
|
|||||||
mapping[value]
|
mapping[value]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun IrBuiltIns.createIrBuilder(
|
||||||
|
symbol: IrSymbol,
|
||||||
|
startOffset: Int = UNDEFINED_OFFSET,
|
||||||
|
endOffset: Int = UNDEFINED_OFFSET
|
||||||
|
) =
|
||||||
|
DeclarationIrBuilder(IrGeneratorContextBase(this), symbol, startOffset, endOffset)
|
||||||
|
|
||||||
fun BackendContext.createIrBuilder(
|
fun BackendContext.createIrBuilder(
|
||||||
symbol: IrSymbol,
|
symbol: IrSymbol,
|
||||||
startOffset: Int = UNDEFINED_OFFSET,
|
startOffset: Int = UNDEFINED_OFFSET,
|
||||||
endOffset: Int = UNDEFINED_OFFSET
|
endOffset: Int = UNDEFINED_OFFSET
|
||||||
) =
|
) =
|
||||||
DeclarationIrBuilder(IrLoweringContext(this), symbol, startOffset, endOffset)
|
irBuiltIns.createIrBuilder(symbol, startOffset, endOffset)
|
||||||
|
|
||||||
|
|
||||||
fun <T : IrBuilder> T.at(element: IrElement) = this.at(element.startOffset, element.endOffset)
|
fun <T : IrBuilder> T.at(element: IrElement) = this.at(element.startOffset, element.endOffset)
|
||||||
|
|||||||
+31
-8
@@ -7,8 +7,10 @@ package org.jetbrains.kotlin.backend.jvm
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
|
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
|
||||||
import org.jetbrains.kotlin.backend.common.ir.createParameterDeclarations
|
import org.jetbrains.kotlin.backend.common.ir.createParameterDeclarations
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.lower.SingletonObjectJvmStaticTransformer
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.deserializeClassFromByteArray
|
import org.jetbrains.kotlin.backend.jvm.serialization.deserializeClassFromByteArray
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.deserializeIrFileFromByteArray
|
import org.jetbrains.kotlin.backend.jvm.serialization.deserializeIrFileFromByteArray
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations
|
import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
@@ -24,8 +26,11 @@ import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
|
|||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol
|
import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||||
|
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.util.constructors
|
import org.jetbrains.kotlin.ir.util.constructors
|
||||||
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||||
@@ -98,29 +103,47 @@ open class JvmGeneratorExtensionsImpl(private val generateFacades: Boolean = tru
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Volatile
|
||||||
|
private var cachedFields: CachedFieldsForObjectInstances? = null
|
||||||
|
|
||||||
|
override fun getCachedFields(irFactory: IrFactory, languageVersionSettings: LanguageVersionSettings): CachedFieldsForObjectInstances {
|
||||||
|
cachedFields?.let { return it }
|
||||||
|
synchronized(this) {
|
||||||
|
cachedFields?.let { return it }
|
||||||
|
cachedFields = CachedFieldsForObjectInstances(irFactory, languageVersionSettings)
|
||||||
|
return cachedFields!!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun deserializeLazyClass(
|
override fun deserializeLazyClass(
|
||||||
irClass: IrLazyClass,
|
irClass: IrLazyClass,
|
||||||
moduleDescriptor: ModuleDescriptor,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
irBuiltIns: IrBuiltIns,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
parent: IrDeclarationParent,
|
parent: IrDeclarationParent,
|
||||||
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, moduleDescriptor, irBuiltIns, symbolTable, parent, allowErrorNodes)
|
deserializeClassFromByteArray(
|
||||||
|
serializedIr, stubGenerator.moduleDescriptor, stubGenerator.irBuiltIns, stubGenerator.symbolTable, parent, allowErrorNodes
|
||||||
|
)
|
||||||
|
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
||||||
|
val cachedFields = getCachedFields(stubGenerator.irBuiltIns.irFactory, stubGenerator.irBuiltIns.languageVersionSettings)
|
||||||
|
irClass.transform(SingletonObjectJvmStaticTransformer(stubGenerator.irBuiltIns, cachedFields), null)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun deserializeFacadeClass(
|
override fun deserializeFacadeClass(
|
||||||
irClass: IrClass,
|
irClass: IrClass,
|
||||||
moduleDescriptor: ModuleDescriptor,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
irBuiltIns: IrBuiltIns,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
parent: IrDeclarationParent,
|
parent: IrDeclarationParent,
|
||||||
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, moduleDescriptor, irBuiltIns, symbolTable, irClass, allowErrorNodes)
|
deserializeIrFileFromByteArray(
|
||||||
|
serializedIr, stubGenerator.moduleDescriptor, stubGenerator.irBuiltIns, stubGenerator.symbolTable, irClass, allowErrorNodes
|
||||||
|
)
|
||||||
|
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
||||||
|
val cachedFields = getCachedFields(stubGenerator.irBuiltIns.irFactory, stubGenerator.irBuiltIns.languageVersionSettings)
|
||||||
|
irClass.transform(SingletonObjectJvmStaticTransformer(stubGenerator.irBuiltIns, cachedFields), null)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,9 @@ class JvmBackendContext(
|
|||||||
val methodSignatureMapper = MethodSignatureMapper(this)
|
val methodSignatureMapper = MethodSignatureMapper(this)
|
||||||
|
|
||||||
internal val innerClassesSupport = JvmInnerClassesSupport(irFactory)
|
internal val innerClassesSupport = JvmInnerClassesSupport(irFactory)
|
||||||
internal val cachedDeclarations = JvmCachedDeclarations(this, CachedFieldsForObjectInstances(irFactory, state.languageVersionSettings))
|
internal val cachedDeclarations = JvmCachedDeclarations(
|
||||||
|
this, generatorExtensions.getCachedFields(irFactory, state.languageVersionSettings)
|
||||||
|
)
|
||||||
|
|
||||||
override val mapping: Mapping = DefaultMapping()
|
override val mapping: Mapping = DefaultMapping()
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||||
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
||||||
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class JvmFileFacadeClass(
|
class JvmFileFacadeClass(
|
||||||
@@ -30,15 +29,7 @@ class JvmFileFacadeClass(
|
|||||||
|
|
||||||
override fun loadIr(): Boolean {
|
override fun loadIr(): Boolean {
|
||||||
irLoaded?.let { return it }
|
irLoaded?.let { return it }
|
||||||
irLoaded = stubGenerator.extensions.deserializeFacadeClass(
|
irLoaded = stubGenerator.extensions.deserializeFacadeClass(this, stubGenerator, parent, allowErrorNodes = false)
|
||||||
this,
|
return irLoaded!!
|
||||||
stubGenerator.moduleDescriptor,
|
|
||||||
stubGenerator.irBuiltIns,
|
|
||||||
stubGenerator.symbolTable,
|
|
||||||
parent,
|
|
||||||
allowErrorNodes = false
|
|
||||||
)
|
|
||||||
ExternalDependenciesGenerator(stubGenerator.symbolTable, listOf(stubGenerator)).generateUnboundSymbolsAsDependencies()
|
|
||||||
return irLoaded as Boolean
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,12 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm
|
package org.jetbrains.kotlin.backend.jvm
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||||
|
|
||||||
interface JvmGeneratorExtensions {
|
interface JvmGeneratorExtensions {
|
||||||
val classNameOverride: MutableMap<IrClass, JvmClassName>
|
val classNameOverride: MutableMap<IrClass, JvmClassName>
|
||||||
|
|
||||||
val rawTypeAnnotationConstructor: IrConstructor?
|
val rawTypeAnnotationConstructor: IrConstructor?
|
||||||
|
|
||||||
|
fun getCachedFields(irFactory: IrFactory, languageVersionSettings: LanguageVersionSettings): CachedFieldsForObjectInstances
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.backend.jvm.ir
|
package org.jetbrains.kotlin.backend.jvm.ir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.ir.ir2string
|
import org.jetbrains.kotlin.backend.common.ir.ir2string
|
||||||
import org.jetbrains.kotlin.backend.common.lower.IrLoweringContext
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.*
|
import org.jetbrains.kotlin.backend.jvm.*
|
||||||
import org.jetbrains.kotlin.backend.jvm.codegen.isInlineOnly
|
import org.jetbrains.kotlin.backend.jvm.codegen.isInlineOnly
|
||||||
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
import org.jetbrains.kotlin.backend.jvm.codegen.isJvmInterface
|
||||||
@@ -22,6 +21,7 @@ import org.jetbrains.kotlin.ir.IrElement
|
|||||||
import org.jetbrains.kotlin.ir.PsiIrFileEntry
|
import org.jetbrains.kotlin.ir.PsiIrFileEntry
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope
|
import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope
|
||||||
|
import org.jetbrains.kotlin.ir.builders.IrGeneratorContextBase
|
||||||
import org.jetbrains.kotlin.ir.builders.Scope
|
import org.jetbrains.kotlin.ir.builders.Scope
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildProperty
|
import org.jetbrains.kotlin.ir.builders.declarations.buildProperty
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
@@ -191,7 +191,7 @@ class JvmIrBuilder(
|
|||||||
startOffset: Int = UNDEFINED_OFFSET,
|
startOffset: Int = UNDEFINED_OFFSET,
|
||||||
endOffset: Int = UNDEFINED_OFFSET
|
endOffset: Int = UNDEFINED_OFFSET
|
||||||
) : IrBuilderWithScope(
|
) : IrBuilderWithScope(
|
||||||
IrLoweringContext(backendContext),
|
IrGeneratorContextBase(backendContext.irBuiltIns),
|
||||||
Scope(symbol),
|
Scope(symbol),
|
||||||
startOffset,
|
startOffset,
|
||||||
endOffset
|
endOffset
|
||||||
|
|||||||
+13
-9
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
|||||||
import org.jetbrains.kotlin.backend.common.ir.*
|
import org.jetbrains.kotlin.backend.common.ir.*
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrModulePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrModulePhase
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.CachedFieldsForObjectInstances
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.backend.jvm.codegen.isEffectivelyInlineOnly
|
import org.jetbrains.kotlin.backend.jvm.codegen.isEffectivelyInlineOnly
|
||||||
@@ -41,7 +42,9 @@ internal val jvmStaticInCompanionPhase = makeIrFilePhase(
|
|||||||
|
|
||||||
private class JvmStaticInObjectLowering(val context: JvmBackendContext) : FileLoweringPass {
|
private class JvmStaticInObjectLowering(val context: JvmBackendContext) : FileLoweringPass {
|
||||||
override fun lower(irFile: IrFile) =
|
override fun lower(irFile: IrFile) =
|
||||||
irFile.transformChildrenVoid(SingletonObjectJvmStaticTransformer(context))
|
irFile.transformChildrenVoid(
|
||||||
|
SingletonObjectJvmStaticTransformer(context.irBuiltIns, context.cachedDeclarations.fieldsForObjectInstances)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private class JvmStaticInCompanionLowering(val context: JvmBackendContext) : FileLoweringPass {
|
private class JvmStaticInCompanionLowering(val context: JvmBackendContext) : FileLoweringPass {
|
||||||
@@ -64,7 +67,7 @@ internal fun IrDeclaration.isJvmStaticInObject(): Boolean =
|
|||||||
private fun IrExpression.coerceToUnit(irBuiltIns: IrBuiltIns) =
|
private fun IrExpression.coerceToUnit(irBuiltIns: IrBuiltIns) =
|
||||||
IrTypeOperatorCallImpl(startOffset, endOffset, irBuiltIns.unitType, IrTypeOperator.IMPLICIT_COERCION_TO_UNIT, irBuiltIns.unitType, this)
|
IrTypeOperatorCallImpl(startOffset, endOffset, irBuiltIns.unitType, IrTypeOperator.IMPLICIT_COERCION_TO_UNIT, irBuiltIns.unitType, this)
|
||||||
|
|
||||||
private fun IrMemberAccessExpression<*>.makeStatic(context: JvmBackendContext, replaceCallee: IrSimpleFunction?) =
|
private fun IrMemberAccessExpression<*>.makeStatic(irBuiltIns: IrBuiltIns, replaceCallee: IrSimpleFunction?) =
|
||||||
dispatchReceiver?.let { receiver ->
|
dispatchReceiver?.let { receiver ->
|
||||||
dispatchReceiver = null
|
dispatchReceiver = null
|
||||||
val newCall = if (replaceCallee != null) irCall(this@makeStatic as IrCall, replaceCallee) else this@makeStatic
|
val newCall = if (replaceCallee != null) irCall(this@makeStatic as IrCall, replaceCallee) else this@makeStatic
|
||||||
@@ -73,13 +76,16 @@ private fun IrMemberAccessExpression<*>.makeStatic(context: JvmBackendContext, r
|
|||||||
newCall
|
newCall
|
||||||
} else {
|
} else {
|
||||||
IrBlockImpl(startOffset, endOffset, newCall.type).apply {
|
IrBlockImpl(startOffset, endOffset, newCall.type).apply {
|
||||||
statements += receiver.coerceToUnit(context.irBuiltIns) // evaluate for side effects
|
statements += receiver.coerceToUnit(irBuiltIns) // evaluate for side effects
|
||||||
statements += newCall
|
statements += newCall
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ?: this
|
} ?: this
|
||||||
|
|
||||||
private class SingletonObjectJvmStaticTransformer(val context: JvmBackendContext) : IrElementTransformerVoid() {
|
class SingletonObjectJvmStaticTransformer(
|
||||||
|
private val irBuiltIns: IrBuiltIns,
|
||||||
|
private val cachedFields: CachedFieldsForObjectInstances
|
||||||
|
) : IrElementTransformerVoid() {
|
||||||
override fun visitClass(declaration: IrClass): IrStatement {
|
override fun visitClass(declaration: IrClass): IrStatement {
|
||||||
if (declaration.isNonCompanionObject) {
|
if (declaration.isNonCompanionObject) {
|
||||||
for (function in declaration.simpleFunctions()) {
|
for (function in declaration.simpleFunctions()) {
|
||||||
@@ -87,9 +93,7 @@ private class SingletonObjectJvmStaticTransformer(val context: JvmBackendContext
|
|||||||
// dispatch receiver parameter is already null for synthetic property annotation methods
|
// dispatch receiver parameter is already null for synthetic property annotation methods
|
||||||
function.dispatchReceiverParameter?.let { oldDispatchReceiverParameter ->
|
function.dispatchReceiverParameter?.let { oldDispatchReceiverParameter ->
|
||||||
function.dispatchReceiverParameter = null
|
function.dispatchReceiverParameter = null
|
||||||
function.replaceThisByStaticReference(
|
function.replaceThisByStaticReference(cachedFields, declaration, oldDispatchReceiverParameter)
|
||||||
context.cachedDeclarations.fieldsForObjectInstances, declaration, oldDispatchReceiverParameter
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,7 +106,7 @@ private class SingletonObjectJvmStaticTransformer(val context: JvmBackendContext
|
|||||||
expression.transformChildrenVoid(this)
|
expression.transformChildrenVoid(this)
|
||||||
val callee = expression.symbol.owner
|
val callee = expression.symbol.owner
|
||||||
if (callee is IrDeclaration && callee.isJvmStaticInObject()) {
|
if (callee is IrDeclaration && callee.isJvmStaticInObject()) {
|
||||||
return expression.makeStatic(context, replaceCallee = null)
|
return expression.makeStatic(irBuiltIns, replaceCallee = null)
|
||||||
}
|
}
|
||||||
return expression
|
return expression
|
||||||
}
|
}
|
||||||
@@ -146,7 +150,7 @@ private class CompanionObjectJvmStaticTransformer(val context: JvmBackendContext
|
|||||||
return when {
|
return when {
|
||||||
shouldReplaceWithStaticCall(callee) -> {
|
shouldReplaceWithStaticCall(callee) -> {
|
||||||
val (staticProxy, _) = context.cachedDeclarations.getStaticAndCompanionDeclaration(callee)
|
val (staticProxy, _) = context.cachedDeclarations.getStaticAndCompanionDeclaration(callee)
|
||||||
expression.makeStatic(context, staticProxy)
|
expression.makeStatic(context.irBuiltIns, staticProxy)
|
||||||
}
|
}
|
||||||
callee.symbol == context.ir.symbols.indyLambdaMetafactoryIntrinsic -> {
|
callee.symbol == context.ir.symbols.indyLambdaMetafactoryIntrinsic -> {
|
||||||
val implFunRef = expression.getValueArgument(1) as? IrFunctionReference
|
val implFunRef = expression.getValueArgument(1) as? IrFunctionReference
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.ir.types.IrSimpleType
|
|||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||||
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
||||||
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
|
|
||||||
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
||||||
import org.jetbrains.kotlin.ir.util.render
|
import org.jetbrains.kotlin.ir.util.render
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
|
|||||||
@@ -34,18 +34,14 @@ open class StubGeneratorExtensions {
|
|||||||
|
|
||||||
open fun deserializeLazyClass(
|
open fun deserializeLazyClass(
|
||||||
irClass: IrLazyClass,
|
irClass: IrLazyClass,
|
||||||
moduleDescriptor: ModuleDescriptor,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
irBuiltIns: IrBuiltIns,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
parent: IrDeclarationParent,
|
parent: IrDeclarationParent,
|
||||||
allowErrorNodes: Boolean,
|
allowErrorNodes: Boolean,
|
||||||
): Boolean = false
|
): Boolean = false
|
||||||
|
|
||||||
open fun deserializeFacadeClass(
|
open fun deserializeFacadeClass(
|
||||||
irClass: IrClass,
|
irClass: IrClass,
|
||||||
moduleDescriptor: ModuleDescriptor,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
irBuiltIns: IrBuiltIns,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
parent: IrDeclarationParent,
|
parent: IrDeclarationParent,
|
||||||
allowErrorNodes: Boolean,
|
allowErrorNodes: Boolean,
|
||||||
): Boolean = false
|
): Boolean = false
|
||||||
|
|||||||
Reference in New Issue
Block a user