From af6c20b731c66397ab3886e162d6b6252d810cbb Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 22 Feb 2009 11:06:13 +0100 Subject: more arithmetic on non-numbers * module/language/ecmascript/compile-ghil.scm (comp): Convert to number on unary +. * module/language/ecmascript/impl.scm: Define -, *, /, <, <=, >=, > operations on non-numbers. --- module/language/ecmascript/impl.scm | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'module/language/ecmascript/impl.scm') diff --git a/module/language/ecmascript/impl.scm b/module/language/ecmascript/impl.scm index 737639fd4..c31c29d73 100644 --- a/module/language/ecmascript/impl.scm +++ b/module/language/ecmascript/impl.scm @@ -26,7 +26,7 @@ #:use-module (language ecmascript array) #:re-export (*undefined* *this* call/this* pget pput pdel has-property? - ->boolean + ->boolean ->number new-object new new-array) #:export (js-init get-this typeof @@ -110,3 +110,32 @@ (define-method (+ a b) (+ (->number a) (->number b))) + +(define-method (- a b) + (- (->number a) (->number b))) + +(define-method (* a b) + (* (->number a) (->number b))) + +(define-method (/ a b) + (/ (->number a) (->number b))) + +(define-method (< a b) + (< (->number a) (->number b))) +(define-method (< (a ) (b )) + (string< a b)) + +(define-method (<= a b) + (<= (->number a) (->number b))) +(define-method (<= (a ) (b )) + (string<= a b)) + +(define-method (>= a b) + (>= (->number a) (->number b))) +(define-method (>= (a ) (b )) + (string>= a b)) + +(define-method (> a b) + (> (->number a) (->number b))) +(define-method (> (a ) (b )) + (string> a b)) -- cgit v1.2.3