| // RUN: %clang_cc1 -load %llvmshlibdir/CallSuperAttr%pluginext -fsyntax-only -verify=callsuper %s |
| // RUN: %clang_cc1 -load %llvmshlibdir/CallSuperAttr%pluginext -DBAD_CALLSUPER -fsyntax-only -verify=badcallsuper %s |
| // REQUIRES: plugins, examples |
| // callsuper-no-diagnostics |
| [[clang::call_super]] virtual void Test() {} |
| [[clang::call_super]] virtual void Test() {} |
| struct Derive : public Base1, public Base2 { |
| [[clang::call_super]] virtual void Test() override final; |
| // badcallsuper-warning@16 {{'call_super' attribute marked on a final method}} |
| // badcallsuper-warning@20 {{virtual function 'Base2::Test' is marked as 'call_super' but this overriding method does not call the base version}} |
| // badcallsuper-note@10 {{function marked 'call_super' here}} |
| struct Derive2 : public Base1, public Base2 { |