macro(match): add golden for type-guard minimal (no Box); script to validate; all pass
This commit is contained in:
7
apps/tests/macro/match/guard_type_basic_min.nyash
Normal file
7
apps/tests/macro/match/guard_type_basic_min.nyash
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
local x = "hello"
|
||||||
|
local r = match x {
|
||||||
|
StringBox(s) if s.length() > 3 => 1
|
||||||
|
_ => 0
|
||||||
|
}
|
||||||
|
print(r)
|
||||||
|
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"kind":"Program","statements":[{"inits":[{"kind":"Literal","value":{"type":"string","value":"hello"}}],"kind":"Local","variables":["x"]},{"inits":[{"kind":"Program","statements":[{"inits":[{"kind":"Variable","name":"x"}],"kind":"Local","variables":["__ny_match_scrutinee_32"]},{"condition":{"arguments":[{"kind":"Literal","value":{"type":"string","value":"StringBox"}}],"kind":"MethodCall","method":"is","object":{"kind":"Variable","name":"__ny_match_scrutinee_32"}},"else":[{"kind":"Literal","value":{"type":"int","value":0}}],"kind":"If","then":[{"inits":[{"arguments":[{"kind":"Literal","value":{"type":"string","value":"StringBox"}}],"kind":"MethodCall","method":"as","object":{"kind":"Variable","name":"__ny_match_scrutinee_32"}}],"kind":"Local","variables":["s"]},{"condition":{"kind":"BinaryOp","left":{"arguments":[],"kind":"MethodCall","method":"length","object":{"kind":"Variable","name":"s"}},"op":">","right":{"kind":"Literal","value":{"type":"int","value":3}}},"else":[{"kind":"Literal","value":{"type":"int","value":0}}],"kind":"If","then":[{"kind":"Literal","value":{"type":"int","value":1}}]}]}]}],"kind":"Local","variables":["r"]},{"expression":{"kind":"Variable","name":"r"},"kind":"Print"}]}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
root=$(cd "$(dirname "$0")"/../../../.. && pwd)
|
||||||
|
bin="$root/target/release/nyash"
|
||||||
|
src="apps/tests/macro/match/guard_type_basic_min.nyash"
|
||||||
|
golden="$root/tools/test/golden/macro/match_guard_type_basic_min.expanded.json"
|
||||||
|
|
||||||
|
if [ ! -x "$bin" ]; then
|
||||||
|
echo "nyash binary not found at $bin; build first (cargo build --release)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export NYASH_MACRO_ENABLE=1
|
||||||
|
|
||||||
|
normalize_json() {
|
||||||
|
python3 -c 'import sys,json; print(json.dumps(json.loads(sys.stdin.read()), sort_keys=True, separators=(",",":")))'
|
||||||
|
}
|
||||||
|
|
||||||
|
out_raw=$("$bin" --dump-expanded-ast-json "$src")
|
||||||
|
out_norm=$(printf '%s' "$out_raw" | normalize_json)
|
||||||
|
gold_norm=$(normalize_json < "$golden")
|
||||||
|
|
||||||
|
if [ "$out_norm" != "$gold_norm" ]; then
|
||||||
|
echo "Golden mismatch (match guard type basic min)" >&2
|
||||||
|
diff -u <(echo "$out_norm") <(echo "$gold_norm") || true
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[OK] golden match guard type basic min matched"
|
||||||
Reference in New Issue
Block a user