extension_type_representation_depends_on_itself

extension_type_representation_depends_on_itself

확장 타입(extension type)의 표현 타입(representation type)이 자기 자신에 의존하게 되면 이 진단이 발생해요. 표현 타입이 직접 혹은 간접적으로 자기 자신을 가리키는 순환 관계가 생기지 않도록 잡아 주는 역할을 해요.

출처: extension_type_representation_depends_on_itself

본문

설명

analyzer는 확장 타입의 표현 타입이 자기 자신(확장 타입)에 직접적으로 또는 간접적으로 의존할 때 이 진단을 내보내요.

예시

아래 코드는 확장 타입 A의 표현 타입이 A에 직접 의존하기 때문에 이 진단이 발생해요.

extension type A(A a) {}

다음 두 코드는 확장 타입 A의 표현 타입이 확장 타입 B를 통해 A에 간접적으로 의존하기 때문에 이 진단이 발생해요.

extension type A(B b) {}
extension type B(A a) {}
extension type A(List<B> b) {}
extension type B(List<A> a) {}

흔한 해결 방법

순환 관계에 있는 타입 중 적어도 하나는 다른 표현 타입을 골라서 의존 관계를 없애 주면 돼요.

extension type A(String s) {}

더 알아보기

  • 확장 타입이 자기 자신을 표현 타입으로 쓰면 무한히 커지는 구조가 되어 버려요. 표현 타입은 항상 확장 타입 자신이 아닌 다른 타입으로 지정해 주세요.