FIR: Remove FirCallableSymbol::overriddenSymbol
This commit is contained in:
+2
-2
@@ -84,7 +84,7 @@ class FakeOverrideGenerator(
|
||||
declarationStorage::getCachedIrFunction,
|
||||
declarationStorage::createIrFunction,
|
||||
createFakeOverrideSymbol = { firFunction, callableSymbol ->
|
||||
FirFakeOverrideGenerator.createFakeOverrideFunction(
|
||||
FirFakeOverrideGenerator.createSubstitutionOverrideFunction(
|
||||
session, firFunction, callableSymbol,
|
||||
newDispatchReceiverType = klass.defaultType(),
|
||||
derivedClassId = klass.symbol.classId,
|
||||
@@ -108,7 +108,7 @@ class FakeOverrideGenerator(
|
||||
declarationStorage::getCachedIrProperty,
|
||||
declarationStorage::createIrProperty,
|
||||
createFakeOverrideSymbol = { firProperty, callableSymbol ->
|
||||
FirFakeOverrideGenerator.createFakeOverrideProperty(
|
||||
FirFakeOverrideGenerator.createSubstitutionOverrideProperty(
|
||||
session, firProperty, callableSymbol,
|
||||
newDispatchReceiverType = klass.defaultType(),
|
||||
derivedClassId = klass.symbol.classId,
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@ private fun FirTypeAliasSymbol.findSAMConstructorForTypeAlias(
|
||||
|
||||
if (newReturnType == null && newParameterTypes.all { it == null }) return samConstructorForClass
|
||||
|
||||
return FirFakeOverrideGenerator.createFakeOverrideFunction(
|
||||
return FirFakeOverrideGenerator.createSubstitutionOverrideFunction(
|
||||
session, samConstructorForClass, namedSymbol,
|
||||
newDispatchReceiverType = null,
|
||||
newReceiverType = null,
|
||||
|
||||
+20
-20
@@ -29,15 +29,15 @@ class FirClassSubstitutionScope(
|
||||
private val makeExpect: Boolean = false
|
||||
) : FirTypeScope() {
|
||||
|
||||
private val fakeOverrideFunctions = mutableMapOf<FirFunctionSymbol<*>, FirFunctionSymbol<*>>()
|
||||
private val fakeOverrideConstructors = mutableMapOf<FirConstructorSymbol, FirConstructorSymbol>()
|
||||
private val fakeOverrideVariables = mutableMapOf<FirVariableSymbol<*>, FirVariableSymbol<*>>()
|
||||
private val substitutionOverrideFunctions = mutableMapOf<FirFunctionSymbol<*>, FirFunctionSymbol<*>>()
|
||||
private val substitutionOverrideConstructors = mutableMapOf<FirConstructorSymbol, FirConstructorSymbol>()
|
||||
private val substitutionOverrideVariables = mutableMapOf<FirVariableSymbol<*>, FirVariableSymbol<*>>()
|
||||
|
||||
private val newOwnerClassId = dispatchReceiverTypeForSubstitutedMembers.lookupTag.classId
|
||||
|
||||
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) {
|
||||
useSiteMemberScope.processFunctionsByName(name) process@{ original ->
|
||||
val function = fakeOverrideFunctions.getOrPut(original) { createFakeOverrideFunction(original) }
|
||||
val function = substitutionOverrideFunctions.getOrPut(original) { createSubstitutionOverrideFunction(original) }
|
||||
processor(function)
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ class FirClassSubstitutionScope(
|
||||
processor: (FirFunctionSymbol<*>, FirTypeScope) -> ProcessorAction
|
||||
): ProcessorAction =
|
||||
processDirectOverriddenWithBaseScope(
|
||||
functionSymbol, processor, FirTypeScope::processDirectOverriddenFunctionsWithBaseScope, fakeOverrideFunctions
|
||||
functionSymbol, processor, FirTypeScope::processDirectOverriddenFunctionsWithBaseScope, substitutionOverrideFunctions
|
||||
)
|
||||
|
||||
private inline fun <reified D : FirCallableSymbol<*>> processDirectOverriddenWithBaseScope(
|
||||
@@ -70,15 +70,15 @@ class FirClassSubstitutionScope(
|
||||
return useSiteMemberScope.processPropertiesByName(name) process@{ original ->
|
||||
when (original) {
|
||||
is FirPropertySymbol -> {
|
||||
val property = fakeOverrideVariables.getOrPut(original) { createFakeOverrideProperty(original) }
|
||||
val property = substitutionOverrideVariables.getOrPut(original) { createSubstitutionOverrideProperty(original) }
|
||||
processor(property)
|
||||
}
|
||||
is FirFieldSymbol -> {
|
||||
val field = fakeOverrideVariables.getOrPut(original) { createFakeOverrideField(original) }
|
||||
val field = substitutionOverrideVariables.getOrPut(original) { createSubstitutionOverrideField(original) }
|
||||
processor(field)
|
||||
}
|
||||
is FirAccessorSymbol -> {
|
||||
val accessor = fakeOverrideVariables.getOrPut(original) { createFakeOverrideAccessor(original) }
|
||||
val accessor = substitutionOverrideVariables.getOrPut(original) { createSubstitutionOverrideAccessor(original) }
|
||||
processor(accessor)
|
||||
}
|
||||
else -> {
|
||||
@@ -94,7 +94,7 @@ class FirClassSubstitutionScope(
|
||||
): ProcessorAction =
|
||||
processDirectOverriddenWithBaseScope(
|
||||
propertySymbol, processor, FirTypeScope::processDirectOverriddenPropertiesWithBaseScope,
|
||||
fakeOverrideVariables
|
||||
substitutionOverrideVariables
|
||||
)
|
||||
|
||||
override fun processClassifiersByNameWithSubstitution(name: Name, processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit) {
|
||||
@@ -111,7 +111,7 @@ class FirClassSubstitutionScope(
|
||||
return substitutor.substituteOrNull(this)
|
||||
}
|
||||
|
||||
private fun createFakeOverrideFunction(original: FirFunctionSymbol<*>): FirFunctionSymbol<*> {
|
||||
private fun createSubstitutionOverrideFunction(original: FirFunctionSymbol<*>): FirFunctionSymbol<*> {
|
||||
if (substitutor == ConeSubstitutor.Empty) return original
|
||||
val member = when (original) {
|
||||
is FirNamedFunctionSymbol -> original.fir
|
||||
@@ -135,7 +135,7 @@ class FirClassSubstitutionScope(
|
||||
* it's safe to cast newTypeParameters to List<FirTypeParameter>
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return FirFakeOverrideGenerator.createFakeOverrideFunction(
|
||||
return FirFakeOverrideGenerator.createSubstitutionOverrideFunction(
|
||||
session,
|
||||
member,
|
||||
original,
|
||||
@@ -150,7 +150,7 @@ class FirClassSubstitutionScope(
|
||||
)
|
||||
}
|
||||
|
||||
private fun createFakeOverrideConstructor(original: FirConstructorSymbol): FirConstructorSymbol {
|
||||
private fun createSubstitutionOverrideConstructor(original: FirConstructorSymbol): FirConstructorSymbol {
|
||||
if (substitutor == ConeSubstitutor.Empty) return original
|
||||
val constructor = original.fir
|
||||
|
||||
@@ -162,14 +162,14 @@ class FirClassSubstitutionScope(
|
||||
if (newReturnType == null && newParameterTypes.all { it == null } && newTypeParameters === constructor.typeParameters) {
|
||||
return original
|
||||
}
|
||||
return FirFakeOverrideGenerator.createFakeOverrideConstructor(
|
||||
FirConstructorSymbol(original.callableId, overriddenSymbol = original),
|
||||
return FirFakeOverrideGenerator.createSubstitutionOverrideConstructor(
|
||||
FirConstructorSymbol(original.callableId),
|
||||
session, constructor, dispatchReceiverTypeForSubstitutedMembers,
|
||||
newReturnType, newParameterTypes, newTypeParameters, makeExpect, fakeOverrideSubstitution
|
||||
).symbol
|
||||
}
|
||||
|
||||
private fun createFakeOverrideProperty(original: FirPropertySymbol): FirPropertySymbol {
|
||||
private fun createSubstitutionOverrideProperty(original: FirPropertySymbol): FirPropertySymbol {
|
||||
if (substitutor == ConeSubstitutor.Empty) return original
|
||||
val member = original.fir
|
||||
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
|
||||
@@ -182,7 +182,7 @@ class FirClassSubstitutionScope(
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return FirFakeOverrideGenerator.createFakeOverrideProperty(
|
||||
return FirFakeOverrideGenerator.createSubstitutionOverrideProperty(
|
||||
session,
|
||||
member,
|
||||
original,
|
||||
@@ -220,7 +220,7 @@ class FirClassSubstitutionScope(
|
||||
return SubstitutedData(newTypeParameters, newReceiverType, newReturnType, substitutor, fakeOverrideSubstitution)
|
||||
}
|
||||
|
||||
private fun createFakeOverrideField(original: FirFieldSymbol): FirFieldSymbol {
|
||||
private fun createSubstitutionOverrideField(original: FirFieldSymbol): FirFieldSymbol {
|
||||
if (substitutor == ConeSubstitutor.Empty) return original
|
||||
val member = original.fir
|
||||
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
|
||||
@@ -229,10 +229,10 @@ class FirClassSubstitutionScope(
|
||||
// TODO: do we have fields with implicit type?
|
||||
val newReturnType = returnType?.substitute() ?: return original
|
||||
|
||||
return FirFakeOverrideGenerator.createFakeOverrideField(session, member, original, newReturnType, newOwnerClassId)
|
||||
return FirFakeOverrideGenerator.createSubstitutionOverrideField(session, member, original, newReturnType, newOwnerClassId)
|
||||
}
|
||||
|
||||
private fun createFakeOverrideAccessor(original: FirAccessorSymbol): FirAccessorSymbol {
|
||||
private fun createSubstitutionOverrideAccessor(original: FirAccessorSymbol): FirAccessorSymbol {
|
||||
if (substitutor == ConeSubstitutor.Empty) return original
|
||||
val member = original.fir as FirSyntheticProperty
|
||||
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
|
||||
@@ -262,7 +262,7 @@ class FirClassSubstitutionScope(
|
||||
|
||||
override fun processDeclaredConstructors(processor: (FirConstructorSymbol) -> Unit) {
|
||||
useSiteMemberScope.processDeclaredConstructors process@{ original ->
|
||||
val constructor = fakeOverrideConstructors.getOrPut(original) { createFakeOverrideConstructor(original) }
|
||||
val constructor = substitutionOverrideConstructors.getOrPut(original) { createSubstitutionOverrideConstructor(original) }
|
||||
processor(constructor)
|
||||
}
|
||||
}
|
||||
|
||||
+20
-13
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.originalForSubstitutionOverrideAttr
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
@@ -28,7 +29,7 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
||||
|
||||
object FirFakeOverrideGenerator {
|
||||
fun createFakeOverrideFunction(
|
||||
fun createSubstitutionOverrideFunction(
|
||||
session: FirSession,
|
||||
baseFunction: FirSimpleFunction,
|
||||
baseSymbol: FirNamedFunctionSymbol,
|
||||
@@ -42,17 +43,16 @@ object FirFakeOverrideGenerator {
|
||||
fakeOverrideSubstitution: FakeOverrideSubstitution? = null
|
||||
): FirNamedFunctionSymbol {
|
||||
val symbol = FirNamedFunctionSymbol(
|
||||
CallableId(derivedClassId ?: baseSymbol.callableId.classId!!, baseFunction.name),
|
||||
overriddenSymbol = baseSymbol
|
||||
CallableId(derivedClassId ?: baseSymbol.callableId.classId!!, baseFunction.name)
|
||||
)
|
||||
createFakeOverrideFunction(
|
||||
createSubstitutionOverrideFunction(
|
||||
symbol, session, baseFunction, newDispatchReceiverType, newReceiverType, newReturnType,
|
||||
newParameterTypes, newTypeParameters, isExpect, fakeOverrideSubstitution
|
||||
)
|
||||
return symbol
|
||||
}
|
||||
|
||||
private fun createFakeOverrideFunction(
|
||||
private fun createSubstitutionOverrideFunction(
|
||||
fakeOverrideSymbol: FirFunctionSymbol<FirSimpleFunction>,
|
||||
session: FirSession,
|
||||
baseFunction: FirSimpleFunction,
|
||||
@@ -78,7 +78,9 @@ object FirFakeOverrideGenerator {
|
||||
newReceiverType,
|
||||
newReturnType,
|
||||
fakeOverrideSubstitution = fakeOverrideSubstitution
|
||||
)
|
||||
).apply {
|
||||
originalForSubstitutionOverrideAttr = baseFunction
|
||||
}
|
||||
}
|
||||
|
||||
fun createCopyForFirFunction(
|
||||
@@ -113,7 +115,7 @@ object FirFakeOverrideGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
fun createFakeOverrideConstructor(
|
||||
fun createSubstitutionOverrideConstructor(
|
||||
fakeOverrideSymbol: FirConstructorSymbol,
|
||||
session: FirSession,
|
||||
baseConstructor: FirConstructor,
|
||||
@@ -142,6 +144,8 @@ object FirFakeOverrideGenerator {
|
||||
resolvePhase = baseConstructor.resolvePhase
|
||||
source = baseConstructor.source
|
||||
attributes = baseConstructor.attributes.copy()
|
||||
}.apply {
|
||||
originalForSubstitutionOverrideAttr = baseConstructor
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,7 +240,7 @@ object FirFakeOverrideGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
fun createFakeOverrideProperty(
|
||||
fun createSubstitutionOverrideProperty(
|
||||
session: FirSession,
|
||||
baseProperty: FirProperty,
|
||||
baseSymbol: FirPropertySymbol,
|
||||
@@ -249,14 +253,15 @@ object FirFakeOverrideGenerator {
|
||||
fakeOverrideSubstitution: FakeOverrideSubstitution? = null
|
||||
): FirPropertySymbol {
|
||||
val symbol = FirPropertySymbol(
|
||||
CallableId(derivedClassId ?: baseSymbol.callableId.classId!!, baseProperty.name),
|
||||
overriddenSymbol = baseSymbol
|
||||
CallableId(derivedClassId ?: baseSymbol.callableId.classId!!, baseProperty.name)
|
||||
)
|
||||
createCopyForFirProperty(
|
||||
symbol, baseProperty, session, FirDeclarationOrigin.SubstitutionOverride, isExpect,
|
||||
newDispatchReceiverType, newTypeParameters, newReceiverType, newReturnType,
|
||||
fakeOverrideSubstitution = fakeOverrideSubstitution
|
||||
)
|
||||
).apply {
|
||||
originalForSubstitutionOverrideAttr = baseProperty
|
||||
}
|
||||
return symbol
|
||||
}
|
||||
|
||||
@@ -372,7 +377,7 @@ object FirFakeOverrideGenerator {
|
||||
receiverTypeRef = baseProperty.receiverTypeRef?.withReplacedConeType(newReceiverType)
|
||||
}
|
||||
|
||||
fun createFakeOverrideField(
|
||||
fun createSubstitutionOverrideField(
|
||||
session: FirSession,
|
||||
baseField: FirField,
|
||||
baseSymbol: FirFieldSymbol,
|
||||
@@ -397,6 +402,8 @@ object FirFakeOverrideGenerator {
|
||||
annotations += baseField.annotations
|
||||
attributes = baseField.attributes.copy()
|
||||
dispatchReceiverType = baseField.dispatchReceiverType
|
||||
}.apply {
|
||||
originalForSubstitutionOverrideAttr = baseField
|
||||
}
|
||||
return symbol
|
||||
}
|
||||
@@ -411,7 +418,7 @@ object FirFakeOverrideGenerator {
|
||||
fakeOverrideSubstitution: FakeOverrideSubstitution?
|
||||
): FirAccessorSymbol {
|
||||
val functionSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId)
|
||||
val function = createFakeOverrideFunction(
|
||||
val function = createSubstitutionOverrideFunction(
|
||||
functionSymbol,
|
||||
session,
|
||||
baseProperty.getter.delegate,
|
||||
|
||||
+9
-5
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
|
||||
import org.jetbrains.kotlin.fir.originalForIntersectionOverrideAttr
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.scopes.*
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
@@ -263,8 +264,7 @@ class FirTypeIntersectionScope private constructor(
|
||||
CallableId(
|
||||
dispatchReceiverType.classId ?: mostSpecific.dispatchReceiverClassOrNull()?.classId!!,
|
||||
mostSpecific.fir.name
|
||||
),
|
||||
mostSpecific
|
||||
)
|
||||
)
|
||||
val mostSpecificFunction = mostSpecific.fir
|
||||
FirFakeOverrideGenerator.createCopyForFirFunction(
|
||||
@@ -274,7 +274,9 @@ class FirTypeIntersectionScope private constructor(
|
||||
newDispatchReceiverType = dispatchReceiverType,
|
||||
newModality = newModality,
|
||||
newVisibility = newVisibility,
|
||||
)
|
||||
).apply {
|
||||
originalForIntersectionOverrideAttr = mostSpecific.fir
|
||||
}
|
||||
return newSymbol
|
||||
}
|
||||
|
||||
@@ -283,14 +285,16 @@ class FirTypeIntersectionScope private constructor(
|
||||
newModality: Modality,
|
||||
newVisibility: Visibility,
|
||||
): FirPropertySymbol {
|
||||
val newSymbol = FirPropertySymbol(mostSpecific.callableId, mostSpecific)
|
||||
val newSymbol = FirPropertySymbol(mostSpecific.callableId)
|
||||
val mostSpecificProperty = mostSpecific.fir
|
||||
FirFakeOverrideGenerator.createCopyForFirProperty(
|
||||
newSymbol, mostSpecificProperty, mostSpecificProperty.session, FirDeclarationOrigin.IntersectionOverride,
|
||||
newModality = newModality,
|
||||
newVisibility = newVisibility,
|
||||
newDispatchReceiverType = dispatchReceiverType,
|
||||
)
|
||||
).apply {
|
||||
originalForIntersectionOverrideAttr = mostSpecific.fir
|
||||
}
|
||||
return newSymbol
|
||||
}
|
||||
|
||||
|
||||
@@ -34,13 +34,13 @@ val FirCallableDeclaration<*>.isIntersectionOverride get() = origin == FirDeclar
|
||||
val FirCallableDeclaration<*>.isSubstitutionOverride get() = origin == FirDeclarationOrigin.SubstitutionOverride
|
||||
|
||||
inline val <reified D : FirCallableDeclaration<*>> D.originalForSubstitutionOverride: D?
|
||||
get() = if (isSubstitutionOverride) symbol.overriddenSymbol?.fir as D? else null
|
||||
get() = if (isSubstitutionOverride) originalForSubstitutionOverrideAttr else null
|
||||
|
||||
inline val <reified S : FirCallableSymbol<*>> S.originalForSubstitutionOverride: S?
|
||||
get() = fir.originalForSubstitutionOverride?.symbol as S?
|
||||
|
||||
inline val <reified D : FirCallableDeclaration<*>> D.baseForIntersectionOverride: D?
|
||||
get() = if (isIntersectionOverride) symbol.overriddenSymbol?.fir as D? else null
|
||||
get() = if (isIntersectionOverride) originalForIntersectionOverrideAttr else null
|
||||
|
||||
inline val <reified S : FirCallableSymbol<*>> S.baseForIntersectionOverride: S?
|
||||
get() = fir.baseForIntersectionOverride?.symbol as S?
|
||||
@@ -61,3 +61,11 @@ inline fun <reified D : FirCallableDeclaration<*>> D.unwrapFakeOverrides(): D {
|
||||
}
|
||||
|
||||
inline fun <reified S : FirCallableSymbol<*>> S.unwrapFakeOverrides(): S = fir.unwrapFakeOverrides().symbol as S
|
||||
|
||||
private object SubstitutedOverrideOriginalKey : FirDeclarationDataKey()
|
||||
var <D : FirCallableDeclaration<*>>
|
||||
D.originalForSubstitutionOverrideAttr: D? by FirDeclarationDataRegistry.data(SubstitutedOverrideOriginalKey)
|
||||
|
||||
private object IntersectionOverrideOriginalKey : FirDeclarationDataKey()
|
||||
var <D : FirCallableDeclaration<*>>
|
||||
D.originalForIntersectionOverrideAttr: D? by FirDeclarationDataRegistry.data(IntersectionOverrideOriginalKey)
|
||||
|
||||
+1
-3
@@ -8,6 +8,4 @@ package org.jetbrains.kotlin.fir.symbols
|
||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
|
||||
interface PossiblyFirFakeOverrideSymbol<E, S : FirBasedSymbol<E>> : FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
||||
val overriddenSymbol: S?
|
||||
}
|
||||
interface PossiblyFirFakeOverrideSymbol<E, S : FirBasedSymbol<E>> : FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration
|
||||
|
||||
@@ -14,9 +14,6 @@ import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
|
||||
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : AbstractFirBasedSymbol<D>() {
|
||||
abstract val callableId: CallableId
|
||||
|
||||
open val overriddenSymbol: FirCallableSymbol<D>?
|
||||
get() = null
|
||||
}
|
||||
|
||||
val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirMemberDeclaration)?.status?.isStatic == true
|
||||
|
||||
@@ -24,12 +24,10 @@ sealed class FirFunctionSymbol<D : FirFunction<D>>(
|
||||
|
||||
open class FirNamedFunctionSymbol(
|
||||
callableId: CallableId,
|
||||
override val overriddenSymbol: FirNamedFunctionSymbol? = null,
|
||||
) : FirFunctionSymbol<FirSimpleFunction>(callableId), PossiblyFirFakeOverrideSymbol<FirSimpleFunction, FirNamedFunctionSymbol>
|
||||
|
||||
class FirConstructorSymbol(
|
||||
callableId: CallableId,
|
||||
override val overriddenSymbol: FirConstructorSymbol? = null
|
||||
callableId: CallableId
|
||||
) : FirFunctionSymbol<FirConstructor>(callableId)
|
||||
|
||||
open class FirAccessorSymbol(
|
||||
|
||||
@@ -23,7 +23,6 @@ open class FirVariableSymbol<D : FirVariable<D>>(override val callableId: Callab
|
||||
|
||||
open class FirPropertySymbol(
|
||||
callableId: CallableId,
|
||||
override val overriddenSymbol: FirPropertySymbol? = null,
|
||||
) : FirVariableSymbol<FirProperty>(callableId), PossiblyFirFakeOverrideSymbol<FirProperty, FirPropertySymbol> {
|
||||
// TODO: should we use this constructor for local variables?
|
||||
constructor(name: Name) : this(CallableId(name))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// JVM_TARGET: 1.8
|
||||
// FULL_JDK
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
|
||||
// FILE: Test.java
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ FILE fqName:<root> fileName:/smartCastOnFieldReceiverOfGenericType.kt
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
TYPE_OP type=kotlin.String origin=CAST typeOperand=kotlin.String
|
||||
GET_VAR 'b: kotlin.Any declared in <root>.testSetField' type=kotlin.Any origin=null
|
||||
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.String? visibility:public' type=kotlin.Unit origin=EQ
|
||||
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:T of <root>.JCell? visibility:public' type=kotlin.Unit origin=EQ
|
||||
receiver: TYPE_OP type=<root>.JCell<kotlin.String> origin=IMPLICIT_CAST typeOperand=<root>.JCell<kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.testSetField' type=kotlin.Any origin=null
|
||||
value: TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String
|
||||
@@ -21,6 +21,6 @@ FILE fqName:<root> fileName:/smartCastOnFieldReceiverOfGenericType.kt
|
||||
TYPE_OP type=<root>.JCell<kotlin.String> origin=CAST typeOperand=<root>.JCell<kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.testGetField' type=kotlin.Any origin=null
|
||||
RETURN type=kotlin.Nothing from='public final fun testGetField (a: kotlin.Any): kotlin.String declared in <root>'
|
||||
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.String? visibility:public' type=kotlin.String? origin=GET_PROPERTY
|
||||
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:T of <root>.JCell? visibility:public' type=kotlin.String? origin=GET_PROPERTY
|
||||
receiver: TYPE_OP type=<root>.JCell<kotlin.String> origin=IMPLICIT_CAST typeOperand=<root>.JCell<kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.testGetField' type=kotlin.Any origin=null
|
||||
|
||||
Reference in New Issue
Block a user