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)
|
FOR -> convertFor(expression)
|
||||||
BREAK, CONTINUE -> convertLoopJump(expression)
|
BREAK, CONTINUE -> convertLoopJump(expression)
|
||||||
RETURN -> convertReturn(expression)
|
RETURN -> convertReturn(expression)
|
||||||
|
THROW -> convertThrow(expression)
|
||||||
PARENTHESIZED, PROPERTY_DELEGATE, INDICES -> convertExpression(expression.getExpressionInParentheses())
|
PARENTHESIZED, PROPERTY_DELEGATE, INDICES -> convertExpression(expression.getExpressionInParentheses())
|
||||||
THIS_EXPRESSION -> convertThisExpression(expression)
|
THIS_EXPRESSION -> convertThisExpression(expression)
|
||||||
SUPER_EXPRESSION -> convertSuperExpression(expression)
|
SUPER_EXPRESSION -> convertSuperExpression(expression)
|
||||||
@@ -804,6 +805,19 @@ class ExpressionsConverter(
|
|||||||
return result.toReturn(labelName)
|
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.parsing.KotlinExpressionParsing.parseThisExpression
|
||||||
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitThisExpression
|
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitThisExpression
|
||||||
|
|||||||
+17
@@ -304,4 +304,21 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
|||||||
visitQualifiedAccessExpression = true
|
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