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
7 [[clang::call_super
]] virtual void Test() {}
10 [[clang::call_super
]] virtual void Test() {}
12 struct Derive
: public Base1
, public Base2
{
16 [[clang::call_super
]] virtual void Test() override final
;
17 // badcallsuper-warning@16 {{'call_super' attribute marked on a final method}}
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}}
29 struct Derive2
: public Base1
, public Base2
{
30 void Test() override
{