override fun inlineElement()

in gdscript/src/main/kotlin/gdscript/refactoring/inline/GdInlineVariableActionHandler.kt [26:67]


    override fun inlineElement(project: Project?, editor: Editor?, element: PsiElement?) {
        if (editor == null || project == null || element !is GdVarNmi) return

        val replacementExpr: GdExpr? = when (val parent = element.parent) {
            is GdVarDeclSt -> parent.expr
            is GdClassVarDeclTl -> parent.expr
            is GdConstDeclSt -> parent.expr
            is GdConstDeclTl -> parent.expr
            else -> null
        }
        if (replacementExpr == null) {
            CommonRefactoringUtil.showErrorHint(
                project,
                editor,
                RefactoringBundle.message("variable.has.no.initializer", element.name),
                RefactoringBundle.message("inline.title"),
                null
            )
            return
        }

        val occurrences = ReferencesSearch.search(element).count()
        if (occurrences <= 0) {
            CommonRefactoringUtil.showErrorHint(
                project,
                editor,
                RefactoringBundle.message("variable.is.never.used", element.name),
                RefactoringBundle.message("inline.title"),
                null
            )
            return
        }

        val reference = TargetElementUtil.findReference(editor, editor.caretModel.offset)
        val dialog = GdInlineVariableDialog(project, element, reference?.element)

        if (occurrences > 1) {
            dialog.show()
        } else {
            dialog.inlineAndRemove()
        }
    }