From: John McCall Date: Tue, 8 Dec 2009 22:45:53 +0000 (+0000) Subject: Handle unresolved using decls in bare lookups. These are not being adequately X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fead20c1de136b5a199a5cc4225f64be771452e4;p=clang Handle unresolved using decls in bare lookups. These are not being adequately tested. Fixes PR5727. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90893 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 4920206b25..b284f83074 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1346,9 +1346,9 @@ Sema::OwningExprResult Sema::BuildDeclarationNameExpr(const CXXScopeSpec &SS, LookupResult &R, bool NeedsADL) { - // If this isn't an overloaded result and we don't need ADL, just - // build an ordinary singleton decl ref. - if (!NeedsADL && !R.isOverloadedResult()) + // If this is a single, fully-resolved result and we don't need ADL, + // just build an ordinary singleton decl ref. + if (!NeedsADL && R.isSingleResult()) return BuildDeclarationNameExpr(SS, R.getNameLoc(), R.getFoundDecl()); // We only need to check the declaration if there's exactly one diff --git a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp new file mode 100644 index 0000000000..9386e6c025 --- /dev/null +++ b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp @@ -0,0 +1,13 @@ +// RUN: clang -fsyntax-only -verify %s + +// PR5727 +namespace test0 { + template struct RefPtr { }; + template struct PtrHash { + static void f() { } + }; + template struct PtrHash > : PtrHash { + using PtrHash::f; + static void f() { f(); } + }; +}