/* Deviance Test 4.3.0.1:  Ensure illegal storage class specifications are */
/*                         detected                                        */

int printf(const char *, ...);

typedef double DblFunc (void);

static int ReturnInt (long l); /* ReturnInt should be defined later in file */

auto int s;                    /* auto can only be used in head of block */
register short f;              /* register can only be used with local   */
                               /*   variables and function parameters    */
int main (void)
  {
   int i;

   extern auto float y;        /* only 1 storage class per declaration */
   auto int register a;
   static typedef int *l;

   i = ReturnInt (55);     /* call static function declared but not defined */
   printf ("Failed Deviance Test 4.3.0.1\n");
  }

/****************************************************************************/

auto double F1 (int a)         /* functions can only be extern or static */
  {
  }

/****************************************************************************/

register int Int (void)        /* functions can only be extern or static */
  {
  }

/****************************************************************************/

DblFunc FF (void)              /* cannot inherit type of function definition */
  {                            /*   from a typedef name                      */
  }

/****************************************************************************/

/* Function parameters can only have storage class register */

static long Long (auto int i, extern float f, static long m, typedef int ptr)
  {
  }
