[FIR] Add controlFlowGraph references to value parameters
This commit is contained in:
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -42,6 +43,7 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>() {
|
|||||||
abstract val isCrossinline: Boolean
|
abstract val isCrossinline: Boolean
|
||||||
abstract val isNoinline: Boolean
|
abstract val isNoinline: Boolean
|
||||||
abstract val isVararg: Boolean
|
abstract val isVararg: Boolean
|
||||||
|
abstract val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitValueParameter(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitValueParameter(this, data)
|
||||||
|
|
||||||
@@ -65,5 +67,7 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>() {
|
|||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter
|
||||||
|
|
||||||
|
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirValueParameter
|
||||||
|
|
||||||
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameter
|
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameter
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -18,6 +18,8 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
|||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultSetterValueParameter
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultSetterValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
|||||||
+2
@@ -19,6 +19,8 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
|||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
|||||||
+10
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -48,6 +50,7 @@ internal class FirDefaultSetterValueParameter(
|
|||||||
) : FirValueParameter() {
|
) : FirValueParameter() {
|
||||||
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||||
override val name: Name = Name.identifier("value")
|
override val name: Name = Name.identifier("value")
|
||||||
|
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
@@ -63,6 +66,7 @@ internal class FirDefaultSetterValueParameter(
|
|||||||
setter?.accept(visitor, data)
|
setter?.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
defaultValue?.accept(visitor, data)
|
defaultValue?.accept(visitor, data)
|
||||||
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
||||||
@@ -72,6 +76,7 @@ internal class FirDefaultSetterValueParameter(
|
|||||||
transformDelegate(transformer, data)
|
transformDelegate(transformer, data)
|
||||||
transformGetter(transformer, data)
|
transformGetter(transformer, data)
|
||||||
transformSetter(transformer, data)
|
transformSetter(transformer, data)
|
||||||
|
transformControlFlowGraphReference(transformer, data)
|
||||||
transformOtherChildren(transformer, data)
|
transformOtherChildren(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
@@ -111,6 +116,11 @@ internal class FirDefaultSetterValueParameter(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
||||||
|
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
defaultValue = defaultValue?.transformSingle(transformer, data)
|
defaultValue = defaultValue?.transformSingle(transformer, data)
|
||||||
|
|||||||
+10
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -49,6 +51,7 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
|
|||||||
override val isVal: Boolean get() = true
|
override val isVal: Boolean get() = true
|
||||||
override val getter: FirPropertyAccessor? get() = null
|
override val getter: FirPropertyAccessor? get() = null
|
||||||
override val setter: FirPropertyAccessor? get() = null
|
override val setter: FirPropertyAccessor? get() = null
|
||||||
|
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
@@ -59,10 +62,12 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
|
|||||||
returnTypeRef.accept(visitor, data)
|
returnTypeRef.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
defaultValue?.accept(visitor, data)
|
defaultValue?.accept(visitor, data)
|
||||||
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
||||||
transformReturnTypeRef(transformer, data)
|
transformReturnTypeRef(transformer, data)
|
||||||
|
transformControlFlowGraphReference(transformer, data)
|
||||||
transformOtherChildren(transformer, data)
|
transformOtherChildren(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
@@ -97,6 +102,11 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
||||||
|
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
defaultValue = defaultValue?.transformSingle(transformer, data)
|
defaultValue = defaultValue?.transformSingle(transformer, data)
|
||||||
|
|||||||
+1
@@ -351,6 +351,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
parentArg(variable, "F", valueParameter)
|
parentArg(variable, "F", valueParameter)
|
||||||
+field("defaultValue", expression, nullable = true)
|
+field("defaultValue", expression, nullable = true)
|
||||||
generateBooleanFields("crossinline", "noinline", "vararg")
|
generateBooleanFields("crossinline", "noinline", "vararg")
|
||||||
|
+controlFlowGraphReferenceField
|
||||||
}
|
}
|
||||||
|
|
||||||
variable.configure {
|
variable.configure {
|
||||||
|
|||||||
Reference in New Issue
Block a user