in src/org/jetbrains/r/refactoring/inline/RInlineAssignmentProcessor.kt [78:118]
override fun performRefactoring(usages: Array<UsageInfo>) {
val action = LocalHistory.getInstance().startAction(commandName)
try {
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages)
val value = assignment.assignedValue ?: return
val defaultValues = mutableMapOf<String, PsiElement>()
val argsNames = mutableListOf<String>()
if (isFunction) {
for (param in assignment.getParameters()) {
val name = param.name
argsNames.add(param.name)
val defaultValue = param.defaultValue ?: continue
defaultValues[name] = defaultValue
}
}
for (info in usages) {
try {
val element = info.element as? RIdentifierExpression ?: continue
if (!isFunction) inlineExpressionUsage(element, value, myProject)
else inlineFunctionUsage(element, value, myProject, argsNames, defaultValues)
}
catch (e: IncorrectOperationException) {
LOG.error("Cannot inline $info. Cause: $e")
}
}
if (removeDefinition) {
try {
assignment.delete()
}
catch (e: IncorrectOperationException) {
LOG.error("Cannot delete ${assignment.text}. Cause: $e")
}
}
}
finally {
action.finish()
}
}