[FIR] introduce FirValueParameter.containingFunctionSymbol
^KT-55034 fixed
This commit is contained in:
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -49,6 +50,7 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
|
||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||
abstract override val symbol: FirValueParameterSymbol
|
||||
abstract val defaultValue: FirExpression?
|
||||
abstract val containingFunctionSymbol: FirFunctionSymbol<*>
|
||||
abstract val isCrossinline: Boolean
|
||||
abstract val isNoinline: Boolean
|
||||
abstract val isVararg: Boolean
|
||||
|
||||
+3
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -64,6 +65,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
lateinit var symbol: FirValueParameterSymbol
|
||||
var defaultValue: FirExpression? = null
|
||||
lateinit var containingFunctionSymbol: FirFunctionSymbol<*>
|
||||
var isCrossinline: Boolean = false
|
||||
var isNoinline: Boolean = false
|
||||
var isVararg: Boolean = false
|
||||
@@ -91,6 +93,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
annotations,
|
||||
symbol,
|
||||
defaultValue,
|
||||
containingFunctionSymbol,
|
||||
isCrossinline,
|
||||
isNoinline,
|
||||
isVararg,
|
||||
|
||||
+4
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -58,6 +59,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
override val annotations: MutableList<FirAnnotation> = mutableListOf()
|
||||
open lateinit var symbol: FirValueParameterSymbol
|
||||
open var defaultValue: FirExpression? = null
|
||||
open lateinit var containingFunctionSymbol: FirFunctionSymbol<*>
|
||||
open var isCrossinline: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
open var isNoinline: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
open var isVararg: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||
@@ -79,6 +81,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
annotations,
|
||||
symbol,
|
||||
defaultValue,
|
||||
containingFunctionSymbol,
|
||||
isCrossinline,
|
||||
isNoinline,
|
||||
isVararg,
|
||||
@@ -116,6 +119,7 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa
|
||||
copyBuilder.annotations.addAll(original.annotations)
|
||||
copyBuilder.symbol = original.symbol
|
||||
copyBuilder.defaultValue = original.defaultValue
|
||||
copyBuilder.containingFunctionSymbol = original.containingFunctionSymbol
|
||||
copyBuilder.isCrossinline = original.isCrossinline
|
||||
copyBuilder.isNoinline = original.isNoinline
|
||||
copyBuilder.isVararg = original.isVararg
|
||||
|
||||
+2
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -59,6 +60,7 @@ internal class FirDefaultSetterValueParameter(
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override val symbol: FirValueParameterSymbol,
|
||||
override var defaultValue: FirExpression?,
|
||||
override val containingFunctionSymbol: FirFunctionSymbol<*>,
|
||||
override val isCrossinline: Boolean,
|
||||
override val isNoinline: Boolean,
|
||||
override val isVararg: Boolean,
|
||||
|
||||
+2
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -53,6 +54,7 @@ internal class FirValueParameterImpl(
|
||||
override val annotations: MutableList<FirAnnotation>,
|
||||
override val symbol: FirValueParameterSymbol,
|
||||
override var defaultValue: FirExpression?,
|
||||
override val containingFunctionSymbol: FirFunctionSymbol<*>,
|
||||
override val isCrossinline: Boolean,
|
||||
override val isNoinline: Boolean,
|
||||
override val isVararg: Boolean,
|
||||
|
||||
@@ -91,6 +91,7 @@ fun FirRegularClassBuilder.generateValueOfFunction(
|
||||
symbol = FirNamedFunctionSymbol(CallableId(packageFqName, classFqName, ENUM_VALUE_OF))
|
||||
valueParameters += buildValueParameter vp@{
|
||||
source = sourceElement
|
||||
containingFunctionSymbol = this@buildSimpleFunction.symbol
|
||||
origin = FirDeclarationOrigin.Source
|
||||
this.moduleData = moduleData
|
||||
returnTypeRef = buildResolvedTypeRef {
|
||||
|
||||
+3
-3
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
abstract class FirDefaultPropertyAccessor(
|
||||
@@ -127,7 +126,7 @@ class FirDefaultPropertySetter(
|
||||
propertySymbol: FirPropertySymbol,
|
||||
modality: Modality = Modality.FINAL,
|
||||
effectiveVisibility: EffectiveVisibility? = null,
|
||||
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol(),
|
||||
propertyAccessorSymbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol(),
|
||||
parameterAnnotations: List<FirAnnotation> = emptyList(),
|
||||
) : FirDefaultPropertyAccessor(
|
||||
source,
|
||||
@@ -137,6 +136,7 @@ class FirDefaultPropertySetter(
|
||||
valueParameters = mutableListOf(
|
||||
buildDefaultSetterValueParameter builder@{
|
||||
this@builder.source = source?.fakeElement(KtFakeSourceElementKind.DefaultAccessor)
|
||||
this@builder.containingFunctionSymbol = propertyAccessorSymbol
|
||||
this@builder.moduleData = moduleData
|
||||
this@builder.origin = origin
|
||||
this@builder.returnTypeRef = propertyTypeRef
|
||||
@@ -149,5 +149,5 @@ class FirDefaultPropertySetter(
|
||||
visibility = visibility,
|
||||
modality = modality,
|
||||
effectiveVisibility = effectiveVisibility,
|
||||
symbol = symbol
|
||||
symbol = propertyAccessorSymbol
|
||||
)
|
||||
|
||||
+3
@@ -394,6 +394,9 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
valueParameter.configure {
|
||||
+symbol("FirValueParameterSymbol")
|
||||
+field("defaultValue", expression, nullable = true)
|
||||
+field("containingFunctionSymbol", functionSymbolType, "*").apply {
|
||||
withBindThis = false
|
||||
}
|
||||
generateBooleanFields("crossinline", "noinline", "vararg")
|
||||
}
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ val propertyBodyResolveStateType = type("fir.declarations", "FirPropertyBodyReso
|
||||
val stubReferenceType = generatedType("references.impl", "FirStubReference", firType = true)
|
||||
|
||||
val firBasedSymbolType = type("fir.symbols", "FirBasedSymbol")
|
||||
val functionSymbolType = type("fir.symbols.impl", "FirFunctionSymbol")
|
||||
val backingFieldSymbolType = type("fir.symbols.impl", "FirBackingFieldSymbol")
|
||||
val delegateFieldSymbolType = type("fir.symbols.impl", "FirDelegateFieldSymbol")
|
||||
val classSymbolType = type("fir.symbols.impl", "FirClassSymbol")
|
||||
|
||||
+2
-2
@@ -27,9 +27,9 @@ fun Builder.collectImports(): List<String> {
|
||||
ImportKind.Builder,
|
||||
) + implementation.fullQualifiedName!! + usedTypes.mapNotNull { it.fullQualifiedName } + builderDsl + "kotlin.contracts.*"
|
||||
is IntermediateBuilder -> {
|
||||
val fqns = parents + allFields.mapNotNull { it.fullQualifiedName } + allFields.flatMap {
|
||||
val fqns = parents + usedTypes.mapNotNull { it.fullQualifiedName } + allFields.mapNotNull { it.fullQualifiedName } + allFields.flatMap {
|
||||
it.arguments.mapNotNull { it.fullQualifiedName }
|
||||
} + (materializedElement?.fullQualifiedName ?: throw IllegalStateException(type)) + builderDsl
|
||||
} + (materializedElement?.fullQualifiedName ?: throw IllegalStateException(type)) + builderDsl
|
||||
fqns.filterRedundantImports(packageName, ImportKind.Builder)
|
||||
}
|
||||
}.sorted()
|
||||
|
||||
Reference in New Issue
Block a user