From 27bd25843e6b4a1bc9a549b64598473037b0d752 Mon Sep 17 00:00:00 2001 From: giles Date: Thu, 23 Apr 2026 23:27:29 +0000 Subject: [PATCH] js-on-sx: tolerate destructuring params in fn decls/exprs (skipped as holes) --- lib/js/parser.sx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/js/parser.sx b/lib/js/parser.sx index 3f593dd3..91e9f3c7 100644 --- a/lib/js/parser.sx +++ b/lib/js/parser.sx @@ -760,6 +760,28 @@ (do (jp-advance! st) (append! params (list (quote js-rest) nm)))))) + ((jp-at? st "punct" "{") + (begin + (jp-skip-balanced st "{" "}") + (append! params "__destruct_param__") + (when + (jp-at? st "op" "=") + (begin (jp-advance! st) (jp-parse-assignment st))) + (cond + ((jp-at? st "punct" ",") + (begin (jp-advance! st) (jp-parse-param-list-loop st params))) + (else nil)))) + ((jp-at? st "punct" "[") + (begin + (jp-skip-balanced st "[" "]") + (append! params "__destruct_param__") + (when + (jp-at? st "op" "=") + (begin (jp-advance! st) (jp-parse-assignment st))) + (cond + ((jp-at? st "punct" ",") + (begin (jp-advance! st) (jp-parse-param-list-loop st params))) + (else nil)))) ((= (get (jp-peek st) :type) "ident") (do (let