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