override fun performRefactoring()

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()
    }
  }