["%%progn",["def",["qua-function","%deep-equal"],["node:require",["qua-string","deep-equal"]]],["deffexpr","%assert",["expr"],"env",["unless",["eval","expr","env"],["log",["qua-string","assertion failed"]],["log","expr"],["%%panic",["qua-string","assertion failed"]]]],["defun",["qua-function","%expect"],["expected","actual"],["%assert",["%deep-equal","expected","actual"]]],["defstruct","condition-not-signaled","condition-type"],["defun","condition-not-signaled",["condition-type"],["make-instance",["quote","condition-not-signaled"],["qua-keyword","condition-type"],"condition-type"]],["defun","%expect-condition",["condition-type",["qua-function","thunk"]],["block","ok",["handler-bind",[["#any",["lambda",["condition"],["if",["type?","condition","condition-type"],["return-from","ok"],["error",["condition-not-signaled","condition-type"]]]]]],["thunk"]]]],["%assert",["%deep-equal",1,["car",["cons",1,2]]]],["%assert",["%deep-equal",2,["cdr",["cons",1,2]]]],["%assert",["%deep-equal",1,["car",["list",1,2,3]]]],["%assert",["%deep-equal",["list",2,3],["cdr",["list",1,2,3]]]],["%assert",["%deep-equal",1,["car",["list*",1,2,3]]]],["%assert",["%deep-equal",["cons",2,3],["cdr",["list*",1,2,3]]]],["%assert",["symbol?",["quote","foo"]]],["%assert",["symbol?",["qua-keyword","foo"]]],["def","e1",["make-environment"]],["eval",["list",["qua-function","def"],["quote","x"],1],"e1"],["%assert",["%deep-equal",1,["eval",["quote","x"],"e1"]]],["%assert",["%deep-equal","#void",["progn"]]],["%assert",["%deep-equal",1,["progn",1]]],["%assert",["%deep-equal",2,["progn",1,2]]],["def","e2",["make-environment"]],["def",["qua-function","fun2"],["wrap",["vau",["p"],"#ign","p"]]],["eval",["list",["qua-function","def"],["quote","x"],2],"e2"],["eval",["list",["qua-function","def"],["quote",["qua-function","fun2"]],["qua-function","fun2"]],"e2"],["%assert",["%deep-equal",2,["eval",["list",["qua-function","fun2"],["quote","x"]],"e2"]]],["%assert",["%deep-equal",["quote","foo"],["quote","foo"]]],["%assert",["%deep-equal",["quote",["foo","bar"]],["quote",["foo","bar"]]]],["def",["qua-function","lam1"],["lambda",[],10,11,12]],["def",["qua-function","lam2"],["lambda",[]]],["%assert",["%deep-equal",12,["lam1"]]],["%assert",["%deep-equal","#void",["lam2"]]],["defun","lam3",["x"],1,2,3,"x"],["%assert",["%deep-equal",4,["lam3",4]]],["%assert",["%deep-equal",["list",1,2,3],["apply",["qua-function","list"],["list",1,2,3]]]],["%assert",["%deep-equal",["list",1,1,1],["map-list",["lambda",["#ign"],1],["list",1,2,3]]]],["defgeneric","describe-yourself",["self"]],["defmethod","describe-yourself",[["self","number"]],["qua-string","a number"]],["defmethod","describe-yourself",[["self","boolean"]],["qua-string","a boolean"]],["defmethod","describe-yourself",[["self","symbol"]],["qua-string","a symbol"]],["defmethod","describe-yourself",[["self","object"]],["qua-string","any other object"]],["%assert",["%deep-equal",["qua-string","a number"],["describe-yourself",33]]],["%assert",["%deep-equal",["qua-string","a boolean"],["describe-yourself",true]]],["%assert",["%deep-equal",["qua-string","a symbol"],["describe-yourself",["quote","foo"]]]],["%assert",["%deep-equal",["qua-string","any other object"],["describe-yourself",["list",1,2]]]],["defun","fun-with-keywords",[["qua-keyword","x"],"x-param",["qua-keyword","y"],"y-param"],["list","x-param","y-param"]],["%assert",["%deep-equal",["list",2,4],["fun-with-keywords",["qua-keyword","x"],2,["qua-keyword","y"],4]]],["defstruct","my-class"],["defgeneric","my-generic",["self"]],["defmethod","my-generic",[["self","object"]],["qua-string","wow!"]],["def","obj1",["make-instance",["quote","my-class"]]],["%assert",["%deep-equal",["qua-string","wow!"],["my-generic","obj1"]]],["defmethod","my-generic",[["self","my-class"]],["qua-string","wowzers!"]],["%assert",["%deep-equal",["qua-string","wowzers!"],["my-generic","obj1"]]],["defstruct","class-with-slots","x","y"],["def","object-with-slots",["make-instance",["quote","class-with-slots"],["qua-keyword","x"],2,["qua-keyword","y"],4]],["%assert",["%deep-equal",2,["slot-value","object-with-slots",["quote","x"]]]],["%assert",["%deep-equal",4,["slot-value","object-with-slots",["quote","y"]]]],["%assert",["%deep-equal",2,["class-with-slots-x","object-with-slots"]]],["%assert",["%deep-equal",4,["class-with-slots-y","object-with-slots"]]],["%assert",["slot-bound?","object-with-slots",["quote","x"]]],["%assert",["slot-bound?","object-with-slots",["quote","y"]]],["%assert",["not",["slot-bound?","object-with-slots",["quote","z"]]]],["setf",["slot-value","object-with-slots",["quote","x"]],6],["setf",["slot-value","object-with-slots",["quote","y"]],8],["%assert",["%deep-equal",6,["slot-value","object-with-slots",["quote","x"]]]],["%assert",["%deep-equal",8,["slot-value","object-with-slots",["quote","y"]]]],["setf",["class-with-slots-x","object-with-slots"],12],["setf",["class-with-slots-y","object-with-slots"],16],["%assert",["%deep-equal",12,["class-with-slots-x","object-with-slots"]]],["%assert",["%deep-equal",16,["class-with-slots-y","object-with-slots"]]],["let",[["x",1]],["let",[["x",3]],["setq","x",2],["%assert",["%deep-equal",2,"x"]]],["%assert",["%deep-equal",1,"x"]],["let",[],["setq","x",2],["%assert",["%deep-equal",2,"x"]]],["%assert",["%deep-equal",2,"x"]]],["let",[["x","#void"]],["let",[["y","#void"]],["let",[["z","#void"]],["setq",["x","y",".","z"],["list",1,2,3,4]],["%expect",1,"x"],["%expect",2,"y"],["%expect",["quote",[3,4]],"z"]]]],["let",[["foo",1]],["defun","foo",[],"foo"],["%assert",["%deep-equal",["foo"],1]],["def","env",["the-environment"]],["js-set",["qua-function","foo"],["qua-string","qua_setter"],["lambda",["new-val"],["setq","foo","new-val"]]],["setf",["foo"],2],["%assert",["%deep-equal",["foo"],2]]],["let",[["x",12]],["%expect",12,"x"],["setf","x",14],["%expect",14,"x"],["incf","x"],["%expect",15,"x"],["incf","x",2],["%expect",17,"x"],["decf","x"],["%expect",16,"x"],["decf","x",2],["%expect",14,"x"]],["%expect",3,["block","#ign",1,2,3]],["%expect",2,["block","b",1,["return-from","b",2],3]],["%expect","#void",["cond"]],["%expect",1,["cond",[["%deep-equal",1,1],1]]],["%expect","#void",["cond",[false,1]]],["%expect",2,["cond",[false,1],[true,2],[true,3]]],["%expect",true,["and"]],["%expect",true,["and",true]],["%expect",false,["and",false]],["%expect",true,["and",true,true,true]],["%expect",false,["and",true,true,true,false]],["%expect",false,["or"]],["%expect",true,["or",true]],["%expect",false,["or",false]],["%expect",false,["or",false,false,false]],["%expect",true,["or",false,false,false,true]],["%expect","#void",["case",12]],["%expect",1,["case",1,[1,1],[2,2],[3,3]]],["%expect",3,["case",3,[1,1],[2,2],[3,3]]],["%expect","#void",["case",4,[1,1],[2,2],[3,3]]],["%expect",1,["call-with-escape",["lambda",["#ign"],1]]],["%expect",2,["call-with-escape",["lambda",["escape"],1,["return-from","escape",2],3]]],["%expect","#void",["call-with-escape",["lambda",["escape"],1,["return-from","escape"],3]]],["%expect","#void",["block","x"]],["%expect",1,["block","x",1]],["%expect",2,["block","x",1,["return-from","x",2],3]],["%expect","#void",["block","x",1,["return-from","x"],3]],["%expect",1,["unwind-protect",1]],["%expect",1,["unwind-protect",1,2]],["%expect",1,["unwind-protect",1,2,3]],["let",[["cell",false]],["block","exit",["unwind-protect",["return-from","exit"],["setf","cell",true]],["%expect",true,"cell"]]],["%expect","#void",["prog1"]],["%expect",1,["prog1",1,2,3]],["%expect",2,["prog2",1,2,3]],["%expect","#void",["prog2",1]],["%expect",12,["flet",[["bar",[],3],["foo",[],4]],["*",["bar"],["foo"]]]],["%expect",12,["labels",[["bar",["x"],["*","x",["foo"]]],["foo",[],4]],["bar",3]]],["defdynamic","*my-dynamic*",1],["progn",["%expect",1,["dynamic","*my-dynamic*"]],["dynamic-bind",[["*my-dynamic*",2]],["%expect",2,["dynamic","*my-dynamic*"]]],["%expect",1,["dynamic","*my-dynamic*"]]],["progn",["%expect",1,["dynamic","*my-dynamic*"]],["block","exc",["dynamic-bind",[["*my-dynamic*",2]],["%expect",2,["dynamic","*my-dynamic*"]],["return-from","exc"]]],["%expect",1,["dynamic","*my-dynamic*"]]],["let",[["obj",["js-object",["qua-keyword","message"],["qua-string","hello"],["qua-keyword","sent"],["not",true]]]],["%assert",["%deep-equal",["qua-string","hello"],[["js-getter",["qua-string","message"]],"obj"]]],["%assert",["%deep-equal",false,[["js-getter",["qua-string","sent"]],"obj"]]],["%assert",["own-property?","obj",["qua-string","message"]]],["%assert",["own-property?","obj",["qua-string","sent"]]],["%assert",["not",["own-property?","obj",["qua-string","xyz"]]]]],["%assert",["%deep-equal",["qua-string","String"],["%%js-get",["%%js-get",["qua-string","foo"],["qua-string","constructor"]],["qua-string","name"]]]],["%assert",["%deep-equal",["qua-string","String"],[["js-getter",["qua-string","name"]],[["js-getter",["qua-string","constructor"]],["qua-string","foo"]]]]],["%assert",["%deep-equal",["qua-string","foo"],[["js-getter",["qua-string","name"]],["quote","foo"]]]],["%assert",["%deep-equal",["qua-string","variable"],[["js-getter",["qua-string","ns"]],["quote","foo"]]]],["%assert",["%deep-equal",["qua-string","function"],[["js-getter",["qua-string","ns"]],["quote",["qua-function","foo"]]]]],["let",[["obj",["js-object"]]],["setf",[["js-getter",["qua-string","message"]],"obj"],["qua-string","foo"]],["%assert",["%deep-equal",["qua-string","foo"],[["js-getter",["qua-string","message"]],"obj"]]]],["%assert",["%deep-equal",["qua-string","12"],[["js-invoker",["qua-string","toString"]],12]]],["%expect",2,["js-get",["js-array",1,2,3],1]],["%expect",["qua-string","foobar"],["+",["qua-string","foo"],["qua-string","ba"],["qua-string","r"]]],["%expect",1,["+",1]],["%expect",6,["+",2,2,2]],["%expect",3,["*",3]],["%expect",24,["*",4,3,2]],["%expect",-4,["-",4]],["%expect",4,["-",8,2,2]],["%expect",0.25,["/",4]],["%expect",1,["/",12,4,3]],["%assert",["<",1,2,3,4,5]],["%assert",["not",["<",1,2,3,4,5,-1]]],["%assert",[">",5,4,3,2,1]],["%assert",["not",[">",5,4,3,2,1,6]]],["%assert",["===",1,1,1]],["%assert",["not",["===",1,1,1,2]]],["%expect",0,["list-length",["list"]]],["%expect",4,["list-length",["list",1,2,3,4]]],["%expect",3,["list-elt",["list",1,2,3,4],2]],["%expect",["quote",["#void","#void"]],["filter-list",["qua-function","void?"],["quote",[1,"#void",2,"#void"]]]],["%expect",["quote",[1,2,3,4]],["append-lists",["quote",[1,2]],["quote",[3,4]]]],["%assert",["type?",12,"#any"]],["%assert",["type?",["make-instance",["quote","simple-error"]],["quote","object"]]],["%assert",["not",["type?",["make-instance",["quote","object"]],["quote","simple-error"]]]],["%assert",["type?",12,["quote","number"]]],["%assert",["type?",12,["quote","object"]]],["%assert",["eq",["class-of",["class","object"]],["class","structure-class"]]],["flet",[["test-for-each",["coll"],["let",[["sum",0]],["for-each",["lambda",["elt"],["incf","sum","elt"]],"coll"],["%expect",6,"sum"]]]],["test-for-each",["list",1,2,3]],["test-for-each",["js-array",1,2,3]]],["%expect",["list",2,4,6],["map",["lambda",["x"],["*","x",2]],["list",1,2,3]]],["%expect",["js-array",2,4,6],["map",["lambda",["x"],["*","x",2]],["js-array",1,2,3]]],["%expect",[],["map",["lambda",["x"],["*","x",2]],[]]],["%expect",["js-array"],["map",["lambda",["x"],["*","x",2]],["js-array"]]],["%expect",["list",0,1,2,3,4],["subseq",["list",0,1,2,3,4,5],0,5]],["%expect",["js-array",0,1,2,3,4],["subseq",["js-array",0,1,2,3,4,5],0,5]],["%expect",["list",2,3,4,5],["subseq",["list",0,1,2,3,4,5],2]],["%expect",["js-array",2,3,4,5],["subseq",["js-array",0,1,2,3,4,5],2]],["%expect",["list",3,4],["subseq",["list",0,1,2,3,4,5],3,5]],["%expect",["js-array",3,4],["subseq",["js-array",0,1,2,3,4,5],3,5]],["%expect",["list",0,1,2,3],["subseq",["list",0,1,2,3],0,5]],["%expect",["js-array",0,1,2,3],["subseq",["js-array",0,1,2,3],0,5]],["%expect",["list"],["subseq",["list",0,1,2,3],0,0]],["%expect",["js-array"],["subseq",["js-array",0,1,2,3],0,0]],["%expect-condition",["quote","simple-error"],["lambda",[],["subseq",["list",0,1,2,3],1,2]]],["%expect-condition",["quote","simple-error"],["lambda",[],["subseq",["js-array",0,1,2,3],1,2]]],["deffexpr","defclass",["name","#ign","#ign",[["qua-keyword","metaclass"],"metaclass-name"]],"env",["let*",[["class-name",["symbol-name","name"]],["class",["make-class",["find-class","metaclass-name"],"class-name"]]],["eval",["list",["qua-function","def"],["to-type-sym","name"],"class"],"env"]]],["defstruct","my-metaclass"],["defmethod","compute-method",[["class","my-metaclass"],"receiver","message","arguments"],["lambda",["self",".","#ign"],["qua-string","foo!"]]],["defclass","my-class-with-custom-metaclass",[],[],[["qua-keyword","metaclass"],"my-metaclass"]],["defgeneric","my-custom-generic-1",["self"]],["defgeneric","my-custom-generic-2",["self"]],["let",[["obj",["make-instance",["quote","my-class-with-custom-metaclass"]]]],["%expect",["qua-string","foo!"],["my-custom-generic-1","obj"]],["%expect",["qua-string","foo!"],["my-custom-generic-2","obj"]]],["%expect-condition",["quote","condition-not-signaled"],["lambda",[],["%expect-condition",["quote","simple-error"],["progn"]]]],["%expect-condition",["quote","condition-not-signaled"],["lambda",[],["%expect-condition",["quote","condition-not-signaled"],["lambda",[],["%expect-condition",["quote","simple-error"],["simple-error",["qua-string","bla"]]]]]]],["%expect-condition",["quote","restart-not-found"],["lambda",[],["invoke-restart",["quote","foo"]]]],["%expect-condition",["quote","restart-not-found"],["lambda",[],["invoke-restart",12]]],["%expect",3,["block","ok",["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",["+","x","y"]]]]],["the","restart-handler",["find-restart",["quote","foo"]]],["the","void",["find-restart",["quote","bar"]]],["invoke-restart",["quote","foo"],1,2]]]],["%expect",127,["restart-bind",[["make-number-cool",["lambda",["n"],["+","n",100]],["qua-keyword","interactive-function"],["lambda",[],["list",27]]]],["invoke-restart-interactively",["quote","make-number-cool"]]]],["%expect",["quote",[]],["restart-bind",[["restart-with-no-interactive-function",["lambda","args","args"]]],["invoke-restart-interactively",["quote","restart-with-no-interactive-function"]]]],["%expect",1000,["block","ok",["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",["+","x","y"]]]]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",1000]]]],["invoke-restart",["quote","foo"],1,2]]]]],["%expect",1000,["block","ok",["let",[["condition",["make-instance",["quote","simple-error"]]]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",["+","x","y"]]],["qua-keyword","associated-condition"],"condition"]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",1000]]]],["let",[["restart",["find-restart",["quote","foo"],"condition"]]],["invoke-restart","restart",1,2]]]]]]],["%expect",3,["block","ok",["let",[["condition-1",["make-instance",["quote","simple-error"]]],["condition-2",["make-instance",["quote","simple-error"]]]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",["+","x","y"]]],["qua-keyword","associated-condition"],"condition-1"]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",1000]],["qua-keyword","associated-condition"],"condition-2"]],["let",[["restart",["find-restart",["quote","foo"],"condition-1"]]],["invoke-restart","restart",1,2]]]]]]],["%expect",1000,["block","ok",["let",[["condition-1",["make-instance",["quote","simple-error"]]],["condition-2",["make-instance",["quote","simple-error"]]]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",["+","x","y"]]],["qua-keyword","associated-condition"],"condition-1"]],["restart-bind",[["foo",["lambda",["x","y"],["return-from","ok",1000]],["qua-keyword","associated-condition"],"condition-2"]],["let",[["restart",["find-restart",["quote","foo"],"condition-2"]]],["invoke-restart","restart",1,2]]]]]]],["%expect","#void",["typecase",true]],["%expect",2,["typecase",true,["number",1],["boolean",2]]],["%expect",1,["typecase",10,["number",1],["boolean",2]]],["%expect","#void",["typecase",["qua-string","foo"],["number",1],["boolean",2]]],["%expect",["qua-string","default"],["typecase",["quote","whatever"],["#any",["qua-string","default"]]]],["%expect",1,["typecase",["quote","whatever"],["symbol",1],["#any",["qua-string","default"]]]],["%expect",["qua-string","default"],["typecase",["quote","whatever"],["number",1],["#any",["qua-string","default"]]]],["%expect",4,["the","object",["+",2,2]]],["%expect",4,["the","number",["+",2,2]]],["%expect-condition",["quote","type-mismatch-error"],["lambda",[],["the","string",12]]],["log",["qua-string","OK"]]]