Обнаружение расширения макросов в Scala AST

У меня есть плагин компилятора, который работает после фазы ввода текста. Плагин должен игнорировать любой код, созданный из макроса. (У меня проблема с позиционированием диапазона, и я думаю, что самое простое решение - просто игнорировать код макроса, мне все равно не нужно обрабатывать его в моем плагине).

Итак, что я хотел бы сделать, так это определить, был ли какой-то код расширен макросом. Это возможно? Где-то на дереве спрятан флаг?

Или, в качестве альтернативы, я был бы доволен возможностью на предыдущем этапе определить, будет ли какой-то код расширен макросом, а затем я мог бы аннотировать его, чтобы я мог обнаружить позже.


person sksamuel    schedule 14.05.2014    source источник


Ответы (2)


Существует MacroExpansionAttachment.

Пример использования , насколько я помню.

person som-snytt    schedule 14.05.2014

Пока я жду лучшего решения, мой текущий обходной путь - обнаружить любые деревья, у которых нет позиции диапазона (у меня включен Yrangepos). Это обнаруживает сгенерированный код, включая макросы.

person sksamuel    schedule 14.05.2014