Как получить расширенный путь к классу аннотируемого Scala класса или объекта в макросе? - PullRequest
0 голосов
/ 06 ноября 2018

Если я написал макрос Scala, который должен быть применен к объекту или классу Scala, возможно ли получить расширенный путь к классу этого аннотированного объекта в макросе? (В конечном итоге я хочу, чтобы макрос записывал его в файл по причинам.)

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

1 Ответ

0 голосов
/ 13 ноября 2018

Ну, не уверен, что это лучший способ, но решение, которое работает для меня, состоит в том, чтобы скомпилировать "пробный" класс, используя квазицитаты, используя контекст:

import c.universe._ val probe = c.typecheck (q "" "{class $$$$ Pr0bE $$$$; ()}" "")

Затем можно запросить владельца этого «зонда», который в моем случае является пакетом, и проследить за владельцами вплоть до «корня», составив из этого пути полный путь к классу аннотируемого и его имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...