diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-10-02 23:11:27 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-10-02 23:11:27 +0000 |
commit | dd2a479ec8de440f5bd2377d1c32202b7a786f06 (patch) | |
tree | 671a8b511b4b0442cb0071a995c818ae310f9b0a | |
parent | 48fbdd6a08dfade6f128ff56a3eb05e0f6654f60 (diff) |
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: r72051
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/inherit/error1.C | 10 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f9df5b84876..fa182662a6c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-10-02 Mark Mitchell <mark@codesourcery.com> + + PR c++/12486 + * typeck.c (finish_class_member_access_expr): Issue diagnostic + on erroneous use of qualified name. + 2003-07-09 Mark Mitchell <mark@codesourcery.com> * cp-tree.h (break_out_calls): Remove declaration. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 90a52e6fe28..9d12aa1934a 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -2174,8 +2174,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; + } /* Look up the member. */ member = lookup_member (access_path, name, /*protect=*/1, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d90be030aff..8a7547ec44f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-10-02 Mark Mitchell <mark@codesourcery.com> + + PR c++/12486 + * g++.dg/inherit/error1.C: New test. + 2003-10-02 Alexandre Oliva <aoliva@redhat.com> * g++.dg/parse/parameter-declaration-1.C: Fix line number of 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 "" } +} |