[FIR] Add invocation kind to anonymous functions
This commit is contained in:
@@ -373,6 +373,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
anonymousFunction.valueParameters.renderParameters()
|
||||
print(": ")
|
||||
anonymousFunction.returnTypeRef.accept(this)
|
||||
if (anonymousFunction.invocationKind != null) {
|
||||
print(" <kind=${anonymousFunction.invocationKind}> ")
|
||||
}
|
||||
anonymousFunction.body?.renderBody()
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.fir.FirLabeledElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
@@ -26,6 +27,8 @@ abstract class FirAnonymousFunction(
|
||||
|
||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference
|
||||
|
||||
abstract val invocationKind: InvocationKind?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitAnonymousFunction(this, data)
|
||||
|
||||
@@ -38,5 +41,7 @@ abstract class FirAnonymousFunction(
|
||||
|
||||
abstract fun replaceReceiverTypeRef(receiverTypeRef: FirTypeRef)
|
||||
|
||||
abstract fun replaceInvocationKind(invocationKind: InvocationKind)
|
||||
|
||||
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
|
||||
}
|
||||
+7
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.contracts.description.InvocationKind
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
@@ -38,6 +39,8 @@ class FirAnonymousFunctionImpl(
|
||||
|
||||
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference()
|
||||
|
||||
override var invocationKind: InvocationKind? = null
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
||||
@@ -66,4 +69,8 @@ class FirAnonymousFunctionImpl(
|
||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun replaceInvocationKind(invocationKind: InvocationKind) {
|
||||
this.invocationKind = invocationKind
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user