Fir2IR: introduce IdSignature?.iscomposite()
This commit is contained in:
committed by
Alexander Udalov
parent
64818c817f
commit
a8cc3ec316
+4
-3
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.isComposite
|
||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -231,7 +232,7 @@ class FakeOverrideGenerator(
|
||||
// have the same signature.
|
||||
// Now we avoid this problem by signature caching,
|
||||
// so both FIR overrides correspond to one IR fake override
|
||||
val isTopLevelPrivate = irClass.symbol.signature is IdSignature.CompositeSignature
|
||||
val isTopLevelPrivate = irClass.symbol.signature.isComposite()
|
||||
signatureComposer.composeSignature(fakeOverrideFirDeclaration, forceTopLevelPrivate = isTopLevelPrivate)
|
||||
}?.takeIf { it.parent == irClass }
|
||||
?: createIrDeclaration(
|
||||
@@ -283,7 +284,7 @@ class FakeOverrideGenerator(
|
||||
}
|
||||
}
|
||||
|
||||
fun createFirFunctionFakeOverride(
|
||||
internal fun createFirFunctionFakeOverride(
|
||||
klass: FirClass,
|
||||
irClass: IrClass,
|
||||
originalSymbol: FirNamedFunctionSymbol,
|
||||
@@ -301,7 +302,7 @@ class FakeOverrideGenerator(
|
||||
scope
|
||||
)
|
||||
|
||||
fun createFirPropertyFakeOverride(
|
||||
internal fun createFirPropertyFakeOverride(
|
||||
klass: FirClass,
|
||||
irClass: IrClass,
|
||||
originalSymbol: FirPropertySymbol,
|
||||
|
||||
@@ -26,10 +26,7 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrSimpleType
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
||||
import org.jetbrains.kotlin.ir.util.DeserializableClass
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.isEnumClass
|
||||
import org.jetbrains.kotlin.ir.util.isObject
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
@@ -150,7 +147,7 @@ class Fir2IrLazyClass(
|
||||
}
|
||||
|
||||
override val declarations: MutableList<IrDeclaration> by lazyVar(lock) {
|
||||
val isTopLevelPrivate = symbol.signature is IdSignature.CompositeSignature
|
||||
val isTopLevelPrivate = symbol.signature.isComposite()
|
||||
val result = mutableListOf<IrDeclaration>()
|
||||
// NB: it's necessary to take all callables from scope,
|
||||
// e.g. to avoid accessing un-enhanced Java declarations with FirJavaTypeRef etc. inside
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.isComposite
|
||||
|
||||
class Fir2IrLazyProperty(
|
||||
components: Fir2IrComponents,
|
||||
@@ -165,7 +165,7 @@ class Fir2IrLazyProperty(
|
||||
fir,
|
||||
isSetter = false,
|
||||
containingClass?.symbol?.toLookupTag(),
|
||||
forceTopLevelPrivate = symbol.signature is IdSignature.CompositeSignature
|
||||
forceTopLevelPrivate = symbol.signature.isComposite()
|
||||
)!!
|
||||
symbolTable.declareSimpleFunction(signature, symbolFactory = { Fir2IrSimpleFunctionSymbol(signature) }) { symbol ->
|
||||
Fir2IrLazyPropertyAccessor(
|
||||
@@ -199,7 +199,7 @@ class Fir2IrLazyProperty(
|
||||
fir,
|
||||
isSetter = true,
|
||||
containingClass?.symbol?.toLookupTag(),
|
||||
forceTopLevelPrivate = symbol.signature is IdSignature.CompositeSignature
|
||||
forceTopLevelPrivate = symbol.signature.isComposite()
|
||||
)!!
|
||||
symbolTable.declareSimpleFunction(signature, symbolFactory = { Fir2IrSimpleFunctionSymbol(signature) }) { symbol ->
|
||||
Fir2IrLazyPropertyAccessor(
|
||||
|
||||
@@ -1256,3 +1256,6 @@ private fun computeAllOverridden(function: IrSimpleFunction, result: MutableSet<
|
||||
|
||||
fun IrBuiltIns.getKFunctionType(returnType: IrType, parameterTypes: List<IrType>) =
|
||||
kFunctionN(parameterTypes.size).typeWith(parameterTypes + returnType)
|
||||
|
||||
fun IdSignature?.isComposite(): Boolean =
|
||||
this is IdSignature.CompositeSignature
|
||||
|
||||
Reference in New Issue
Block a user