2018-08-31 Nathan Sidwell <nathan@acm.org>
+ PR c++/87155
+ PR c++/84707
+ * name-lookup.c (name_lookup::search_namespace): Don't look at
+ inlines when searching for NULL names.
+
* decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
of return types and parms.
* parser.c (cp_parser_parameter_declaration_clause): Likewise,
/* Look in exactly namespace. */
bool found = search_namespace_only (scope);
-
- /* Recursively look in its inline children. */
- if (vec<tree, va_gc> *inlinees = DECL_NAMESPACE_INLINEES (scope))
- for (unsigned ix = inlinees->length (); ix--;)
- found |= search_namespace ((*inlinees)[ix]);
+
+ /* Don't look into inline children, if we're looking for an
+ anonymous name -- it must be in the current scope, if anywhere. */
+ if (name)
+ /* Recursively look in its inline children. */
+ if (vec<tree, va_gc> *inlinees = DECL_NAMESPACE_INLINEES (scope))
+ for (unsigned ix = inlinees->length (); ix--;)
+ found |= search_namespace ((*inlinees)[ix]);
if (found)
mark_found (scope);
+2018-08-31 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/87155
+ PR c++/84707
+ * g++.dg/cpp0x/pr87155.C: New.
+ * g++.dg/cpp0x/inline-ns10.C: Adjust.
+
2018-08-31 Jakub Jelinek <jakub@redhat.com>
PR middle-end/87138
// { dg-do compile { target c++11 } }
inline namespace {
- namespace {}
+ namespace {} // not this one
+ void a ();
}
-namespace {} // { dg-error "conflicts" }
+namespace {
+ int a (); // { dg-error "ambiguating" "" }
+}
--- /dev/null
+// { dg-do compile { target c++11 } }
+// PR c++/87155 confused about which anon namespace
+
+namespace {
+ void a (); // this one
+}
+
+inline namespace n2 {
+ namespace {}
+}
+
+namespace {
+ int a (); // { dg-error "ambiguating" "" }
+}