パッケージ、オブジェクト、クラスを表すシンボルのリストがあり、それらをマクロコンテキストにインポートしたいと思います。
パッケージとオブジェクトの場合、これはワイルドカードインポートを意味し、クラスの場合、これは「標準」インポートを意味します。
、、およびで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) // <--- ?????
パッケージ/モジュールのインポートは機能しますが、クラスのインポートは正しく見えますが機能しません。