Skip to content

Commit 6ff33ed

Browse files
authored
[alpha.webkit.NoUnretainedMemberChecker] Ignore system-header-defined ivar / property of a forward declared type (#133755)
Prior to this PR, we were emitting warnings for Objective-C ivars and properties if the forward declaration of the type appeared first in a non-system header. This PR fixes the checker so tha we'd ignore ivars and properties defined for a forward declared type.
1 parent f30c6a0 commit 6ff33ed

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefMemberChecker.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ class RawPtrRefMemberChecker
133133

134134
void visitIvarDecl(const ObjCContainerDecl *CD,
135135
const ObjCIvarDecl *Ivar) const {
136+
if (BR->getSourceManager().isInSystemHeader(Ivar->getLocation()))
137+
return;
136138
auto QT = Ivar->getType();
137139
const Type *IvarType = QT.getTypePtrOrNull();
138140
if (!IvarType)
@@ -154,6 +156,8 @@ class RawPtrRefMemberChecker
154156

155157
void visitObjCPropertyDecl(const ObjCContainerDecl *CD,
156158
const ObjCPropertyDecl *PD) const {
159+
if (BR->getSourceManager().isInSystemHeader(PD->getLocation()))
160+
return;
157161
auto QT = PD->getType();
158162
const Type *PropType = QT.getTypePtrOrNull();
159163
if (!PropType)

clang/test/Analysis/Checkers/WebKit/unretained-members.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.webkit.NoUnretainedMemberChecker -verify %s
22

3+
@class SystemObject;
4+
35
#include "objc-mock-types.h"
46
#include "mock-system-header.h"
57

0 commit comments

Comments
 (0)