File tree Expand file tree Collapse file tree 2 files changed +12
-0
lines changed
Expand file tree Collapse file tree 2 files changed +12
-0
lines changed Original file line number Diff line number Diff line change @@ -320,6 +320,14 @@ impl OwnedJsValue {
320320 } ) ;
321321 }
322322
323+ // numbers between 2^53 -1 and i64::MAX is treated as float in quickjs
324+ if self . is_float ( ) {
325+ let float = self . to_float ( ) ?;
326+ return Ok ( BigInt {
327+ inner : BigIntOrI64 :: Int ( float as i64 ) ,
328+ } ) ;
329+ }
330+
323331 if self . is_short_bigint ( ) {
324332 let int = unsafe { q:: JS_Ext_GetShortBigInt ( self . value ) } ;
325333 return Ok ( BigInt {
Original file line number Diff line number Diff line change @@ -18,6 +18,10 @@ fn test_try_from_owned_js_value() {
1818 let value: Option < i32 > = js_value. try_into ( ) . unwrap ( ) ;
1919 assert_eq ! ( value, Some ( 42 ) ) ;
2020
21+ let js_value: OwnedJsValue = context. eval ( "1754784747637" , false ) . unwrap ( ) ;
22+ let value: Option < u64 > = js_value. try_into ( ) . unwrap ( ) ;
23+ assert_eq ! ( value, Some ( 1754784747637 ) ) ;
24+
2125 let js_value: OwnedJsValue = context. eval ( "true" , false ) . unwrap ( ) ;
2226 let value: bool = js_value. try_into ( ) . unwrap ( ) ;
2327 assert_eq ! ( value, true ) ;
You can’t perform that action at this time.
0 commit comments