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