E225: Infer Union Warning — 유니언 타입이 추론됐어요

E225: Infer Union Warning — 유니언 타입이 추론됐어요

표현식의 타입이 유니언 타입(union type)으로 추론되면 이 경고가 발생해요. 서로 다른 타입을 가진 두 개 이상의 값에 공통 타입을 찾아야 할 때 컴파일러가 유니언 타입을 추론합니다. 때로는 의도적이기도 한데, 흔히는 호환되지 않는 타입의 값들을 의도치 않게 섞었다는 신호예요.

이 경고는 -Winfer-union 컴파일러 플래그로 켭니다.

출처: Scala 3 Reference

본문

Example

class Pair[A](left: A, right: A)

class Characters:
  def favorite = Pair("1", '2')

"1"(String)과 '2'(Char)가 섞여서 타입 인자가 유니언으로 추론됐어요.

Warning

-- [E225] Type Warning: example.scala:4:17 -------------------------------------
4 |  def favorite = Pair("1", '2')
  |                 ^^^^
  |               A type argument was inferred to be union type String | Char
  |               This may indicate a programming error.

Solution

유니언 타입이 의도적이라면 타입 인자를 명시적으로 지정해 경고를 없앨 수 있어요.

class Pair[A](left: A, right: A)

class Characters:
  def favorite = Pair[String | Char]("1", '2')

유니언이 의도치 않았다면 공통 수퍼타입을 쓰는 게 좋아요.

class Pair[A](left: A, right: A)

class Characters:
  def favorite = Pair[Matchable]("1", '2')

유니언 타입이 예상 밖이었다면 코드의 정확성을 다시 확인해 보세요.

class Pair[A](left: A, right: A)

class Characters:
  def favorite = Pair('1', '2')