Mercurial > hg > CbC > CbC_llvm
view clang/test/Sema/warn-self-assign-field.mm @ 266:00f31e85ec16 default tip
Added tag current for changeset 31d058e83c98
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Oct 2023 10:13:55 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s class S { public: int a_; void s(int a) { a_ = a_; // expected-warning {{assigning field to itself}} // Don't really care about this one either way. this->a_ = a_; // expected-warning {{assigning field to itself}} a_ += a_; // Shouldn't warn. } }; void f0(S* s) { // Would be nice to have, but not important. s->a_ = s->a_; } void f1(S* s, S* t) { // Shouldn't warn. t->a_ = s->a_; } struct T { S* s_; }; void f2(T* t) { // Would be nice to have, but even less important. t->s_->a_ = t->s_->a_; } void f3(T* t, T* t2) { // Shouldn't warn. t2->s_->a_ = t->s_->a_; } void f4(int i) { // This is a common pattern to silence "parameter unused". Shouldn't warn. i = i; int j = 0; j = j; // Likewise. } @interface I { int a_; } @end @implementation I - (void)setA:(int)a { a_ = a_; // expected-warning {{assigning instance variable to itself}} } - (void)foo:(I*)i { // Don't care much about this warning. i->a_ = i->a_; // expected-warning {{assigning instance variable to itself}} // Shouldn't warn. a_ = i->a_; i->a_ = a_; } @end