E226: Type Parameter Shadows Type — 타입 파라미터가 기존 타입을 가려요

E226: Type Parameter Shadows Type — 타입 파라미터가 기존 타입을 가려요

타입 파라미터가 이미 스코프에 있는 타입을 가리면(shadow) 이 경고가 발생해요. 섀도잉은 코드를 읽기 어렵게 만들고, 참조하려던 타입을 숨길 수도 있어요. 이 경고는 그런 경우를 일찍 잡아줍니다.

이 경고는 -Wshadow:type-parameter-shadow 컴파일러 플래그로 켭니다.

출처: Scala 3 Reference

본문

Example

class Outer:
  trait D
  def parse[D](in: D) = in

parse의 타입 파라미터 DOuter 안의 트레이트 D를 가려요.

Warning

-- [E226] Naming Warning: example.scala:3:12 -----------------------------------
3 |  def parse[D](in: D) = in
  |            ^
  |     Type parameter D for method parse shadows the type defined by trait D
  |-----------------------------------------------------------------------------
  | Explanation (enabled by `-explain`)
  |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  | A type parameter shadows another type that is already in scope.
  | This can lead to confusion and potential errors.
  | Consider renaming the type parameter to avoid the shadowing.
   -----------------------------------------------------------------------------

Solution

기존 타입을 가리지 않도록 타입 파라미터의 이름을 바꾸세요.

class Outer:
  trait D
  def parse[D2](in: D2) = in