Mercurial > hg > CbC > CbC_llvm
diff clang/test/SemaObjC/sign-conversion.m @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | c4bab56944e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang/test/SemaObjC/sign-conversion.m Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,39 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wsign-conversion %s +// rdar://13855394 + +typedef unsigned int NSUInteger; + +@interface NSObject +- new; +- (NSUInteger)hash; +@end + +@interface X : NSObject +@property NSUInteger uint; +@end + +@interface NSArray : NSObject + +- (NSUInteger)count; +- (id)objectAtIndex:(NSUInteger)index; +- (id)objectAtIndexedSubscript:(NSUInteger)index; + +@end + +void foo() { + X *x = [X new]; + signed int sint = -1; + [x setUint:sint]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}} + x.uint = sint; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}} +} + +// rdar://13855682 +void Test1() { +signed int si = -1; +NSArray *array; + +(void)((NSObject*)array[si]).hash; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}} + +(void)[((NSObject*)array[si]) hash]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}} +(void)array[si]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}} +}