hashSet.remove(hashSet.random()) doesn't build
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 Oct 2018 16:27:23 +0000 (16:27 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 Oct 2018 16:27:23 +0000 (16:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=190953

Reviewed by Chris Dumez.

Source/WTF:

* wtf/HashSet.h:

Remove non-const random(). HashSet only returns const iterators (it is immutable via iterator).

* wtf/HashTable.h:
(WTF::HashTable::random const):

Invoke const_iterator() by using static_cast<> instead of trying to do it directly.

Tools:

* TestWebKitAPI/Tests/WTF/HashSet.cpp:
(TestWebKitAPI::TEST):

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

Source/WTF/ChangeLog
Source/WTF/wtf/HashSet.h
Source/WTF/wtf/HashTable.h
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp

index 909af80..5c81074 100644 (file)
@@ -1,3 +1,19 @@
+2018-10-26  Antti Koivisto  <antti@apple.com>
+
+        hashSet.remove(hashSet.random()) doesn't build
+        https://bugs.webkit.org/show_bug.cgi?id=190953
+
+        Reviewed by Chris Dumez.
+
+        * wtf/HashSet.h:
+
+        Remove non-const random(). HashSet only returns const iterators (it is immutable via iterator).
+
+        * wtf/HashTable.h:
+        (WTF::HashTable::random const):
+
+        Invoke const_iterator() by using static_cast<> instead of trying to do it directly.
+
 2018-10-26  Alicia Boya GarcĂ­a  <aboya@igalia.com>
 
         [MSE][WTF][Media] Invalid MediaTime should be falsy
index 70f8820..a78a88c 100644 (file)
@@ -68,8 +68,7 @@ public:
     iterator begin() const;
     iterator end() const;
 
-    iterator random() { return m_impl.random(); }
-    const_iterator random() const { return m_impl.random(); }
+    iterator random() const { return m_impl.random(); }
 
     iterator find(const ValueType&) const;
     bool contains(const ValueType&) const;
index fab69ab..b8fa7c6 100644 (file)
@@ -390,7 +390,7 @@ namespace WTF {
             return it;
         }
 
-        const_iterator random() const { return const_cast<HashTable*>(this)->random().const_iterator(); }
+        const_iterator random() const { return static_cast<const_iterator>(const_cast<HashTable*>(this)->random()); }
 
         unsigned size() const { return m_keyCount; }
         unsigned capacity() const { return m_tableSize; }
index 7d4bff9..f59c258 100644 (file)
@@ -1,3 +1,13 @@
+2018-10-26  Antti Koivisto  <antti@apple.com>
+
+        hashSet.remove(hashSet.random()) doesn't build
+        https://bugs.webkit.org/show_bug.cgi?id=190953
+
+        Reviewed by Chris Dumez.
+
+        * TestWebKitAPI/Tests/WTF/HashSet.cpp:
+        (TestWebKitAPI::TEST):
+
 2018-10-26  Zalan Bujtas  <zalan@apple.com>
 
         [LFC][IFC] Layout floats as part of the inline content
index fff6b08..bd83450 100644 (file)
@@ -457,4 +457,13 @@ TEST(WTF_HashSet, DeletedAddressOfOperator)
     set1.remove(10);
 }
 
+TEST(WTF_HashSet, RemoveRandom)
+{
+    HashSet<unsigned> set1 { 1, 2, 3 };
+    set1.remove(set1.random());
+    set1.remove(set1.random());
+    set1.remove(set1.random());
+    ASSERT_TRUE(set1.isEmpty());
+}
+
 } // namespace TestWebKitAPI