E205: Given Search Priority Warning
E205: Given Search Priority Warning
이 경고는 암시적 검색 알고리즘이 Scala 3.7 규칙에서 Scala 3.6 규칙과 다른 given 인스턴스를 선택할 때 발생해요. given 인스턴스 해석의 동작 변화를 알려 주는 마이그레이션 경고예요.
본문
Scala 3.7에서는 given 검색 우선순위 규칙이 정제되었어요. 같은 타입에 여러 given 인스턴스가 사용 가능할 때, 특히 타입 특이성(type specificity)을 평가하는 방식에서 선택 알고리즘이 Scala 3.6과 다르게 결정할 수 있어요.
예시 (Example)
//> using options -source:3.6
trait A
trait B extends A
given b: B = ???
given a: A = ???
def example = summon[A]
에러 (Error)
-- [E205] Potential Issue Warning: example.scala:8:23 --------------------------
8 |def example = summon[A]
| ^
| Given search preference for A between alternatives
| (b : B)
| and
| (a : A)
| will change in the future release.
| Current choice : the first alternative
| Choice from Scala 3.7 : the second alternative
|
| Suppress this warning by choosing -source 3.5, -source 3.7, or
| by using @annotation.nowarn("id=205")
해결 방법 (Solution)
모호성을 피하려면 원하는 given 인스턴스를 명시적으로 참조해요.
//> using options -source:3.6
trait A
trait B extends A
given b: B = ???
given a: A = ???
def example: A = a
대안으로 다음과 같이 경고를 억제할 수 있어요.
-source 3.5를 사용해 옛 동작을 유지하기-source 3.7을 사용해 새 동작을 사용하기@annotation.nowarn("id=205")를 추가해 경고를 지역적으로 억제하기