[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 @FirBuilderDsl
class FirArrayOfCallBuilder : FirCallBuilder, FirAnnotationContainerBuilder, FirExpressionBuilder { class FirArrayOfCallBuilder : FirCallBuilder, FirAnnotationContainerBuilder, FirExpressionBuilder {
override var source: FirSourceElement? = null override var source: FirSourceElement? = null
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override lateinit var argumentList: FirArgumentList override lateinit var argumentList: FirArgumentList
override fun build(): FirArrayOfCall { override fun build(): FirArrayOfCall {
return FirArrayOfCallImpl( return FirArrayOfCallImpl(
source, source,
typeRef,
annotations, annotations,
argumentList, 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) @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.FirArgumentList
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
/* /*
@@ -20,11 +19,10 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirArrayOfCallImpl( internal class FirArrayOfCallImpl(
override val source: FirSourceElement?, override val source: FirSourceElement?,
override var typeRef: FirTypeRef,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override var argumentList: FirArgumentList, override var argumentList: FirArgumentList,
) : FirArrayOfCall() { ) : FirArrayOfCall() {
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
typeRef.accept(visitor, data) typeRef.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
@@ -325,7 +325,8 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
expression to "FirExpressionStub", expression to "FirExpressionStub",
varargArgumentsExpression, varargArgumentsExpression,
checkedSafeCallSubject, checkedSafeCallSubject,
safeCallExpression safeCallExpression,
arrayOfCall
) )
elementsWithDefaultTypeRef.forEach { elementsWithDefaultTypeRef.forEach {
val (element, name) = when (it) { val (element, name) = when (it) {
@@ -462,6 +462,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
"FirVarargArgumentsExpressionImpl", "FirVarargArgumentsExpressionImpl",
"FirSafeCallExpressionImpl", "FirSafeCallExpressionImpl",
"FirCheckedSafeCallSubjectImpl", "FirCheckedSafeCallSubjectImpl",
"FirArrayOfCallImpl",
) )
configureFieldInAllImplementations( configureFieldInAllImplementations(
field = "typeRef", field = "typeRef",