IR: extract AbstractIrLazyFunction and tryLoadIr
This commit is contained in:
committed by
Space Team
parent
f075c9d50b
commit
37838963c6
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.AbstractIrLazyFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyFunctionBase
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.lazyVar
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||
@@ -24,7 +25,6 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
||||
import org.jetbrains.kotlin.ir.util.isFacadeClass
|
||||
import org.jetbrains.kotlin.ir.util.isObject
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -38,7 +38,7 @@ abstract class AbstractFir2IrLazyFunction<F : FirCallableDeclaration>(
|
||||
override var origin: IrDeclarationOrigin,
|
||||
override val symbol: IrSimpleFunctionSymbol,
|
||||
override var isFakeOverride: Boolean
|
||||
) : IrSimpleFunction(), AbstractFir2IrLazyDeclaration<F>, Fir2IrTypeParametersContainer, IrLazyFunctionBase,
|
||||
) : AbstractIrLazyFunction(), AbstractFir2IrLazyDeclaration<F>, Fir2IrTypeParametersContainer, IrLazyFunctionBase,
|
||||
Fir2IrComponents by components {
|
||||
|
||||
override lateinit var typeParameters: List<IrTypeParameter>
|
||||
@@ -120,11 +120,11 @@ abstract class AbstractFir2IrLazyFunction<F : FirCallableDeclaration>(
|
||||
return super<AbstractFir2IrLazyDeclaration>.createLazyAnnotations()
|
||||
}
|
||||
|
||||
private fun tryLoadIr(): Boolean {
|
||||
if (!isInline || isFakeOverride) return false
|
||||
if (!extensions.irNeedsDeserialization) return false
|
||||
val toplevel = getTopLevelDeclaration()
|
||||
return (toplevel as? DeserializableClass)?.loadIr() ?: false
|
||||
override val isDeserializationEnabled: Boolean
|
||||
get() = extensions.irNeedsDeserialization
|
||||
|
||||
override fun lazyParent(): IrDeclarationParent {
|
||||
return super<AbstractFir2IrLazyDeclaration>.lazyParent()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.ir.declarations.lazy
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
||||
|
||||
abstract class AbstractIrLazyFunction : IrSimpleFunction(), IrLazyFunctionBase {
|
||||
abstract val isDeserializationEnabled: Boolean
|
||||
|
||||
fun tryLoadIr(): Boolean {
|
||||
if (!isInline || isFakeOverride) return false
|
||||
if (!isDeserializationEnabled) return false
|
||||
val toplevel = getTopLevelDeclaration()
|
||||
return (toplevel as? DeserializableClass)?.loadIr() ?: false
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
||||
import org.jetbrains.kotlin.ir.util.TypeTranslator
|
||||
import org.jetbrains.kotlin.ir.util.withScope
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -44,7 +43,7 @@ class IrLazyFunction(
|
||||
override var isInfix: Boolean,
|
||||
override val stubGenerator: DeclarationStubGenerator,
|
||||
override val typeTranslator: TypeTranslator,
|
||||
) : IrSimpleFunction(), IrLazyFunctionBase {
|
||||
) : AbstractIrLazyFunction(), IrLazyFunctionBase {
|
||||
override var parent: IrDeclarationParent by createLazyParent()
|
||||
|
||||
override var annotations: List<IrConstructorCall> by createLazyAnnotations()
|
||||
@@ -110,12 +109,8 @@ class IrLazyFunction(
|
||||
override val containerSource: DeserializedContainerSource?
|
||||
get() = (descriptor as? DescriptorWithContainerSource)?.containerSource
|
||||
|
||||
private fun tryLoadIr(): Boolean {
|
||||
if (!stubGenerator.extensions.irDeserializationEnabled) return false
|
||||
if (!isInline || isFakeOverride) return false
|
||||
val toplevel = getTopLevelDeclaration()
|
||||
return (toplevel as? DeserializableClass)?.loadIr() ?: false
|
||||
}
|
||||
override val isDeserializationEnabled: Boolean
|
||||
get() = stubGenerator.extensions.irDeserializationEnabled
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
|
||||
Reference in New Issue
Block a user