aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo@gcc.gnu.org>2007-08-31 09:11:43 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2007-08-31 09:11:43 +0000
commita53bf42c31fe143b6f3079154a772ea1c8b921b0 (patch)
treef93427a75147858d4e3281b56ca249a51e316ffa /gcc
parent22d2aa96f8da11d7710962b298a8036e0fe44720 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/cp/parser.c10
-rw-r--r--gcc/testsuite/ChangeLog41
-rw-r--r--gcc/testsuite/g++.dg/ext/is_class_error.C6
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" }
+}