Xtext: переопределение быстрого исправления для ссылки

Я пытаюсь определить, является ли правая часть присваивания возможным шестнадцатеричным значением, а не другой ссылкой на переменную. так что например

myvariable = 2

a = 4
/* the c reference does not exist therefore the user may mean hex C
add in a quickfix to change to 0xc
*/
b = c
/* The user most probably means a hex number therefore add in a quickfix for
converting it to 0xc1234 */
d = c1234

Таким образом, правая часть может быть либо (a-f), либо (az) (az|0-9|_)+, что фактически является идентификатором. Для этого есть быстрое исправление, когда переменная не существует, в нем говорится «изменить на любую другую существующую переменную». Есть ли способ переопределить это и добавить дополнительную опцию?

РЕДАКТИРОВАТЬ: я продвинулся вперед и сделал свою собственную проверку, которая проверяет в цикле while, есть ли ссылка следующим образом:

try{
    while(variable != null) {
        variable = variable.reference
    }
catch(Exception e) {
   error("No such reference exists",
         ....
   )
}

который выдает исключение при доступе к variable.reference, поскольку переменная имеет значение null. Однако я не могу получить имя ссылки с правой стороны. Например:

c = 1
a = x

Затем при доступе к ссылке x я получаю нулевое значение, и я не знаю, как получить имя «x». Кажется, что xtext уже понял и разрешил ссылки, и я не могу найти способ получить имя ссылки (не когда она разрешена)

Есть ли способ получить ссылку на имя переменной (до ее разрешения)?


person Har    schedule 23.03.2015    source источник


Ответы (1)


взгляните на org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider.getResolutionsForLinkingIssue(Issue)

person Christian Dietrich    schedule 26.03.2015