From: Marek Polacek Date: Wed, 19 Jul 2023 20:50:00 +0000 (-0400) Subject: c++: Improve printing of base classes [PR110745] X-Git-Tag: basepoints/gcc-15~7480 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e92ca8d3b4cab96a9f79466b5158381cb3103f9d;p=thirdparty%2Fgcc.git c++: Improve printing of base classes [PR110745] This patch changes warning: missing initializer for member 'D::' [-Wmissing-field-initializers] to warning: missing initializer for member 'D::B' [-Wmissing-field-initializers] PR c++/110745 gcc/cp/ChangeLog: * error.cc (dump_simple_decl): Print base class name. gcc/testsuite/ChangeLog: * g++.dg/diagnostic/base.C: New test. --- diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc index 31319aa9e87d..8a5219a68a19 100644 --- a/gcc/cp/error.cc +++ b/gcc/cp/error.cc @@ -1177,6 +1177,8 @@ dump_simple_decl (cxx_pretty_printer *pp, tree t, tree type, int flags) } else if (DECL_DECOMPOSITION_P (t)) pp_string (pp, M_("")); + else if (TREE_CODE (t) == FIELD_DECL && DECL_FIELD_IS_BASE (t)) + dump_type (pp, TREE_TYPE (t), flags); else pp_string (pp, M_("")); diff --git a/gcc/testsuite/g++.dg/diagnostic/base.C b/gcc/testsuite/g++.dg/diagnostic/base.C new file mode 100644 index 000000000000..1540414072ed --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/base.C @@ -0,0 +1,16 @@ +// PR c++/110745 +// { dg-do compile { target c++17 } } +// { dg-options "-Wmissing-field-initializers" } + +struct B { int i; }; +struct D : B { + int x; + int y; +}; + +int +main () +{ + D d = {.x=1, .y=2}; // { dg-warning "missing initializer for member .D::B." } + (void)d; +}