본문으로 건너뛰기
토파즈6.0 · 출시 전
다운로드 →

문서 검색

명세 6.0

방향키로 결과를 고르고 Enter를 눌러 여세요.

API 이름, 진단 번호, 규칙 또는 프로젝트 주제를 입력하세요.

    진단 TPZ5520

    A protocol implementation tries to connect a protocol and type that this module does not own.

    Diagnostic and cause

    링크

    Protocol implementation violates the orphan rule

    계열
    topaz
    단계
    check
    코드
    TPZ5520

    원인과 조건

    Implementing the foreign Show protocol for the built-in int type is rejected with TPZ5520. Define a conforming record, enum, or newtype in the implementation's module.

    대응

    Place the implementation with the owning declaration, or define a local nominal wrapper for the external type.

    Compiler phase: check.

    Compiler explanation: A protocol implementation tries to connect a protocol and type that this module does not own.

    Message templates are Pending. The explanation above is not an observed CLI message.

    Observed for the candidate in Topaz 5.21.3. Execution

    • error[TPZ5520]: cannot implement foreign protocol Show for foreign type int (orphan rule §4.2): the protocol or the type must be defined in this module

    Implementing the foreign Show protocol for the built-in int type is rejected with TPZ5520. Define a conforming record, enum, or newtype in the implementation's module.

    규칙diagnostics.tpz5520.p5.rule

    Protocol implementation violates the orphan rule

    Implementing the foreign Show protocol for the built-in int type is rejected with TPZ5520. Define a conforming record, enum, or newtype in the implementation's module.

    Response

    링크

    Place the implementation with the owning declaration, or define a local nominal wrapper for the external type.

    Reproduction and verification

    링크

    Rejected program

    링크
    example.tpzRejected program플레이그라운드 열기 →
    1. impl Show<int> {
    2. function show(self) -> string { "value" }
    3. }
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check example.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    Repaired program

    링크
    example.tpzRepaired program
    1. record Item { value: int }
    2. impl Show<Item> {
    3. function show(value: Item) -> string { "item" }
    4. }
    기대 출력종료 코드 0
    $ topaz check example.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    검사가 프로그램을 받아들입니다. 종료 코드 0.

    메뉴

    다운로드 →