https://github.com/rniwa created https://github.com/llvm/llvm-project/pull/204557
This PR aligns NoUncountedMemberChecker and its variant's warning message with the new warning format in https://github.com/llvm/llvm-project/pull/202724. >From cf95350a0c4edfdb74952620dc0c0290ca78ce28 Mon Sep 17 00:00:00 2001 From: Ryosuke Niwa <[email protected]> Date: Thu, 18 Jun 2026 13:07:30 +0200 Subject: [PATCH] [webkit.NoUncountedMemberChecker] Improve the warning text This PR aligns NoUncountedMemberChecker and its variant's warning message with the new warning format in https://github.com/llvm/llvm-project/pull/202724. --- .../WebKit/RawPtrRefMemberChecker.cpp | 22 ++----- .../Checkers/WebKit/unchecked-members-objc.mm | 4 +- .../Checkers/WebKit/unchecked-members.cpp | 14 ++--- .../Checkers/WebKit/uncounted-members-objc.mm | 4 +- ...nted-members-ref-deref-on-diff-classes.cpp | 2 +- .../Checkers/WebKit/uncounted-members.cpp | 14 ++--- .../Checkers/WebKit/unretained-members-arc.mm | 24 ++++---- .../Checkers/WebKit/unretained-members.mm | 60 +++++++++---------- 8 files changed, 65 insertions(+), 79 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp index 0e23ae34ea212..371b0a6477ac3 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp @@ -40,7 +40,6 @@ class RawPtrRefMemberChecker virtual std::optional<bool> isUnsafePtr(QualType, bool ignoreARC = false) const = 0; virtual const char *typeName() const = 0; - virtual const char *invariant() const = 0; void checkASTDecl(const TranslationUnitDecl *TUD, AnalysisManager &MGR, BugReporter &BRArg) const { @@ -291,8 +290,9 @@ class RawPtrRefMemberChecker } else Os << "Member variable "; printQuotedName(Os, Member); - Os << " in "; + Os << " (of "; printQuotedQualifiedName(Os, ClassCXXRD); + Os << ")"; if (Member->getType().getTypePtrOrNull() == MemberType) Os << " is a "; else @@ -303,7 +303,6 @@ class RawPtrRefMemberChecker printQuotedQualifiedName(Os, Typedef->getDecl()); } else printQuotedQualifiedName(Os, Pointee); - Os << "; " << invariant() << "."; PathDiagnosticLocation BSLoc(Member->getSourceRange().getBegin(), BR->getSourceManager()); @@ -332,11 +331,7 @@ class NoUncountedMemberChecker final : public RawPtrRefMemberChecker { return isUncountedPtr(QT.getCanonicalType()); } - const char *typeName() const final { return "ref-countable type"; } - - const char *invariant() const final { - return "member variables must be Ref, RefPtr, WeakRef, or WeakPtr"; - } + const char *typeName() const final { return "RefPtr capable type"; } }; class NoUncheckedPtrMemberChecker final : public RawPtrRefMemberChecker { @@ -350,11 +345,6 @@ class NoUncheckedPtrMemberChecker final : public RawPtrRefMemberChecker { } const char *typeName() const final { return "CheckedPtr capable type"; } - - const char *invariant() const final { - return "member variables must be a CheckedPtr, CheckedRef, WeakRef, or " - "WeakPtr"; - } }; class NoUnretainedMemberChecker final : public RawPtrRefMemberChecker { @@ -371,11 +361,7 @@ class NoUnretainedMemberChecker final : public RawPtrRefMemberChecker { return RTC->isUnretained(QT, ignoreARC); } - const char *typeName() const final { return "retainable type"; } - - const char *invariant() const final { - return "member variables must be a RetainPtr or OSObjectPtr"; - } + const char *typeName() const final { return "RetainPtr capable type"; } PrintDeclKind printPointer(llvm::raw_svector_ostream &Os, const Type *T) const final { diff --git a/clang/test/Analysis/Checkers/WebKit/unchecked-members-objc.mm b/clang/test/Analysis/Checkers/WebKit/unchecked-members-objc.mm index a9a9a367fb9f4..90ac6fc8ca283 100644 --- a/clang/test/Analysis/Checkers/WebKit/unchecked-members-objc.mm +++ b/clang/test/Analysis/Checkers/WebKit/unchecked-members-objc.mm @@ -14,7 +14,7 @@ - (void)release; @interface SomeObjC : NSObject { CheckedObj* _unchecked1; -// expected-warning@-1{{Instance variable '_unchecked1' in 'SomeObjC' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} +// expected-warning@-1{{Instance variable '_unchecked1' (of 'SomeObjC') is a raw pointer to CheckedPtr capable type 'CheckedObj'}} CheckedPtr<CheckedObj> _counted1; [[clang::suppress]] CheckedObj* _unchecked2; } @@ -23,7 +23,7 @@ - (void)doWork; @implementation SomeObjC { CheckedObj* _unchecked3; -// expected-warning@-1{{Instance variable '_unchecked3' in 'SomeObjC' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} +// expected-warning@-1{{Instance variable '_unchecked3' (of 'SomeObjC') is a raw pointer to CheckedPtr capable type 'CheckedObj'}} CheckedPtr<CheckedObj> _counted2; [[clang::suppress]] CheckedObj* _unchecked4; } diff --git a/clang/test/Analysis/Checkers/WebKit/unchecked-members.cpp b/clang/test/Analysis/Checkers/WebKit/unchecked-members.cpp index 3fe15d88ff312..adc6aacfe528e 100644 --- a/clang/test/Analysis/Checkers/WebKit/unchecked-members.cpp +++ b/clang/test/Analysis/Checkers/WebKit/unchecked-members.cpp @@ -7,9 +7,9 @@ namespace members { struct Foo { private: CheckedObj* a = nullptr; -// expected-warning@-1{{Member variable 'a' in 'members::Foo' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} +// expected-warning@-1{{Member variable 'a' (of 'members::Foo') is a raw pointer to CheckedPtr capable type 'CheckedObj'}} CheckedObj& b; -// expected-warning@-1{{Member variable 'b' in 'members::Foo' is a reference to CheckedPtr capable type 'CheckedObj'}} +// expected-warning@-1{{Member variable 'b' (of 'members::Foo') is a reference to CheckedPtr capable type 'CheckedObj'}} [[clang::suppress]] CheckedObj* a_suppressed = nullptr; @@ -27,7 +27,7 @@ namespace members { template <typename S> struct FooTmpl { S* e; -// expected-warning@-1{{Member variable 'e' in 'members::FooTmpl<CheckedObj>' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} +// expected-warning@-1{{Member variable 'e' (of 'members::FooTmpl<CheckedObj>') is a raw pointer to CheckedPtr capable type 'CheckedObj'}} }; void forceTmplToInstantiate(FooTmpl<CheckedObj>) { } @@ -38,7 +38,7 @@ namespace unions { union Foo { CheckedObj* a; - // expected-warning@-1{{Member variable 'a' in 'unions::Foo' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} + // expected-warning@-1{{Member variable 'a' (of 'unions::Foo') is a raw pointer to CheckedPtr capable type 'CheckedObj'}} CheckedPtr<CheckedObj> c; CheckedRef<CheckedObj> d; }; @@ -46,7 +46,7 @@ namespace unions { template<class T> union FooTmpl { T* a; - // expected-warning@-1{{Member variable 'a' in 'unions::FooTmpl<CheckedObj>' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} + // expected-warning@-1{{Member variable 'a' (of 'unions::FooTmpl<CheckedObj>') is a raw pointer to CheckedPtr capable type 'CheckedObj'}} }; void forceTmplToInstantiate(FooTmpl<CheckedObj>) { } @@ -66,13 +66,13 @@ namespace ptr_to_ptr_to_checked_ptr_capable { struct List { CheckedObj** elements; - // expected-warning@-1{{Member variable 'elements' in 'ptr_to_ptr_to_checked_ptr_capable::List' contains a raw pointer to CheckedPtr capable type 'CheckedObj'}} + // expected-warning@-1{{Member variable 'elements' (of 'ptr_to_ptr_to_checked_ptr_capable::List') contains a raw pointer to CheckedPtr capable type 'CheckedObj'}} }; template <typename T> struct TemplateList { T** elements; - // expected-warning@-1{{Member variable 'elements' in 'ptr_to_ptr_to_checked_ptr_capable::TemplateList<CheckedObj>' contains a raw pointer to CheckedPtr capable type 'CheckedObj'}} + // expected-warning@-1{{Member variable 'elements' (of 'ptr_to_ptr_to_checked_ptr_capable::TemplateList<CheckedObj>') contains a raw pointer to CheckedPtr capable type 'CheckedObj'}} }; TemplateList<CheckedObj> list; diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-members-objc.mm b/clang/test/Analysis/Checkers/WebKit/uncounted-members-objc.mm index 83b08a6841d26..30d54d9949de9 100644 --- a/clang/test/Analysis/Checkers/WebKit/uncounted-members-objc.mm +++ b/clang/test/Analysis/Checkers/WebKit/uncounted-members-objc.mm @@ -14,7 +14,7 @@ - (void)release; @interface SomeObjC : NSObject { RefCountable* _uncounted1; -// expected-warning@-1{{Instance variable '_uncounted1' in 'SomeObjC' is a raw pointer to ref-countable type 'RefCountable'}} +// expected-warning@-1{{Instance variable '_uncounted1' (of 'SomeObjC') is a raw pointer to RefPtr capable type 'RefCountable'}} RefPtr<RefCountable> _counted1; [[clang::suppress]] RefCountable* _uncounted2; } @@ -23,7 +23,7 @@ - (void)doWork; @implementation SomeObjC { RefCountable* _uncounted3; -// expected-warning@-1{{Instance variable '_uncounted3' in 'SomeObjC' is a raw pointer to ref-countable type 'RefCountable'}} +// expected-warning@-1{{Instance variable '_uncounted3' (of 'SomeObjC') is a raw pointer to RefPtr capable type 'RefCountable'}} RefPtr<RefCountable> _counted2; [[clang::suppress]] RefCountable* _uncounted4; } diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-members-ref-deref-on-diff-classes.cpp b/clang/test/Analysis/Checkers/WebKit/uncounted-members-ref-deref-on-diff-classes.cpp index 4198b2388fed8..1b70b5bac85ad 100644 --- a/clang/test/Analysis/Checkers/WebKit/uncounted-members-ref-deref-on-diff-classes.cpp +++ b/clang/test/Analysis/Checkers/WebKit/uncounted-members-ref-deref-on-diff-classes.cpp @@ -19,5 +19,5 @@ class TreeNode : public RefCounted<TreeNode> { private: TreeNode* m_parent; -// expected-warning@-1{{Member variable 'm_parent' in 'TreeNode' is a raw pointer to ref-countable type 'TreeNode'}} +// expected-warning@-1{{Member variable 'm_parent' (of 'TreeNode') is a raw pointer to RefPtr capable type 'TreeNode'}} }; diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp b/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp index b8c443cda4f8e..a0876c6b855b7 100644 --- a/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp +++ b/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp @@ -7,7 +7,7 @@ namespace members { struct Foo { private: RefCountable* a = nullptr; -// expected-warning@-1{{Member variable 'a' in 'members::Foo' is a raw pointer to ref-countable type 'RefCountable'}} +// expected-warning@-1{{Member variable 'a' (of 'members::Foo') is a raw pointer to RefPtr capable type 'RefCountable'}} [[clang::suppress]] RefCountable* a_suppressed = nullptr; @@ -18,14 +18,14 @@ namespace members { public: RefCountable silenceWarningAboutInit; RefCountable& c = silenceWarningAboutInit; -// expected-warning@-1{{Member variable 'c' in 'members::Foo' is a reference to ref-countable type 'RefCountable'}} +// expected-warning@-1{{Member variable 'c' (of 'members::Foo') is a reference to RefPtr capable type 'RefCountable'}} Ref<RefCountable> d; }; template<class T> struct FooTmpl { T* a; -// expected-warning@-1{{Member variable 'a' in 'members::FooTmpl<RefCountable>' is a raw pointer to ref-countable type 'RefCountable'}} +// expected-warning@-1{{Member variable 'a' (of 'members::FooTmpl<RefCountable>') is a raw pointer to RefPtr capable type 'RefCountable'}} }; void forceTmplToInstantiate(FooTmpl<RefCountable>) {} @@ -39,7 +39,7 @@ namespace members { namespace unions { union Foo { RefCountable* a; - // expected-warning@-1{{Member variable 'a' in 'unions::Foo' is a raw pointer to ref-countable type 'RefCountable'}} + // expected-warning@-1{{Member variable 'a' (of 'unions::Foo') is a raw pointer to RefPtr capable type 'RefCountable'}} RefPtr<RefCountable> b; Ref<RefCountable> c; }; @@ -47,7 +47,7 @@ namespace unions { template<class T> union FooTmpl { T* a; - // expected-warning@-1{{Member variable 'a' in 'unions::FooTmpl<RefCountable>' is a raw pointer to ref-countable type 'RefCountable'}} + // expected-warning@-1{{Member variable 'a' (of 'unions::FooTmpl<RefCountable>') is a raw pointer to RefPtr capable type 'RefCountable'}} }; void forceTmplToInstantiate(FooTmpl<RefCountable>) {} @@ -84,13 +84,13 @@ namespace ptr_to_ptr_to_ref_counted { struct List { RefCountable** elements; - // expected-warning@-1{{Member variable 'elements' in 'ptr_to_ptr_to_ref_counted::List' contains a raw pointer to ref-countable type 'RefCountable'}} + // expected-warning@-1{{Member variable 'elements' (of 'ptr_to_ptr_to_ref_counted::List') contains a raw pointer to RefPtr capable type 'RefCountable'}} }; template <typename T> struct TemplateList { T** elements; - // expected-warning@-1{{Member variable 'elements' in 'ptr_to_ptr_to_ref_counted::TemplateList<RefCountable>' contains a raw pointer to ref-countable type 'RefCountable'}} + // expected-warning@-1{{Member variable 'elements' (of 'ptr_to_ptr_to_ref_counted::TemplateList<RefCountable>') contains a raw pointer to RefPtr capable type 'RefCountable'}} }; TemplateList<RefCountable> list; diff --git a/clang/test/Analysis/Checkers/WebKit/unretained-members-arc.mm b/clang/test/Analysis/Checkers/WebKit/unretained-members-arc.mm index 4eef372d26480..6d29e7d4994c5 100644 --- a/clang/test/Analysis/Checkers/WebKit/unretained-members-arc.mm +++ b/clang/test/Analysis/Checkers/WebKit/unretained-members-arc.mm @@ -19,7 +19,7 @@ RetainPtr<SomeObj> d; CFMutableArrayRef e = nullptr; -// expected-warning@-1{{Member variable 'e' in 'members::Foo' is a retainable type 'CFMutableArrayRef'}} +// expected-warning@-1{{Member variable 'e' (of 'members::Foo') is a RetainPtr capable type 'CFMutableArrayRef'}} dispatch_queue_t f = nullptr; }; @@ -27,7 +27,7 @@ union FooUnion { SomeObj* a; CFMutableArrayRef b; - // expected-warning@-1{{Member variable 'b' in 'members::FooUnion' is a retainable type 'CFMutableArrayRef'}} + // expected-warning@-1{{Member variable 'b' (of 'members::FooUnion') is a RetainPtr capable type 'CFMutableArrayRef'}} dispatch_queue_t c; }; @@ -35,7 +35,7 @@ struct FooTmpl { T* x; S y; -// expected-warning@-1{{Member variable 'y' in 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' is a raw pointer to retainable type}} +// expected-warning@-1{{Member variable 'y' (of 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') is a raw pointer to RetainPtr capable type}} R z; }; @@ -52,14 +52,14 @@ void forceTmplToInstantiate(FooTmpl<SomeObj, CFMutableArrayRef, dispatch_queue_t struct List { CFMutableArrayRef* elements2; - // expected-warning@-1{{Member variable 'elements2' in 'ptr_to_ptr_to_retained::List' contains a retainable type 'CFMutableArrayRef'}} + // expected-warning@-1{{Member variable 'elements2' (of 'ptr_to_ptr_to_retained::List') contains a RetainPtr capable type 'CFMutableArrayRef'}} }; template <typename T, typename S, typename R> struct TemplateList { T* elements1; S* elements2; - // expected-warning@-1{{Member variable 'elements2' in 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' contains a raw pointer to retainable type '__CFArray'}} + // expected-warning@-1{{Member variable 'elements2' (of 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') contains a raw pointer to RetainPtr capable type '__CFArray'}} R* elements3; }; TemplateList<SomeObj, CFMutableArrayRef, dispatch_queue_t> list; @@ -75,14 +75,14 @@ void forceTmplToInstantiate(FooTmpl<SomeObj, CFMutableArrayRef, dispatch_queue_t @interface AnotherObject : NSObject { NSString *ns_string; CFStringRef cf_string; - // expected-warning@-1{{Instance variable 'cf_string' in 'AnotherObject' is a retainable type 'CFStringRef'; member variables must be a RetainPtr}} + // expected-warning@-1{{Instance variable 'cf_string' (of 'AnotherObject') is a RetainPtr capable type 'CFStringRef'}} dispatch_queue_t queue; } @property(nonatomic, strong) NSString *prop_string1; @property(nonatomic, assign) NSString *prop_string2; -// expected-warning@-1{{Property 'prop_string2' in 'AnotherObject' is a raw pointer to retainable type 'NSString'; member variables must be a RetainPtr}} +// expected-warning@-1{{Property 'prop_string2' (of 'AnotherObject') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, unsafe_unretained) NSString *prop_string3; -// expected-warning@-1{{Property 'prop_string3' in 'AnotherObject' is a raw pointer to retainable type 'NSString'; member variables must be a RetainPtr}} +// expected-warning@-1{{Property 'prop_string3' (of 'AnotherObject') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, readonly) NSString *prop_string4; @property(nonatomic, readonly) NSString *prop_safe; @end @@ -106,16 +106,16 @@ @interface InterfaceOnlyObject : NSObject @interface NoSynthObject : NSObject { NSString *ns_string; CFStringRef cf_string; - // expected-warning@-1{{Instance variable 'cf_string' in 'NoSynthObject' is a retainable type 'CFStringRef'; member variables must be a RetainPtr}} + // expected-warning@-1{{Instance variable 'cf_string' (of 'NoSynthObject') is a RetainPtr capable type 'CFStringRef'}} } @property(nonatomic, readonly, strong) NSString *prop_string1; @property(nonatomic, readonly, strong) NSString *prop_string2; @property(nonatomic, assign) NSString *prop_string3; -// expected-warning@-1{{Property 'prop_string3' in 'NoSynthObject' is a raw pointer to retainable type 'NSString'; member variables must be a RetainPtr}} +// expected-warning@-1{{Property 'prop_string3' (of 'NoSynthObject') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, unsafe_unretained) NSString *prop_string4; -// expected-warning@-1{{Property 'prop_string4' in 'NoSynthObject' is a raw pointer to retainable type 'NSString'; member variables must be a RetainPtr}} +// expected-warning@-1{{Property 'prop_string4' (of 'NoSynthObject') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, unsafe_unretained) dispatch_queue_t prop_string5; -// expected-warning@-1{{Property 'prop_string5' in 'NoSynthObject' is a retainable type 'dispatch_queue_t'}} +// expected-warning@-1{{Property 'prop_string5' (of 'NoSynthObject') is a RetainPtr capable type 'dispatch_queue_t'}} @end @implementation NoSynthObject diff --git a/clang/test/Analysis/Checkers/WebKit/unretained-members.mm b/clang/test/Analysis/Checkers/WebKit/unretained-members.mm index 2b120b9b1385c..be3055af6eed6 100644 --- a/clang/test/Analysis/Checkers/WebKit/unretained-members.mm +++ b/clang/test/Analysis/Checkers/WebKit/unretained-members.mm @@ -10,9 +10,9 @@ struct Foo { private: SomeObj* a = nullptr; -// expected-warning@-1{{Member variable 'a' in 'members::Foo' is a raw pointer to retainable type}} +// expected-warning@-1{{Member variable 'a' (of 'members::Foo') is a raw pointer to RetainPtr capable type}} dispatch_queue_t a2 = nullptr; -// expected-warning@-1{{Member variable 'a2' in 'members::Foo' is a retainable type 'dispatch_queue_t'}} +// expected-warning@-1{{Member variable 'a2' (of 'members::Foo') is a RetainPtr capable type 'dispatch_queue_t'}} [[clang::suppress]] SomeObj* a_suppressed = nullptr; @@ -26,23 +26,23 @@ public: SomeObj* c = nullptr; -// expected-warning@-1{{Member variable 'c' in 'members::Foo' is a raw pointer to retainable type}} +// expected-warning@-1{{Member variable 'c' (of 'members::Foo') is a raw pointer to RetainPtr capable type}} RetainPtr<SomeObj> d; OSObjectPtr<dispatch_queue_t> d2; CFMutableArrayRef e = nullptr; -// expected-warning@-1{{Member variable 'e' in 'members::Foo' is a retainable type 'CFMutableArrayRef'}} +// expected-warning@-1{{Member variable 'e' (of 'members::Foo') is a RetainPtr capable type 'CFMutableArrayRef'}} }; template<class T, class S, class R> struct FooTmpl { T* a; -// expected-warning@-1{{Member variable 'a' in 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' is a raw pointer to retainable type}} +// expected-warning@-1{{Member variable 'a' (of 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') is a raw pointer to RetainPtr capable type}} S b; -// expected-warning@-1{{Member variable 'b' in 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' is a raw pointer to retainable type}} +// expected-warning@-1{{Member variable 'b' (of 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') is a raw pointer to RetainPtr capable type}} R c; -// expected-warning@-1{{Member variable 'c' in 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' is a raw pointer to retainable type}} +// expected-warning@-1{{Member variable 'c' (of 'members::FooTmpl<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') is a raw pointer to RetainPtr capable type}} }; void forceTmplToInstantiate(FooTmpl<SomeObj, CFMutableArrayRef, dispatch_queue_t>) {} @@ -58,18 +58,18 @@ void forceTmplToInstantiate(FooTmpl<SomeObj, CFMutableArrayRef, dispatch_queue_t namespace unions { union Foo { SomeObj* a; - // expected-warning@-1{{Member variable 'a' in 'unions::Foo' is a raw pointer to retainable type 'SomeObj'}} + // expected-warning@-1{{Member variable 'a' (of 'unions::Foo') is a raw pointer to RetainPtr capable type 'SomeObj'}} RetainPtr<SomeObj> b; CFMutableArrayRef c; - // expected-warning@-1{{Member variable 'c' in 'unions::Foo' is a retainable type 'CFMutableArrayRef'}} + // expected-warning@-1{{Member variable 'c' (of 'unions::Foo') is a RetainPtr capable type 'CFMutableArrayRef'}} dispatch_queue_t d; - // expected-warning@-1{{Member variable 'd' in 'unions::Foo' is a retainable type 'dispatch_queue_t'}} + // expected-warning@-1{{Member variable 'd' (of 'unions::Foo') is a RetainPtr capable type 'dispatch_queue_t'}} }; template<class T> union FooTempl { T* a; - // expected-warning@-1{{Member variable 'a' in 'unions::FooTempl<SomeObj>' is a raw pointer to retainable type 'SomeObj'}} + // expected-warning@-1{{Member variable 'a' (of 'unions::FooTempl<SomeObj>') is a raw pointer to RetainPtr capable type 'SomeObj'}} }; void forceTmplToInstantiate(FooTempl<SomeObj>) {} @@ -79,21 +79,21 @@ void forceTmplToInstantiate(FooTempl<SomeObj>) {} struct List { SomeObj** elements1; - // expected-warning@-1{{Member variable 'elements1' in 'ptr_to_ptr_to_retained::List' contains a raw pointer to retainable type 'SomeObj'}} + // expected-warning@-1{{Member variable 'elements1' (of 'ptr_to_ptr_to_retained::List') contains a raw pointer to RetainPtr capable type 'SomeObj'}} CFMutableArrayRef* elements2; - // expected-warning@-1{{Member variable 'elements2' in 'ptr_to_ptr_to_retained::List' contains a retainable type 'CFMutableArrayRef'}} + // expected-warning@-1{{Member variable 'elements2' (of 'ptr_to_ptr_to_retained::List') contains a RetainPtr capable type 'CFMutableArrayRef'}} dispatch_queue_t* elements3; - // expected-warning@-1{{Member variable 'elements3' in 'ptr_to_ptr_to_retained::List' contains a retainable type 'dispatch_queue_t'}} + // expected-warning@-1{{Member variable 'elements3' (of 'ptr_to_ptr_to_retained::List') contains a RetainPtr capable type 'dispatch_queue_t'}} }; template <typename T, typename S, typename R> struct TemplateList { T** elements1; - // expected-warning@-1{{Member variable 'elements1' in 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' contains a raw pointer to retainable type 'SomeObj'}} + // expected-warning@-1{{Member variable 'elements1' (of 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') contains a raw pointer to RetainPtr capable type 'SomeObj'}} S* elements2; - // expected-warning@-1{{Member variable 'elements2' in 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' contains a raw pointer to retainable type '__CFArray'}} + // expected-warning@-1{{Member variable 'elements2' (of 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') contains a raw pointer to RetainPtr capable type '__CFArray'}} R* elements3; - // expected-warning@-1{{Member variable 'elements3' in 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>' contains a raw pointer to retainable type 'NSObject'}} + // expected-warning@-1{{Member variable 'elements3' (of 'ptr_to_ptr_to_retained::TemplateList<SomeObj, __CFArray *, NSObject<OS_dispatch_queue> *>') contains a raw pointer to RetainPtr capable type 'NSObject'}} }; TemplateList<SomeObj, CFMutableArrayRef, dispatch_queue_t> list; @@ -106,11 +106,11 @@ void forceTmplToInstantiate(FooTempl<SomeObj>) {} @interface AnotherObject : NSObject { NSString *ns_string; - // expected-warning@-1{{Instance variable 'ns_string' in 'AnotherObject' is a raw pointer to retainable type 'NSString'}} + // expected-warning@-1{{Instance variable 'ns_string' (of 'AnotherObject') is a raw pointer to RetainPtr capable type 'NSString'}} CFStringRef cf_string; - // expected-warning@-1{{Instance variable 'cf_string' in 'AnotherObject' is a retainable type 'CFStringRef'}} + // expected-warning@-1{{Instance variable 'cf_string' (of 'AnotherObject') is a RetainPtr capable type 'CFStringRef'}} dispatch_queue_t dispatch; - // expected-warning@-1{{Instance variable 'dispatch' in 'AnotherObject' is a retainable type 'dispatch_queue_t'}} + // expected-warning@-1{{Instance variable 'dispatch' (of 'AnotherObject') is a RetainPtr capable type 'dispatch_queue_t'}} } @property(nonatomic, readonly, strong) NSString *prop_string; @property(nonatomic, readonly) NSString *prop_safe; @@ -124,11 +124,11 @@ - (NSString *)prop_safe { @interface DerivedObject : AnotherObject { NSNumber *ns_number; - // expected-warning@-1{{Instance variable 'ns_number' in 'DerivedObject' is a raw pointer to retainable type 'NSNumber'}} + // expected-warning@-1{{Instance variable 'ns_number' (of 'DerivedObject') is a raw pointer to RetainPtr capable type 'NSNumber'}} CGImageRef cg_image; - // expected-warning@-1{{Instance variable 'cg_image' in 'DerivedObject' is a retainable type 'CGImageRef'}} + // expected-warning@-1{{Instance variable 'cg_image' (of 'DerivedObject') is a RetainPtr capable type 'CGImageRef'}} dispatch_queue_t os_dispatch; - // expected-warning@-1{{Instance variable 'os_dispatch' in 'DerivedObject' is a retainable type 'dispatch_queue_t'}} + // expected-warning@-1{{Instance variable 'os_dispatch' (of 'DerivedObject') is a RetainPtr capable type 'dispatch_queue_t'}} } @property(nonatomic, strong) NSNumber *prop_number; @property(nonatomic, readonly) NSString *prop_string; @@ -152,13 +152,13 @@ @interface InterfaceOnlyObject2 : NSObject @property(nonatomic, strong) NSString *prop_string1; @property(nonatomic, assign) NSString *prop_string2; @property(nonatomic, unsafe_unretained) NSString *prop_string3; -// expected-warning@-1{{Property 'prop_string3' in 'DerivedObject2' is a raw pointer to retainable type 'NSString'}} +// expected-warning@-1{{Property 'prop_string3' (of 'DerivedObject2') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, readonly) NSString *prop_string4; @end @interface DerivedObject2 : InterfaceOnlyObject2 @property(nonatomic, readonly) NSString *prop_string5; -// expected-warning@-1{{Property 'prop_string5' in 'DerivedObject2' is a raw pointer to retainable type 'NSString'}} +// expected-warning@-1{{Property 'prop_string5' (of 'DerivedObject2') is a raw pointer to RetainPtr capable type 'NSString'}} @end @implementation DerivedObject2 @@ -168,18 +168,18 @@ @implementation DerivedObject2 NS_REQUIRES_PROPERTY_DEFINITIONS @interface NoSynthObject : NSObject { NSString *ns_string; - // expected-warning@-1{{Instance variable 'ns_string' in 'NoSynthObject' is a raw pointer to retainable type 'NSString'}} + // expected-warning@-1{{Instance variable 'ns_string' (of 'NoSynthObject') is a raw pointer to RetainPtr capable type 'NSString'}} CFStringRef cf_string; - // expected-warning@-1{{Instance variable 'cf_string' in 'NoSynthObject' is a retainable type 'CFStringRef'}} + // expected-warning@-1{{Instance variable 'cf_string' (of 'NoSynthObject') is a RetainPtr capable type 'CFStringRef'}} dispatch_queue_t dispatch; - // expected-warning@-1{{Instance variable 'dispatch' in 'NoSynthObject' is a retainable type 'dispatch_queue_t'}} + // expected-warning@-1{{Instance variable 'dispatch' (of 'NoSynthObject') is a RetainPtr capable type 'dispatch_queue_t'}} } @property(nonatomic, readonly, strong) NSString *prop_string1; @property(nonatomic, readonly, strong) NSString *prop_string2; @property(nonatomic, assign) NSString *prop_string3; -// expected-warning@-1{{Property 'prop_string3' in 'NoSynthObject' is a raw pointer to retainable type 'NSString'; member variables must be a RetainPtr}} +// expected-warning@-1{{Property 'prop_string3' (of 'NoSynthObject') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, unsafe_unretained) NSString *prop_string4; -// expected-warning@-1{{Property 'prop_string4' in 'NoSynthObject' is a raw pointer to retainable type 'NSString'; member variables must be a RetainPtr}} +// expected-warning@-1{{Property 'prop_string4' (of 'NoSynthObject') is a raw pointer to RetainPtr capable type 'NSString'}} @property(nonatomic, copy) NSString *prop_string5; @property(nonatomic, readonly, strong) dispatch_queue_t dispatch; @end _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
