name-lookup.c (suggest_alternatives_for): Use qualified lookup sans using directives.
authorNathan Sidwell <nathan@acm.org>
Tue, 6 Jun 2017 23:02:49 +0000 (23:02 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Tue, 6 Jun 2017 23:02:49 +0000 (23:02 +0000)
* name-lookup.c (suggest_alternatives_for): Use qualified lookup
sans using directives.  Don't walk into inline namespaces.

* g++.dg/pr45330.C: Add inline namespace case.

From-SVN: r248938

gcc/cp/ChangeLog
gcc/cp/name-lookup.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr45330.C

index 8200756ba4dd42a9cf416f3f53e0472af889ce6d..8375ceedd4961184f5ad16c7312b2b08969a9de6 100644 (file)
@@ -1,5 +1,8 @@
 2017-06-06  Nathan Sidwell  <nathan@acm.org>
 
+       * name-lookup.c (suggest_alternatives_for): Use qualified lookup
+       sans using directives.  Don't walk into inline namespaces.
+
        PR c++/80979
        * name-lookup.c (adl_class_only): Don't add visible friends.
 
index 169a1c99edaba0ab4da672599660513e57e5af81..6ed164d46452621616975298b6246b98806fcde3 100644 (file)
@@ -4714,9 +4714,10 @@ suggest_alternatives_for (location_t location, tree name,
   for (unsigned ix = 0; ix != worklist.length (); ix++)
     {
       tree ns = worklist[ix];
+      name_lookup lookup (name);
 
-      if (tree value = ovl_skip_hidden (find_namespace_value (ns, name)))
-       candidates.safe_push (value);
+      if (lookup.search_qualified (ns, false))
+       candidates.safe_push (lookup.value);
 
       if (!limited)
        {
@@ -4728,7 +4729,8 @@ suggest_alternatives_for (location_t location, tree name,
          for (tree decl = NAMESPACE_LEVEL (ns)->names;
               decl; decl = TREE_CHAIN (decl))
            if (TREE_CODE (decl) == NAMESPACE_DECL
-               && !DECL_NAMESPACE_ALIAS (decl))
+               && !DECL_NAMESPACE_ALIAS (decl)
+               && !DECL_NAMESPACE_INLINE_P (decl))
              children.safe_push (decl);
 
          while (!limited && !children.is_empty ())
index 74c974c19199d997a99c043112f333836c6e93ae..bd12c4786f40cfabaf24ed7ff59b26992134e024 100644 (file)
@@ -1,3 +1,7 @@
+2017-06-06  Nathan Sidwell  <nathan@acm.org>
+
+       * g++.dg/pr45330.C: Add inline namespace case.
+
 2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/80975
index 54b245be6ec2a2cbd63cfcb8059357fbde4ccca1..f16094d93f1f724580f4ebc0aec913c9b61685f5 100644 (file)
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
 // Search std, __cxxabiv1, and global namespaces, plus two more,
 // breadth first
 
@@ -17,7 +17,10 @@ namespace A
 
 namespace B
 {
-  int foo;                     // { dg-message "B::foo" "suggested alternative" }
+  inline namespace I
+  {
+    int foo;                   // { dg-message "B::I::foo" "suggested alternative" }
+  }
 }
 
 namespace C