FIR IDE: Remove KtCallWithArguments and move arguments up to KtCall.

GitOrigin-RevId: 55f437c6e86297e478db74ab0757e36e162ab7cd
This commit is contained in:
Mark Punzalan
2022-01-22 11:09:09 +00:00
committed by intellij-monorepo-bot
parent 502dce2fce
commit 2e280c4acb
4 changed files with 6 additions and 10 deletions
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.idea.fir.api.applicator.HLApplicatorInputProvider
import org.jetbrains.kotlin.idea.fir.api.applicator.inputProvider
import org.jetbrains.kotlin.idea.fir.applicators.AddArgumentNamesApplicators
import org.jetbrains.kotlin.idea.fir.applicators.ApplicabilityRanges
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCallWithArguments
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCall
import org.jetbrains.kotlin.idea.frontend.api.calls.getSingleCandidateSymbolOrNull
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.name.Name
@@ -27,7 +27,7 @@ class HLAddNameToArgumentIntention :
if (shouldBeLastUnnamed && element != argumentList.arguments.last { !it.isNamed() }) return@inputProvider null
val callElement = argumentList.parent as? KtCallElement ?: return@inputProvider null
val resolvedCall = callElement.resolveCall() as? KtCallWithArguments ?: return@inputProvider null
val resolvedCall = callElement.resolveCall() ?: return@inputProvider null
if (resolvedCall.targetFunction.getSingleCandidateSymbolOrNull()?.hasStableParameterNames != true) {
return@inputProvider null
@@ -40,7 +40,7 @@ class HLAddNameToArgumentIntention :
element is KtContainerNode || super.skipProcessingFurtherElementsAfter(element)
companion object {
fun getArgumentNameIfCanBeUsedForCalls(argument: KtValueArgument, resolvedCall: KtCallWithArguments): Name? {
fun getArgumentNameIfCanBeUsedForCalls(argument: KtValueArgument, resolvedCall: KtCall): Name? {
val valueParameterSymbol = resolvedCall.argumentMapping[argument] ?: return null
if (valueParameterSymbol.isVararg) {
if (argument.languageVersionSettings.supportsFeature(LanguageFeature.ProhibitAssigningSingleElementsToVarargsInNamedForm) &&
@@ -8,7 +8,6 @@ import org.jetbrains.kotlin.idea.fir.api.applicator.HLApplicatorInputProvider
import org.jetbrains.kotlin.idea.fir.api.applicator.applicabilityRanges
import org.jetbrains.kotlin.idea.fir.api.applicator.inputProvider
import org.jetbrains.kotlin.idea.fir.applicators.AddArgumentNamesApplicators
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCallWithArguments
import org.jetbrains.kotlin.idea.frontend.api.calls.getSingleCandidateSymbolOrNull
import org.jetbrains.kotlin.idea.util.textRangeIn
import org.jetbrains.kotlin.psi.*
@@ -31,7 +30,7 @@ class HLAddNamesToCallArgumentsIntention :
}
override val inputProvider: HLApplicatorInputProvider<KtCallElement, Input> = inputProvider { element ->
val resolvedCall = element.resolveCall() as? KtCallWithArguments ?: return@inputProvider null
val resolvedCall = element.resolveCall() ?: return@inputProvider null
if (resolvedCall.targetFunction.getSingleCandidateSymbolOrNull()?.hasStableParameterNames != true) {
return@inputProvider null
@@ -4,13 +4,11 @@ package org.jetbrains.kotlin.idea.fir.intentions
import com.intellij.codeInsight.intention.LowPriorityAction
import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.api.applicator.applicator
import org.jetbrains.kotlin.idea.api.applicator.with
import org.jetbrains.kotlin.idea.fir.api.AbstractHLIntention
import org.jetbrains.kotlin.idea.fir.api.applicator.HLApplicatorInputProvider
import org.jetbrains.kotlin.idea.fir.api.applicator.inputProvider
import org.jetbrains.kotlin.idea.fir.applicators.AddArgumentNamesApplicators
import org.jetbrains.kotlin.idea.fir.applicators.ApplicabilityRanges
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCallWithArguments
import org.jetbrains.kotlin.idea.frontend.api.calls.getSingleCandidateSymbolOrNull
import org.jetbrains.kotlin.psi.KtCallElement
import org.jetbrains.kotlin.psi.KtLambdaArgument
@@ -27,7 +25,7 @@ class HLAddNamesToFollowingArgumentsIntention :
val argumentList = element.parent as? KtValueArgumentList ?: return@inputProvider null
val callElement = argumentList.parent as? KtCallElement ?: return@inputProvider null
val resolvedCall = callElement.resolveCall() as? KtCallWithArguments ?: return@inputProvider null
val resolvedCall = callElement.resolveCall() ?: return@inputProvider null
if (resolvedCall.targetFunction.getSingleCandidateSymbolOrNull()?.hasStableParameterNames != true) {
return@inputProvider null
@@ -6,7 +6,6 @@ import com.intellij.psi.*
import org.jetbrains.kotlin.idea.frontend.api.KtTypeArgumentWithVariance
import org.jetbrains.kotlin.idea.frontend.api.analyseForUast
import org.jetbrains.kotlin.idea.frontend.api.calls.KtAnnotationCall
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCallWithArguments
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol
import org.jetbrains.kotlin.idea.frontend.api.types.*
@@ -33,7 +32,7 @@ interface FirKotlinUastResolveProviderService : BaseKotlinUastResolveProviderSer
override fun convertValueArguments(ktCallElement: KtCallElement, parent: UElement): List<UNamedExpression>? {
analyseForUast(ktCallElement) {
val argumentMapping = (ktCallElement.resolveCall() as? KtCallWithArguments)?.argumentMapping ?: return null
val argumentMapping = ktCallElement.resolveCall()?.argumentMapping ?: return null
return argumentMapping.entries.map {
val name = it.value.name.asString()
// TODO: it.key.isSpread() ?