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'}}
+}