Skip to content

Commit ea79d25

Browse files
rniwaRyosuke Niwa
authored and
Ryosuke Niwa
committed
[alpha.webkit.NoUnretainedMemberChecker] Ignore system-header-defined ivar / property of a forward declared type (llvm#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 dc2a681 commit ea79d25

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

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

+4
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ class RawPtrRefMemberChecker
134134

135135
void visitIvarDecl(const ObjCContainerDecl *CD,
136136
const ObjCIvarDecl *Ivar) const {
137+
if (BR->getSourceManager().isInSystemHeader(Ivar->getLocation()))
138+
return;
137139
auto QT = Ivar->getType();
138140
const Type *IvarType = QT.getTypePtrOrNull();
139141
if (!IvarType)
@@ -155,6 +157,8 @@ class RawPtrRefMemberChecker
155157

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

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

+2
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)