From 6231ce32c1056008da398032c75b3ba0f02f9bc1 Mon Sep 17 00:00:00 2001 From: reichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 30 Apr 2006 10:34:05 +0000 Subject: [PATCH] PR c++/27278 * decl.c (grok_op_properties): Skip operators with invalid args when checking for class-type or enum-type args. * g++.dg/parse/operator7.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113389 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl.c | 3 +++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/parse/operator7.C | 4 ++++ 4 files changed, 18 insertions(+) create mode 100644 gcc/testsuite/g++.dg/parse/operator7.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c93e39f56915..57c80275bd6c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-04-30 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/27278 + * decl.c (grok_op_properties): Skip operators with invalid args + when checking for class-type or enum-type args. + 2006-04-29 Volker Reichelt <reichelt@igpm.rwth-aachen.de> PR c++/27279 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 1617a47bbfcc..e59bd68af8f8 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9086,6 +9086,9 @@ grok_op_properties (tree decl, bool complain) for (p = argtypes; p && p != void_list_node; p = TREE_CHAIN (p)) { tree arg = non_reference (TREE_VALUE (p)); + if (arg == error_mark_node) + return; + /* IS_AGGR_TYPE, rather than CLASS_TYPE_P, is used because these checks are performed even on template functions. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6d9172c19fbc..b82e646e90de 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-04-30 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/27278 + * g++.dg/parse/operator7.C: New test. + 2006-04-29 Volker Reichelt <reichelt@igpm.rwth-aachen.de> PR c++/11471 diff --git a/gcc/testsuite/g++.dg/parse/operator7.C b/gcc/testsuite/g++.dg/parse/operator7.C new file mode 100644 index 000000000000..e3464f017da1 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/operator7.C @@ -0,0 +1,4 @@ +// PR c++/27278 +// { dg-do compile } + +int operator+(void,void); // { dg-error "incomplete type|invalid use" } -- GitLab