Skip to content

Commit f257788

Browse files
committed
[IDE] Skip more node in CursorInfo’ NodeFinder
1 parent 2e9ebf9 commit f257788

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

lib/IDE/CursorInfo.cpp

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,17 @@ class NodeFinder : ASTWalker {
136136
return Range.contains(LocToResolve);
137137
}
138138

139+
PreWalkResult<ArgumentList *>
140+
walkToArgumentListPre(ArgumentList *ArgList) override {
141+
if (!rangeContainsLocToResolve(ArgList->getSourceRange())) {
142+
return Action::SkipChildren(ArgList);
143+
}
144+
return Action::Continue(ArgList);
145+
}
146+
139147
PreWalkAction walkToDeclPre(Decl *D) override {
140148
if (!rangeContainsLocToResolve(D->getSourceRangeIncludingAttrs())) {
141-
return PreWalkAction::SkipChildren;
149+
return Action::SkipChildren();
142150
}
143151

144152
if (auto *newDC = dyn_cast<DeclContext>(D)) {
@@ -182,6 +190,10 @@ class NodeFinder : ASTWalker {
182190
}
183191
}
184192

193+
if (!rangeContainsLocToResolve(E->getSourceRange())) {
194+
return Action::SkipChildren(E);
195+
}
196+
185197
return Action::Continue(E);
186198
}
187199

@@ -193,6 +205,20 @@ class NodeFinder : ASTWalker {
193205
return Action::Continue(E);
194206
}
195207

208+
PreWalkAction walkToParameterListPre(ParameterList *PL) override {
209+
if (!rangeContainsLocToResolve(PL->getSourceRange())) {
210+
return Action::SkipChildren();
211+
}
212+
return Action::Continue();
213+
}
214+
215+
PreWalkResult<Pattern *> walkToPatternPre(Pattern *P) override {
216+
if (!rangeContainsLocToResolve(P->getSourceRange())) {
217+
return Action::SkipChildren(P);
218+
}
219+
return Action::Continue(P);
220+
}
221+
196222
PreWalkResult<Stmt *> walkToStmtPre(Stmt *S) override {
197223
if (auto CondStmt = dyn_cast<LabeledConditionalStmt>(S)) {
198224
for (auto ShorthandShadow :
@@ -201,8 +227,17 @@ class NodeFinder : ASTWalker {
201227
ShorthandShadowedDecls[ShorthandShadow.first] = ShorthandShadow.second;
202228
}
203229
}
230+
231+
if (!rangeContainsLocToResolve(S->getSourceRange())) {
232+
return Action::SkipChildren(S);
233+
}
234+
204235
return Action::Continue(S);
205236
}
237+
238+
PreWalkAction walkToTypeReprPre(TypeRepr *T) override {
239+
return Action::SkipChildren();
240+
}
206241
};
207242

208243
// MARK: - CursorInfoDoneParsingCallback

0 commit comments

Comments
 (0)