diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp index 593e6e3663639..dc4e2c7d168fb 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp @@ -223,7 +223,7 @@ class NoUncountedMemberChecker final : public RawPtrRefMemberChecker { std::optional isPtrCompatible(const clang::QualType, const clang::CXXRecordDecl *R) const final { - return R && isRefCountable(R); + return R ? isRefCountable(R) : std::nullopt; } bool isPtrCls(const clang::CXXRecordDecl *R) const final { @@ -246,7 +246,7 @@ class NoUncheckedPtrMemberChecker final : public RawPtrRefMemberChecker { std::optional isPtrCompatible(const clang::QualType, const clang::CXXRecordDecl *R) const final { - return R && isCheckedPtrCapable(R); + return R ? isCheckedPtrCapable(R) : std::nullopt; } bool isPtrCls(const clang::CXXRecordDecl *R) const final { diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp b/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp index bca7b3bad3a15..1bdbaedefbfeb 100644 --- a/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp +++ b/clang/test/Analysis/Checkers/WebKit/uncounted-members.cpp @@ -36,7 +36,6 @@ namespace members { }; } - namespace ignore_unions { union Foo { RefCountable* a; @@ -60,3 +59,12 @@ void foo(RefCountable* t) { } } // ignore_system_header + +namespace ignore_non_ref_countable { + struct Foo { + }; + + struct Bar { + Foo* foo; + }; +} \ No newline at end of file