65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s
 | |
| 
 | |
| void t1() {
 | |
|   int array[1] = { 0 };
 | |
|   char subscript = 0;
 | |
|   int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
 | |
| }
 | |
| 
 | |
| void t2() {
 | |
|   int array[1] = { 0 };
 | |
|   char subscript = 0;
 | |
|   int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
 | |
| }
 | |
| 
 | |
| void t3() {
 | |
|   int *array = 0;
 | |
|   char subscript = 0;
 | |
|   int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
 | |
| }
 | |
| 
 | |
| void t4() {
 | |
|   int *array = 0;
 | |
|   char subscript = 0;
 | |
|   int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
 | |
| }
 | |
| 
 | |
| char returnsChar();
 | |
| void t5() {
 | |
|   int *array = 0;
 | |
|   int val = array[returnsChar()]; // expected-warning{{array subscript is of type 'char'}}
 | |
| }
 | |
| 
 | |
| void t6() {
 | |
|   int array[1] = { 0 };
 | |
|   signed char subscript = 0;
 | |
|   int val = array[subscript]; // no warning for explicit signed char
 | |
| }
 | |
| 
 | |
| void t7() {
 | |
|   int array[1] = { 0 };
 | |
|   unsigned char subscript = 0;
 | |
|   int val = array[subscript]; // no warning for unsigned char
 | |
| }
 | |
| 
 | |
| typedef char CharTy;
 | |
| void t8() {
 | |
|   int array[1] = { 0 };
 | |
|   CharTy subscript = 0;
 | |
|   int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
 | |
| }
 | |
| 
 | |
| typedef signed char SignedCharTy;
 | |
| void t9() {
 | |
|   int array[1] = { 0 };
 | |
|   SignedCharTy subscript = 0;
 | |
|   int val = array[subscript]; // no warning for explicit signed char
 | |
| }
 | |
| 
 | |
| typedef unsigned char UnsignedCharTy;
 | |
| void t10() {
 | |
|   int array[1] = { 0 };
 | |
|   UnsignedCharTy subscript = 0;
 | |
|   int val = array[subscript]; // no warning for unsigned char
 | |
| }
 | 
