Browse Source

LibJS: Add Value::is_integer()

Linus Groh 5 years ago
parent
commit
8137f40b73
2 changed files with 2 additions and 2 deletions
  1. 1 2
      Libraries/LibJS/Runtime/NumberConstructor.cpp
  2. 1 0
      Libraries/LibJS/Runtime/Value.h

+ 1 - 2
Libraries/LibJS/Runtime/NumberConstructor.cpp

@@ -84,8 +84,7 @@ Value NumberConstructor::is_finite(Interpreter& interpreter)
 
 Value NumberConstructor::is_integer(Interpreter& interpreter)
 {
-    auto value = interpreter.argument(0);
-    return Value(value.is_number() && (i32)value.as_double() == value.as_double());
+    return Value(interpreter.argument(0).is_integer());
 }
 
 Value NumberConstructor::is_nan(Interpreter& interpreter)

+ 1 - 0
Libraries/LibJS/Runtime/Value.h

@@ -60,6 +60,7 @@ public:
     bool is_infinity() const { return is_number() && __builtin_isinf(as_double()); }
     bool is_positive_zero() const { return is_number() && 1.0 / as_double() == __builtin_huge_val(); }
     bool is_negative_zero() const { return is_number() && 1.0 / as_double() == -__builtin_huge_val(); }
+    bool is_integer() const { return is_finite_number() && (i32)as_double() == as_double(); }
     bool is_finite_number() const
     {
         if (!is_number())