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).
105 lines
2.2 KiB
JSON
105 lines
2.2 KiB
JSON
{
|
|
"schema": "ailang/v0",
|
|
"name": "t3_main_prints",
|
|
"imports": [],
|
|
"defs": [
|
|
{
|
|
"kind": "fn",
|
|
"name": "main",
|
|
"type": {
|
|
"k": "fn",
|
|
"params": [],
|
|
"param_modes": [],
|
|
"ret": {
|
|
"k": "con",
|
|
"name": "Unit"
|
|
},
|
|
"ret_mode": "own",
|
|
"effects": [
|
|
"IO"
|
|
]
|
|
},
|
|
"params": [],
|
|
"body": {
|
|
"t": "seq",
|
|
"lhs": {
|
|
"t": "seq",
|
|
"lhs": {
|
|
"t": "do",
|
|
"op": "io/print_str",
|
|
"args": [
|
|
{
|
|
"t": "app",
|
|
"fn": {
|
|
"t": "var",
|
|
"name": "int_to_str"
|
|
},
|
|
"args": [
|
|
{
|
|
"t": "lit",
|
|
"lit": {
|
|
"kind": "int",
|
|
"value": 42
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"rhs": {
|
|
"t": "do",
|
|
"op": "io/print_str",
|
|
"args": [
|
|
{
|
|
"t": "lit",
|
|
"lit": {
|
|
"kind": "str",
|
|
"value": "\n"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"rhs": {
|
|
"t": "seq",
|
|
"lhs": {
|
|
"t": "do",
|
|
"op": "io/print_str",
|
|
"args": [
|
|
{
|
|
"t": "app",
|
|
"fn": {
|
|
"t": "var",
|
|
"name": "int_to_str"
|
|
},
|
|
"args": [
|
|
{
|
|
"t": "lit",
|
|
"lit": {
|
|
"kind": "int",
|
|
"value": 1337
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"rhs": {
|
|
"t": "do",
|
|
"op": "io/print_str",
|
|
"args": [
|
|
{
|
|
"t": "lit",
|
|
"lit": {
|
|
"kind": "str",
|
|
"value": "\n"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|