189a1d03eSRichard // RUN: %check_clang_tidy %s modernize-use-override %t -- \ 2*e8a3ddafSNathan James // RUN: -config="{CheckOptions: {modernize-use-override.OverrideSpelling: 'OVERRIDE',modernize-use-override.FinalSpelling: 'FINAL'}}" 389a1d03eSRichard 489a1d03eSRichard #define ABSTRACT = 0 589a1d03eSRichard 689a1d03eSRichard #define OVERRIDE override 789a1d03eSRichard #define FINAL final 889a1d03eSRichard #define VIRTUAL virtual 989a1d03eSRichard #define NOT_VIRTUAL 1089a1d03eSRichard #define NOT_OVERRIDE 1189a1d03eSRichard 1289a1d03eSRichard #define MUST_USE_RESULT __attribute__((warn_unused_result)) 1389a1d03eSRichard #define UNUSED __attribute__((unused)) 1489a1d03eSRichard 1589a1d03eSRichard struct Base { ~BaseBase1689a1d03eSRichard virtual ~Base() {} 1789a1d03eSRichard virtual void a(); 1889a1d03eSRichard virtual void b(); 1989a1d03eSRichard virtual void c(); 2089a1d03eSRichard virtual void e() = 0; 2189a1d03eSRichard virtual void f2() const = 0; 2289a1d03eSRichard virtual void g() = 0; 2389a1d03eSRichard virtual void j() const; 2489a1d03eSRichard virtual void k() = 0; 2589a1d03eSRichard virtual void l() const; 2689a1d03eSRichard }; 2789a1d03eSRichard 2889a1d03eSRichard struct SimpleCases : public Base { 2989a1d03eSRichard public: 3089a1d03eSRichard virtual ~SimpleCases(); 3189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using 'OVERRIDE' or (rarely) 'FINAL' instead of 'virtual' [modernize-use-override] 3289a1d03eSRichard // CHECK-FIXES: {{^}} ~SimpleCases() OVERRIDE; 3389a1d03eSRichard 3489a1d03eSRichard void a(); 3589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: annotate this function with 'OVERRIDE' or (rarely) 'FINAL' [modernize-use-override] 3689a1d03eSRichard // CHECK-FIXES: {{^}} void a() OVERRIDE; 3789a1d03eSRichard 3889a1d03eSRichard virtual void b(); 3989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using 'OVERRIDE' or (rarely) 'FINAL' instead of 'virtual' [modernize-use-override] 4089a1d03eSRichard // CHECK-FIXES: {{^}} void b() OVERRIDE; 4189a1d03eSRichard 4289a1d03eSRichard virtual void c(); 4389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using 4489a1d03eSRichard // CHECK-FIXES: {{^}} void c() OVERRIDE; 4589a1d03eSRichard 4689a1d03eSRichard virtual void e() = 0; 4789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using 4889a1d03eSRichard // CHECK-FIXES: {{^}} void e() OVERRIDE = 0; 4989a1d03eSRichard 5089a1d03eSRichard virtual void f2() const = 0; 5189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using 5289a1d03eSRichard // CHECK-FIXES: {{^}} void f2() const OVERRIDE = 0; 5389a1d03eSRichard 5489a1d03eSRichard virtual void g() ABSTRACT; 5589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using 5689a1d03eSRichard // CHECK-FIXES: {{^}} void g() OVERRIDE ABSTRACT; 5789a1d03eSRichard 5889a1d03eSRichard virtual void j() const; 5989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using 6089a1d03eSRichard // CHECK-FIXES: {{^}} void j() const OVERRIDE; 6189a1d03eSRichard 6289a1d03eSRichard virtual void k() OVERRIDE; 6389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant since the function is already declared 'OVERRIDE' [modernize-use-override] 6489a1d03eSRichard // CHECK-FIXES: {{^}} void k() OVERRIDE; 6589a1d03eSRichard 6689a1d03eSRichard virtual void l() const OVERRIDE; 6789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant since the function is already declared 'OVERRIDE' [modernize-use-override] 6889a1d03eSRichard // CHECK-FIXES: {{^}} void l() const OVERRIDE; 6989a1d03eSRichard }; 70