[FIR] Introduce FirControlFlowGraphOwner node
This commit is contained in:
+3
-3
@@ -19,19 +19,19 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaration, FirSymbolOwner<FirAnonymousInitializer> {
|
abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaration, FirSymbolOwner<FirAnonymousInitializer>, FirControlFlowGraphOwner {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
abstract override val origin: FirDeclarationOrigin
|
abstract override val origin: FirDeclarationOrigin
|
||||||
abstract override val attributes: FirDeclarationAttributes
|
abstract override val attributes: FirDeclarationAttributes
|
||||||
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
abstract val body: FirBlock?
|
abstract val body: FirBlock?
|
||||||
abstract override val symbol: FirAnonymousInitializerSymbol
|
abstract override val symbol: FirAnonymousInitializerSymbol
|
||||||
abstract val controlFlowGraphReference: FirControlFlowGraphReference
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousInitializer(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousInitializer(this, data)
|
||||||
|
|
||||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||||
|
|
||||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousInitializer
|
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousInitializer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirExpression() {
|
abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirControlFlowGraphOwner, FirExpression() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
@@ -33,9 +33,9 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirExpression(
|
|||||||
abstract override val declarations: List<FirDeclaration>
|
abstract override val declarations: List<FirDeclaration>
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
abstract override val scopeProvider: FirScopeProvider
|
abstract override val scopeProvider: FirScopeProvider
|
||||||
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
abstract override val typeRef: FirTypeRef
|
abstract override val typeRef: FirTypeRef
|
||||||
abstract override val symbol: FirAnonymousObjectSymbol
|
abstract override val symbol: FirAnonymousObjectSymbol
|
||||||
abstract val controlFlowGraphReference: FirControlFlowGraphReference
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousObject(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousObject(this, data)
|
||||||
|
|
||||||
@@ -51,5 +51,5 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirExpression(
|
|||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||||
|
|
||||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||||
}
|
}
|
||||||
|
|||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
interface FirControlFlowGraphOwner : FirElement {
|
||||||
|
override val source: FirSourceElement?
|
||||||
|
val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
|
|
||||||
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitControlFlowGraphOwner(this, data)
|
||||||
|
|
||||||
|
fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirControlFlowGraphOwner
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTargetElement, FirTypeParameterRefsOwner, FirStatement {
|
interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTargetElement, FirTypeParameterRefsOwner, FirControlFlowGraphOwner, FirStatement {
|
||||||
override val source: FirSourceElement?
|
override val source: FirSourceElement?
|
||||||
override val session: FirSession
|
override val session: FirSession
|
||||||
override val resolvePhase: FirResolvePhase
|
override val resolvePhase: FirResolvePhase
|
||||||
@@ -31,7 +31,7 @@ interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTarget
|
|||||||
override val returnTypeRef: FirTypeRef
|
override val returnTypeRef: FirTypeRef
|
||||||
override val receiverTypeRef: FirTypeRef?
|
override val receiverTypeRef: FirTypeRef?
|
||||||
override val typeParameters: List<FirTypeParameterRef>
|
override val typeParameters: List<FirTypeParameterRef>
|
||||||
val controlFlowGraphReference: FirControlFlowGraphReference
|
override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
override val symbol: FirFunctionSymbol<F>
|
override val symbol: FirFunctionSymbol<F>
|
||||||
val valueParameters: List<FirValueParameter>
|
val valueParameters: List<FirValueParameter>
|
||||||
val body: FirBlock?
|
val body: FirBlock?
|
||||||
@@ -52,7 +52,7 @@ interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTarget
|
|||||||
|
|
||||||
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction<F>
|
override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirFunction<F>
|
||||||
|
|
||||||
fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirFunction<F>
|
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirFunction<F>
|
||||||
|
|
||||||
fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction<F>
|
fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction<F>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner, FirCallableMemberDeclaration<FirProperty> {
|
abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner, FirControlFlowGraphOwner, FirCallableMemberDeclaration<FirProperty> {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
@@ -40,8 +40,8 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
|
|||||||
abstract override val getter: FirPropertyAccessor?
|
abstract override val getter: FirPropertyAccessor?
|
||||||
abstract override val setter: FirPropertyAccessor?
|
abstract override val setter: FirPropertyAccessor?
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
abstract override val containerSource: DeserializedContainerSource?
|
abstract override val containerSource: DeserializedContainerSource?
|
||||||
abstract val controlFlowGraphReference: FirControlFlowGraphReference
|
|
||||||
abstract override val symbol: FirPropertySymbol
|
abstract override val symbol: FirPropertySymbol
|
||||||
abstract val backingFieldSymbol: FirBackingFieldSymbol
|
abstract val backingFieldSymbol: FirBackingFieldSymbol
|
||||||
abstract val isLocal: Boolean
|
abstract val isLocal: Boolean
|
||||||
@@ -70,7 +70,7 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
|
|||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirProperty
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirProperty
|
||||||
|
|
||||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirProperty
|
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirProperty
|
||||||
|
|
||||||
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty
|
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration, FirTypeParameterRefsOwner, FirClass<FirRegularClass> {
|
abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration, FirTypeParameterRefsOwner, FirControlFlowGraphOwner, FirClass<FirRegularClass> {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
@@ -31,6 +31,7 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
|
|||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||||
abstract override val status: FirDeclarationStatus
|
abstract override val status: FirDeclarationStatus
|
||||||
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
abstract override val classKind: ClassKind
|
abstract override val classKind: ClassKind
|
||||||
abstract override val declarations: List<FirDeclaration>
|
abstract override val declarations: List<FirDeclaration>
|
||||||
abstract override val scopeProvider: FirScopeProvider
|
abstract override val scopeProvider: FirScopeProvider
|
||||||
@@ -39,7 +40,6 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
|
|||||||
abstract val companionObject: FirRegularClass?
|
abstract val companionObject: FirRegularClass?
|
||||||
abstract val hasLazyNestedClassifiers: Boolean
|
abstract val hasLazyNestedClassifiers: Boolean
|
||||||
abstract override val superTypeRefs: List<FirTypeRef>
|
abstract override val superTypeRefs: List<FirTypeRef>
|
||||||
abstract val controlFlowGraphReference: FirControlFlowGraphReference
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitRegularClass(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitRegularClass(this, data)
|
||||||
|
|
||||||
@@ -51,11 +51,11 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
|
|||||||
|
|
||||||
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirRegularClass
|
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||||
|
|
||||||
|
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||||
|
|
||||||
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClass
|
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||||
|
|
||||||
abstract fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirRegularClass
|
abstract fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||||
|
|
||||||
abstract override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirRegularClass
|
abstract override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||||
|
|
||||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
* DO NOT MODIFY IT MANUALLY
|
* DO NOT MODIFY IT MANUALLY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class FirValueParameter : FirVariable<FirValueParameter>() {
|
abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlFlowGraphOwner {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val session: FirSession
|
abstract override val session: FirSession
|
||||||
abstract override val resolvePhase: FirResolvePhase
|
abstract override val resolvePhase: FirResolvePhase
|
||||||
@@ -39,11 +39,11 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>() {
|
|||||||
abstract override val getter: FirPropertyAccessor?
|
abstract override val getter: FirPropertyAccessor?
|
||||||
abstract override val setter: FirPropertyAccessor?
|
abstract override val setter: FirPropertyAccessor?
|
||||||
abstract override val annotations: List<FirAnnotationCall>
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||||
abstract val defaultValue: FirExpression?
|
abstract val defaultValue: FirExpression?
|
||||||
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)
|
||||||
|
|
||||||
@@ -67,7 +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> 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
-2
@@ -38,13 +38,13 @@ internal class FirAnonymousInitializerImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
body?.accept(visitor, data)
|
|
||||||
controlFlowGraphReference.accept(visitor, data)
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
|
body?.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousInitializerImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousInitializerImpl {
|
||||||
body = body?.transformSingle(transformer, data)
|
|
||||||
transformControlFlowGraphReference(transformer, data)
|
transformControlFlowGraphReference(transformer, data)
|
||||||
|
body = body?.transformSingle(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -53,8 +53,8 @@ internal class FirAnonymousObjectImpl(
|
|||||||
superTypeRefs.forEach { it.accept(visitor, data) }
|
superTypeRefs.forEach { it.accept(visitor, data) }
|
||||||
declarations.forEach { it.accept(visitor, data) }
|
declarations.forEach { it.accept(visitor, data) }
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
typeRef.accept(visitor, data)
|
|
||||||
controlFlowGraphReference.accept(visitor, data)
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
|
typeRef.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||||
@@ -62,8 +62,8 @@ internal class FirAnonymousObjectImpl(
|
|||||||
transformSuperTypeRefs(transformer, data)
|
transformSuperTypeRefs(transformer, data)
|
||||||
transformDeclarations(transformer, data)
|
transformDeclarations(transformer, data)
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
|
||||||
transformControlFlowGraphReference(transformer, data)
|
transformControlFlowGraphReference(transformer, data)
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -65,8 +65,8 @@ internal class FirDefaultSetterValueParameter(
|
|||||||
getter?.accept(visitor, data)
|
getter?.accept(visitor, data)
|
||||||
setter?.accept(visitor, data)
|
setter?.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
defaultValue?.accept(visitor, data)
|
|
||||||
controlFlowGraphReference.accept(visitor, data)
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
|
defaultValue?.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
|
||||||
|
|||||||
+8
-8
@@ -46,8 +46,8 @@ internal class FirRegularClassImpl(
|
|||||||
override val superTypeRefs: MutableList<FirTypeRef>,
|
override val superTypeRefs: MutableList<FirTypeRef>,
|
||||||
) : FirRegularClass() {
|
) : FirRegularClass() {
|
||||||
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||||
override val hasLazyNestedClassifiers: Boolean get() = false
|
|
||||||
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference
|
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference
|
||||||
|
override val hasLazyNestedClassifiers: Boolean get() = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
@@ -57,19 +57,19 @@ internal class FirRegularClassImpl(
|
|||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
typeParameters.forEach { it.accept(visitor, data) }
|
typeParameters.forEach { it.accept(visitor, data) }
|
||||||
status.accept(visitor, data)
|
status.accept(visitor, data)
|
||||||
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
declarations.forEach { it.accept(visitor, data) }
|
declarations.forEach { it.accept(visitor, data) }
|
||||||
superTypeRefs.forEach { it.accept(visitor, data) }
|
superTypeRefs.forEach { it.accept(visitor, data) }
|
||||||
controlFlowGraphReference.accept(visitor, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
typeParameters.transformInplace(transformer, data)
|
typeParameters.transformInplace(transformer, data)
|
||||||
transformStatus(transformer, data)
|
transformStatus(transformer, data)
|
||||||
|
transformControlFlowGraphReference(transformer, data)
|
||||||
transformDeclarations(transformer, data)
|
transformDeclarations(transformer, data)
|
||||||
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion }
|
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion }
|
||||||
transformSuperTypeRefs(transformer, data)
|
transformSuperTypeRefs(transformer, data)
|
||||||
transformControlFlowGraphReference(transformer, data)
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,6 +83,11 @@ internal class FirRegularClassImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
|
||||||
|
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
|
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
|
||||||
declarations.transformInplace(transformer, data)
|
declarations.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
@@ -98,11 +103,6 @@ internal class FirRegularClassImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
|
|
||||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||||
resolvePhase = newResolvePhase
|
resolvePhase = newResolvePhase
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -61,8 +61,8 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
|
|||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
returnTypeRef.accept(visitor, data)
|
returnTypeRef.accept(visitor, data)
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
defaultValue?.accept(visitor, data)
|
|
||||||
controlFlowGraphReference.accept(visitor, data)
|
controlFlowGraphReference.accept(visitor, data)
|
||||||
|
defaultValue?.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirResolvable
|
|||||||
import org.jetbrains.kotlin.fir.FirTargetElement
|
import org.jetbrains.kotlin.fir.FirTargetElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirControlFlowGraphOwner
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
@@ -182,6 +183,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(resolvedDeclarationStatus, data)
|
return transformElement(resolvedDeclarationStatus, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformControlFlowGraphOwner(controlFlowGraphOwner: FirControlFlowGraphOwner, data: D): CompositeTransformResult<FirControlFlowGraphOwner> {
|
||||||
|
return transformElement(controlFlowGraphOwner, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformStatement(statement: FirStatement, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformStatement(statement: FirStatement, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformElement(statement, data)
|
return transformElement(statement, data)
|
||||||
}
|
}
|
||||||
@@ -670,6 +675,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformResolvedDeclarationStatus(resolvedDeclarationStatus, data)
|
return transformResolvedDeclarationStatus(resolvedDeclarationStatus, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitControlFlowGraphOwner(controlFlowGraphOwner: FirControlFlowGraphOwner, data: D): CompositeTransformResult<FirControlFlowGraphOwner> {
|
||||||
|
return transformControlFlowGraphOwner(controlFlowGraphOwner, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitStatement(statement: FirStatement, data: D): CompositeTransformResult<FirStatement> {
|
final override fun visitStatement(statement: FirStatement, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformStatement(statement, data)
|
return transformStatement(statement, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirResolvable
|
|||||||
import org.jetbrains.kotlin.fir.FirTargetElement
|
import org.jetbrains.kotlin.fir.FirTargetElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirControlFlowGraphOwner
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
@@ -158,6 +159,8 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
|
|
||||||
open fun visitResolvedDeclarationStatus(resolvedDeclarationStatus: FirResolvedDeclarationStatus, data: D): R = visitElement(resolvedDeclarationStatus, data)
|
open fun visitResolvedDeclarationStatus(resolvedDeclarationStatus: FirResolvedDeclarationStatus, data: D): R = visitElement(resolvedDeclarationStatus, data)
|
||||||
|
|
||||||
|
open fun visitControlFlowGraphOwner(controlFlowGraphOwner: FirControlFlowGraphOwner, data: D): R = visitElement(controlFlowGraphOwner, data)
|
||||||
|
|
||||||
open fun visitStatement(statement: FirStatement, data: D): R = visitElement(statement, data)
|
open fun visitStatement(statement: FirStatement, data: D): R = visitElement(statement, data)
|
||||||
|
|
||||||
open fun visitExpression(expression: FirExpression, data: D): R = visitElement(expression, data)
|
open fun visitExpression(expression: FirExpression, data: D): R = visitElement(expression, data)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirResolvable
|
|||||||
import org.jetbrains.kotlin.fir.FirTargetElement
|
import org.jetbrains.kotlin.fir.FirTargetElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirControlFlowGraphOwner
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
@@ -180,6 +181,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(resolvedDeclarationStatus)
|
visitElement(resolvedDeclarationStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitControlFlowGraphOwner(controlFlowGraphOwner: FirControlFlowGraphOwner) {
|
||||||
|
visitElement(controlFlowGraphOwner)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitStatement(statement: FirStatement) {
|
open fun visitStatement(statement: FirStatement) {
|
||||||
visitElement(statement)
|
visitElement(statement)
|
||||||
}
|
}
|
||||||
@@ -668,6 +673,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitResolvedDeclarationStatus(resolvedDeclarationStatus)
|
visitResolvedDeclarationStatus(resolvedDeclarationStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitControlFlowGraphOwner(controlFlowGraphOwner: FirControlFlowGraphOwner, data: Nothing?) {
|
||||||
|
visitControlFlowGraphOwner(controlFlowGraphOwner)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitStatement(statement: FirStatement, data: Nothing?) {
|
final override fun visitStatement(statement: FirStatement, data: Nothing?) {
|
||||||
visitStatement(statement)
|
visitStatement(statement)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-6
@@ -23,11 +23,13 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val declarationStatus = element("DeclarationStatus", Declaration)
|
val declarationStatus = element("DeclarationStatus", Declaration)
|
||||||
val resolvedDeclarationStatus = element("ResolvedDeclarationStatus", Declaration, declarationStatus)
|
val resolvedDeclarationStatus = element("ResolvedDeclarationStatus", Declaration, declarationStatus)
|
||||||
|
|
||||||
|
val controlFlowGraphOwner = element("ControlFlowGraphOwner", Declaration)
|
||||||
|
|
||||||
val statement = element("Statement", Expression, annotationContainer)
|
val statement = element("Statement", Expression, annotationContainer)
|
||||||
val expression = element("Expression", Expression, statement)
|
val expression = element("Expression", Expression, statement)
|
||||||
val declaration = element("Declaration", Declaration)
|
val declaration = element("Declaration", Declaration)
|
||||||
val annotatedDeclaration = element("AnnotatedDeclaration", Declaration, declaration, annotationContainer)
|
val annotatedDeclaration = element("AnnotatedDeclaration", Declaration, declaration, annotationContainer)
|
||||||
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, symbolOwner)
|
val anonymousInitializer = element("AnonymousInitializer", Declaration, declaration, symbolOwner, controlFlowGraphOwner)
|
||||||
val typedDeclaration = element("TypedDeclaration", Declaration, annotatedDeclaration)
|
val typedDeclaration = element("TypedDeclaration", Declaration, annotatedDeclaration)
|
||||||
val callableDeclaration = element("CallableDeclaration", Declaration, typedDeclaration, symbolOwner)
|
val callableDeclaration = element("CallableDeclaration", Declaration, typedDeclaration, symbolOwner)
|
||||||
val typeParameterRef = element("TypeParameterRef", Declaration)
|
val typeParameterRef = element("TypeParameterRef", Declaration)
|
||||||
@@ -38,17 +40,17 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val callableMemberDeclaration = element("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration)
|
val callableMemberDeclaration = element("CallableMemberDeclaration", Declaration, callableDeclaration, memberDeclaration)
|
||||||
|
|
||||||
val variable = element("Variable", Declaration, callableDeclaration, annotatedDeclaration, statement)
|
val variable = element("Variable", Declaration, callableDeclaration, annotatedDeclaration, statement)
|
||||||
val valueParameter = element("ValueParameter", Declaration, variable)
|
val valueParameter = element("ValueParameter", Declaration, variable, controlFlowGraphOwner)
|
||||||
val property = element("Property", Declaration, variable, typeParametersOwner, callableMemberDeclaration)
|
val property = element("Property", Declaration, variable, typeParametersOwner, controlFlowGraphOwner, callableMemberDeclaration)
|
||||||
val field = element("Field", Declaration, variable, typeParametersOwner, callableMemberDeclaration)
|
val field = element("Field", Declaration, variable, typeParametersOwner, callableMemberDeclaration)
|
||||||
val enumEntry = element("EnumEntry", Declaration, variable, callableMemberDeclaration)
|
val enumEntry = element("EnumEntry", Declaration, variable, callableMemberDeclaration)
|
||||||
|
|
||||||
val classLikeDeclaration = element("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement, symbolOwner)
|
val classLikeDeclaration = element("ClassLikeDeclaration", Declaration, annotatedDeclaration, statement, symbolOwner)
|
||||||
val klass = element("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
|
val klass = element("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
|
||||||
val regularClass = element("RegularClass", Declaration, memberDeclaration, typeParameterRefsOwner, klass)
|
val regularClass = element("RegularClass", Declaration, memberDeclaration, typeParameterRefsOwner, controlFlowGraphOwner, klass)
|
||||||
val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner)
|
val typeAlias = element("TypeAlias", Declaration, classLikeDeclaration, memberDeclaration, typeParametersOwner)
|
||||||
|
|
||||||
val function = element("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, statement)
|
val function = element("Function", Declaration, callableDeclaration, targetElement, typeParameterRefsOwner, controlFlowGraphOwner, statement)
|
||||||
|
|
||||||
val contractDescriptionOwner = element("ContractDescriptionOwner", Declaration)
|
val contractDescriptionOwner = element("ContractDescriptionOwner", Declaration)
|
||||||
val simpleFunction = element("SimpleFunction", Declaration, function, callableMemberDeclaration, contractDescriptionOwner, typeParametersOwner)
|
val simpleFunction = element("SimpleFunction", Declaration, function, callableMemberDeclaration, contractDescriptionOwner, typeParametersOwner)
|
||||||
@@ -57,7 +59,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val file = element("File", Declaration, annotatedDeclaration)
|
val file = element("File", Declaration, annotatedDeclaration)
|
||||||
|
|
||||||
val anonymousFunction = element("AnonymousFunction", Declaration, function, expression, typeParametersOwner)
|
val anonymousFunction = element("AnonymousFunction", Declaration, function, expression, typeParametersOwner)
|
||||||
val anonymousObject = element("AnonymousObject", Declaration, klass, expression)
|
val anonymousObject = element("AnonymousObject", Declaration, klass, controlFlowGraphOwner, expression)
|
||||||
|
|
||||||
val diagnosticHolder = element("DiagnosticHolder", Diagnostics)
|
val diagnosticHolder = element("DiagnosticHolder", Diagnostics)
|
||||||
|
|
||||||
|
|||||||
+4
-6
@@ -70,6 +70,10 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
+field("diagnostic", coneDiagnosticType)
|
+field("diagnostic", coneDiagnosticType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
controlFlowGraphOwner.configure {
|
||||||
|
+controlFlowGraphReferenceField
|
||||||
|
}
|
||||||
|
|
||||||
declaration.configure {
|
declaration.configure {
|
||||||
+field("session", firSessionType)
|
+field("session", firSessionType)
|
||||||
+field("resolvePhase", resolvePhaseType, withReplace = true).apply { isMutable = true }
|
+field("resolvePhase", resolvePhaseType, withReplace = true).apply { isMutable = true }
|
||||||
@@ -97,7 +101,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
function.configure {
|
function.configure {
|
||||||
withArg("F", "FirFunction<F>")
|
withArg("F", "FirFunction<F>")
|
||||||
parentArg(callableDeclaration, "F", "F")
|
parentArg(callableDeclaration, "F", "F")
|
||||||
+controlFlowGraphReferenceField
|
|
||||||
+symbol("FirFunctionSymbol", "F")
|
+symbol("FirFunctionSymbol", "F")
|
||||||
+fieldList(valueParameter, withReplace = true).withTransform()
|
+fieldList(valueParameter, withReplace = true).withTransform()
|
||||||
+body(nullable = true)
|
+body(nullable = true)
|
||||||
@@ -243,13 +246,11 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
+field("companionObject", regularClass, nullable = true).withTransform()
|
+field("companionObject", regularClass, nullable = true).withTransform()
|
||||||
+booleanField("hasLazyNestedClassifiers")
|
+booleanField("hasLazyNestedClassifiers")
|
||||||
+superTypeRefs(withReplace = true)
|
+superTypeRefs(withReplace = true)
|
||||||
+controlFlowGraphReferenceField
|
|
||||||
}
|
}
|
||||||
|
|
||||||
anonymousObject.configure {
|
anonymousObject.configure {
|
||||||
parentArg(klass, "F", anonymousObject)
|
parentArg(klass, "F", anonymousObject)
|
||||||
+symbol("FirAnonymousObjectSymbol")
|
+symbol("FirAnonymousObjectSymbol")
|
||||||
+controlFlowGraphReferenceField
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typeAlias.configure {
|
typeAlias.configure {
|
||||||
@@ -298,7 +299,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
property.configure {
|
property.configure {
|
||||||
parentArg(variable, "F", property)
|
parentArg(variable, "F", property)
|
||||||
parentArg(callableMemberDeclaration, "F", property)
|
parentArg(callableMemberDeclaration, "F", property)
|
||||||
+controlFlowGraphReferenceField
|
|
||||||
+symbol("FirPropertySymbol")
|
+symbol("FirPropertySymbol")
|
||||||
+field("backingFieldSymbol", backingFieldSymbolType)
|
+field("backingFieldSymbol", backingFieldSymbolType)
|
||||||
+booleanField("isLocal")
|
+booleanField("isLocal")
|
||||||
@@ -351,7 +351,6 @@ 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 {
|
||||||
@@ -388,7 +387,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
parentArg(symbolOwner, "E", anonymousInitializer)
|
parentArg(symbolOwner, "E", anonymousInitializer)
|
||||||
+body(nullable = true)
|
+body(nullable = true)
|
||||||
+symbol(anonymousInitializerSymbolType.type)
|
+symbol(anonymousInitializerSymbolType.type)
|
||||||
+controlFlowGraphReferenceField
|
|
||||||
}
|
}
|
||||||
|
|
||||||
file.configure {
|
file.configure {
|
||||||
|
|||||||
Reference in New Issue
Block a user