29625e7262
The cma authoring-form harness corpus had gone dead against the language as it evolved since May. The plan modelled it as merely schema-dead (missing param_modes/ret_mode); it was also drift-dead in the example BODIES. Fixed in place, with `ail check` + both test suites as the oracle: - Schema: param_modes/ret_mode completed on every fn type; existing borrow annotations preserved (data_with_match's borrow over List). - Symbol drift: `<`/`==` -> `lt`/`eq` (operator-routing); the removed `io/print_int` op -> print_str(int_to_str n) followed by a newline print, preserving the trailing newline the references' expected_stdout needs. - Ownership/ADT restructures: data_simple's reuse-as now wraps the source in a match arm (ctor must be statically visible); data_with_match's count_via_letrec + local go switched borrow->own (consume-while-borrowed under the tightened ownership analysis; head_or_zero still exercises borrow over the boxed List). - param_modes_all rewritten to own (Int) + borrow over a boxed ADT -- (borrow Int) is now a borrow-over-value error. - Two new author-facing examples (loop_sum: Loop/Recur; new_rawbuf: New) cover the Term variants that landed since May. - spec_completeness.rs: drop the deleted ParamMode::Implicit; cover Loop/Recur/New; allowlist the non-authorable Term::Intrinsic out. - spec.md section 4 rewritten to own/borrow (mandatory, no implicit) with the borrow-over-value rule; rendered/ regenerated. - mock_full_run fixture's t3 turn-2 program migrated so the harness score assertions hold; usage fields untouched. Both render/ and harness/ cargo test suites green in mock mode; no live IONOS call. Run the harness budget/reference tests with AIL_BIN pointing at target/debug/ail (ail is not on PATH in the test env).
53 lines
1.3 KiB
JSON
53 lines
1.3 KiB
JSON
{
|
|
"schema": "ailang/v0",
|
|
"name": "bool_str",
|
|
"imports": [],
|
|
"defs": [
|
|
{
|
|
"kind": "fn",
|
|
"name": "is_true",
|
|
"doc": "Trivial Bool literal. Exercises Literal::Bool.",
|
|
"type": {
|
|
"k": "fn",
|
|
"params": [],
|
|
"param_modes": [],
|
|
"ret": { "k": "con", "name": "Bool" },
|
|
"ret_mode": "own",
|
|
"effects": []
|
|
},
|
|
"params": [],
|
|
"body": { "t": "lit", "lit": { "kind": "bool", "value": true } }
|
|
},
|
|
{
|
|
"kind": "fn",
|
|
"name": "greeting",
|
|
"doc": "Trivial Str literal. Exercises Literal::Str.",
|
|
"type": {
|
|
"k": "fn",
|
|
"params": [],
|
|
"param_modes": [],
|
|
"ret": { "k": "con", "name": "Str" },
|
|
"ret_mode": "own",
|
|
"effects": []
|
|
},
|
|
"params": [],
|
|
"body": { "t": "lit", "lit": { "kind": "str", "value": "hi" } }
|
|
},
|
|
{
|
|
"kind": "fn",
|
|
"name": "unit_value",
|
|
"doc": "Trivial Unit literal — needed so Literal::Unit appears at least once in the corpus.",
|
|
"type": {
|
|
"k": "fn",
|
|
"params": [],
|
|
"param_modes": [],
|
|
"ret": { "k": "con", "name": "Unit" },
|
|
"ret_mode": "own",
|
|
"effects": []
|
|
},
|
|
"params": [],
|
|
"body": { "t": "lit", "lit": { "kind": "unit" } }
|
|
}
|
|
]
|
|
}
|