aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-05-25 15:52:02 -0400
committerJason Merrill <jason@gcc.gnu.org>2011-05-25 15:52:02 -0400
commitdf23ba642d9f527ee32ed7342dd049de2461aaf0 (patch)
tree8fbd26557777529c5bc7c9aa9f5f3fb7700c2a22
parentce9b1898e5516ed5cdc444f1c0de82de34939181 (diff)
downloadgcc-df23ba642d9f527ee32ed7342dd049de2461aaf0.zip
gcc-df23ba642d9f527ee32ed7342dd049de2461aaf0.tar.gz
gcc-df23ba642d9f527ee32ed7342dd049de2461aaf0.tar.bz2
re PR c++/46005 ([C++0x] Don't allow "auto" as the simple-type-specifier of a typedef)
PR c++/46145 * decl.c (grokdeclarator): Complain about auto typedef. From-SVN: r174228
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/decl.c6
-rw-r--r--gcc/testsuite/ChangeLog2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto9.C3
4 files changed, 14 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d78f183..7493fd2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2011-05-25 Jason Merrill <jason@redhat.com>
+ PR c++/46145
+ * decl.c (grokdeclarator): Complain about auto typedef.
+
PR c++/46245
* decl.c (grokdeclarator): Complain later for auto parameter.
* pt.c (splice_late_return_type): Handle use in a template
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 8000441..2b6a777 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -9481,6 +9481,12 @@ grokdeclarator (const cp_declarator *declarator,
memfn_quals = TYPE_UNQUALIFIED;
}
+ if (type_uses_auto (type))
+ {
+ error ("typedef declared %<auto%>");
+ type = error_mark_node;
+ }
+
if (decl_context == FIELD)
decl = build_lang_decl (TYPE_DECL, unqualified_id, type);
else
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3cc818a..7e88ecc8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,7 @@
2011-05-25 Jason Merrill <jason@redhat.com>
+ * g++.dg/cpp0x/auto9.C: Add typedef test.
+
* g++.dg/cpp0x/auto23.C: New.
* g++.dg/cpp0x/auto9.C: Adjust.
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto9.C b/gcc/testsuite/g++.dg/cpp0x/auto9.C
index 142ef90..190bfa6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/auto9.C
+++ b/gcc/testsuite/g++.dg/cpp0x/auto9.C
@@ -119,3 +119,6 @@ H<auto> h; // { dg-error "invalid" }
void qq (auto); // { dg-error "auto" }
void qr (auto*); // { dg-error "auto" }
+
+// PR c++/46145
+typedef auto autot; // { dg-error "auto" }