JsonEncoder wasn't producing valid JSON for `AstExprTable`s. This PR fixes it. The new output looks like ```json { "type": "AstStatBlock", "location": "0,0 - 6,4", "body": [ { "type": "AstStatLocal", "location": "1,8 - 5,9", "vars": [ { "name": "x", "location": "1,14 - 1,15" } ], "values": [ { "type": "AstExprTable", "location": "3,12 - 5,9", "items": [ { "kind": "record", "key": { "type": "AstExprConstantString", "location": "4,12 - 4,15", "value": "foo" }, "value": { "type": "AstExprConstantNumber", "location": "4,18 - 4,21", "value": 123 } } ] } ] } ] } ```
We don't emit type annotations right now for `AstLocal`s in the JSON encoder. This makes it really hard to surface annotations in the Agda implementation. This PR changes it to emit location and type annotations, if present.
Co-authored-by: Rodactor <rodactor@roblox.com>