From 1ceb751061833573f9b6e7a8ea94b6e242163077 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 8 Nov 2017 16:55:35 +0300 Subject: [PATCH] Data Outflow: Allow for-loop variables #KT-19018 Fixed --- idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt | 4 +--- idea/testData/slicer/outflow/forVariable.kt | 9 +++++++++ idea/testData/slicer/outflow/forVariable.results.txt | 4 ++++ .../kotlin/idea/slicer/SlicerTestGenerated.java | 6 ++++++ 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 idea/testData/slicer/outflow/forVariable.kt create mode 100644 idea/testData/slicer/outflow/forVariable.results.txt diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt index bce7f1f3a54..18d1b0efebe 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/Slicer.kt @@ -113,9 +113,7 @@ private fun KtDeclaration.processVariableAccesses( ) } -private fun KtParameter.canProcess(): Boolean { - return !(isLoopParameter || isVarArg) -} +private fun KtParameter.canProcess() = !isVarArg abstract class Slicer( protected val element: KtExpression, diff --git a/idea/testData/slicer/outflow/forVariable.kt b/idea/testData/slicer/outflow/forVariable.kt new file mode 100644 index 00000000000..58f44de0184 --- /dev/null +++ b/idea/testData/slicer/outflow/forVariable.kt @@ -0,0 +1,9 @@ +// FLOW: OUT + +fun f1(param: String) {} + +fun f4(list: List) { + for (s in list) + if (s.isNotEmpty()) + f1(s) +} \ No newline at end of file diff --git a/idea/testData/slicer/outflow/forVariable.results.txt b/idea/testData/slicer/outflow/forVariable.results.txt new file mode 100644 index 00000000000..12d594736ff --- /dev/null +++ b/idea/testData/slicer/outflow/forVariable.results.txt @@ -0,0 +1,4 @@ +6 for (s in list) +7 if (s.isNotEmpty()) +8 f1(s) +3 fun f1(param: String) {} diff --git a/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestGenerated.java index 96456b6524f..6a37a029b6e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestGenerated.java @@ -378,6 +378,12 @@ public class SlicerTestGenerated extends AbstractSlicerTest { doTest(fileName); } + @TestMetadata("outflow/forVariable.kt") + public void testOutflow_ForVariable() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/slicer/outflow/forVariable.kt"); + doTest(fileName); + } + @TestMetadata("outflow/funBodyExpression.kt") public void testOutflow_FunBodyExpression() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/slicer/outflow/funBodyExpression.kt");