blob: 374a609e81f707b80659fcaab19898d38a46c039 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s
Sam Weinig76e2b712009-09-14 01:58:58 +00002
3void 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
9void 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
15void t3() {
16 int *array = 0;
17 char subscript = 0;
18 int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
19}
20
21void t4() {
22 int *array = 0;
23 char subscript = 0;
24 int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
25}
26
27char returnsChar();
28void t5() {
29 int *array = 0;
30 int val = array[returnsChar()]; // expected-warning{{array subscript is of type 'char'}}
31}
Sam Weinigb0a22902009-09-14 18:17:16 +000032
33void t6() {
34 int array[1] = { 0 };
35 signed char subscript = 0;
Sam Weinig0f9a5b52009-09-14 20:14:57 +000036 int val = array[subscript]; // no warning for explicit signed char
Sam Weinigb0a22902009-09-14 18:17:16 +000037}
38
39void t7() {
40 int array[1] = { 0 };
41 unsigned char subscript = 0;
42 int val = array[subscript]; // no warning for unsigned char
43}
44
45typedef char CharTy;
46void 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
52typedef signed char SignedCharTy;
53void t9() {
54 int array[1] = { 0 };
55 SignedCharTy subscript = 0;
Sam Weinig0f9a5b52009-09-14 20:14:57 +000056 int val = array[subscript]; // no warning for explicit signed char
Sam Weinigb0a22902009-09-14 18:17:16 +000057}
58
59typedef unsigned char UnsignedCharTy;
60void t10() {
61 int array[1] = { 0 };
62 UnsignedCharTy subscript = 0;
63 int val = array[subscript]; // no warning for unsigned char
64}