aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-10-17 09:48:02 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-10-17 09:48:02 +0000
commit2be4314f3d92e4c8d39561a1a90a0a8b2888dfd2 (patch)
tree3a91057fa7166ac904c07a816ef2d036c2cc2d2b /gcc
parentfbe468a522abdbb39cc15058b8aef9ba221283db (diff)
downloadgcc-2be4314f3d92e4c8d39561a1a90a0a8b2888dfd2.zip
gcc-2be4314f3d92e4c8d39561a1a90a0a8b2888dfd2.tar.gz
gcc-2be4314f3d92e4c8d39561a1a90a0a8b2888dfd2.tar.bz2
re PR c++/48489 (Invalid error message 'has no member named' when referring directly to the base class)
/cp 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com> 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 <paolo.carlini@oracle.com> PR c++/48489 * g++.dg/inherit/error5.C: New. From-SVN: r180080
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/typeck.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/inherit/error5.C14
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c2c452d..7b8f5e2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ 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 <paolo.carlini@oracle.com>
PR c++/50732
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 305f8f5..40cf108 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 4828e09..11ae542 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/48489
+ * g++.dg/inherit/error5.C: New.
+
2011-10-17 Janus Weil <janus@gcc.gnu.org>
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 0000000..e38e106
--- /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" }
+}