@ -83,16 +83,34 @@ impl JsValue {
// 10. If Type(x) is either String, Number, BigInt, or Symbol and Type(y) is Object, return the result
// 10. If Type(x) is either String, Number, BigInt, or Symbol and Type(y) is Object, return the result
// of the comparison x == ? ToPrimitive(y).
// of the comparison x == ? ToPrimitive(y).
( Self ::Object ( _ ) , _ ) = > {
(
Self ::Object ( _ ) ,
Self ::String ( _ )
| Self ::Rational ( _ )
| Self ::Integer ( _ )
| Self ::BigInt ( _ )
| Self ::Symbol ( _ ) ,
) = > {
let primitive = self . to_primitive ( context , PreferredType ::Default ) ? ;
let primitive = self . to_primitive ( context , PreferredType ::Default ) ? ;
return primitive . equals ( other , context ) ;
return Ok ( primitive
. equals ( other , context )
. expect ( "should not fail according to spec" ) ) ;
}
}
// 11. If Type(x) is Object and Type(y) is either String, Number, BigInt, or Symbol, return the result
// 11. If Type(x) is Object and Type(y) is either String, Number, BigInt, or Symbol, return the result
// of the comparison ? ToPrimitive(x) == y.
// of the comparison ? ToPrimitive(x) == y.
( _ , Self ::Object ( _ ) ) = > {
(
Self ::String ( _ )
| Self ::Rational ( _ )
| Self ::Integer ( _ )
| Self ::BigInt ( _ )
| Self ::Symbol ( _ ) ,
Self ::Object ( _ ) ,
) = > {
let primitive = other . to_primitive ( context , PreferredType ::Default ) ? ;
let primitive = other . to_primitive ( context , PreferredType ::Default ) ? ;
return primitive . equals ( self , context ) ;
return Ok ( primitive
. equals ( self , context )
. expect ( "should not fail according to spec" ) ) ;
}
}
// 12. If Type(x) is BigInt and Type(y) is Number, or if Type(x) is Number and Type(y) is BigInt, then
// 12. If Type(x) is BigInt and Type(y) is Number, or if Type(x) is Number and Type(y) is BigInt, then