Write arrayOf call parsing (light tree to FIR)
This commit is contained in:
committed by
Mikhail Glukhikh
parent
9d36855cb6
commit
e15b91ea16
+15
@@ -58,6 +58,7 @@ class ExpressionsConverter(
|
||||
in qualifiedAccessTokens -> convertQualifiedExpression(expression)
|
||||
CALL_EXPRESSION -> convertCallExpression(expression)
|
||||
ARRAY_ACCESS_EXPRESSION -> convertArrayAccessExpression(expression)
|
||||
COLLECTION_LITERAL_EXPRESSION -> convertCollectionLiteralExpresion(expression)
|
||||
STRING_TEMPLATE -> convertStringTemplate(expression)
|
||||
is KtConstantExpressionElementType -> convertConstantExpression(expression)
|
||||
REFERENCE_EXPRESSION -> convertSimpleNameExpression(expression)
|
||||
@@ -441,6 +442,20 @@ class ExpressionsConverter(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.jetbrains.kotlin.parsing.KotlinExpressionParsing.parseCollectionLiteralExpression
|
||||
*/
|
||||
private fun convertCollectionLiteralExpresion(expression: LighterASTNode): FirExpression {
|
||||
val firExpressionList = mutableListOf<FirExpression>()
|
||||
expression.forEachChildren {
|
||||
if (it.isExpression()) firExpressionList += getAsFirExpression<FirExpression>(it)
|
||||
}
|
||||
|
||||
return FirArrayOfCallImpl(session, null).apply {
|
||||
arguments += firExpressionList
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.jetbrains.kotlin.parsing.KotlinExpressionParsing.parseAsCollectionLiteralExpression
|
||||
*/
|
||||
|
||||
-36
@@ -32,15 +32,12 @@ class FirPartialTransformer(
|
||||
private val visitReturnExpression: Boolean = false,
|
||||
private val visitThrowExpression: Boolean = false,
|
||||
private val visitForLoop: Boolean = false,
|
||||
private val visitClassReferenceExpression: Boolean = false,
|
||||
private val visitConstExpression: Boolean = false,
|
||||
private val visitQualifiedAccessExpression: Boolean = false,
|
||||
private val visitCallableReferenceAccess: Boolean = false,
|
||||
private val visitTryExpression: Boolean = false,
|
||||
private val visitWhenExpression: Boolean = false,
|
||||
private val visitNamedArgumentExpression: Boolean = false,
|
||||
private val visitLambdaArgumentExpression: Boolean = false,
|
||||
private val visitSpreadArgumentExpression: Boolean = false,
|
||||
private val visitAnonymousObject: Boolean = false,
|
||||
private val visitDoWhileLoop: Boolean = false,
|
||||
private val visitWhileLoop: Boolean = false,
|
||||
@@ -177,17 +174,6 @@ class FirPartialTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformClassReferenceExpression(
|
||||
classReferenceExpression: FirClassReferenceExpression,
|
||||
data: Nothing?
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
return if (visitClassReferenceExpression) {
|
||||
(classReferenceExpression.transformChildren(this, data) as FirClassReferenceExpression).compose()
|
||||
} else {
|
||||
DummyFirStatement().compose()
|
||||
}
|
||||
}
|
||||
|
||||
override fun <T> transformConstExpression(
|
||||
constExpression: FirConstExpression<T>,
|
||||
data: Nothing?
|
||||
@@ -237,17 +223,6 @@ class FirPartialTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformNamedArgumentExpression(
|
||||
namedArgumentExpression: FirNamedArgumentExpression,
|
||||
data: Nothing?
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
return if (visitNamedArgumentExpression) {
|
||||
(namedArgumentExpression.transformChildren(this, data) as FirNamedArgumentExpression).compose()
|
||||
} else {
|
||||
DummyFirStatement().compose()
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformLambdaArgumentExpression(
|
||||
lambdaArgumentExpression: FirLambdaArgumentExpression,
|
||||
data: Nothing?
|
||||
@@ -259,17 +234,6 @@ class FirPartialTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformSpreadArgumentExpression(
|
||||
spreadArgumentExpression: FirSpreadArgumentExpression,
|
||||
data: Nothing?
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
return if (visitSpreadArgumentExpression) {
|
||||
(spreadArgumentExpression.transformChildren(this, data) as FirSpreadArgumentExpression).compose()
|
||||
} else {
|
||||
DummyFirStatement().compose()
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformAnonymousObject(anonymousObject: FirAnonymousObject, data: Nothing?): CompositeTransformResult<FirStatement> {
|
||||
return if (visitAnonymousObject) {
|
||||
(anonymousObject.transformChildren(this, data) as FirAnonymousObject).compose()
|
||||
|
||||
+11
-6
@@ -72,15 +72,12 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
||||
visitReturnExpression: Boolean = false,
|
||||
visitThrowExpression: Boolean = false,
|
||||
visitForLoop: Boolean = false,
|
||||
visitClassReferenceExpression: Boolean = false,
|
||||
visitConstExpression: Boolean = false,
|
||||
visitQualifiedAccessExpression: Boolean = false,
|
||||
visitCallableReferenceAccess: Boolean = false,
|
||||
visitTryExpression: Boolean = false,
|
||||
visitWhenExpression: Boolean = false,
|
||||
visitNamedArgumentExpression: Boolean = false,
|
||||
visitLambdaArgumentExpression: Boolean = false,
|
||||
visitSpreadArgumentExpression: Boolean = false,
|
||||
visitAnonymousObject: Boolean = false,
|
||||
visitDoWhileLoop: Boolean = false,
|
||||
visitWhileLoop: Boolean = false,
|
||||
@@ -102,15 +99,12 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
||||
visitReturnExpression = visitReturnExpression,
|
||||
visitThrowExpression = visitThrowExpression,
|
||||
visitForLoop = visitForLoop,
|
||||
visitClassReferenceExpression = visitClassReferenceExpression,
|
||||
visitConstExpression = visitConstExpression,
|
||||
visitQualifiedAccessExpression = visitQualifiedAccessExpression,
|
||||
visitCallableReferenceAccess = visitCallableReferenceAccess,
|
||||
visitTryExpression = visitTryExpression,
|
||||
visitWhenExpression = visitWhenExpression,
|
||||
visitNamedArgumentExpression = visitNamedArgumentExpression,
|
||||
visitLambdaArgumentExpression = visitLambdaArgumentExpression,
|
||||
visitSpreadArgumentExpression = visitSpreadArgumentExpression,
|
||||
visitAnonymousObject = visitAnonymousObject,
|
||||
visitDoWhileLoop = visitDoWhileLoop,
|
||||
visitWhileLoop = visitWhileLoop,
|
||||
@@ -168,4 +162,15 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
||||
visitQualifiedAccessExpression = true
|
||||
)
|
||||
}
|
||||
|
||||
fun testArrayOfCall() {
|
||||
compare(
|
||||
stubMode = false,
|
||||
visitTypeOperatorCall = true,
|
||||
visitArrayOfCall = true,
|
||||
visitFunctionCall = true,
|
||||
visitConstExpression = true,
|
||||
visitQualifiedAccessExpression = true
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user