From 34be9e3569563959f61f6f54b98f00b2d7fd135f Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 10 Jun 2020 16:30:03 +0300 Subject: [PATCH] [FIR] Add controlFlowGraph references to value parameters --- .../kotlin/fir/declarations/FirValueParameter.kt | 4 ++++ .../builder/FirDefaultSetterValueParameterBuilder.kt | 2 ++ .../declarations/builder/FirValueParameterBuilder.kt | 2 ++ .../impl/FirDefaultSetterValueParameter.kt | 10 ++++++++++ .../fir/declarations/impl/FirValueParameterImpl.kt | 10 ++++++++++ .../kotlin/fir/tree/generator/NodeConfigurator.kt | 1 + 6 files changed, 29 insertions(+) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index d7e983b2c59..e3ded53007a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall 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.FirVariableSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -42,6 +43,7 @@ abstract class FirValueParameter : FirVariable() { abstract val isCrossinline: Boolean abstract val isNoinline: Boolean abstract val isVararg: Boolean + abstract val controlFlowGraphReference: FirControlFlowGraphReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitValueParameter(this, data) @@ -65,5 +67,7 @@ abstract class FirValueParameter : FirVariable() { abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirValueParameter + abstract fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirValueParameter } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt index ac4a6afa8b9..0b7d268a227 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt @@ -18,6 +18,8 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultSetterValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall 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.FirVariableSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt index 89afbd2a39f..83d32b57e55 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt @@ -19,6 +19,8 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall 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.FirVariableSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index 94020c8e6d5..a464a55a6ff 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -14,6 +14,8 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall 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.FirVariableSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -48,6 +50,7 @@ internal class FirDefaultSetterValueParameter( ) : FirValueParameter() { override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val name: Name = Name.identifier("value") + override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference init { symbol.bind(this) @@ -63,6 +66,7 @@ internal class FirDefaultSetterValueParameter( setter?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } defaultValue?.accept(visitor, data) + controlFlowGraphReference.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { @@ -72,6 +76,7 @@ internal class FirDefaultSetterValueParameter( transformDelegate(transformer, data) transformGetter(transformer, data) transformSetter(transformer, data) + transformControlFlowGraphReference(transformer, data) transformOtherChildren(transformer, data) return this } @@ -111,6 +116,11 @@ internal class FirDefaultSetterValueParameter( return this } + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { + controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) + return this + } + override fun transformOtherChildren(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { transformAnnotations(transformer, data) defaultValue = defaultValue?.transformSingle(transformer, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index a245d7ee026..9e757f8ba47 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall 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.FirVariableSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -49,6 +51,7 @@ open class FirValueParameterImpl @FirImplementationDetail constructor( override val isVal: Boolean get() = true override val getter: FirPropertyAccessor? get() = null override val setter: FirPropertyAccessor? get() = null + override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference init { symbol.bind(this) @@ -59,10 +62,12 @@ open class FirValueParameterImpl @FirImplementationDetail constructor( returnTypeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } defaultValue?.accept(visitor, data) + controlFlowGraphReference.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirValueParameterImpl { transformReturnTypeRef(transformer, data) + transformControlFlowGraphReference(transformer, data) transformOtherChildren(transformer, data) return this } @@ -97,6 +102,11 @@ open class FirValueParameterImpl @FirImplementationDetail constructor( return this } + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirValueParameterImpl { + controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) + return this + } + override fun transformOtherChildren(transformer: FirTransformer, data: D): FirValueParameterImpl { transformAnnotations(transformer, data) defaultValue = defaultValue?.transformSingle(transformer, data) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 9f9104688b4..ba0ce7c190d 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -351,6 +351,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild parentArg(variable, "F", valueParameter) +field("defaultValue", expression, nullable = true) generateBooleanFields("crossinline", "noinline", "vararg") + +controlFlowGraphReferenceField } variable.configure {