js-on-sx: NativeError prototype chain + [object Error/Date/Map/Set] brands
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 49s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 49s
This commit is contained in:
@@ -1265,6 +1265,10 @@
|
||||
((contains? (keys v) "__js_string_value__") "[object String]")
|
||||
((contains? (keys v) "__js_number_value__") "[object Number]")
|
||||
((contains? (keys v) "__js_boolean_value__") "[object Boolean]")
|
||||
((contains? (keys v) "__js_error_data__") "[object Error]")
|
||||
((contains? (keys v) "__js_is_date__") "[object Date]")
|
||||
((contains? (keys v) "__map_keys__") "[object Map]")
|
||||
((contains? (keys v) "__set_items__") "[object Set]")
|
||||
((= v (get Number "prototype")) "[object Number]")
|
||||
((= v (get String "prototype")) "[object String]")
|
||||
((= v (get Boolean "prototype")) "[object Boolean]")
|
||||
@@ -3790,6 +3794,8 @@
|
||||
|
||||
(define js-object-freeze (fn (o) o))
|
||||
|
||||
(define __js_ctor_proto__ (dict))
|
||||
|
||||
(define
|
||||
js-object-get-prototype-of
|
||||
(fn
|
||||
@@ -3799,7 +3805,16 @@
|
||||
((js-undefined? o)
|
||||
(error "TypeError: Cannot convert undefined to object"))
|
||||
((dict? o)
|
||||
(if (contains? (keys o) "__proto__") (get o "__proto__") nil))
|
||||
(cond
|
||||
((contains? (keys o) "__proto__") (get o "__proto__"))
|
||||
(else nil)))
|
||||
((js-function? o)
|
||||
(let
|
||||
((id (js-ctor-id o)))
|
||||
(cond
|
||||
((dict-has? __js_ctor_proto__ id)
|
||||
(get __js_ctor_proto__ id))
|
||||
(else nil))))
|
||||
(else nil))))
|
||||
|
||||
(define
|
||||
@@ -5659,6 +5674,34 @@
|
||||
(dict-set! Map "__proto__" (get js-function-global "prototype"))
|
||||
(dict-set! Set "__proto__" (get js-function-global "prototype"))
|
||||
(dict-set! Date "__proto__" (get js-function-global "prototype"))
|
||||
(dict-set! __js_ctor_proto__ (js-ctor-id TypeError) Error)
|
||||
(dict-set! __js_ctor_proto__ (js-ctor-id RangeError) Error)
|
||||
(dict-set! __js_ctor_proto__ (js-ctor-id SyntaxError) Error)
|
||||
(dict-set! __js_ctor_proto__ (js-ctor-id ReferenceError) Error)
|
||||
(dict-set! __js_ctor_proto__ (js-ctor-id URIError) Error)
|
||||
(dict-set! __js_ctor_proto__ (js-ctor-id EvalError) Error)
|
||||
(dict-set! (js-get-ctor-proto TypeError) "__proto__" (js-get-ctor-proto Error))
|
||||
(dict-set! (js-get-ctor-proto RangeError) "__proto__" (js-get-ctor-proto Error))
|
||||
(dict-set! (js-get-ctor-proto SyntaxError) "__proto__" (js-get-ctor-proto Error))
|
||||
(dict-set! (js-get-ctor-proto ReferenceError) "__proto__" (js-get-ctor-proto Error))
|
||||
(dict-set! (js-get-ctor-proto URIError) "__proto__" (js-get-ctor-proto Error))
|
||||
(dict-set! (js-get-ctor-proto EvalError) "__proto__" (js-get-ctor-proto Error))
|
||||
(dict-set! (js-get-ctor-proto Error) "__proto__" (get Object "prototype"))
|
||||
(dict-set! (js-get-ctor-proto Error) "name" "Error")
|
||||
(dict-set! (js-get-ctor-proto Error) "message" "")
|
||||
(dict-set! (js-get-ctor-proto Error) "constructor" Error)
|
||||
(dict-set! (js-get-ctor-proto TypeError) "name" "TypeError")
|
||||
(dict-set! (js-get-ctor-proto TypeError) "constructor" TypeError)
|
||||
(dict-set! (js-get-ctor-proto RangeError) "name" "RangeError")
|
||||
(dict-set! (js-get-ctor-proto RangeError) "constructor" RangeError)
|
||||
(dict-set! (js-get-ctor-proto SyntaxError) "name" "SyntaxError")
|
||||
(dict-set! (js-get-ctor-proto SyntaxError) "constructor" SyntaxError)
|
||||
(dict-set! (js-get-ctor-proto ReferenceError) "name" "ReferenceError")
|
||||
(dict-set! (js-get-ctor-proto ReferenceError) "constructor" ReferenceError)
|
||||
(dict-set! (js-get-ctor-proto URIError) "name" "URIError")
|
||||
(dict-set! (js-get-ctor-proto URIError) "constructor" URIError)
|
||||
(dict-set! (js-get-ctor-proto EvalError) "name" "EvalError")
|
||||
(dict-set! (js-get-ctor-proto EvalError) "constructor" EvalError)
|
||||
(dict-set! (get Array "prototype") "__proto__" (get Object "prototype"))
|
||||
(dict-set! (get Number "prototype") "__proto__" (get Object "prototype"))
|
||||
(dict-set! (get String "prototype") "__proto__" (get Object "prototype"))
|
||||
|
||||
Reference in New Issue
Block a user