Title: [283551] trunk
Revision
283551
Author
[email protected]
Date
2021-10-05 08:53:58 -0700 (Tue, 05 Oct 2021)

Log Message

Follow-up #2: WTF::RetainPtr<> allows assignment of two pointer types that are not assignable
<https://webkit.org/b/230406>
<rdar://problem/83241893>

Unreviewed attempt to fix API tests.

Source/WTF:

* wtf/cocoa/TypeCastsCocoa.h:
(WTF::checked_objc_cast):
- Rename checked_objc_cast<> to checked_objc_castARC<> when
  compiling with ARC enabled.
- Also mark as `inline` function to allow for optimization.

Tools:

* TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm:
(TestWebKitAPI::TEST):
- Revert code back to using objectNS.get() for
  checked_objc_cast<> tests since it always worked.

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (283550 => 283551)


--- trunk/Source/WTF/ChangeLog	2021-10-05 15:21:25 UTC (rev 283550)
+++ trunk/Source/WTF/ChangeLog	2021-10-05 15:53:58 UTC (rev 283551)
@@ -1,3 +1,17 @@
+2021-10-05  David Kilzer  <[email protected]>
+
+        Follow-up #2: WTF::RetainPtr<> allows assignment of two pointer types that are not assignable
+        <https://webkit.org/b/230406>
+        <rdar://problem/83241893>
+
+        Unreviewed attempt to fix API tests.
+
+        * wtf/cocoa/TypeCastsCocoa.h:
+        (WTF::checked_objc_cast):
+        - Rename checked_objc_cast<> to checked_objc_castARC<> when
+          compiling with ARC enabled.
+        - Also mark as `inline` function to allow for optimization.
+
 2021-10-05  Cameron McCormack  <[email protected]>
 
         Enable 2D canvas color space support on Apple platforms

Modified: trunk/Source/WTF/wtf/cocoa/TypeCastsCocoa.h (283550 => 283551)


--- trunk/Source/WTF/wtf/cocoa/TypeCastsCocoa.h	2021-10-05 15:21:25 UTC (rev 283550)
+++ trunk/Source/WTF/wtf/cocoa/TypeCastsCocoa.h	2021-10-05 15:53:58 UTC (rev 283551)
@@ -108,7 +108,13 @@
 
 // Use checked_objc_cast<> instead of dynamic_objc_cast<> when a specific NS type is required.
 
-template<typename T> T* checked_objc_cast(id object)
+// Because ARC enablement is a compile-time choice, and we compile this header
+// both ways, we need a separate copy of our code when ARC is enabled.
+#if __has_feature(objc_arc)
+#define checked_objc_cast checked_objc_castARC
+#endif
+
+template<typename T> inline T* checked_objc_cast(id object)
 {
     if (!object)
         return nullptr;

Modified: trunk/Tools/ChangeLog (283550 => 283551)


--- trunk/Tools/ChangeLog	2021-10-05 15:21:25 UTC (rev 283550)
+++ trunk/Tools/ChangeLog	2021-10-05 15:53:58 UTC (rev 283551)
@@ -1,3 +1,16 @@
+2021-10-05  David Kilzer  <[email protected]>
+
+        Follow-up #2: WTF::RetainPtr<> allows assignment of two pointer types that are not assignable
+        <https://webkit.org/b/230406>
+        <rdar://problem/83241893>
+
+        Unreviewed attempt to fix API tests.
+
+        * TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm:
+        (TestWebKitAPI::TEST):
+        - Revert code back to using objectNS.get() for
+          checked_objc_cast<> tests since it always worked.
+
 2021-10-04  Jonathan Bedard  <[email protected]>
 
         [ews-build.webkit.org] check-patch-relevance can get stuck

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm (283550 => 283551)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm	2021-10-05 15:21:25 UTC (rev 283550)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm	2021-10-05 15:53:58 UTC (rev 283551)
@@ -31,15 +31,6 @@
 #error This tests TypeCastsCocoa.h with ARC disabled.
 #endif
 
-#if !__has_feature(objc_arc) && PLATFORM(IOS_FAMILY_SIMULATOR)
-// FIXME: checked_objc_cast<> on iOS Simulator creates autoreleased objects in these tests under MRR.
-#define TEST_WTF_BEGIN_AUTORELEASEPOOL @autoreleasepool {
-#define TEST_WTF_END_AUTORELEASEPOOL }
-#else
-#define TEST_WTF_BEGIN_AUTORELEASEPOOL
-#define TEST_WTF_END_AUTORELEASEPOOL
-#endif
-
 @interface MyObjectSubtype : NSObject
 @end
 
@@ -123,21 +114,17 @@
     EXPECT_EQ(nil, checked_objc_cast<NSString>(nil));
 
     @autoreleasepool {
-        auto objectNS = adoptNS((id)[[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
+        auto objectNS = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
         auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
-TEST_WTF_BEGIN_AUTORELEASEPOOL
-        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSString>((__bridge id)(CFTypeRef)objectNSPtr));
-        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSObject>((__bridge id)(CFTypeRef)objectNSPtr));
-TEST_WTF_END_AUTORELEASEPOOL
+        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSString>(objectNS.get()));
+        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSObject>(objectNS.get()));
         EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
     }
 
     @autoreleasepool {
-        auto objectNS = adoptNS((NSObject *)[[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
+        auto objectNS = adoptNS<NSObject *>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
         auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
-TEST_WTF_BEGIN_AUTORELEASEPOOL
-        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSString>((__bridge NSObject *)(CFTypeRef)objectNSPtr));
-TEST_WTF_END_AUTORELEASEPOOL
+        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSString>(objectNS.get()));
         EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
     }
 
@@ -144,9 +131,7 @@
     @autoreleasepool {
         auto objectNS = adoptNS([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
         auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
-TEST_WTF_BEGIN_AUTORELEASEPOOL
-        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSObject>((__bridge NSString *)(CFTypeRef)objectNSPtr));
-TEST_WTF_END_AUTORELEASEPOOL
+        EXPECT_EQ(objectNS.get(), checked_objc_cast<NSObject>(objectNS.get()));
         EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
     }
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to