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

문서 검색

명세 6.0

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

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

    진단 TPZ5008

    A scope declares the same value name more than once.

    Diagnostic and cause

    링크

    Redeclaration

    계열
    topaz
    단계
    check
    코드
    TPZ5008

    원인과 조건

    A protocol implementation must not define the same method twice. A duplicate method is rejected with TPZ5008 at the later method name.

    대응

    Rename or remove the later duplicate. Use a nested scope when a separate local binding is intended.

    Compiler phase: check/runtime.

    Compiler explanation: A scope declares the same value name more than once.

    Message templates. The marker ⟨value⟩ stands for text computed for the reported program.

    • duplicate concurrent arm ⟨value⟩ Source
    • field ⟨value⟩ is given twice in ⟨value⟩ Source
    • record field ⟨value⟩ is declared twice in ⟨value⟩ Source
    • method ⟨value⟩ is already declared in protocol ⟨value⟩ Source
    • ⟨value⟩ is a builtin protocol and cannot be redeclared Source
    • protocol ⟨value⟩ is already declared Source
    • nominal record pattern field ⟨value⟩ is specified more than once Source
    • ⟨value⟩ is already declared in this scope Source
    • method ⟨value⟩ is implemented twice in impl ⟨value⟩<⟨value⟩> Source
    • method ⟨value⟩ is already defined for ⟨value⟩ Source
    • ⟨value⟩ is already declared in this scope Source
    • ⟨value⟩ is already declared in this scope Source

    Observed for the candidate in Topaz 5.21.3. Execution

    • error[TPZ5008]: method show is implemented twice in impl Show<Item>

    A protocol implementation must not define the same method twice. A duplicate method is rejected with TPZ5008 at the later method name.

    규칙diagnostics.tpz5008.p5.rule

    A protocol implementation defines each method once

    A protocol implementation must not define the same method twice. A duplicate method is rejected with TPZ5008 at the later method name.

    Response

    링크

    Rename or remove the later duplicate. Use a nested scope when a separate local binding is intended.

    Reproduction and verification

    링크

    Rejected program

    링크
    example.tpzRejected program플레이그라운드 열기 →
    1. record Item { value: int }
    2. impl Show<Item> {
    3. function show(value: Item) -> string { "first" }
    4. function show(value: Item) -> string { "second" }
    5. }
    기대 출력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 { "first" }
    4. }
    기대 출력종료 코드 0
    $ topaz check example.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

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

    메뉴

    다운로드 →