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

문서 검색

명세 6.0

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

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

    진단 TPZ5524

    An exported function exposes a bound on a module-local user protocol.

    Diagnostic and cause

    링크

    TPZ5524

    계열
    topaz
    단계
    check
    코드
    TPZ5524

    원인과 조건

    An exported function or a method signature of an exported protocol may expose built-in protocols and exported user protocols in its bounds. Resolve each bound through its defining protocol identity, including selected aliases and namespace qualification. A private protocol bound is rejected with TPZ5524. Default expressions keep their ordinary lexical environment. This visibility check concerns the public signature.

    대응

    Compiler phase: check/package.

    Compiler explanation: An exported function exposes a bound on a module-local user protocol.

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

    • exported functions cannot expose module-local protocol bound ⟨value⟩ Source

    Public callable bounds may name built-in or exported user protocols. Exposing a private protocol bound is rejected with TPZ5524.

    규칙diagnostics.tpz5524.p5.rule

    Private protocol bound cannot cross a module interface

    Public callable bounds may name built-in or exported user protocols. Exposing a private protocol bound is rejected with TPZ5524.

    Response

    링크

    Export the protocol when it belongs in the public contract, or keep the callable private. Import an exported protocol through the ordinary module boundary.

    Reproduction and verification

    링크

    Rejected program

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

    기대 결과

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

    Repaired program

    링크
    example.tpzRepaired program
    1. protocol Local {
    2. function show(value: Self) -> string
    3. }
    4. function render<T: Local>(value: T) -> string { Local.show(value) }
    기대 출력종료 코드 0
    $ topaz check example.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

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

    메뉴

    다운로드 →