【问题标题】:Why does the Scala compiler error with "Synthetic tree contains nonsynthetic tree"?为什么 Scala 编译器会出现“合成树包含非合成树”的错误?
【发布时间】:2014-06-17 16:45:01
【问题描述】:

我有以下测试

test("should create cached thread pool") {
    val globalContextMock: LogContextPropagatingEC = mock[LogContextPropagatingEC]
    val util = new PaymentExecutionContextImpl with ApplicationConfigTest2 {
        override protected lazy val globalExecutionContext = globalContextMock
    }
    val systemContext = util.systemExecutionContext
    assert(!systemContext.eq(globalContextMock), "system execution context should be a new instance, different form global mock")
}

导致Scala编译出现以下错误:

RangePositions$ValidateException:合成树 [1889] 包含非合成树 [1874]

有人知道是什么原因造成的吗?

【问题讨论】:

    标签: scala scala-2.10 scalatest


    【解决方案1】:

    您正在使用 -Yrangepos 进行编译?如果是这样,并且您使用的是 2.10,这是编译器验证(可能)被宏修改的树的错误/问题。

    【讨论】:

    • 是的,是的。嗯,我不认为我们在任何地方都有宏。你能把相关的错误介绍给我吗?
    • 我提交了这个。 issues.scala-lang.org/browse/SI-8596。还有一个不是真正的错误,但如果您启用 -Yrangepos 那么它将验证您的树。如果将非合成树插入合成树,则会出现该错误。宏可以做到这一点,现在很多第三方库都使用宏 - casbah、scala 日志记录等。
    【解决方案2】:

    将行:coverageHighlighting := false 添加到您的 sbt 中应该可以修复它。 Reference. 基本上它会关闭Scoverage的高亮功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多