From 2be4314f3d92e4c8d39561a1a90a0a8b2888dfd2 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Mon, 17 Oct 2011 09:48:02 +0000 Subject: [PATCH] re PR c++/48489 (Invalid error message 'has no member named' when referring directly to the base class) /cp 2011-10-17 Paolo Carlini PR c++/48489 * typeck.c (finish_class_member_access_expr): Fix error call for TREE_CODE (access_path) == TREE_BINFO. /testsuite 2011-10-17 Paolo Carlini PR c++/48489 * g++.dg/inherit/error5.C: New. From-SVN: r180080 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/typeck.c | 4 +++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/inherit/error5.C | 14 ++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/inherit/error5.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c2c452d2cd5..7b8f5e2d199 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-10-17 Paolo Carlini + + PR c++/48489 + * typeck.c (finish_class_member_access_expr): Fix error call + for TREE_CODE (access_path) == TREE_BINFO. + 2011-10-15 Paolo Carlini PR c++/50732 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 305f8f5b937..40cf1080c23 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -2591,7 +2591,9 @@ finish_class_member_access_expr (tree object, tree name, bool template_p, if (member == NULL_TREE) { if (complain & tf_error) - error ("%qD has no member named %qE", object_type, name); + error ("%qD has no member named %qE", + TREE_CODE (access_path) == TREE_BINFO + ? TREE_TYPE (access_path) : object_type, name); return error_mark_node; } if (member == error_mark_node) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4828e099404..11ae542c0f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-10-17 Paolo Carlini + + PR c++/48489 + * g++.dg/inherit/error5.C: New. + 2011-10-17 Janus Weil PR fortran/47023 diff --git a/gcc/testsuite/g++.dg/inherit/error5.C b/gcc/testsuite/g++.dg/inherit/error5.C new file mode 100644 index 00000000000..e38e106b14c --- /dev/null +++ b/gcc/testsuite/g++.dg/inherit/error5.C @@ -0,0 +1,14 @@ +// PR c++/48489 + +struct Base{ }; + +struct Concrete : Base +{ + void setValue(); +}; + +int main() +{ + Concrete d; + d.Base::setValue(); // { dg-error "struct Base" } +} -- 2.11.4.GIT