Skip to documentation
SLOP

tiny.choir.composition.module.verification.call

Reference tiny.choir composition module verification call

Defined in composition.module.verification.

API (1)

Actions

Public operations.

No direct callersNo direct callscomposition.module.verificationcall
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallsNo direct callerscomposition.modulefragmentcomposition.module.verification.callverifySpec
Static calls · unresolved targets: 0 · external targets: 5.

Source: lib/choir/src/composition/module/verification/call.zig

zig
const std = @import("std");const composition = @import("../../root.zig");const model = @import("../root.zig");const verification = @import("root.zig");const abi = composition.abi;const source = composition.source;pub fn verifySpec(module: *const model.CompositionModule, spec: model.CallSiteSpec) verification.Error!void {    const resource_count = std.math.add(usize, spec.inputs.len, spec.outputs.len) catch return error.TooManyResources;    if (resource_count > abi.max_resources) return error.TooManyResources;    const caller = module.fragment(spec.caller) orelse return error.MissingFragment;    const callee = module.fragment(spec.callee) orelse return error.MissingFragment;    const semantic = module.source_module.callSite(spec.id) orelse return error.MissingSemanticCallSite;    if (caller.partition.value != semantic.caller.value or callee.partition.value != semantic.callee.value or        !std.mem.eql(u8, spec.name, semantic.name)) return error.SemanticCallSiteMismatch;    if (!std.mem.eql(u8, spec.provenance.path, semantic.provenance.path) or        !std.mem.eql(u8, spec.provenance.symbol, semantic.provenance.symbol) or        spec.provenance.line != semantic.provenance.line or spec.provenance.column != semantic.provenance.column)    {        return error.SemanticCallSiteMismatch;    }    if (!source.boundaryIdsEqual(spec.inputs, semantic.inputs) or !source.boundaryIdsEqual(spec.outputs, semantic.outputs)) {        return error.BoundaryContractMismatch;    }    const caller_export = caller.exportByName(spec.caller_export) orelse return error.MissingExport;    const runtime_import = caller.importByName(spec.runtime_import) orelse return error.MissingImport;    const callee_export = callee.exportByName(spec.callee_export) orelse return error.MissingExport;    if (runtime_import.kind != .runtime) return error.MissingImport;    if (!std.mem.eql(u8, runtime_import.symbol, abi.invoke_symbol)) return error.RuntimeSymbolMismatch;    if (spec.abi_version != abi.version or caller_export.abi_version != spec.abi_version or        runtime_import.abi_version != spec.abi_version or callee_export.abi_version != spec.abi_version)    {        return error.AbiMismatch;    }}

Source: lib/choir/src/composition/module/verification/root.zig:3

zig
pub const call = @import("call.zig");

Audit

Definitions2
Public names3
Members0
Version26.7.0
Revisiondaab053ee433