brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 81b0839 Raw
38 lines · plain
1// RUN: %clang_cc1 -fsyntax-only -verify -Wsign-conversion %s2 3typedef unsigned int NSUInteger;4 5@interface NSObject6- new;7- (NSUInteger)hash;8@end9 10@interface X : NSObject11@property NSUInteger uint;12@end13 14@interface NSArray : NSObject 15 16- (NSUInteger)count;17- (id)objectAtIndex:(NSUInteger)index;18- (id)objectAtIndexedSubscript:(NSUInteger)index;19 20@end21 22void foo(void) {23    X *x = [X new];24    signed int sint = -1;25    [x setUint:sint];  // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}26    x.uint = sint; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}27}28 29void Test1(void) {30signed int si = -1;31NSArray *array;32 33(void)((NSObject*)array[si]).hash; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}34 35(void)[((NSObject*)array[si]) hash]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}36(void)array[si]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}37}38