diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt index 9e5a9b7f412..344173c1ce3 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt @@ -484,7 +484,7 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte rValue = value this.operation = operation indexes += firArrayAccess.arguments - argumentList = FirArraySetArgumentList(rValue, indexes) + argumentList = buildArraySetArgumentList(rValue, indexes) } val arrayExpression = this.getChildNodeByType(REFERENCE_EXPRESSION) if (arrayExpression != null) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index dbeaf4cd67f..7fe7dfb9918 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -209,7 +209,7 @@ class FirCallCompletionResultsWriterTransformer( } } subCandidate.argumentMapping?.let { - result.replaceArgumentList(FirResolvedArgumentList(it)) + result.replaceArgumentList(buildResolvedArgumentList(it)) } result.transformExplicitReceiver(integerApproximator, null) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAbstractArgumentList.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAbstractArgumentList.kt new file mode 100644 index 00000000000..7b2ea39ca09 --- /dev/null +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirAbstractArgumentList.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.expressions + +import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.visitors.FirTransformer +import org.jetbrains.kotlin.fir.visitors.FirVisitor + +abstract class FirAbstractArgumentList : FirArgumentList() { + override val source: FirSourceElement? + get() = null + + override fun transformArguments(transformer: FirTransformer, data: D): FirArgumentList { + return this + } + + override fun acceptChildren(visitor: FirVisitor, data: D) { + // DO NOTHING + } + + override fun transformChildren(transformer: FirTransformer, data: D): FirElement { + return this + } +} \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArgumentUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArgumentUtil.kt index d08aeaba6a2..3792ed4d91a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArgumentUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirArgumentUtil.kt @@ -5,12 +5,10 @@ package org.jetbrains.kotlin.fir.expressions -import org.jetbrains.kotlin.fir.FirElement -import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.builder.buildArgumentList -import org.jetbrains.kotlin.fir.visitors.FirTransformer -import org.jetbrains.kotlin.fir.visitors.FirVisitor +import org.jetbrains.kotlin.fir.expressions.impl.FirArraySetArgumentList +import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList fun buildUnaryArgumentList(argument: FirExpression): FirArgumentList = buildArgumentList { arguments += argument @@ -21,45 +19,13 @@ fun buildBinaryArgumentList(left: FirExpression, right: FirExpression): FirArgum arguments += right } -abstract class FirAbstractArgumentList : FirArgumentList() { - override val source: FirSourceElement? - get() = null +fun buildArraySetArgumentList(rValue: FirExpression, indexes: List): FirArgumentList = + FirArraySetArgumentList(rValue, indexes) - override fun transformArguments(transformer: FirTransformer, data: D): FirArgumentList { - return this - } - - override fun acceptChildren(visitor: FirVisitor, data: D) { - // DO NOTHING - } - - override fun transformChildren(transformer: FirTransformer, data: D): FirElement { - return this - } -} +fun buildResolvedArgumentList(mapping: Map): FirArgumentList = + FirResolvedArgumentList(mapping) object FirEmptyArgumentList : FirAbstractArgumentList() { override val arguments: List get() = emptyList() } - -class FirArraySetArgumentList( - private val rValue: FirExpression, - private val indexes: List -) : FirAbstractArgumentList() { - override val arguments: List - get() = indexes + rValue -} - -class FirResolvedArgumentList( - val mapping: Map -) : FirAbstractArgumentList() { - override val arguments: List - get() = mapping.keys.toList() - - override fun acceptChildren(visitor: FirVisitor, data: D) { - for (argument in mapping.keys) { - argument.accept(visitor, data) - } - } -} \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetArgumentList.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetArgumentList.kt new file mode 100644 index 00000000000..ce2192eae14 --- /dev/null +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirArraySetArgumentList.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.expressions.impl + +import org.jetbrains.kotlin.fir.expressions.FirAbstractArgumentList +import org.jetbrains.kotlin.fir.expressions.FirExpression + +class FirArraySetArgumentList internal constructor( + private val rValue: FirExpression, + private val indexes: List +) : FirAbstractArgumentList() { + override val arguments: List + get() = indexes + rValue +} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedArgumentList.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedArgumentList.kt new file mode 100644 index 00000000000..0d21296ce82 --- /dev/null +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedArgumentList.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.expressions.impl + +import org.jetbrains.kotlin.fir.declarations.FirValueParameter +import org.jetbrains.kotlin.fir.expressions.FirAbstractArgumentList +import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.visitors.FirVisitor + +class FirResolvedArgumentList internal constructor( + val mapping: Map +) : FirAbstractArgumentList() { + override val arguments: List + get() = mapping.keys.toList() + + override fun acceptChildren(visitor: FirVisitor, data: D) { + for (argument in mapping.keys) { + argument.accept(visitor, data) + } + } +}