From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../g++.old-deja/g++.benjamin/typedef01.C | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C (limited to 'gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C') 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 000000000..79a965b16 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C @@ -0,0 +1,46 @@ +// { dg-do assemble } +//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 { /* ... */ };// { dg-error "" } .* +typedef int complex2;// { dg-error "" } .* +typedef int complex3;// { dg-error "" } .* +class complex3 { /* ... */ };// { dg-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; // { dg-error "previous declaration" } + +S a = T(); // OK +struct T * p; // { dg-error "" } using typedef after struct + +//case01 +typedef bool short;// { dg-error "" } .* -- cgit v1.2.3