Commit a53bf42c by Paolo Carlini

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
parent 22d2aa96
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> 2007-08-30 Ollie Wild <aaw@google.com>
* cvt.c (cp_convert_to_pointer): Remove force parameter. Call * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
......
...@@ -6502,6 +6502,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword) ...@@ -6502,6 +6502,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword)
type1 = cp_parser_type_id (parser); type1 = cp_parser_type_id (parser);
if (type1 == error_mark_node)
return error_mark_node;
/* Build a trivial decl-specifier-seq. */ /* Build a trivial decl-specifier-seq. */
clear_decl_specs (&decl_specs); clear_decl_specs (&decl_specs);
decl_specs.type = type1; decl_specs.type = type1;
...@@ -6516,6 +6519,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword) ...@@ -6516,6 +6519,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword)
type2 = cp_parser_type_id (parser); type2 = cp_parser_type_id (parser);
if (type2 == error_mark_node)
return error_mark_node;
/* Build a trivial decl-specifier-seq. */ /* Build a trivial decl-specifier-seq. */
clear_decl_specs (&decl_specs); clear_decl_specs (&decl_specs);
decl_specs.type = type2; decl_specs.type = type2;
...@@ -6527,8 +6533,8 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword) ...@@ -6527,8 +6533,8 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword)
cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'"); cp_parser_require (parser, CPP_CLOSE_PAREN, "`)'");
/* Complete the trait expr, which may mean either processing the /* Complete the trait expression, which may mean either processing
static assert now or saving it for template instantiation. */ the trait expr now or saving it for template instantiation. */
return finish_trait_expr (kind, type1, type2); return finish_trait_expr (kind, type1, type2);
} }
......
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> 2007-08-31 Olivier Hainque <hainque@adacore.com>
* gnat.dg/test_oalign.adb, oalign[12].ads: New test. * gnat.dg/test_oalign.adb, oalign[12].ads: New test.
...@@ -14,15 +19,15 @@ ...@@ -14,15 +19,15 @@
* gcc.target/powerpc/paired-7.c: New test. * gcc.target/powerpc/paired-7.c: New test.
* gcc.target/powerpc/ppc-paired.c: New test. * gcc.target/powerpc/ppc-paired.c: New test.
2007-08-30 Ollie Wild <aaw@google.com> 2007-08-31 Ollie Wild <aaw@google.com>
g++.dg/conversion/ptrmem2.C: New test. * g++.dg/conversion/ptrmem2.C: New test.
g++.dg/conversion/ptrmem3.C: New test. * g++.dg/conversion/ptrmem3.C: New test.
g++.dg/conversion/ptrmem4.C: New test. * g++.dg/conversion/ptrmem4.C: New test.
g++.dg/conversion/ptrmem5.C: New test. * g++.dg/conversion/ptrmem5.C: New test.
g++.dg/conversion/ptrmem6.C: New test. * g++.dg/conversion/ptrmem6.C: New test.
g++.dg/conversion/ptrmem7.C: New test. * g++.dg/conversion/ptrmem7.C: New test.
g++.dg/conversion/ptrmem8.C: New test. * g++.dg/conversion/ptrmem8.C: New test.
2007-08-31 Paul Thomas <pault@gcc.gnu.org> 2007-08-31 Paul Thomas <pault@gcc.gnu.org>
// PR c++/33212
template<int> void foo()
{
__is_class((int); // { dg-error "type-specifier|primary-expression" }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment