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

문서 검색

명세 6.0

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

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

    진단 TPZ5031

    An extern function signature uses a type outside the deterministic concrete ABI allow-list.

    Diagnostic and cause

    링크

    Unsupported extern ABI type

    계열
    topaz
    단계
    package
    코드
    TPZ5031

    원인과 조건

    Extern ABI signatures admit unit, bool, int, float, string, Bytes, Array<T>, Option<T>, and Result<T,E>, with their type arguments recursively admitted. A free type variable such as T is rejected.

    대응

    Replace the unsupported signature type with an admitted concrete data shape. Keep generic or callable values behind a Topaz wrapper.

    Compiler phase: check/package.

    Compiler explanation: An extern function signature uses a type outside the deterministic concrete ABI allow-list.

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

    Extern ABI signatures admit unit, bool, int, float, string, Bytes, Array<T>, Option<T>, and Result<T,E>, with their type arguments recursively admitted. A free type variable such as T is rejected.

    규칙diagnostics.tpz5031.p5.rule

    Unsupported extern ABI type

    Extern ABI signatures admit unit, bool, int, float, string, Bytes, Array<T>, Option<T>, and Result<T,E>, with their type arguments recursively admitted. A free type variable such as T is rejected.

    Response

    링크

    Replace the unsupported signature type with an admitted concrete data shape. Keep generic or callable values behind a Topaz wrapper.

    Reproduction and verification

    링크

    Rejected program

    링크
    main.tpzRejected program플레이그라운드 열기 →
    1. import host.math { twice }
    2. export function main(args: Array<string>, stdin: string) -> Result<int, string> {
    3. Ok(0)
    4. }
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check --language-version 5.21 --compiler self · 대상 제품 5.21.3
    topaz.tomlRejected program플레이그라운드 열기 →
    1. [package]
    2. name = "diagnostic_extern"
    3. version = "0.1.0"
    4. language = "5.21"
    5. entry = "main.tpz"
    6. [extern.host.math]
    7. hash = "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    8. abi_hash = "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    9. [[extern.host.math.functions]]
    10. name = "twice"
    11. params = ["T"]
    12. result = "int"
    13. [extern.host.math.replay]
    14. fixture = "replay/host-math.jsonl"
    15. [extern.host.math.sandbox]
    16. kind = "replay"
    replay/host-math.jsonlRejected program플레이그라운드 열기 →
    1. {"module":"host.math","function":"twice","args":[{"$":"int","value":"21"}],"result":{"$":"int","value":"42"}}
    기대 결과

    기대 결과

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

    필수 기본 위치 계약은 미정입니다.

    The ABI rejection rule and the missing diagnostic-code path are established by source. The current PackageError has no coded diagnostic or source-span producer, so an exact primary location for TPZ5031 cannot be derived and remains Pending. This complete package fixture uses invocationArgs without a positional source file.

    Repaired program

    링크
    main.tpzRepaired program플레이그라운드 열기 →
    1. import host.math { twice }
    2. export function main(args: Array<string>, stdin: string) -> Result<int, string> {
    3. Ok(0)
    4. }
    기대 출력종료 코드 0
    $ topaz check --language-version 5.21 --compiler self · 대상 제품 5.21.3
    topaz.tomlRepaired program플레이그라운드 열기 →
    1. [package]
    2. name = "diagnostic_extern"
    3. version = "0.1.0"
    4. language = "5.21"
    5. entry = "main.tpz"
    6. [extern.host.math]
    7. hash = "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    8. abi_hash = "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    9. [[extern.host.math.functions]]
    10. name = "twice"
    11. params = ["int"]
    12. result = "int"
    13. [extern.host.math.replay]
    14. fixture = "replay/host-math.jsonl"
    15. [extern.host.math.sandbox]
    16. kind = "replay"
    replay/host-math.jsonlRepaired program플레이그라운드 열기 →
    1. {"module":"host.math","function":"twice","args":[{"$":"int","value":"21"}],"result":{"$":"int","value":"42"}}
    기대 결과

    기대 결과

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

    The ABI rejection rule and the missing diagnostic-code path are established by source. The current PackageError has no coded diagnostic or source-span producer, so an exact primary location for TPZ5031 cannot be derived and remains Pending. This complete package fixture uses invocationArgs without a positional source file.

    메뉴

    다운로드 →