diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/fuchsia-virtual-inheritance.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/fuchsia-virtual-inheritance.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/fuchsia-virtual-inheritance.cpp b/clang-tools-extra/test/clang-tidy/fuchsia-virtual-inheritance.cpp new file mode 100644 index 00000000000..0c3311afcbd --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/fuchsia-virtual-inheritance.cpp @@ -0,0 +1,42 @@ +// RUN: %check_clang_tidy %s fuchsia-virtual-inheritance %t + +class A { +public: + A(int value) : val(value) {} + + int do_A() { return val; } + +private: + int val; +}; + +class B : public virtual A { + // CHECK-MESSAGES: [[@LINE-1]]:1: warning: direct virtual inheritance is disallowed [fuchsia-virtual-inheritance] + // CHECK-NEXT: class B : public virtual A { +public: + B() : A(0) {} + int do_B() { return 1 + do_A(); } +}; + +class C : public virtual A { + // CHECK-MESSAGES: [[@LINE-1]]:1: warning: direct virtual inheritance is disallowed [fuchsia-virtual-inheritance] + // CHECK-NEXT: class C : public virtual A { +public: + C() : A(0) {} + int do_C() { return 2 + do_A(); } +}; + +class D : public B, public C { +public: + D(int value) : A(value), B(), C() {} + + int do_D() { return do_A() + do_B() + do_C(); } +}; + +int main() { + A *a = new A(0); + B *b = new B(); + C *c = new C(); + D *d = new D(0); + return 0; +} |