| // RUN: %check_clang_tidy %s llvm-prefer-register-over-unsigned %t |
| |
| namespace llvm { |
| class Register { |
| public: |
| operator unsigned(); |
| |
| unsigned Reg; |
| }; |
| |
| // This class shouldn't trigger it despite the similarity. |
| class RegisterLike { |
| public: |
| operator unsigned(); |
| |
| unsigned Reg; |
| }; |
| } // end namespace llvm |
| |
| llvm::Register getReg(); |
| llvm::RegisterLike getRegLike(); |
| |
| void apply_1() { |
| unsigned Reg1 = getReg(); |
| // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'Reg1' declared as 'unsigned int'; use 'llvm::Register' instead [llvm-prefer-register-over-unsigned] |
| // CHECK-FIXES: apply_1() |
| // CHECK-FIXES-NEXT: llvm::Register Reg1 = getReg(); |
| } |
| |
| void apply_2() { |
| using namespace llvm; |
| unsigned Reg2 = getReg(); |
| // FIXME: Function-scoped UsingDirectiveDecl's don't appear to be in the |
| // DeclContext for the function so we can't elide the llvm:: in this |
| // case. Fortunately, it doesn't actually occur in the LLVM code base. |
| // CHECK-MESSAGES: :[[@LINE-4]]:12: warning: variable 'Reg2' declared as 'unsigned int'; use 'llvm::Register' instead [llvm-prefer-register-over-unsigned] |
| // CHECK-FIXES: apply_2() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: llvm::Register Reg2 = getReg(); |
| } |
| |
| namespace llvm { |
| void apply_3() { |
| unsigned Reg3 = getReg(); |
| // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'Reg3' declared as 'unsigned int'; use 'Register' instead [llvm-prefer-register-over-unsigned] |
| // CHECK-FIXES: apply_3() |
| // CHECK-FIXES-NEXT: Register Reg3 = getReg(); |
| } |
| } // end namespace llvm |
| |
| void done_1() { |
| llvm::Register Reg1 = getReg(); |
| // CHECK-FIXES: done_1() |
| // CHECK-FIXES-NEXT: llvm::Register Reg1 = getReg(); |
| } |
| |
| void done_2() { |
| using namespace llvm; |
| Register Reg2 = getReg(); |
| // CHECK-FIXES: done_2() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: Register Reg2 = getReg(); |
| } |
| |
| namespace llvm { |
| void done_3() { |
| Register Reg3 = getReg(); |
| // CHECK-FIXES: done_3() |
| // CHECK-FIXES-NEXT: Register Reg3 = getReg(); |
| } |
| } // end namespace llvm |
| |
| void do_nothing_1() { |
| unsigned Reg1 = getRegLike(); |
| // CHECK-FIXES: do_nothing_1() |
| // CHECK-FIXES-NEXT: unsigned Reg1 = getRegLike(); |
| } |
| |
| void do_nothing_2() { |
| using namespace llvm; |
| unsigned Reg2 = getRegLike(); |
| // CHECK-FIXES: do_nothing_2() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: unsigned Reg2 = getRegLike(); |
| } |
| |
| namespace llvm { |
| void do_nothing_3() { |
| unsigned Reg3 = getRegLike(); |
| // CHECK-FIXES: do_nothing_3() |
| // CHECK-FIXES-NEXT: unsigned Reg3 = getRegLike(); |
| } |
| } // end namespace llvm |
| |
| void fn1(llvm::Register R); |
| void do_nothing_4() { |
| fn1(getReg()); |
| // CHECK-FIXES: do_nothing_4() |
| // CHECK-FIXES-NEXT: fn1(getReg()); |
| } |
| |
| void fn2(unsigned R); |
| void do_nothing_5() { |
| fn2(getReg()); |
| // CHECK-FIXES: do_nothing_5() |
| // CHECK-FIXES-NEXT: fn2(getReg()); |
| } |
| |
| void do_nothing_6() { |
| using namespace llvm; |
| Register Reg6{getReg()}; |
| // CHECK-FIXES: do_nothing_6() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: Register Reg6{getReg()}; |
| } |
| |
| void do_nothing_7() { |
| using namespace llvm; |
| Register Reg7; |
| Reg7.Reg = getReg(); |
| // CHECK-FIXES: do_nothing_7() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: Register Reg7; |
| // CHECK-FIXES-NEXT: Reg7.Reg = getReg(); |
| } |
| |
| void do_nothing_8() { |
| using namespace llvm; |
| RegisterLike Reg8{getReg()}; |
| // CHECK-FIXES: do_nothing_8() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: RegisterLike Reg8{getReg()}; |
| } |
| |
| void do_nothing_9() { |
| using namespace llvm; |
| RegisterLike Reg9; |
| Reg9.Reg = getReg(); |
| // CHECK-FIXES: do_nothing_9() |
| // CHECK-FIXES-NEXT: using namespace llvm; |
| // CHECK-FIXES-NEXT: RegisterLike Reg9; |
| // CHECK-FIXES-NEXT: Reg9.Reg = getReg(); |
| } |