// RUN: %check_clang_tidy %s modernize-use-using %t typedef int Type; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' [modernize-use-using] // CHECK-FIXES: using Type = int; typedef long LL; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using LL = long; typedef int Bla; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using Bla = int; typedef Bla Bla2; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using Bla2 = Bla; typedef void (*type)(int, int); // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using type = void (*)(int, int); typedef void (*type2)(); // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using type2 = void (*)(); class Class { typedef long long Type; // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using Type = long long; }; typedef void (Class::*MyPtrType)(Bla) const; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using MyPtrType = void (Class::*)(Bla)[[ATTR:( __attribute__\(\(thiscall\)\))?]] const; class Iterable { public: class Iterator {}; }; template class Test { typedef typename T::iterator Iter; // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using Iter = typename T::iterator; }; using balba = long long; union A {}; typedef void (A::*PtrType)(int, int) const; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using PtrType = void (A::*)(int, int)[[ATTR]] const; typedef Class some_class; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using some_class = Class; typedef Class Cclass; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using Cclass = Class; typedef Cclass cclass2; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using cclass2 = Cclass; class cclass {}; typedef void (cclass::*MyPtrType3)(Bla); // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using MyPtrType3 = void (cclass::*)(Bla)[[ATTR]]; using my_class = int; typedef Test another; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' // CHECK-FIXES: using another = Test; typedef int bla1, bla2, bla3; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef' #define CODE typedef int INT CODE; // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef'