forked from OSchip/llvm-project
Fix a regression in the two-phase lookup diagnostics that switching the
namespace set algorithm (re-)introduced. We may not have seen the 'std' namespace, but we should still suggested associated namespaces. Easy fix, but a bit annoying to test. llvm-svn: 132744
This commit is contained in:
parent
0169ec0988
commit
d54186ac33
|
@ -7881,6 +7881,9 @@ DiagnoseTwoPhaseLookup(Sema &SemaRef, SourceLocation FnLoc,
|
|||
if (!Std->Encloses(*it))
|
||||
SuggestedNamespaces.insert(*it);
|
||||
}
|
||||
} else {
|
||||
// Lacking the 'std::' namespace, use all of the associated namespaces.
|
||||
SuggestedNamespaces = AssociatedNamespaces;
|
||||
}
|
||||
|
||||
SemaRef.Diag(R.getNameLoc(), diag::err_not_found_by_two_phase_lookup)
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
//
|
||||
// The whole point of this test is to verify certain diagnostics work in the
|
||||
// absence of namespace 'std'.
|
||||
|
||||
namespace PR10053 {
|
||||
namespace ns {
|
||||
struct Data {};
|
||||
}
|
||||
|
||||
template<typename T> struct A {
|
||||
T t;
|
||||
A() {
|
||||
f(t); // expected-error {{call to function 'f' that is neither visible in the template definition nor found by argument dependent lookup}}
|
||||
}
|
||||
};
|
||||
|
||||
void f(ns::Data); // expected-note {{in namespace 'PR10053::ns'}}
|
||||
|
||||
A<ns::Data> a; // expected-note {{in instantiation of member function}}
|
||||
}
|
Loading…
Reference in New Issue