[FIR] Fix transforming value parameters of anonymous functions
This commit is contained in:
@@ -33,4 +33,6 @@ abstract class FirAnonymousFunction(
|
||||
typeRef.accept(visitor, data)
|
||||
// Don't call super<FirExpression>.acceptChildren (annotations & typeRef are already processed)
|
||||
}
|
||||
|
||||
abstract fun replaceReceiverTypeRef(receiverTypeRef: FirTypeRef)
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirTargetElement
|
||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
// May be should inherit FirTypeParameterContainer
|
||||
@@ -25,4 +26,6 @@ interface FirFunction : @VisitedSupertype FirDeclarationWithBody, FirAnnotationC
|
||||
}
|
||||
super<FirDeclarationWithBody>.acceptChildren(visitor, data)
|
||||
}
|
||||
|
||||
fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction
|
||||
}
|
||||
+9
@@ -41,4 +41,13 @@ class FirAnonymousFunctionImpl(
|
||||
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D) {
|
||||
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||
}
|
||||
|
||||
override fun replaceReceiverTypeRef(receiverTypeRef: FirTypeRef) {
|
||||
this.receiverTypeRef = receiverTypeRef
|
||||
}
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunction {
|
||||
valueParameters.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
}
|
||||
+15
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.transformInplace
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
open class FirConstructorImpl : FirAbstractCallableMember<FirConstructor>, FirConstructor {
|
||||
@@ -71,6 +72,20 @@ open class FirConstructorImpl : FirAbstractCallableMember<FirConstructor>, FirCo
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
annotations.forEach { it.accept(visitor, data) }
|
||||
valueParameters.forEach { it.accept(visitor, data) }
|
||||
returnTypeRef.accept(visitor, data)
|
||||
status.accept(visitor, data)
|
||||
delegatedConstructor?.accept(visitor, data)
|
||||
body?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
|
||||
valueParameters.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
companion object {
|
||||
val NAME = Name.special("<init>")
|
||||
}
|
||||
|
||||
+4
@@ -45,6 +45,10 @@ abstract class FirDefaultPropertyAccessor(
|
||||
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D) {
|
||||
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||
}
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirDefaultPropertyAccessor {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
class FirDefaultPropertyGetter(
|
||||
|
||||
@@ -14,6 +14,7 @@ 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.FirBlock
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
class FirErrorFunction(
|
||||
@@ -34,4 +35,8 @@ class FirErrorFunction(
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
super<FirFunction>.accept(visitor, data)
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction {
|
||||
return this
|
||||
}
|
||||
}
|
||||
+6
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
@@ -79,4 +80,9 @@ open class FirMemberFunctionImpl : FirAbstractCallableMember<FirNamedFunction>,
|
||||
|
||||
return super<FirAbstractCallableMember>.transformChildren(transformer, data)
|
||||
}
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction {
|
||||
valueParameters.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
}
|
||||
+5
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -34,4 +35,8 @@ class FirPropertyAccessorImpl(
|
||||
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D) {
|
||||
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||
}
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction {
|
||||
return this
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user