From c8a65a25634c802d0de7ab33beba49c97eb5d196 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 2 Oct 2003 23:14:01 +0000 Subject: [PATCH] re PR c++/12486 (Accepts IMHO invalid C++ code) PR c++/12486 * typeck.c (finish_class_member_access_expr): Issue diagnostic on erroneous use of qualified name. PR c++/12486 * g++.dg/inherit/error1.C: New test. From-SVN: r72052 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/typeck.c | 7 ++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/inherit/error1.C | 10 ++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/inherit/error1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b6fe158a6c0..1661e4170c5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-10-02 Mark Mitchell + + PR c++/12486 + * typeck.c (finish_class_member_access_expr): Issue diagnostic + on erroneous use of qualified name. + 2003-09-30 Richard Henderson * decl.c (duplicate_decls): Copy DECL_SAVED_INSNS too. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 5c45976bffe..25d6ac4ef46 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1888,8 +1888,13 @@ finish_class_member_access_expr (tree object, tree name) /* Find the base of OBJECT_TYPE corresponding to SCOPE. */ access_path = lookup_base (object_type, scope, ba_check, NULL); - if (!access_path || access_path == error_mark_node) + if (access_path == error_mark_node) return error_mark_node; + if (!access_path) + { + error ("`%T' is not a base of `%T'", scope, object_type); + return error_mark_node; + } } else { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f69251bd988..5d992b1896f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-10-02 Mark Mitchell + + PR c++/12486 + * g++.dg/inherit/error1.C: New test. + 2003-10-02 Chris Demetriou * lib/f-torture.exp (search_for): Rename to... diff --git a/gcc/testsuite/g++.dg/inherit/error1.C b/gcc/testsuite/g++.dg/inherit/error1.C new file mode 100644 index 00000000000..1570bf11e2e --- /dev/null +++ b/gcc/testsuite/g++.dg/inherit/error1.C @@ -0,0 +1,10 @@ +// PR 12486 + +struct A { int ma; }; +struct B { }; + +void foo() +{ + B *b; + b->A::ma=0; // { dg-error "" } +} -- 2.30.2