[FIR] Use Throwable as expected type for throw expressions

#KT-58533 Fixed
This commit is contained in:
Kirill Rakhman
2023-05-22 10:59:56 +02:00
committed by Space Team
parent 55632f5df2
commit 7a9c516f68
10 changed files with 49 additions and 5 deletions
@@ -32,4 +32,6 @@ abstract class FirThrowExpression : FirExpression() {
abstract override fun replaceAnnotations(newAnnotations: List<FirAnnotation>)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirThrowExpression
abstract fun <D> transformException(transformer: FirTransformer<D>, data: D): FirThrowExpression
}
@@ -40,7 +40,7 @@ internal class FirThrowExpressionImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirThrowExpressionImpl {
typeRef = typeRef.transform(transformer, data)
transformAnnotations(transformer, data)
exception = exception.transform(transformer, data)
transformException(transformer, data)
return this
}
@@ -49,6 +49,11 @@ internal class FirThrowExpressionImpl(
return this
}
override fun <D> transformException(transformer: FirTransformer<D>, data: D): FirThrowExpressionImpl {
exception = exception.transform(transformer, data)
return this
}
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
typeRef = newTypeRef
}
@@ -620,7 +620,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
}
throwExpression.configure {
+field("exception", expression)
+field("exception", expression).withTransform()
}
variableAssignment.configure {