Как проверить, действительно ли XFeatureCall ссылается на что-то

Когда я сканирую ast, я хочу проверить, может ли быть разрешен элемент типа XFeatureCall.

Конкретный пример:

val x = 2
val y = x + z

я знаю это

val y = <XFeatureCall> + <XFeatureCall>

Но только XFeatureCall "z" должен давать true (при применении предиката еще не найденного, который я ищу).

Пока не могу найти схему. За исключением того, что каждая неразрешимая переменная удовлетворяет следующему условию:

fc означает XFeatureCall

fc.feature instanceof JvmVoid && !fc.explicitOperationCall

Однако этого недостаточно. Потому что он также видит "System.out.println"

Примечание. Я использую TreeIterator, полученный из корневого элемента AST.

При необходимости я изучу, как это делает XbaseCompiler, но я предпочитаю этого не делать :)


person tgoossens    schedule 16.08.2013    source источник


Ответы (1)


Надлежащей проверкой будет fc.feature.eIsProxy, чтобы проверить, не была ли разрешена функция. Что вы подразумеваете под «Он также видит System.out.println»?

person Sebastian Zarnekow    schedule 16.08.2013