From 5040d37e2f378aeaf0e2e5ed74a6fc45f0558bf4 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Sat, 11 Apr 2020 13:18:15 +0300 Subject: [PATCH] Code refactoring --- .../org/jetbrains/kotlin/idea/slicer/CallSliceProducer.kt | 5 +++++ idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt | 4 ++-- idea/src/org/jetbrains/kotlin/idea/slicer/OutflowSlicer.kt | 7 +------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/CallSliceProducer.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/CallSliceProducer.kt index ce6af976432..86fe5fd39cf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/CallSliceProducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/CallSliceProducer.kt @@ -16,6 +16,11 @@ import org.jetbrains.kotlin.psi.psiUtil.isAncestor object CallSliceProducer : SliceProducer { override fun produce(usage: UsageInfo, behaviour: KotlinSliceUsage.SpecialBehaviour?, parent: SliceUsage): Collection? { + if ((parent as? KotlinSliceUsage)?.behaviour is LambdaCallsBehaviour) { + // UsageInfo produced by LambdaCallsBehaviour has full call-element and does not require any processing + return null + } + when (val refElement = usage.element) { null -> { val element = (usage.reference as? LightMemberReference)?.element ?: return emptyList() diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt index 111ca587d86..6dfe879cefc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt @@ -190,8 +190,8 @@ class InflowSlicer( val anonymousFunction = accessedDescriptor.containingDeclaration as? AnonymousFunctionDescriptor if (anonymousFunction != null && accessedDescriptor.name.asString() == "it") { val functionLiteral = anonymousFunction.source.getPsi() as KtFunctionLiteral - val sliceTransformer = ArgumentSliceProducer(anonymousFunction.valueParameters.first()) - processCalls(functionLiteral, false, sliceTransformer) + val parameterDescriptor = anonymousFunction.valueParameters.first() + processCalls(functionLiteral, false, ArgumentSliceProducer(parameterDescriptor)) } } else { accessedDeclaration.passDeclarationToProcessorWithOverriders() diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/OutflowSlicer.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/OutflowSlicer.kt index 27c38fa7b31..f9413f9f41c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/OutflowSlicer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/OutflowSlicer.kt @@ -148,12 +148,7 @@ class OutflowSlicer( } private fun processFunction(function: KtFunction) { - //TODO: CallSliceProducer in all cases - if (function is KtConstructor<*> || function is KtNamedFunction && function.name != null) { - processCalls(function, includeOverriders = false, sliceProducer = CallSliceProducer) - } else { - processCalls(function, false, SliceProducer.Trivial) - } + processCalls(function, includeOverriders = false, CallSliceProducer) } private fun processExtensionReceiver(declaration: KtCallableDeclaration, declarationWithBody: KtDeclarationWithBody) {