diff options
author | Paolo Carlini <paolo@gcc.gnu.org> | 2007-08-31 09:11:43 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2007-08-31 09:11:43 +0000 |
commit | a53bf42c31fe143b6f3079154a772ea1c8b921b0 (patch) | |
tree | f93427a75147858d4e3281b56ca249a51e316ffa /gcc | |
parent | 22d2aa96f8da11d7710962b298a8036e0fe44720 (diff) | |
download | gcc-a53bf42c31fe143b6f3079154a772ea1c8b921b0.zip gcc-a53bf42c31fe143b6f3079154a772ea1c8b921b0.tar.gz gcc-a53bf42c31fe143b6f3079154a772ea1c8b921b0.tar.bz2 |
re PR c++/33212 (Broken diagnostic: 'trait_expr' not supported by dump_expr)
/cp
2007-08-31 Paolo Carlini <pcarlini@suse.de>
PR c++/33212
* parser.c (cp_parser_trait_expr): Check rerurn value of
cp_parser_type_id.
/testsuite
2007-08-31 Paolo Carlini <pcarlini@suse.de>
PR c++/33212
* g++.dg/ext/is_class_error.C: New.
From-SVN: r127962
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 41 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/is_class_error.C | 6 |
4 files changed, 43 insertions, 20 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8f64db4..9c7adc9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2007-08-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/33212 + * parser.c (cp_parser_trait_expr): Check rerurn value of + cp_parser_type_id. + 2007-08-30 Ollie Wild <aaw@google.com> * cvt.c (cp_convert_to_pointer): Remove force parameter. Call diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 70006c9..92f4430 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6502,6 +6502,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword) type1 = cp_parser_type_id (parser); + if (type1 == error_mark_node) + return error_mark_node; + /* Build a trivial decl-specifier-seq. */ clear_decl_specs (&decl_specs); decl_specs.type = type1; @@ -6516,6 +6519,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword) type2 = cp_parser_type_id (parser); + if (type2 == error_mark_node) + return error_mark_node; + /* Build a trivial decl-specifier-seq. */ clear_decl_specs (&decl_specs); decl_specs.type = type2; @@ -6527,8 +6533,8 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword) cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); - /* Complete the trait expr, which may mean either processing the - static assert now or saving it for template instantiation. */ + /* Complete the trait expression, which may mean either processing + the trait expr now or saving it for template instantiation. */ return finish_trait_expr (kind, type1, type2); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b562483..f2d3714 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-08-31 Paolo Carlini <pcarlini@suse.de> + + PR c++/33212 + * g++.dg/ext/is_class_error.C: New. + 2007-08-31 Olivier Hainque <hainque@adacore.com> * gnat.dg/test_oalign.adb, oalign[12].ads: New test. @@ -5,24 +10,24 @@ 2007-08-31 David Edelsohn <edelsohn@gnu.org> Revital Eres <eres@il.ibm.com> - * gcc.target/powerpc/paired-1.c: New test. - * gcc.target/powerpc/paired-2.c: New test. - * gcc.target/powerpc/paired-3.c: New test. - * gcc.target/powerpc/paired-4.c: New test. - * gcc.target/powerpc/paired-5.c: New test. - * gcc.target/powerpc/paired-6.c: New test. - * gcc.target/powerpc/paired-7.c: New test. - * gcc.target/powerpc/ppc-paired.c: New test. - -2007-08-30 Ollie Wild <aaw@google.com> - - g++.dg/conversion/ptrmem2.C: New test. - g++.dg/conversion/ptrmem3.C: New test. - g++.dg/conversion/ptrmem4.C: New test. - g++.dg/conversion/ptrmem5.C: New test. - g++.dg/conversion/ptrmem6.C: New test. - g++.dg/conversion/ptrmem7.C: New test. - g++.dg/conversion/ptrmem8.C: New test. + * gcc.target/powerpc/paired-1.c: New test. + * gcc.target/powerpc/paired-2.c: New test. + * gcc.target/powerpc/paired-3.c: New test. + * gcc.target/powerpc/paired-4.c: New test. + * gcc.target/powerpc/paired-5.c: New test. + * gcc.target/powerpc/paired-6.c: New test. + * gcc.target/powerpc/paired-7.c: New test. + * gcc.target/powerpc/ppc-paired.c: New test. + +2007-08-31 Ollie Wild <aaw@google.com> + + * g++.dg/conversion/ptrmem2.C: New test. + * g++.dg/conversion/ptrmem3.C: New test. + * g++.dg/conversion/ptrmem4.C: New test. + * g++.dg/conversion/ptrmem5.C: New test. + * g++.dg/conversion/ptrmem6.C: New test. + * g++.dg/conversion/ptrmem7.C: New test. + * g++.dg/conversion/ptrmem8.C: New test. 2007-08-31 Paul Thomas <pault@gcc.gnu.org> diff --git a/gcc/testsuite/g++.dg/ext/is_class_error.C b/gcc/testsuite/g++.dg/ext/is_class_error.C new file mode 100644 index 0000000..d037ec7 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/is_class_error.C @@ -0,0 +1,6 @@ +// PR c++/33212 + +template<int> void foo() +{ + __is_class((int); // { dg-error "type-specifier|primary-expression" } +} |