我有一个表示包、对象和类的符号列表,并希望在宏上下文中导入它们。
对于包和对象,这意味着通配符导入,而对于类,这意味着“标准”导入。
给定由和List[Symbol]
组成的some.package
,我将如何正确导入它们以及如何决定是否需要使用“标准”或通配符导入?some.Class
some.Object
我目前的做法是这样的:
def importPackageOrModuleOrClass(sym: Symbol): Import =
if (sym.isPackage || sym.isModule) // e. g. import scala._, scala.Predef
gen.mkWildcardImport(sym)
else // e. g. import java.lang.String
gen.mkImport(sym.enclosingPackage, sym.name, sym.name) // <--- ?????
包/模块导入有效,但类导入不起作用,尽管它看起来正确。