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