В моем стремлении создать новый код в плагине компилятора 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(...)))