From b81608499eaf5d365f2518ab269608c9179abb35 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sat, 28 Mar 2009 07:51:31 +0000 Subject: [PATCH] As Eli pointed out, it is possible that a namespace lookup is ambiguous! llvm-svn: 67932 --- clang/lib/Sema/SemaDeclCXX.cpp | 2 -- clang/test/SemaCXX/namespace-alias.cpp | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 7f8a69e5f306..67c8777e3491 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -1627,7 +1627,6 @@ Sema::DeclTy *Sema::ActOnUsingDirective(Scope *S, // Lookup namespace name. LookupResult R = LookupParsedName(S, &SS, NamespcName, LookupNamespaceName, false); - // FIXME: Can the result of a namespace lookup ever be ambiguous? if (R.isAmbiguous()) { DiagnoseAmbiguousLookup(R, NamespcName, IdentLoc); return 0; @@ -1697,7 +1696,6 @@ Sema::DeclTy *Sema::ActOnNamespaceAliasDef(Scope *S, // Lookup the namespace name. LookupResult R = LookupParsedName(S, &SS, NamespaceName, LookupNamespaceName, false); - // FIXME: Can the result of a namespace lookup ever be ambiguous? if (R.isAmbiguous()) { DiagnoseAmbiguousLookup(R, NamespaceName, NamespaceLoc); return 0; diff --git a/clang/test/SemaCXX/namespace-alias.cpp b/clang/test/SemaCXX/namespace-alias.cpp index 7d46d08678a3..b05db5ffe040 100644 --- a/clang/test/SemaCXX/namespace-alias.cpp +++ b/clang/test/SemaCXX/namespace-alias.cpp @@ -14,3 +14,10 @@ int i; namespace D = i; // expected-error {{expected namespace name}} namespace E = N::Foo; // expected-error {{expected namespace name}} + +namespace F { + namespace A { namespace B { } } // expected-note {{candidate found by name lookup is 'F::A::B'}} + namespace B { } // expected-note {{candidate found by name lookup is 'F::B'}} + using namespace A; + namespace D = B; // expected-error {{reference to 'B' is ambiguous}} +}