Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Frontend / plugin-call-super.cpp
blob4049eb0a86c60bfbdb4a72cde8f97ac3627929b1
1 // RUN: %clang_cc1 -load %llvmshlibdir/CallSuperAttr%pluginext -fsyntax-only -verify=callsuper %s
2 // RUN: %clang_cc1 -load %llvmshlibdir/CallSuperAttr%pluginext -DBAD_CALLSUPER -fsyntax-only -verify=badcallsuper %s
3 // REQUIRES: plugins, examples
5 // callsuper-no-diagnostics
6 struct Base1 {
7 [[clang::call_super]] virtual void Test() {}
8 };
9 struct Base2 {
10 [[clang::call_super]] virtual void Test() {}
12 struct Derive : public Base1, public Base2 {
13 #ifndef BAD_CALLSUPER
14 void Test() override;
15 #else
16 [[clang::call_super]] virtual void Test() override final;
17 // badcallsuper-warning@16 {{'call_super' attribute marked on a final method}}
18 #endif
20 void Derive::Test() {
21 Base1::Test();
22 #ifndef BAD_CALLSUPER
23 Base2::Test();
24 #else
25 // badcallsuper-warning@20 {{virtual function 'Base2::Test' is marked as 'call_super' but this overriding method does not call the base version}}
26 // badcallsuper-note@10 {{function marked 'call_super' here}}
27 #endif
29 struct Derive2 : public Base1, public Base2 {
30 void Test() override {
31 Base1::Test();
32 Base2::Test();