Создать новый * пакет * в плагине компилятора Scala - PullRequest
8 голосов
/ 24 октября 2011

В моем стремлении создать новый код в плагине компилятора Scala я теперь создал рабочие классы.Следующий логический шаг - поместить эти классы в новый, несуществующий пакет.В Java пакет - это, по сути, имя каталога, но в Scala пакет кажется гораздо более сложным.До сих пор я не нашел / не распознал пример, где плагин компилятора создает новый пакет.

На моем текущем уровне понимания, я бы подумал, что мне нужно будет сначала создать символ пакета с:

parentPackage.newPackage(...)
// ...

, а затем создайте дерево для пакета с PackageDef.Но PackageDef не принимает символ в качестве параметра, как можно было бы ожидать, и поиск:

Scala newPackage PackageDef

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

val newPkg = parentPackage.newPackage(NoPosition, newTermName(name))
newPkg.moduleClass.setInfo(new PackageClassInfoType(new Scope,
    newPkg.moduleClass))
newPkg.setInfo(newPkg.moduleClass.tpe)
parentPackage.info.decls.enter(newPkg)
// ...
val newPkgTree = PackageDef(Ident(newPkg.name), List(ClassDef(...)))

1 Ответ

2 голосов
/ 11 февраля 2012

Я думаю, что мой ответ на ваш другой вопрос также должен ответить на этот вопрос:

Как добавить новый класс в плагин компилятора Scala?

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