mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
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.
This commit is contained in:
parent
8c306808c2
commit
af6c20b731
2 changed files with 32 additions and 2 deletions
|
@ -89,7 +89,8 @@
|
||||||
(this
|
(this
|
||||||
(@impl e l get-this '()))
|
(@impl e l get-this '()))
|
||||||
((+ ,a)
|
((+ ,a)
|
||||||
(make-ghil-inline e l 'add (list (comp a e) (make-ghil-quote e l 0))))
|
(make-ghil-inline e l 'add (list (@impl e l ->number (list (comp a e)))
|
||||||
|
(make-ghil-quote e l 0))))
|
||||||
((- ,a)
|
((- ,a)
|
||||||
(make-ghil-inline e l 'sub (list (make-ghil-quote e l 0) (comp a e))))
|
(make-ghil-inline e l 'sub (list (make-ghil-quote e l 0) (comp a e))))
|
||||||
((~ ,a)
|
((~ ,a)
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#:use-module (language ecmascript array)
|
#:use-module (language ecmascript array)
|
||||||
#:re-export (*undefined* *this* call/this*
|
#:re-export (*undefined* *this* call/this*
|
||||||
pget pput pdel has-property?
|
pget pput pdel has-property?
|
||||||
->boolean
|
->boolean ->number
|
||||||
new-object new new-array)
|
new-object new new-array)
|
||||||
#:export (js-init get-this
|
#:export (js-init get-this
|
||||||
typeof
|
typeof
|
||||||
|
@ -110,3 +110,32 @@
|
||||||
|
|
||||||
(define-method (+ a b)
|
(define-method (+ a b)
|
||||||
(+ (->number a) (->number 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 <string>) (b <string>))
|
||||||
|
(string< a b))
|
||||||
|
|
||||||
|
(define-method (<= a b)
|
||||||
|
(<= (->number a) (->number b)))
|
||||||
|
(define-method (<= (a <string>) (b <string>))
|
||||||
|
(string<= a b))
|
||||||
|
|
||||||
|
(define-method (>= a b)
|
||||||
|
(>= (->number a) (->number b)))
|
||||||
|
(define-method (>= (a <string>) (b <string>))
|
||||||
|
(string>= a b))
|
||||||
|
|
||||||
|
(define-method (> a b)
|
||||||
|
(> (->number a) (->number b)))
|
||||||
|
(define-method (> (a <string>) (b <string>))
|
||||||
|
(string> a b))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue