mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[kotlin] Introduce ConvertLambdaToReferenceUtils
to share functions that don't require analysis between K1 and K2 implementations of ConvertLambdaToReferenceIntention. ^KTIJ-27702 GitOrigin-RevId: 2fb69984b9e79766e1a9ce1513291515586da60f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e291b8e056
commit
4c8ffda004
@@ -0,0 +1,20 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.codeinsight.utils
|
||||
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.renderer.render
|
||||
|
||||
object ConvertLambdaToReferenceUtils {
|
||||
|
||||
fun KtCallExpression.getCallReferencedName(): String? =
|
||||
(calleeExpression as? KtNameReferenceExpression)?.getSafeReferencedName()
|
||||
|
||||
fun KtNameReferenceExpression.getSafeReferencedName(): String = getReferencedNameAsName().render()
|
||||
|
||||
fun KtLambdaExpression.singleStatementOrNull(): KtExpression? = bodyExpression?.statements?.singleOrNull()
|
||||
|
||||
fun KtLambdaExpression.isArgument(): Boolean {
|
||||
return this === getStrictParentOfType<KtValueArgument>()?.getArgumentExpression()?.let(KtPsiUtil::safeDeparenthesize)
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,10 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.inspections.IntentionBasedInspection
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.intentions.SelfTargetingOffsetIndependentIntention
|
||||
import org.jetbrains.kotlin.idea.codeinsight.utils.ConvertLambdaToReferenceUtils.getCallReferencedName
|
||||
import org.jetbrains.kotlin.idea.codeinsight.utils.ConvertLambdaToReferenceUtils.getSafeReferencedName
|
||||
import org.jetbrains.kotlin.idea.codeinsight.utils.ConvertLambdaToReferenceUtils.isArgument
|
||||
import org.jetbrains.kotlin.idea.codeinsight.utils.ConvertLambdaToReferenceUtils.singleStatementOrNull
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.setType
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
@@ -33,7 +37,6 @@ import org.jetbrains.kotlin.psi.psiUtil.getPossiblyQualifiedCallExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi2ir.deparenthesize
|
||||
import org.jetbrains.kotlin.renderer.render
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingContext.FUNCTION
|
||||
import org.jetbrains.kotlin.resolve.BindingContext.REFERENCE_TARGET
|
||||
@@ -450,16 +453,6 @@ private fun KtLambdaExpression.parentValueArgument(): KtValueArgument? {
|
||||
} as? KtValueArgument
|
||||
}
|
||||
|
||||
private fun KtCallExpression.getCallReferencedName(): String? =
|
||||
(calleeExpression as? KtNameReferenceExpression)?.getSafeReferencedName()
|
||||
|
||||
private fun KtNameReferenceExpression.getSafeReferencedName(): String = getReferencedNameAsName().render()
|
||||
|
||||
private fun KtLambdaExpression.singleStatementOrNull(): KtExpression? = bodyExpression?.statements?.singleOrNull()
|
||||
|
||||
private fun KtLambdaExpression.isArgument(): Boolean =
|
||||
this === getStrictParentOfType<KtValueArgument>()?.getArgumentExpression()?.deparenthesize()
|
||||
|
||||
private fun KtNameReferenceExpression.renderTargetReceiverType(
|
||||
context: BindingContext,
|
||||
resolvedCall: ResolvedCall<out CallableDescriptor>? = null
|
||||
|
||||
Reference in New Issue
Block a user