From: Benjamin Kosnik Date: Thu, 12 Feb 1998 18:20:08 +0000 (+0000) Subject: � X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c4e8876e9b153cbf6fd7b50b005b43d435163196;p=platform%2Fupstream%2Fgcc.git � testcase for g++/14837 From-SVN: r17882 --- diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C b/gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C new file mode 100644 index 0000000..179740d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C @@ -0,0 +1,51 @@ +// Build don't link: +//980205 bkoz + +//7.1.3 the typedef specifier + + +//p1 +typedef int MILES, *KLICKSP; +MILES distance; +extern KLICKSP metricp; + +//p2--can redefine to same type +typedef struct s { /* ... */ } s; +typedef int I; +typedef int I; +typedef I I; + +//p3--cannot redefine to a different type in a given scope +class complex2 { /* ... */ };// ERROR - .* +typedef int complex2;// ERROR - .* +typedef int complex3;// ERROR - .* +class complex3 { /* ... */ };// ERROR - .* + + +//p4 +/* +4 A typedef-name that names a class is a class-name (_class.name_). If + a typedef-name is used + 1) following the class-key in an elaborated-type-specifier + 2) or in the class-head of a class declaration + 3) or is used as the identifier in the declarator for a + constructor or destructor declaration + the program is ill-formed. [Example: +*/ +struct S { + S(); + ~S(); +}; + +typedef struct S T; + +S a = T(); // OK +struct T * p; // error + +//case01 +typedef bool short;// ERROR - .* + + + + +