From 5f43bd56b4c8facc083ee92c7c2a75fee0f603c0 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 28 Feb 2018 13:07:43 +0300 Subject: [PATCH] Extract Function: Use 'public' visibility for function extracted from public inline #KT-15228 Fixed --- .../extractionEngine/extractableAnalysisUtil.kt | 5 ++++- .../basic/extractFromPrivateInlineFun.kt | 5 +++++ .../basic/extractFromPrivateInlineFun.kt.after | 7 +++++++ .../basic/extractFromPublicInlineFun.kt | 5 +++++ .../basic/extractFromPublicInlineFun.kt.after | 7 +++++++ .../introduce/ExtractionTestGenerated.java | 12 ++++++++++++ 6 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 idea/testData/refactoring/extractFunction/basic/extractFromPrivateInlineFun.kt create mode 100644 idea/testData/refactoring/extractFunction/basic/extractFromPrivateInlineFun.kt.after create mode 100644 idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt create mode 100644 idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt index 217099adfd9..71c881f2cf4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt @@ -56,6 +56,7 @@ import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.approximateWithResolvableType import org.jetbrains.kotlin.idea.util.getResolutionScope import org.jetbrains.kotlin.idea.util.isResolvableInScope +import org.jetbrains.kotlin.lexer.KtModifierKeywordToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.* @@ -608,7 +609,9 @@ private fun ExtractionData.getLocalInstructions(pseudocode: Pseudocode): List Int) = f(a + b) \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/basic/extractFromPrivateInlineFun.kt.after b/idea/testData/refactoring/extractFunction/basic/extractFromPrivateInlineFun.kt.after new file mode 100644 index 00000000000..a290849533a --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractFromPrivateInlineFun.kt.after @@ -0,0 +1,7 @@ +// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo, value-parameter b: kotlin.Int defined in foo +// PARAM_TYPES: kotlin.Int +// PARAM_TYPES: kotlin.Int + +private inline fun foo(a: Int, b: Int, f: (Int) -> Int) = f(i(a, b)) + +private fun i(a: Int, b: Int) = a + b \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt b/idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt new file mode 100644 index 00000000000..d4ecc361dc8 --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt @@ -0,0 +1,5 @@ +// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo, value-parameter b: kotlin.Int defined in foo +// PARAM_TYPES: kotlin.Int +// PARAM_TYPES: kotlin.Int + +inline fun foo(a: Int, b: Int, f: (Int) -> Int) = f(a + b) \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt.after b/idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt.after new file mode 100644 index 00000000000..82fce67d6a3 --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt.after @@ -0,0 +1,7 @@ +// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo, value-parameter b: kotlin.Int defined in foo +// PARAM_TYPES: kotlin.Int +// PARAM_TYPES: kotlin.Int + +inline fun foo(a: Int, b: Int, f: (Int) -> Int) = f(i(a, b)) + +fun i(a: Int, b: Int) = a + b \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java index 75c9abcfc93..5efa348dc20 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java @@ -923,6 +923,18 @@ public class ExtractionTestGenerated extends AbstractExtractionTest { doExtractFunctionTest(fileName); } + @TestMetadata("extractFromPrivateInlineFun.kt") + public void testExtractFromPrivateInlineFun() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/extractFromPrivateInlineFun.kt"); + doExtractFunctionTest(fileName); + } + + @TestMetadata("extractFromPublicInlineFun.kt") + public void testExtractFromPublicInlineFun() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/extractFromPublicInlineFun.kt"); + doExtractFunctionTest(fileName); + } + @TestMetadata("extractToEnumClassBody.kt") public void testExtractToEnumClassBody() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/extractToEnumClassBody.kt");