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.
관련 규칙 · Bounds exposed by public callables →대응
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.
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
링크protocol Local {function show(value: Self) -> string}export function render<T: Local>(value: T) -> string { Local.show(value) }
표준 출력 없음.기대 결과
Repaired program
링크protocol Local {function show(value: Self) -> string}function render<T: Local>(value: T) -> string { Local.show(value) }
기대 결과
기대 결과
검사가 프로그램을 받아들입니다. 종료 코드 0.