Write throw expression parsing (light tree to FIR)
This commit is contained in:
committed by
Mikhail Glukhikh
parent
a714515527
commit
a0e79449fd
+14
@@ -83,6 +83,7 @@ class ExpressionsConverter(
|
||||
FOR -> convertFor(expression)
|
||||
BREAK, CONTINUE -> convertLoopJump(expression)
|
||||
RETURN -> convertReturn(expression)
|
||||
THROW -> convertThrow(expression)
|
||||
PARENTHESIZED, PROPERTY_DELEGATE, INDICES -> convertExpression(expression.getExpressionInParentheses())
|
||||
THIS_EXPRESSION -> convertThisExpression(expression)
|
||||
SUPER_EXPRESSION -> convertSuperExpression(expression)
|
||||
@@ -804,6 +805,19 @@ class ExpressionsConverter(
|
||||
return result.toReturn(labelName)
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.jetbrains.kotlin.parsing.KotlinExpressionParsing.parseThrow
|
||||
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitThrowExpression
|
||||
*/
|
||||
private fun convertThrow(throwExpression: LighterASTNode): FirExpression {
|
||||
var firExpression: FirExpression? = null
|
||||
throwExpression.forEachChildren {
|
||||
if (it.isExpression()) firExpression = getAsFirExpression(it)
|
||||
}
|
||||
|
||||
return FirThrowExpressionImpl(session, null, firExpression ?: FirErrorExpressionImpl(session, null, "Nothing to throw"))
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.jetbrains.kotlin.parsing.KotlinExpressionParsing.parseThisExpression
|
||||
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitThisExpression
|
||||
|
||||
+17
@@ -304,4 +304,21 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
||||
visitQualifiedAccessExpression = true
|
||||
)
|
||||
}
|
||||
|
||||
fun testThrowExpression() {
|
||||
compare(
|
||||
stubMode = false,
|
||||
visitAnonymousFunction = true,
|
||||
visitLambdaExpression = true,
|
||||
visitLocalMembers = true,
|
||||
visitVariable = true,
|
||||
visitAnnotation = true,
|
||||
visitFunctionCall = true,
|
||||
visitThrowExpression = true,
|
||||
visitLoops = true,
|
||||
visitConstExpression = true,
|
||||
visitQualifiedAccessExpression = true,
|
||||
visitAnonymousObject = true
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user