diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt
index c9679f1baece..5ff2a1a5423c 100644
--- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt
+++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractExtractionTest.kt
@@ -312,7 +312,7 @@ abstract class AbstractExtractionTest : KotlinLightCodeInsightFixtureTestCase()
}
protected open fun doIntroducePropertyTest(unused: String) {
- doTest { file ->
+ doTestIfNotDisabledByFileDirective { file ->
file as KtFile
val extractionTarget = propertyTargets.single {
diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java
index 696ffa9cb3da..531b8a7c1f18 100644
--- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java
+++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java
@@ -3235,6 +3235,11 @@ public abstract class ExtractionTestGenerated extends AbstractExtractionTest {
runTest("testData/refactoring/introduceProperty/extractWithParams.kt");
}
+ @TestMetadata("functionalType.kt")
+ public void testFunctionalType() throws Exception {
+ runTest("testData/refactoring/introduceProperty/functionalType.kt");
+ }
+
@TestMetadata("kt21530.kt")
public void testKt21530() throws Exception {
runTest("testData/refactoring/introduceProperty/kt21530.kt");
diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/functionalType.kt b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/functionalType.kt
new file mode 100644
index 000000000000..e506eac53aab
--- /dev/null
+++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/functionalType.kt
@@ -0,0 +1,11 @@
+// EXTRACTION_TARGET: property with initializer
+
+fun foo(p: (String) -> Boolean) {
+
+}
+
+fun bar() {
+ foo { it.isBlank() }
+}
+
+// IGNORE_K1
\ No newline at end of file
diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/functionalType.kt.after b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/functionalType.kt.after
new file mode 100644
index 000000000000..404eb19ede5b
--- /dev/null
+++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/functionalType.kt.after
@@ -0,0 +1,13 @@
+// EXTRACTION_TARGET: property with initializer
+
+fun foo(p: (String) -> Boolean) {
+
+}
+
+private val function: (String) -> Boolean = { it.isBlank() }
+
+fun bar() {
+ foo(function)
+}
+
+// IGNORE_K1
\ No newline at end of file
diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractFunctionGenerator.kt b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractFunctionGenerator.kt
index 89428ccc1e26..08af5e7919c5 100644
--- a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractFunctionGenerator.kt
+++ b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractFunctionGenerator.kt
@@ -12,6 +12,8 @@ import org.jetbrains.kotlin.analysis.api.KtAllowAnalysisOnEdt
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisFromWriteAction
import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisOnEdt
+import org.jetbrains.kotlin.analysis.api.types.KtFunctionalType
+import org.jetbrains.kotlin.analysis.api.types.KtUsualClassType
import org.jetbrains.kotlin.idea.base.codeInsight.ShortenReferencesFacility
import org.jetbrains.kotlin.idea.base.psi.isMultiLine
import org.jetbrains.kotlin.idea.base.psi.moveInsideParenthesesAndReplaceWith
@@ -645,7 +647,9 @@ abstract class ExtractFunctionGenerator