2014-06-17 2 views
3

내가 가지고 스칼라 다음과 같은 오류 컴파일 원인이 다음과 같은 시험을"합성 트리에 비 합성 트리가 들어 있습니다"와 함께 스칼라 컴파일러 오류가 발생하는 이유는 무엇입니까?

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") 
} 

:

RangePositions$ValidateException: Synthetic tree [1889] contains nonsynthetic tree [1874]

누구나 문제의 원인을 알고 있습니까?

답변

3

-Yrangepos로 컴파일 하시겠습니까? 그렇다면 2.10을 사용하고 있습니다. 컴파일러가 매크로로 수정 한 (아마도) 트리를 확인하는 버그/문제입니다.

+0

예 및 예. 흠, 우리는 어디에서나 매크로를 가지고 있지만 생각하지 않습니다. 관련 버그로 나를 안내 할 수 있습니까? – Yuri

+1

내가 제출 한이 파일이 있습니다. https://issues.scala-lang.org/browse/SI-8596. 버그와 같은 것이 아닌 다른 것이 있지만, -Yrangepos를 사용하면 나무를 검증 할 것입니다. 비 합성 트리를 합성에 삽입하면 그 오류가 발생합니다. 그리고 매크로를 사용하면 많은 제 3 자 라이브러리가 매크로를 사용할 수 있습니다. 예를 들어, casbah, scala logging 등등. – monkjack

0

라인에 coverageHighlighting := false을 추가하면 문제가 해결됩니다. Reference. 기본적으로 강조 표시 기능이 해제됩니다 (Scoverage).