annotate clang/test/SemaObjC/sign-conversion.m @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wsign-conversion %s
anatofuz
parents:
diff changeset
2 // rdar://13855394
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 typedef unsigned int NSUInteger;
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 @interface NSObject
anatofuz
parents:
diff changeset
7 - new;
anatofuz
parents:
diff changeset
8 - (NSUInteger)hash;
anatofuz
parents:
diff changeset
9 @end
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 @interface X : NSObject
anatofuz
parents:
diff changeset
12 @property NSUInteger uint;
anatofuz
parents:
diff changeset
13 @end
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 @interface NSArray : NSObject
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 - (NSUInteger)count;
anatofuz
parents:
diff changeset
18 - (id)objectAtIndex:(NSUInteger)index;
anatofuz
parents:
diff changeset
19 - (id)objectAtIndexedSubscript:(NSUInteger)index;
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 @end
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 void foo() {
anatofuz
parents:
diff changeset
24 X *x = [X new];
anatofuz
parents:
diff changeset
25 signed int sint = -1;
anatofuz
parents:
diff changeset
26 [x setUint:sint]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}
anatofuz
parents:
diff changeset
27 x.uint = sint; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}
anatofuz
parents:
diff changeset
28 }
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 // rdar://13855682
anatofuz
parents:
diff changeset
31 void Test1() {
anatofuz
parents:
diff changeset
32 signed int si = -1;
anatofuz
parents:
diff changeset
33 NSArray *array;
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 (void)((NSObject*)array[si]).hash; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37 (void)[((NSObject*)array[si]) hash]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}
anatofuz
parents:
diff changeset
38 (void)array[si]; // expected-warning {{implicit conversion changes signedness: 'int' to 'NSUInteger'}}
anatofuz
parents:
diff changeset
39 }