Skip to content

Commit f596db0

Browse files
author
Richard Howell
committed
import result types for message exprs, catch explicit casts
1 parent baf888e commit f596db0

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

ImportCallbacks.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ namespace import_tidy {
6060
}
6161
}
6262

63+
void CastExprCallback::run(const MatchFinder::MatchResult &Result) {
64+
if (auto *CE = Result.Nodes.getNodeAs<CStyleCastExpr>(nodeKey)) {
65+
auto &SM = *Result.SourceManager;
66+
Matcher.addType(SM.getMainFileID(), CE->getType(), SM);
67+
}
68+
}
69+
6370
void CategoryCallback::run(const MatchFinder::MatchResult &Result) {
6471
if (auto *CD = Result.Nodes.getNodeAs<ObjCCategoryDecl>(nodeKey)) {
6572
auto &SM = *Result.SourceManager;
@@ -150,13 +157,12 @@ namespace import_tidy {
150157
if (auto *E = Result.Nodes.getNodeAs<ObjCMessageExpr>(nodeKey)) {
151158
auto &SM = *Result.SourceManager;
152159
Matcher.addImport(SM.getMainFileID(), E->getMethodDecl(), SM);
160+
Matcher.addType(SM.getMainFileID(), E->getType(), SM);
153161

154162
if (auto *ID = E->getReceiverInterface()) {
155163
Matcher.addImport(SM.getMainFileID(), ID, SM);
156-
} else if (auto *Ptr = E->getReceiverType()->getAs<ObjCObjectPointerType>()) {
157-
for (auto i = Ptr->qual_begin(); i != Ptr->qual_end(); i++) {
158-
Matcher.addImport(SM.getMainFileID(), *i, SM);
159-
}
164+
} else {
165+
Matcher.addType(SM.getMainFileID(), E->getReceiverType(), SM);
160166
}
161167
}
162168
}

ImportCallbacks.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace import_tidy {
2929
};
3030

3131
IMPORTCALLBACK(CallExprCallback)
32+
IMPORTCALLBACK(CastExprCallback)
3233
IMPORTCALLBACK(CategoryCallback)
3334
IMPORTCALLBACK(DeclRefCallback)
3435
IMPORTCALLBACK(FuncDeclCallback)

ImportMatcher.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ namespace import_tidy {
9898
std::unique_ptr<FrontendActionFactory>
9999
ImportMatcher::getActionFactory(MatchFinder& Finder) {
100100
auto CallMatcher = callExpr(isExpansionInMainFile()).bind(nodeKey);
101+
auto CastMatcher = cStyleCastExpr(isExpansionInMainFile()).bind(nodeKey);
101102
auto CategoryMatcher = objcCategoryDecl(isImplementationInMainFile()).bind(nodeKey);
102103
auto DeclRefMatcher = declRefExpr(isNotInSystemHeader()).bind(nodeKey);
103104
auto InterfaceMatcher = interfaceDecl(isADefinition(),
@@ -114,6 +115,7 @@ namespace import_tidy {
114115
isNotInSystemHeader()).bind(nodeKey);
115116

116117
Finder.addMatcher(CallMatcher, &CallCallback);
118+
Finder.addMatcher(CastMatcher, &CastCallback);
117119
Finder.addMatcher(CategoryMatcher, &CategoryCallback);
118120
Finder.addMatcher(DeclRefMatcher, &DeclRefCallback);
119121
Finder.addMatcher(InterfaceMatcher, &InterfaceCallback);

ImportMatcher.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ namespace import_tidy {
1515
public:
1616
ImportMatcher(clang::tooling::Replacements &Replacements) :
1717
ImportRanges(), ImportMap(), LibraryCounts(),
18-
CallCallback(*this), CategoryCallback(*this),
19-
DeclRefCallback(*this),
18+
CallCallback(*this), CastCallback(*this),
19+
CategoryCallback(*this), DeclRefCallback(*this),
2020
FuncDeclCallback(*this), InterfaceCallback(*this),
2121
MsgCallback(*this), MtdCallback(*this), ProtoCallback(*this),
2222
StripCallback(*this), FileCallbacks(*this), Replacements(Replacements) {};
@@ -41,6 +41,7 @@ namespace import_tidy {
4141
std::set<clang::FileID> HeaderFiles;
4242
std::map<llvm::StringRef, unsigned> LibraryCounts;
4343
CallExprCallback CallCallback;
44+
CastExprCallback CastCallback;
4445
CategoryCallback CategoryCallback;
4546
DeclRefCallback DeclRefCallback;
4647
FuncDeclCallback FuncDeclCallback;

0 commit comments

Comments
 (0)