LL API: fix kt -> fir mapping for KtValueArgumentList
This commit is contained in:
committed by
teamcityserver
parent
f6a97cdec6
commit
c266d3e075
@@ -610,6 +610,7 @@ open class RawFirBuilder(
|
||||
|
||||
private fun KtCallElement.extractArgumentsTo(container: FirCallBuilder) {
|
||||
val argumentList = buildArgumentList {
|
||||
source = valueArgumentList?.toFirSourceElement()
|
||||
for (argument in valueArguments) {
|
||||
val argumentExpression = argument.toFirExpression()
|
||||
arguments += when (argument) {
|
||||
|
||||
+3
-3
@@ -196,7 +196,7 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
} else {
|
||||
subCandidate.handleVarargs()
|
||||
subCandidate.argumentMapping?.let {
|
||||
val newArgumentList = buildResolvedArgumentList(it)
|
||||
val newArgumentList = buildResolvedArgumentList(it, source = functionCall.argumentList.source)
|
||||
val symbol = subCandidate.symbol
|
||||
val functionIsInline =
|
||||
(symbol as? FirNamedFunctionSymbol)?.fir?.isInline == true || symbol.isArrayConstructorWithLambda
|
||||
@@ -273,7 +273,7 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
} else {
|
||||
subCandidate.handleVarargs()
|
||||
subCandidate.argumentMapping?.let {
|
||||
annotationCall.replaceArgumentList(buildResolvedArgumentList(it))
|
||||
annotationCall.replaceArgumentList(buildResolvedArgumentList(it, annotationCall.argumentList.source))
|
||||
}
|
||||
}
|
||||
return annotationCall
|
||||
@@ -452,7 +452,7 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
} else {
|
||||
subCandidate.handleVarargs()
|
||||
subCandidate.argumentMapping?.let {
|
||||
delegatedConstructorCall.replaceArgumentList(buildResolvedArgumentList(it))
|
||||
delegatedConstructorCall.replaceArgumentList(buildResolvedArgumentList(it, delegatedConstructorCall.argumentList.source))
|
||||
}
|
||||
}
|
||||
return delegatedConstructorCall.transformCalleeReference(
|
||||
|
||||
@@ -11,9 +11,6 @@ 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 <D> transformArguments(transformer: FirTransformer<D>, data: D): FirArgumentList {
|
||||
return this
|
||||
}
|
||||
|
||||
@@ -24,8 +24,11 @@ fun buildBinaryArgumentList(left: FirExpression, right: FirExpression): FirArgum
|
||||
fun buildArraySetArgumentList(rValue: FirExpression, indexes: List<FirExpression>): FirArgumentList =
|
||||
FirArraySetArgumentList(rValue, indexes)
|
||||
|
||||
fun buildResolvedArgumentList(mapping: LinkedHashMap<FirExpression, FirValueParameter>): FirResolvedArgumentList =
|
||||
FirResolvedArgumentList(mapping)
|
||||
fun buildResolvedArgumentList(
|
||||
mapping: LinkedHashMap<FirExpression, FirValueParameter>,
|
||||
source: FirSourceElement? = null
|
||||
): FirResolvedArgumentList =
|
||||
FirResolvedArgumentList(mapping, source)
|
||||
|
||||
fun buildPartiallyResolvedArgumentList(
|
||||
original: FirArgumentList,
|
||||
@@ -40,4 +43,7 @@ fun buildPartiallyResolvedArgumentList(
|
||||
object FirEmptyArgumentList : FirAbstractArgumentList() {
|
||||
override val arguments: List<FirExpression>
|
||||
get() = emptyList()
|
||||
|
||||
override val source: FirSourceElement?
|
||||
get() = null
|
||||
}
|
||||
|
||||
+3
@@ -15,4 +15,7 @@ class FirArraySetArgumentList internal constructor(
|
||||
) : FirAbstractArgumentList() {
|
||||
override val arguments: List<FirExpression>
|
||||
get() = indexes + rValue
|
||||
|
||||
override val source: FirSourceElement?
|
||||
get() = null
|
||||
}
|
||||
|
||||
+2
-1
@@ -15,7 +15,8 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
|
||||
class FirResolvedArgumentList internal constructor(
|
||||
mapping: LinkedHashMap<FirExpression, FirValueParameter>
|
||||
mapping: LinkedHashMap<FirExpression, FirValueParameter>,
|
||||
override val source: FirSourceElement?
|
||||
) : FirAbstractArgumentList() {
|
||||
|
||||
var mapping: LinkedHashMap<FirExpression, FirValueParameter> = mapping
|
||||
|
||||
Reference in New Issue
Block a user