Я пишу плагин intellij, в котором я делаю рефакторинг класса, меняя его получатели (например, fun name(): String
) на поля (например, val name: String
).
Однако я незнать, как лучше обновить соответствующие PsiReference
экземпляры.Абонент Kotlin должен изменить значение с myObj.name()
на myObj.name
без скобок.
В настоящее время я делаю следующее:
ReferencesSearch.search(function).findAll().forEach {
val nextSibling = it.element.nextSibling
if ((nextSibling as? KtValueArgumentList)?.arguments?.isEmpty() == true) {
nextSibling.delete()
}
}
Вышеприведенное несколько работает.То есть конвертация происходит правильно.Однако IDE все еще думает, что вызывает функцию.Это подчеркивает ошибку в преобразованном myObj.name
со следующим сообщением:
Выражение «имя» типа String
не может быть вызвано как функция.Функция 'invoke ()' не найдена
Переписывание вручную name
в редакторе заставляет intellij обновлять ссылку, и ошибка исчезает.
Что вместо этого следует сделать, чтобы предотвратитьэто случилось?