forked from OSchip/llvm-project
Remove unreachable that was reached in modernize-use-nullptr.
Summary: When traversing the parent map, the check assumed that all the nodes would be either Stmt or Decl. After r251101, this is no longer true: there can be TypeLoc and NestedNameSpecifierLoc nodes. Reviewers: alexfh Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D14229 llvm-svn: 251803
This commit is contained in:
parent
8eb1d544f8
commit
dc39f313e2
|
@ -435,12 +435,14 @@ private:
|
|||
Loc = D->getLocStart();
|
||||
else if (const auto *S = Parent.get<Stmt>())
|
||||
Loc = S->getLocStart();
|
||||
else
|
||||
llvm_unreachable("Expected to find Decl or Stmt containing ancestor");
|
||||
|
||||
if (!expandsFrom(Loc, MacroLoc)) {
|
||||
Result = Parent;
|
||||
return true;
|
||||
// TypeLoc and NestedNameSpecifierLoc are members of the parent map. Skip
|
||||
// them and keep going up.
|
||||
if (Loc.isValid()) {
|
||||
if (!expandsFrom(Loc, MacroLoc)) {
|
||||
Result = Parent;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Start = Parent;
|
||||
}
|
||||
|
|
|
@ -184,3 +184,14 @@ void test_macro_args() {
|
|||
// CHECK-FIXES: a[2] = {ENTRY(nullptr), {nullptr}};
|
||||
#undef ENTRY
|
||||
}
|
||||
|
||||
// One of the ancestor of the cast is a NestedNameSpecifierLoc.
|
||||
class NoDef;
|
||||
char function(NoDef *p);
|
||||
#define F(x) (sizeof(function(x)) == 1)
|
||||
template<class T, T t>
|
||||
class C {};
|
||||
C<bool, F(0)> c;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: use nullptr
|
||||
// CHECK-FIXES: C<bool, F(nullptr)> c;
|
||||
#undef F
|
||||
|
|
Loading…
Reference in New Issue