From 2b4435765c3e87dcdd03ab9fa7507d2b6a08361c Mon Sep 17 00:00:00 2001
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 6 Sep 2006 05:28:08 +0000
Subject: [PATCH]         PR c++/26571         * parser.c
 (cp_parser_diagnose_invalid_type_name): Handle the case         where the
 name is a type used incorrectly.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116715 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/cp/ChangeLog                       | 4 ++++
 gcc/cp/parser.c                        | 3 +++
 gcc/testsuite/g++.dg/parse/typespec1.C | 4 ++++
 3 files changed, 11 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/parse/typespec1.C

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 014c76bbb0a8..95933ac0245c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
 2006-09-05  Jason Merrill  <jason@redhat.com>
 
+	PR c++/26571
+	* parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
+	where the name is a type used incorrectly.
+
 	PR c++/26671
 	* typeck.c (maybe_warn_about_returning_address_of_local): Look 
 	through COMPONENT_REF and ARRAY_REF.	
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index a4e5f37eece9..41726f3e3b92 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -2101,6 +2101,9 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree scope, tree id)
     error ("invalid use of template-name %qE without an argument list", decl);
   else if (TREE_CODE (id) == BIT_NOT_EXPR)
     error ("invalid use of destructor %qD as a type", id);
+  else if (TREE_CODE (decl) == TYPE_DECL)
+    /* Something like 'unsigned A a;'  */
+    error ("invalid combination of multiple type-specifiers");
   else if (!parser->scope)
     {
       /* Issue an error message.  */
diff --git a/gcc/testsuite/g++.dg/parse/typespec1.C b/gcc/testsuite/g++.dg/parse/typespec1.C
new file mode 100644
index 000000000000..a371f8b98363
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/typespec1.C
@@ -0,0 +1,4 @@
+// PR c++/26571
+
+struct A {};
+unsigned A a;			// { dg-error "multiple" }
-- 
GitLab