Extract function: capture only local functions, not from local declarations
This commit is contained in:
+2
-1
@@ -90,7 +90,8 @@ fun getFunctionForExtractedFragment(
|
|||||||
|
|
||||||
val options = ExtractionOptions(inferUnitTypeForUnusedValues = false,
|
val options = ExtractionOptions(inferUnitTypeForUnusedValues = false,
|
||||||
enableListBoxing = true,
|
enableListBoxing = true,
|
||||||
allowSpecialClassNames = true)
|
allowSpecialClassNames = true,
|
||||||
|
captureLocalFunctions = true)
|
||||||
val analysisResult = ExtractionData(tmpFile, newDebugExpression.toRange(), targetSibling, null, options).performAnalysis()
|
val analysisResult = ExtractionData(tmpFile, newDebugExpression.toRange(), targetSibling, null, options).performAnalysis()
|
||||||
if (analysisResult.status != Status.SUCCESS) {
|
if (analysisResult.status != Status.SUCCESS) {
|
||||||
throw EvaluateExceptionUtil.createEvaluateException(getErrorMessageForExtractFunctionResult(analysisResult))
|
throw EvaluateExceptionUtil.createEvaluateException(getErrorMessageForExtractFunctionResult(analysisResult))
|
||||||
|
|||||||
+1
-2
@@ -642,8 +642,7 @@ private fun ExtractionData.inferParametersInfo(
|
|||||||
val extractFunctionRef =
|
val extractFunctionRef =
|
||||||
options.captureLocalFunctions
|
options.captureLocalFunctions
|
||||||
&& originalRef.getReferencedName() == originalDescriptor.getName().asString() // to forbid calls by convention
|
&& originalRef.getReferencedName() == originalDescriptor.getName().asString() // to forbid calls by convention
|
||||||
&& originalDescriptor is FunctionDescriptor
|
&& originalDeclaration is JetNamedFunction && originalDeclaration.isLocal()
|
||||||
&& DescriptorUtils.isLocal(originalDescriptor)
|
|
||||||
&& (targetScope == null || originalDescriptor !in targetScope.getFunctions(originalDescriptor.getName()))
|
&& (targetScope == null || originalDescriptor !in targetScope.getFunctions(originalDescriptor.getName()))
|
||||||
|
|
||||||
val descriptorToExtract = (if (extractThis) thisDescriptor else null) ?: originalDescriptor
|
val descriptorToExtract = (if (extractThis) thisDescriptor else null) ?: originalDescriptor
|
||||||
|
|||||||
Reference in New Issue
Block a user