Use for-each to call c-compile-program

Use for-each instead of map as this guarantees execution order. Which is important since c-compile-program has side-effects.
This commit is contained in:
Justin Ethier 2015-07-09 21:25:59 -04:00
parent 6569106c1a
commit b7c11fc8ed

View file

@ -991,9 +991,20 @@
globals globals
required-libs) required-libs)
(set! *global-syms* (append globals imported-globals)) (set! *global-syms* (append globals imported-globals))
(let ((compiled-program (let ((compiled-program-lst '())
(apply string-append (compiled-program #f))
(map c-compile-program input-program)))) ;; Compile program, using for-each to guarantee execution order,
;; since c-compile-program has side-effects.
(for-each
(lambda (expr)
(set! compiled-program-lst
(cons (c-compile-program expr) compiled-program-lst)))
input-program)
;; Get top-level string
(set! compiled-program
(apply string-append (reverse compiled-program-lst)))
(emit-c-arity-macros 0) (emit-c-arity-macros 0)
(emit "#include \"cyclone.h\"") (emit "#include \"cyclone.h\"")