+2018-05-24 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ Pedwarn on a non-standard position of a C++ attribute.
+ * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
+ after the namespace name.
+
2018-05-24 Paolo Carlini <paolo.carlini@oracle.com>
* cp-tree.h (INDIRECT_TYPE_P): New.
{
identifier = cp_parser_identifier (parser);
+ if (cp_next_tokens_can_be_std_attribute_p (parser))
+ pedwarn (input_location, OPT_Wpedantic,
+ "standard attributes on namespaces must precede "
+ "the namespace name");
+
/* Parse any attributes specified after the identifier. */
attribs = attr_chainon (attribs, cp_parser_attributes_opt (parser));
}
// { dg-do compile { target c++11 } }
namespace foo __attribute__((visibility("default"))) {}
-namespace bar [[gnu::visibility("default")]] {}
+namespace [[gnu::visibility("default")]] bar {}
// PR c++/85140
// { dg-do compile { target c++11 } }
-namespace N alignas() {} // { dg-error "expected" }
+namespace alignas() N {} // { dg-error "expected" }
--- /dev/null
+// { dg-options "-std=c++17" }
+// { dg-additional-options "-pedantic" }
+
+namespace B [[deprecated]] {} // { dg-warning "ignored|must precede" }
+
+namespace [[deprecated]] D {} // { dg-warning "ignored" }
+