aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorZack Weinberg <zack@codesourcery.com>2002-11-02 02:17:41 +0000
committerZack Weinberg <zack@gcc.gnu.org>2002-11-02 02:17:41 +0000
commit04d57dd504394cbdc94281c244bb2c1f1fda8a91 (patch)
tree42b0a17506b8b37f0d7d50420e1402075faa74f3 /gcc/cp
parent46be79e78967a0dea39910f0703c0c439748b2a5 (diff)
downloadgcc-04d57dd504394cbdc94281c244bb2c1f1fda8a91.zip
gcc-04d57dd504394cbdc94281c244bb2c1f1fda8a91.tar.gz
gcc-04d57dd504394cbdc94281c244bb2c1f1fda8a91.tar.bz2
PR c/7353 redux
PR c/7353 redux cp: * decl2.c (grokfield): Reject TYPE_DECLs with initializers. testsuite: * g++.dg/ext/typedef-init.C, gcc.dg/typedef-init.C: Add some more cases. From-SVN: r58737
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/decl2.c8
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 8b0d774..ce94b3a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2002-11-01 Zack Weinberg <zack@codesourcery.com>
+
+ PR c/7353 redux
+ * decl2.c (grokfield): Reject TYPE_DECLs with initializers.
+
2002-10-30 Jason Merrill <jason@redhat.com>
PR c++/8186
@@ -21,7 +26,7 @@
PR c++/8149
* decl.c (make_typename_type): Issue errors about invalid results.
-
+
2002-10-30 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
Core issue 287, PR c++/7639
@@ -77,7 +82,7 @@
* pt.c (build_template_decl): Don't set it.
(tsubst_decl): Likewise.
* typeck.c (expand_ptrmemfunc_cst): Don't use it.
-
+
* class.c (build_vtbl_initializer): Don't use build_vtable_entry.
(build_vtable_entry): Remove.
* cp-tree.h (BINFO_VIRTUALS): Expand documentation.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 9461174..93b643f7 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -915,7 +915,13 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist)
/* friend or constructor went bad. */
return value;
if (TREE_TYPE (value) == error_mark_node)
- return error_mark_node;
+ return error_mark_node;
+
+ if (TREE_CODE (value) == TYPE_DECL && init)
+ {
+ error ("typedef `%D' is initialized (use __typeof__ instead)", value);
+ init = NULL_TREE;
+ }
/* Pass friendly classes back. */
if (TREE_CODE (value) == VOID_TYPE)