Issue #1058: A read ledger signature drops unbounded type parameters, so path::f[A, B](…) cannot be filled

Open and answer this issue on GitHub.

ready · opened 2026-10-31 · updated 2026-10-31 · 0 comments

Found by the build of type arguments at a path callee (ee22551, 0.0.1321, ADR-grammar-2 D11).

ledger.nika’s spelled_signature keeps no type parameter without a bound (by design per its comment and bounds_in_a_signature). So the checker does not know a library function’s type-parameter list or its order. ADR-330 D9 fills the type parameters in order, so path::f[A, B](…) needs that order. Today a path callee with more than one type parameter is still read as an index (check_core_call_filled, emit_call_path_types take only a signature naming exactly one).

Probe: a pub fn pair[A, B](n: i64) -> String in one package, called as pkg::pair[i64, String](1) from another: refused as an index.

Also found there: a dependency’s function that uses T::name has no copy across packages (model::named(3) fails in rustc, without brackets too).

To build

  1. A read ledger signature keeps every declared type parameter, in order (ledger.nika, the contracts format if needed).
  2. Drop the one-parameter limit in check_core_call_filled / emit_call_path_types; test with pkg::f[A, B](…) in tests/compiler.

Part of #1019 (one type parameter, json::read[Contact], already works).

Back to Open Issues