Forbid manipulations with FirWrappedArgumentExpression type reference
The type of this expression is bound to the type of wrapped expression, so it's better not to change it directly.
This commit is contained in:
+4
@@ -17,6 +17,10 @@ interface FirWrappedArgumentExpression : FirExpression {
|
||||
override val typeRef: FirTypeRef
|
||||
get() = expression.typeRef
|
||||
|
||||
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||
throw AssertionError("We should not try to replace type reference in ${this::class}")
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitWrappedArgumentExpression(this, data)
|
||||
|
||||
|
||||
+2
-7
@@ -11,20 +11,15 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLambdaArgumentExpression
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
class FirLambdaArgumentExpressionImpl(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override var expression: FirExpression
|
||||
) : FirLambdaArgumentExpression, FirAbstractExpression(session, psi) {
|
||||
override var typeRef: FirTypeRef
|
||||
get() = super<FirLambdaArgumentExpression>.typeRef
|
||||
set(_) {}
|
||||
|
||||
) : FirLambdaArgumentExpression, FirAbstractStatement(session, psi) {
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
expression = expression.transformSingle(transformer, data)
|
||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
||||
return super<FirAbstractStatement>.transformChildren(transformer, data)
|
||||
}
|
||||
}
|
||||
+2
-7
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -21,13 +20,9 @@ class FirNamedArgumentExpressionImpl(
|
||||
override val name: Name,
|
||||
override val isSpread: Boolean,
|
||||
override var expression: FirExpression
|
||||
) : FirNamedArgumentExpression, FirAbstractExpression(session, psi) {
|
||||
override var typeRef: FirTypeRef
|
||||
get() = super<FirNamedArgumentExpression>.typeRef
|
||||
set(_) {}
|
||||
|
||||
) : FirNamedArgumentExpression, FirAbstractStatement(session, psi) {
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
expression = expression.transformSingle(transformer, data)
|
||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
||||
return super<FirAbstractStatement>.transformChildren(transformer, data)
|
||||
}
|
||||
}
|
||||
+2
-7
@@ -11,20 +11,15 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirSpreadArgumentExpression
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
class FirSpreadArgumentExpressionImpl(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override var expression: FirExpression
|
||||
) : FirSpreadArgumentExpression, FirAbstractExpression(session, psi) {
|
||||
override var typeRef: FirTypeRef
|
||||
get() = super<FirSpreadArgumentExpression>.typeRef
|
||||
set(_) {}
|
||||
|
||||
) : FirSpreadArgumentExpression, FirAbstractStatement(session, psi) {
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
expression = expression.transformSingle(transformer, data)
|
||||
return super<FirAbstractExpression>.transformChildren(transformer, data)
|
||||
return super<FirAbstractStatement>.transformChildren(transformer, data)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user