[FIR] Add configurable typeRef to FirArrayOfCallBuilder

This commit is contained in:
Dmitriy Novozhilov
2020-09-14 15:58:36 +03:00
parent d4891cb464
commit ae819ff059
4 changed files with 6 additions and 11 deletions
@@ -27,24 +27,19 @@ import org.jetbrains.kotlin.fir.visitors.*
@FirBuilderDsl
class FirArrayOfCallBuilder : FirCallBuilder, FirAnnotationContainerBuilder, FirExpressionBuilder {
override var source: FirSourceElement? = null
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override lateinit var argumentList: FirArgumentList
override fun build(): FirArrayOfCall {
return FirArrayOfCallImpl(
source,
typeRef,
annotations,
argumentList,
)
}
@Deprecated("Modification of 'typeRef' has no impact for FirArrayOfCallBuilder", level = DeprecationLevel.HIDDEN)
override var typeRef: FirTypeRef
get() = throw IllegalStateException()
set(value) {
throw IllegalStateException()
}
}
@OptIn(ExperimentalContracts::class)
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirArgumentList
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
import org.jetbrains.kotlin.fir.visitors.*
/*
@@ -20,11 +19,10 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirArrayOfCallImpl(
override val source: FirSourceElement?,
override var typeRef: FirTypeRef,
override val annotations: MutableList<FirAnnotationCall>,
override var argumentList: FirArgumentList,
) : FirArrayOfCall() {
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
typeRef.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) }
@@ -325,7 +325,8 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
expression to "FirExpressionStub",
varargArgumentsExpression,
checkedSafeCallSubject,
safeCallExpression
safeCallExpression,
arrayOfCall
)
elementsWithDefaultTypeRef.forEach {
val (element, name) = when (it) {
@@ -462,6 +462,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
"FirVarargArgumentsExpressionImpl",
"FirSafeCallExpressionImpl",
"FirCheckedSafeCallSubjectImpl",
"FirArrayOfCallImpl",
)
configureFieldInAllImplementations(
field = "typeRef",