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