// { 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-message "" } .*
typedef int complex2;// { dg-error "" } .*
typedef int complex3;// { dg-message "" } .*
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-message "previous declaration" }

S a = T();                      // OK 
struct T * p;                   // { dg-error "" } using typedef after struct

//case01
typedef bool short;// { dg-error "" } .*
