aboutsummaryrefslogtreecommitdiff
path: root/editors/vscode/syntaxes/zc.tmLanguage.json
Commit message (Collapse)AuthorAgeFilesLines
* lsp: hold and shared hovers, completion of the keywords, shared variables ↵Gravatar zinc 12 days1-1/+1
| | | | marked in hover and completion; tmLanguage keywords; hold_lsp_test.js
* bounds checking: constant loop bound proof works, plain-op fixed-array ↵Gravatar zinc 13 days1-1/+1
| | | | check, docs (readme, spec 4.15 and friends, server, vscode), conformance and test.sh fixes, todo
* zc: add the defer statementGravatar zinc 13 days1-1/+1
| | | | | | | | | | | | defer expr; and defer { ... } register code that runs when the enclosing block ends: at the end of the block, and at return, break and continue that leave it. the tokens are kept at the defer and compiled again at each exit (block_close, body, kw_return, kw_break, kw_continue), newest first, before the block's variables are released, so the analyzer sees a deferred rt.free(p) as the transfer of p where it runs. names mean what they meant at the defer; values are read when it runs. return, break and continue inside a deferred statement are errors, reported once. works in unchecked code and closures (own base per function context).
* add c-style typedef and a built-in string aliasGravatar zinc 13 days1-1/+1
| | | | | | | | typedef T name; binds name to the type record of T, at the top level or in a function (scoped to its block). string is a built-in alias for char*. A type name straight before , or ) in a parameter list is the parameter's name, so fn f(string) still works. The language server shows typedef T name; on hover and highlights typedef as a keyword.
* embed: tests, editor support and docs; js vm file access; test fixesGravatar zinc 13 days1-1/+1
| | | | | | | | | | | | | | | | | | | | embed declarations get accept and reject fixtures, a run-only image check through zc0, an lsp keyword hover and the grammar keyword. errors point at the declaration and still declare the name, so its uses are not reported again. zc0 tracks byte-string globals and lays embedded arrays out one word per element, the way its own indexing reads them. the command-line javascript vm reaches node's file system for the file syscalls, so include and embed work there; other embedders opt in. the web build is self-contained in build/web with its examples. README, BORROW and BOOTSTRAP-OWNERSHIP describe the new build and ownership rules, and ONBOARD.md is a reading and verification order for the code. the suite passes the map header to mklayout, the wasm fuzz program uses the include format, and lsp drivers scale their deadlines on hosts without the arm64 jit (ZC_TEST_TIMEOUT_SCALE). LLVM_CONFIG selects an llvm with headers for the llvm section.
* aGravatar Moon Flower 2026-10-121-0/+175