Turn testIsInteger assertions into compile-time asserts and move them into HashTraits...
authormrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Jan 2008 11:33:49 +0000 (11:33 +0000)
committermrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Jan 2008 11:33:49 +0000 (11:33 +0000)
Reviewed by Maciej Stachowiak.

* kjs/testkjs.cpp:
* wtf/HashTraits.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29293 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/testkjs.cpp
JavaScriptCore/wtf/HashTraits.h

index bc88e94244a13942858c31bd75a11a1720ff3ca2..bf03a8ffa60724716a5cc46be7c9263a92a7f0e1 100644 (file)
@@ -1,3 +1,13 @@
+2008-01-07  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        Turn testIsInteger assertions into compile-time asserts and move them into HashTraits.h
+        where possible.
+
+        * kjs/testkjs.cpp:
+        * wtf/HashTraits.h:
+
 2008-01-07  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Reviewed by Mark.
index aa87e056d1dfd22d9f6a6837487218d32b9fa7d7..25c807e6658ecb691e7449b5e76b7dbd94e420bb 100644 (file)
@@ -53,7 +53,6 @@
 using namespace KJS;
 using namespace WTF;
 
-static void testIsInteger();
 static bool fillBufferWithContentsOfFile(const UString& fileName, Vector<char>& buffer);
 
 class StopWatch
@@ -117,6 +116,7 @@ class GlobalImp : public JSGlobalObject {
 public:
   virtual UString className() const { return "global"; }
 };
+COMPILE_ASSERT(!IsInteger<GlobalImp>::value, WTF_IsInteger_GlobalImp_false);
 
 class TestFunctionImp : public JSObject {
 public:
@@ -302,8 +302,6 @@ static void parseArguments(int argc, char** argv, Vector<UString>& fileNames, bo
 
 int kjsmain(int argc, char** argv)
 {
-  testIsInteger();
-
   JSLock lock;
   
   bool prettyPrint = false;
@@ -319,32 +317,6 @@ int kjsmain(int argc, char** argv)
   return success ? 0 : 3;
 }
 
-static void testIsInteger()
-{
-  // Unit tests for WTF::IsInteger. Don't have a better place for them now.
-  // FIXME: move these once we create a unit test directory for WTF.
-
-  ASSERT(IsInteger<bool>::value);
-  ASSERT(IsInteger<char>::value);
-  ASSERT(IsInteger<signed char>::value);
-  ASSERT(IsInteger<unsigned char>::value);
-  ASSERT(IsInteger<short>::value);
-  ASSERT(IsInteger<unsigned short>::value);
-  ASSERT(IsInteger<int>::value);
-  ASSERT(IsInteger<unsigned int>::value);
-  ASSERT(IsInteger<long>::value);
-  ASSERT(IsInteger<unsigned long>::value);
-  ASSERT(IsInteger<long long>::value);
-  ASSERT(IsInteger<unsigned long long>::value);
-
-  ASSERT(!IsInteger<char*>::value);
-  ASSERT(!IsInteger<const char* >::value);
-  ASSERT(!IsInteger<volatile char* >::value);
-  ASSERT(!IsInteger<double>::value);
-  ASSERT(!IsInteger<float>::value);
-  ASSERT(!IsInteger<GlobalImp>::value);
-}
-
 static bool fillBufferWithContentsOfFile(const UString& fileName, Vector<char>& buffer)
 {
   FILE* f = fopen(fileName.UTF8String().c_str(), "r");
index 02aeabb66fa16a06874ce516c0f3af6e9af1db99..5f35278d3b5d9f2c61ed8f26469fbbb2d955af3e 100644 (file)
@@ -23,6 +23,7 @@
 #ifndef WTF_HashTraits_h
 #define WTF_HashTraits_h
 
+#include "Assertions.h"
 #include "HashFunctions.h"
 #include <utility>
 #include <limits>
@@ -46,6 +47,25 @@ namespace WTF {
     template<> struct IsInteger<long long>          { static const bool value = true; };
     template<> struct IsInteger<unsigned long long> { static const bool value = true; };
 
+    COMPILE_ASSERT(IsInteger<bool>::value, WTF_IsInteger_bool_true);
+    COMPILE_ASSERT(IsInteger<char>::value, WTF_IsInteger_char_true);
+    COMPILE_ASSERT(IsInteger<signed char>::value, WTF_IsInteger_signed_char_true);
+    COMPILE_ASSERT(IsInteger<unsigned char>::value, WTF_IsInteger_unsigned_char_true);
+    COMPILE_ASSERT(IsInteger<short>::value, WTF_IsInteger_short_true);
+    COMPILE_ASSERT(IsInteger<unsigned short>::value, WTF_IsInteger_unsigned_short_true);
+    COMPILE_ASSERT(IsInteger<int>::value, WTF_IsInteger_int_true);
+    COMPILE_ASSERT(IsInteger<unsigned int>::value, WTF_IsInteger_unsigned_int_true);
+    COMPILE_ASSERT(IsInteger<long>::value, WTF_IsInteger_long_true);
+    COMPILE_ASSERT(IsInteger<unsigned long>::value, WTF_IsInteger_unsigned_long_true);
+    COMPILE_ASSERT(IsInteger<long long>::value, WTF_IsInteger_long_long_true);
+    COMPILE_ASSERT(IsInteger<unsigned long long>::value, WTF_IsInteger_unsigned_long_long_true);
+
+    COMPILE_ASSERT(!IsInteger<char*>::value, WTF_IsInteger_char_pointer_false);
+    COMPILE_ASSERT(!IsInteger<const char* >::value, WTF_IsInteger_const_char_pointer_false);
+    COMPILE_ASSERT(!IsInteger<volatile char* >::value, WTF_IsInteger_volatile_char_pointer__false);
+    COMPILE_ASSERT(!IsInteger<double>::value, WTF_IsInteger_double_false);
+    COMPILE_ASSERT(!IsInteger<float>::value, WTF_IsInteger_float_false);
+
     template<typename T> struct HashTraits;
 
     template<bool isInteger, typename T> struct GenericHashTraitsBase;