scala - 在宏中找不到…的代理

标签 scala compiler-errors macros sbt scalac

我一直在追逐以下问题已经有一段时间了,希望有一个比我自己有更多经验的人可以帮助我解决这个问题。

在我的测试用例中,确切的错误如下:

java.lang.IllegalArgumentException: Could not find proxy for val user: specs.BasicSpec#User in List(value user, method applyOrElse, , method $anonfun$new$97, value fiveLetterNames, method $anonfun$new$90, method $anonfun$new$20, value , class BasicSpec, package specs, package ) (currentOwner= value fiveLetterNames )



该测试可以在这里找到:

https://github.com/outr/reactify/blob/master/shared/src/test/scala/specs/BasicSpec.scala#L227

这是令人反感的宏:

https://github.com/outr/reactify/blob/master/shared/src/main/scala/com/outr/reactify/Macros.scala#L72

没有错误的更多信息,我无所适从。非常感谢您的协助。

最佳答案

我的项目中有同样的问题。解决方案是不要在宏中多次使用同一“lambda” *。

“lambda”如下:

def macroSample[A, B](c: blackbox.Context)
                     (lambda: c.Expr[A => B] /* <- lambda */) = { ... }

ps。实际上我现在看不到您的原始代码。在我的情况下这是一个解决方案

关于scala - 在宏中找不到…的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334608/

相关文章:

java - Android 无法解析构造函数 Intent

Java 错误 - 需要数组,但找到了 java.lang.String

c++ - 将由 header 和 cpp 文件组成的源文件“编译”为一个巨大的 cpp 文件

java - 在 scala 中处理 csv

scala - 使 HTTP API 服务器与 Future 异步,如何使其成为非阻塞的?

scala - 在hadoop集群上安装Spark集群

c - 如何使用 C 中的宏计算表达式的一部分?

scala - 为什么当只有一个改变时,sbt 会解析所有依赖项?

ruby-on-rails - 编译错误,意外的 kENSURE,预计 Rails 3 项目中出现 $end 错误

scala - 是否可以推迟宏扩展,直到抽象类型绑定(bind)到特定类型