1 /* Copyright (C) 2001 Free Software Foundation, Inc.  */
2 
3 /* { dg-do compile } */
4 
5 /* This tests various diagnostics about escape sequences, for both
6    the preprocessor and the compiler.
7 
8    Neil Booth, 22 May 2001.  */
9 
10 #if '\x'	/* { dg-error "no following" "\x with no digits" } */
11 #endif
12 #if '\x400'	/* { dg-error "out of range" "\x out of range" } */
13 #endif
14 #if '\x0ff'	/* { dg-bogus "out of range" "\x out of range" } */
15 #endif
16 #if '\400'	/* { dg-error "out of range" "\x out of range" } */
17 #endif
18 #if '\377'	/* { dg-bogus "out of range" "bogus \x out of range" } */
19 #endif
20 #if '\177' != 0x7f /* { dg-bogus "out of range" "bogus \x out of range" } */
21 #error bad octal /* { dg-bogus "bad" "bad octal evaluation" } */
22 #endif
23 #if '\0377'	/* { dg-warning "multi" "too long octal" } */
24 #endif
25 #if '\p'	/* { dg-error "unknown escape" "unknown escape seq" } */
26 #endif
27 
foo()28 void foo ()
29 {
30   int c;
31 
32   c = '\x';	/* { dg-error "no following" "\x with no digits" } */
33   c = '\x100';	/* { dg-error "out of range" "\x out of range" } */
34   c = '\x0ff';	/* { dg-bogus "out of range" "\x out of range" } */
35   c = '\400';	/* { dg-error "out of range" "\x out of range" } */
36   c = '\377';	/* { dg-bogus "out of range" "bogus \x out of range" } */
37   c = '\0377';	/* { dg-warning "multi" "too long octal" } */
38   c = '\p';	/* { dg-error "unknown escape" "unknown escape seq" } */
39 }
40