From 89029a54f43e7698e7ddb5f72ada4c44ec5a1c68 Mon Sep 17 00:00:00 2001 From: Ian Price Date: Wed, 24 Jun 2015 19:57:28 +0100 Subject: Explicitly test for undefined arguments to handle false values like 0 --- module/language/js-il/compile-javascript.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'module/language/js-il/compile-javascript.scm') 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)))) -- cgit v1.2.3