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