From 522d6614c50ecd386854d7e46010d1b74672f42d Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 18 Jan 2001 09:35:59 +0000 Subject: [PATCH] semantics.c (begin_class_definition): Check we're not inside a template parm list. cp: * semantics.c (begin_class_definition): Check we're not inside a template parm list. testsuite: * g++.old-deja/g++.pt/crash65.C: New test. From-SVN: r39113 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/semantics.c | 5 +++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.old-deja/g++.pt/crash65.C | 12 ++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash65.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9b2d132634a..c020cfaf3d0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-01-18 Nathan Sidwell + + * semantics.c (begin_class_definition): Check we're not inside a + template parm list. + 2001-01-18 Nathan Sidwell * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 10e67c64463..0c4ed96e1e8 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1720,6 +1720,11 @@ tree begin_class_definition (t) tree t; { + if (processing_template_parmlist) + { + cp_error ("definition of `%#T' inside template parameter list", t); + return error_mark_node; + } if (t == error_mark_node || ! IS_AGGR_TYPE (t)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ff295af42de..4b00c044efc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-01-18 Nathan Sidwell + + * g++.old-deja/g++.pt/crash65.C: New test. + 2001-01-18 Neil Booth * gcc.dg/cpp/assembl2.S: New test case. diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash65.C b/gcc/testsuite/g++.old-deja/g++.pt/crash65.C new file mode 100644 index 00000000000..7b632a60a1d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash65.C @@ -0,0 +1,12 @@ +// Build don't link: + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 11 Jan 2001 + +// Bug 1506. We ICE'd on a struct definition inside a template parms. +// This is still not completely fixed, but now issues a diagnostic + +// crash test - XFAIL *-*-* + +template