mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-13 14:01:26 +08:00
re PR c++/27572 (ICE on typedef in parameter declaration)
PR c++/27572 * decl.c (grokdeclarator): Return error_mark_node after invalid typedef. * g++.dg/other/typedef1.C: New test. * g++.dg/template/typedef4.C: New test. * g++.dg/template/typedef5.C: New test. From-SVN: r115729
This commit is contained in:
parent
04afa2cbfc
commit
709f9dcf15
gcc
@ -1,3 +1,9 @@
|
||||
2006-07-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/27572
|
||||
* decl.c (grokdeclarator): Return error_mark_node after invalid
|
||||
typedef.
|
||||
|
||||
2006-07-23 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
PR c++/28460
|
||||
|
@ -7351,7 +7351,10 @@ grokdeclarator (const cp_declarator *declarator,
|
||||
if (decl_context == PARM)
|
||||
{
|
||||
if (declspecs->specs[(int)ds_typedef])
|
||||
error ("typedef declaration invalid in parameter declaration");
|
||||
{
|
||||
error ("typedef declaration invalid in parameter declaration");
|
||||
return error_mark_node;
|
||||
}
|
||||
else if (storage_class == sc_static
|
||||
|| storage_class == sc_extern
|
||||
|| thread_p)
|
||||
|
@ -1,3 +1,10 @@
|
||||
2006-07-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
|
||||
|
||||
PR c++/27572
|
||||
* g++.dg/other/typedef1.C: New test.
|
||||
* g++.dg/template/typedef4.C: New test.
|
||||
* g++.dg/template/typedef5.C: New test.
|
||||
|
||||
2006-07-24 Erik Edelmann <eedelman@gcc.gnu.org>
|
||||
|
||||
PR fortran/28416
|
||||
|
7
gcc/testsuite/g++.dg/other/typedef1.C
Normal file
7
gcc/testsuite/g++.dg/other/typedef1.C
Normal file
@ -0,0 +1,7 @@
|
||||
// PR c++/27572
|
||||
// { dg-do compile }
|
||||
|
||||
void f1(typedef) {} // { dg-error "no type|typedef declaration" }
|
||||
void f2(typedef x) {} // { dg-error "no type|typedef declaration" }
|
||||
void f3(typedef x[]) {} // { dg-error "no type|typedef declaration" }
|
||||
void f4(typedef int x) {} // { dg-error "typedef declaration" }
|
9
gcc/testsuite/g++.dg/template/typedef4.C
Normal file
9
gcc/testsuite/g++.dg/template/typedef4.C
Normal file
@ -0,0 +1,9 @@
|
||||
// PR c++/27572
|
||||
// { dg-do compile }
|
||||
|
||||
template<typedef> void foo(); // { dg-error "no type|typedef declaration" }
|
||||
|
||||
void bar()
|
||||
{
|
||||
foo<int>(); // { dg-error "matching" }
|
||||
}
|
7
gcc/testsuite/g++.dg/template/typedef5.C
Normal file
7
gcc/testsuite/g++.dg/template/typedef5.C
Normal file
@ -0,0 +1,7 @@
|
||||
// PR c++/27572
|
||||
// { dg-do compile }
|
||||
|
||||
template<typedef,int> struct A1; // { dg-error "no type|typedef declaration" }
|
||||
template<typedef x,int> struct A2; // { dg-error "no type|typedef declaration" }
|
||||
template<typedef x[],int> struct A3; // { dg-error "no type|typedef declaration" }
|
||||
template<typedef int x, int> struct A4; // { dg-error "typedef declaration" }
|
Loading…
x
Reference in New Issue
Block a user