annotate clang/test/Sema/warn-self-assign-field.mm @ 169:1f21f60db75c

Added tag llvm10 for changeset 980e56f2e095
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 09:26:57 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 class S {
anatofuz
parents:
diff changeset
4 public:
anatofuz
parents:
diff changeset
5 int a_;
anatofuz
parents:
diff changeset
6 void s(int a) {
anatofuz
parents:
diff changeset
7 a_ = a_; // expected-warning {{assigning field to itself}}
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 // Don't really care about this one either way.
anatofuz
parents:
diff changeset
10 this->a_ = a_; // expected-warning {{assigning field to itself}}
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 a_ += a_; // Shouldn't warn.
anatofuz
parents:
diff changeset
13 }
anatofuz
parents:
diff changeset
14 };
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 void f0(S* s) {
anatofuz
parents:
diff changeset
17 // Would be nice to have, but not important.
anatofuz
parents:
diff changeset
18 s->a_ = s->a_;
anatofuz
parents:
diff changeset
19 }
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 void f1(S* s, S* t) {
anatofuz
parents:
diff changeset
22 // Shouldn't warn.
anatofuz
parents:
diff changeset
23 t->a_ = s->a_;
anatofuz
parents:
diff changeset
24 }
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 struct T {
anatofuz
parents:
diff changeset
27 S* s_;
anatofuz
parents:
diff changeset
28 };
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 void f2(T* t) {
anatofuz
parents:
diff changeset
31 // Would be nice to have, but even less important.
anatofuz
parents:
diff changeset
32 t->s_->a_ = t->s_->a_;
anatofuz
parents:
diff changeset
33 }
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 void f3(T* t, T* t2) {
anatofuz
parents:
diff changeset
36 // Shouldn't warn.
anatofuz
parents:
diff changeset
37 t2->s_->a_ = t->s_->a_;
anatofuz
parents:
diff changeset
38 }
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 void f4(int i) {
anatofuz
parents:
diff changeset
41 // This is a common pattern to silence "parameter unused". Shouldn't warn.
anatofuz
parents:
diff changeset
42 i = i;
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 int j = 0;
anatofuz
parents:
diff changeset
45 j = j; // Likewise.
anatofuz
parents:
diff changeset
46 }
anatofuz
parents:
diff changeset
47
anatofuz
parents:
diff changeset
48 @interface I {
anatofuz
parents:
diff changeset
49 int a_;
anatofuz
parents:
diff changeset
50 }
anatofuz
parents:
diff changeset
51 @end
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53 @implementation I
anatofuz
parents:
diff changeset
54 - (void)setA:(int)a {
anatofuz
parents:
diff changeset
55 a_ = a_; // expected-warning {{assigning instance variable to itself}}
anatofuz
parents:
diff changeset
56 }
anatofuz
parents:
diff changeset
57
anatofuz
parents:
diff changeset
58 - (void)foo:(I*)i {
anatofuz
parents:
diff changeset
59 // Don't care much about this warning.
anatofuz
parents:
diff changeset
60 i->a_ = i->a_; // expected-warning {{assigning instance variable to itself}}
anatofuz
parents:
diff changeset
61
anatofuz
parents:
diff changeset
62 // Shouldn't warn.
anatofuz
parents:
diff changeset
63 a_ = i->a_;
anatofuz
parents:
diff changeset
64 i->a_ = a_;
anatofuz
parents:
diff changeset
65 }
anatofuz
parents:
diff changeset
66 @end