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,
|
||||
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))
|
||||
|
||||
+1
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user