742bd0b4f9
1. Parser+codegen: bare reassignment `x = expr` inside an if-body
was compiling to three orphan expressions with no store. Now
emits a real assignment.
2. Runtime json_get: dot-path segments that are all digits now
correctly traverse array indices. `json_get(s, "0.field")` works.
3. Runtime HTTP writer: response bodies starting with
`{"__status__":<int>,...}` now set the HTTP status header to
that value and strip the marker from the served body. Existing
404/401/503 paths in product code now produce real status codes
instead of HTTP 200 with the status hidden in the body.
Self-host fixed point holds: gen2 == gen3 byte-identical.
Snapshot tagged at dist/platform/elc.20260502-1231-self-host.
Backlog: bl-c121edda
22 lines
661 B
EmacsLisp
22 lines
661 B
EmacsLisp
// json-array-traversal.el — acceptance test for json_get dot-path with array
|
|
// indices.
|
|
//
|
|
// Before fix: json_get("...", "0.field") would substring-search for a literal
|
|
// key named `"0.field"` and find nothing, returning "".
|
|
//
|
|
// After fix: dot-path segments that are all digits are treated as array
|
|
// indices and the walker descends into the array.
|
|
|
|
fn test_array_traversal() -> String {
|
|
let s: String = "[{\"name\":\"alice\"},{\"name\":\"bob\"}]"
|
|
let a: String = json_get(s, "0.name")
|
|
let b: String = json_get(s, "1.name")
|
|
return a + "," + b
|
|
}
|
|
|
|
fn main() -> Int {
|
|
let r: String = test_array_traversal()
|
|
print(r)
|
|
return 0
|
|
}
|