1 // RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s
2 
t1()3 void t1() {
4   int array[1] = { 0 };
5   char subscript = 0;
6   int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
7 }
8 
t2()9 void t2() {
10   int array[1] = { 0 };
11   char subscript = 0;
12   int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
13 }
14 
t3()15 void t3() {
16   int *array = 0;
17   char subscript = 0;
18   int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
19 }
20 
t4()21 void t4() {
22   int *array = 0;
23   char subscript = 0;
24   int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
25 }
26 
27 char returnsChar();
t5()28 void t5() {
29   int *array = 0;
30   int val = array[returnsChar()]; // expected-warning{{array subscript is of type 'char'}}
31 }
32 
t6()33 void t6() {
34   int array[1] = { 0 };
35   signed char subscript = 0;
36   int val = array[subscript]; // no warning for explicit signed char
37 }
38 
t7()39 void t7() {
40   int array[1] = { 0 };
41   unsigned char subscript = 0;
42   int val = array[subscript]; // no warning for unsigned char
43 }
44 
45 typedef char CharTy;
t8()46 void t8() {
47   int array[1] = { 0 };
48   CharTy subscript = 0;
49   int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
50 }
51 
52 typedef signed char SignedCharTy;
t9()53 void t9() {
54   int array[1] = { 0 };
55   SignedCharTy subscript = 0;
56   int val = array[subscript]; // no warning for explicit signed char
57 }
58 
59 typedef unsigned char UnsignedCharTy;
t10()60 void t10() {
61   int array[1] = { 0 };
62   UnsignedCharTy subscript = 0;
63   int val = array[subscript]; // no warning for unsigned char
64 }
65