diff --git a/core/compile.c b/core/compile.c index dca3ccb1..d68f625d 100644 --- a/core/compile.c +++ b/core/compile.c @@ -574,7 +574,7 @@ static Slot compile_assign(GstCompiler *c, FormOptions opts, GstValue left, GstV GstValue lit = gst_wrap_nil(); GstScope *scope = c->tail; GstBuffer *buffer = c->buffer; - FormOptions subOpts; + FormOptions subOpts = form_options_default(); uint16_t target = 0; uint16_t level = 0; uint16_t flags = 0; @@ -1064,15 +1064,7 @@ static SpecialFormHelper get_special(const GstValue *form) { * problems. */ if (gst_string_length(name) == 0) return NULL; - /* One character specials. */ - if (gst_string_length(name) == 1) { - switch(name[0]) { - case ':': return compile_def; - default: - break; - } - } - /* Multi character specials. Mostly control flow. */ + /* Specials */ switch (name[0]) { case 'a': { diff --git a/gsttests/basic.gst b/gsttests/basic.gst index 291b2db4..dd30e08e 100644 --- a/gsttests/basic.gst +++ b/gsttests/basic.gst @@ -1,8 +1,19 @@ -(do -(: assert (fn [x e] (if x x (do (print e) (exit 1))))) +(print "Running basic tests...") +(def assert (fn [x e] (if x (do (write stdout ".") x) (do (print e) (exit 1))))) + (assert (= 10 (+ 1 2 3 4)) "addition") (assert (= -8 (- 1 2 3 4)) "subtraction") (assert (= 24 (* 1 2 3 4)) "multiplication") -(assert (= 0.1 (/ 1.0 10)) "division") -(exit 0) -) +(assert (= 4 (blshift 1 2)) "left shift") +(assert (= 1 (brshift 4 2)) "right shift") + +(var accum 1) +(var count 0) +(while (< count 16) + (varset accum (blshift accum 1)) + (varset count (+ 1 count))) + +(assert (= accum 65536) "loop") + +(print) +(exit 0) \ No newline at end of file