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

문서 검색

명세 6.0

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

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

    진단 TPZ5021

    A match expression does not cover every known case of the scrutinee type.

    Diagnostic and cause

    링크

    Non-exhaustive match

    계열
    topaz
    단계
    check
    코드
    TPZ5021

    원인과 조건

    TPZ4006 is retired in Topaz 6.0.0. Its code and former meaning, runtime match failure, remain reserved and must not be reused. An incomplete match produces TPZ5021 during checking under match exhaustiveness.

    Every match must satisfy match exhaustiveness during checking. A missing case or a missing final unconditional arm produces TPZ5021 at the match expression.

    대응

    Add arms for the missing cases or an appropriate wildcard arm. Keep error and empty cases explicit when they require different behavior.

    Compiler phase: check.

    Compiler explanation: A match expression does not cover every known case of the scrutinee type.

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

    • non-exhaustive match: missing ⟨value⟩ Source

    A match does not satisfy match exhaustiveness. Closed cases include nested closed payloads. Open input types require a final unguarded wildcard or name pattern. Guarded arms do not establish coverage.

    규칙diagnostics.tpz5021.p5.rule

    Non-exhaustive match

    Every match must satisfy match exhaustiveness during checking. A missing case or a missing final unconditional arm produces TPZ5021 at the match expression.

    이유

    Checking every match removes a separate runtime failure for missing cases. The same diagnostic covers closed cases and open inputs.

    Response

    링크

    Add arms for the missing cases or an appropriate wildcard arm. Keep error and empty cases explicit when they require different behavior.

    Reproduction and verification

    링크

    Rejected program

    링크
    example.tpzRejected program플레이그라운드 열기 →
    1. function classify(value: bool) -> int {
    2. match (value) {
    3. case true => 1
    4. }
    5. }
    6. let result = classify(true)
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check example.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

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

    Repaired program

    링크
    example.tpzRepaired program
    1. function classify(value: bool) -> int {
    2. match (value) {
    3. case true => 1
    4. case false => 0
    5. }
    6. }
    7. let result = classify(true)
    기대 출력종료 코드 0
    $ topaz check example.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

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

    메뉴

    다운로드 →