From 3f7e34cd7a3ac26af03bd447f1337e248dea07d3 Mon Sep 17 00:00:00 2001 From: John Alanbrook Date: Tue, 10 Feb 2026 06:08:15 -0600 Subject: [PATCH] more useful parse errors --- parse.cm | 30 ++++++++++++++++++++++++++++++ parse.mach | Bin 48815 -> 50120 bytes 2 files changed, 30 insertions(+) diff --git a/parse.cm b/parse.cm index 77fcbe60..da590c27 100644 --- a/parse.cm +++ b/parse.cm @@ -1196,6 +1196,36 @@ var parse = function(tokens, src, filename, tokenizer) { } if (k == "name") { + if (tok.value == "try" || tok.value == "catch" || tok.value == "finally") { + parse_error(start, "'" + tok.value + "' is not supported; use disrupt/disruption instead") + sync_to_statement() + return null + } + if (tok.value == "throw") { + parse_error(start, "'throw' is not supported; use disrupt instead") + sync_to_statement() + return null + } + if (tok.value == "class") { + parse_error(start, "'class' is not supported; use meme()/proto() instead") + sync_to_statement() + return null + } + if (tok.value == "new") { + parse_error(start, "'new' is not supported; use meme()/proto() instead") + sync_to_statement() + return null + } + if (tok.value == "switch" || tok.value == "case") { + parse_error(start, "'" + tok.value + "' is not supported; use if/else instead") + sync_to_statement() + return null + } + if (tok.value == "let" || tok.value == "const") { + parse_error(start, "'" + tok.value + "' is not supported; use var/def instead") + sync_to_statement() + return null + } p1_tok = peek_ahead(1) if (p1_tok.kind == ":") { node = ast_node("label", start) diff --git a/parse.mach b/parse.mach index 71adc62708f661f876dc8f558f394e70a2714f9d..02f25e6f0560ed349e8b3ae76fac9db3bceb20b6 100644 GIT binary patch delta 8448 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 delta 7136 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