diff options
author | Ian Price <ianprice90@googlemail.com> | 2015-06-24 19:57:28 +0100 |
---|---|---|
committer | Ian Price <ianprice90@googlemail.com> | 2015-06-24 19:57:28 +0100 |
commit | 89029a54f43e7698e7ddb5f72ada4c44ec5a1c68 (patch) | |
tree | e9619428de3e67d425f09541090e806a3ecd6071 /module/language/js-il/compile-javascript.scm | |
parent | b631576f13677e7834a9604ee6b664f0ff2acc06 (diff) | |
download | guile-89029a54f43e7698e7ddb5f72ada4c44ec5a1c68.tar.gz |
Explicitly test for undefined arguments to handle false values like 0
Diffstat (limited to 'module/language/js-il/compile-javascript.scm')
-rw-r--r-- | module/language/js-il/compile-javascript.scm | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/module/language/js-il/compile-javascript.scm b/module/language/js-il/compile-javascript.scm index 2645b4c99..67a34921d 100644 --- a/module/language/js-il/compile-javascript.scm +++ b/module/language/js-il/compile-javascript.scm @@ -104,10 +104,13 @@ (define (bind-opt-args opts num-drop) (map (lambda (opt idx) (make-var (rename-id opt) - (make-binop 'or - (make-refine (make-id "arguments") - (make-const (+ num-drop idx))) - (make-refine *scheme* (make-const "UNDEFINED"))))) + (let ((arg (make-refine (make-id "arguments") + (make-const (+ num-drop idx))))) + (make-ternary (make-binop '=== + (make-prefix 'typeof arg) + (make-id "undefined")) + (make-refine *scheme* (make-const "UNDEFINED")) + arg)))) opts (iota (length opts)))) |