如何在Scala中查找给定类型的可用隐式转换

时间:2017-07-18 19:44:02

标签: scala reflection autocomplete

我正在编写一个自动完成程序(即Eclipse或IntelliJ中的代码完成),用于作为Scala子集的特定于域的语言。用户经常使用隐式转换来隐藏Scala的更高级功能,例如选项或Scalaz析取。

我正在寻找一种方法,无论是在编译时还是运行时,都可以获取接收器可用的隐式转换列表(即'val y = x.foo'中的'x')。所以,我有两个具体的问题:

  1. 是否有一些库,根据接收器的类型,可以找到编译器可以用来将该接收器转换为另一种类型的所有隐式转换?*
  2. 如何通过Scala编译器实际识别可用的隐式转换?我不确定在源头找到它的位置;关于编译器如何执行此操作或源代码中的位置的一些文档也将非常有用。
  3. *:正如您可能已经猜到的那样,我计划使用结果列表来获取可以隐式转换给定变量的所有类型的所有可用字段和方法,以便自动完成程序可以将它们全部建议用户。如果有更直接的方法,那也很棒。

0 个答案:

没有答案