gpt4 book ai didi

scala - 在 Scala 编译器插件中创建新的 *package*

转载 作者:行者123 更新时间:2023-12-04 08:50:17 24 4
gpt4 key购买 nike

为了在 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(...)))

最佳答案

我认为我对你的另一个问题的回答也应该回答这个问题:

How to add a new Class in a Scala Compiler Plugin?

关于scala - 在 Scala 编译器插件中创建新的 *package*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com