summaryrefslogtreecommitdiff
path: root/module/language/js-il/compile-javascript.scm
diff options
context:
space:
mode:
authorIan Price <ianprice90@googlemail.com>2015-06-24 19:57:28 +0100
committerIan Price <ianprice90@googlemail.com>2015-06-24 19:57:28 +0100
commit89029a54f43e7698e7ddb5f72ada4c44ec5a1c68 (patch)
treee9619428de3e67d425f09541090e806a3ecd6071 /module/language/js-il/compile-javascript.scm
parentb631576f13677e7834a9604ee6b664f0ff2acc06 (diff)
downloadguile-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.scm11
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))))