From 54b8a8918bb63c98a8f58e823033232243647562 Mon Sep 17 00:00:00 2001 From: zinc Date: Wed, 14 Oct 2026 10:39:47 +0000 Subject: zc: add the defer statement 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). --- editors/vscode/syntaxes/zc.tmLanguage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'editors/vscode/syntaxes/zc.tmLanguage.json') diff --git a/editors/vscode/syntaxes/zc.tmLanguage.json b/editors/vscode/syntaxes/zc.tmLanguage.json index 6f76e03..fab026b 100644 --- a/editors/vscode/syntaxes/zc.tmLanguage.json +++ b/editors/vscode/syntaxes/zc.tmLanguage.json @@ -83,7 +83,7 @@ "patterns": [ { "name": "keyword.control.zc", - "match": "\\b(if|else|while|do|for|switch|case|default|break|continue|return)\\b" + "match": "\\b(if|else|while|do|for|switch|case|default|break|continue|return|defer)\\b" }, { "name": "keyword.declaration.zc", -- cgit v1.2.3