+2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR c++/14123
+ * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
+ paranthesis in case of pointers to array members.
+ * error.c (dump_type_prefix): Likewise.
+ (dump_type_suffix): Maybe issue a whitespace when printing
+ ARRAY_TYPE.
+
2004-06-27 Mark Mitchell <mark@codesourcery.com>
PR c++/16193
case OFFSET_TYPE:
if (TYPE_PTR_TO_MEMBER_P (t))
{
+ if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
+ pp_cxx_left_paren (pp);
pp_cxx_nested_name_specifier (pp, TYPE_PTRMEM_CLASS_TYPE (t));
pp_star (pp);
pp_cxx_cv_qualifier_seq (pp, t);
if (TREE_CODE (t) == OFFSET_TYPE) /* pmfs deal with this in d_t_p */
{
pp_maybe_space (cxx_pp);
+ if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
+ pp_cxx_left_paren (cxx_pp);
dump_type (TYPE_OFFSET_BASETYPE (t), flags);
pp_cxx_colon_colon (cxx_pp);
}
pp_cxx_star (cxx_pp);
pp_cxx_cv_qualifier_seq (cxx_pp, t);
+ pp_base (cxx_pp)->padding = pp_before;
break;
/* Can only be reached through function pointer -- this would not be
}
case ARRAY_TYPE:
+ pp_maybe_space (cxx_pp);
pp_cxx_left_bracket (cxx_pp);
if (TYPE_DOMAIN (t))
{
--- /dev/null
+// PR 14123
+
+struct a
+{
+ int x[8];
+};
+
+int main()
+{
+ int a::*n[8];
+ n = &a::x; // { dg-error "int \\(a::\\*\\)" }
+}