diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt index 3ed7e28b939..15717a3203d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt @@ -90,7 +90,8 @@ fun getFunctionForExtractedFragment( val options = ExtractionOptions(inferUnitTypeForUnusedValues = false, enableListBoxing = true, - allowSpecialClassNames = true) + allowSpecialClassNames = true, + captureLocalFunctions = true) val analysisResult = ExtractionData(tmpFile, newDebugExpression.toRange(), targetSibling, null, options).performAnalysis() if (analysisResult.status != Status.SUCCESS) { throw EvaluateExceptionUtil.createEvaluateException(getErrorMessageForExtractFunctionResult(analysisResult)) 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 e81e024c927..73bf75de8cd 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 @@ -642,8 +642,7 @@ private fun ExtractionData.inferParametersInfo( val extractFunctionRef = options.captureLocalFunctions && originalRef.getReferencedName() == originalDescriptor.getName().asString() // to forbid calls by convention - && originalDescriptor is FunctionDescriptor - && DescriptorUtils.isLocal(originalDescriptor) + && originalDeclaration is JetNamedFunction && originalDeclaration.isLocal() && (targetScope == null || originalDescriptor !in targetScope.getFunctions(originalDescriptor.getName())) val descriptorToExtract = (if (extractThis) thisDescriptor else null) ?: originalDescriptor