Skip to content

Commit 6184542

Browse files
committed
Add a test case for bridge_id_cast.
1 parent aed6967 commit 6184542

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

clang/test/Analysis/Checkers/WebKit/objc-mock-types.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,20 @@ inline CFTypeRef bridge_cast(NSObject *object)
279279
return (__bridge CFTypeRef)object;
280280
}
281281

282+
inline id bridge_id_cast(CFTypeRef object)
283+
{
284+
return (__bridge id)object;
285+
}
286+
287+
inline RetainPtr<id> bridge_id_cast(RetainPtr<CFTypeRef>&& object)
288+
{
289+
#if __has_feature(objc_arc)
290+
return adoptNS((__bridge_transfer id)object.leakRef());
291+
#else
292+
return adoptNS((__bridge id)object.leakRef());
293+
#endif
294+
}
295+
282296
template <typename ExpectedType>
283297
struct ObjCTypeCastTraits {
284298
public:
@@ -419,6 +433,7 @@ using WTF::adoptCF;
419433
using WTF::retainPtr;
420434
using WTF::downcast;
421435
using WTF::bridge_cast;
436+
using WTF::bridge_id_cast;
422437
using WTF::is_objc;
423438
using WTF::checked_objc_cast;
424439
using WTF::dynamic_objc_cast;

clang/test/Analysis/Checkers/WebKit/unretained-call-args.mm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,11 @@ unsigned ccf(CFTypeRef obj) {
395395
return CFArrayGetCount(checked_cf_cast<CFArrayRef>(obj));
396396
}
397397

398+
void some_function(id);
399+
void idcf(CFTypeRef obj) {
400+
some_function(bridge_id_cast(obj));
401+
}
402+
398403
} // ptr_conversion
399404

400405
@interface TestObject : NSObject

0 commit comments

Comments
 (0)