aaron.ballman added inline comments.
================ Comment at: clang-tidy/fuchsia/MultipleInheritanceCheck.cpp:60 + // To be an interface, all base classes must be interfaces as well. + for (const auto &I : Node->bases()) { + const auto *Ty = I.getType()->getAs<RecordType>(); ---------------- juliehockett wrote: > aaron.ballman wrote: > > What about virtual bases (`Node->vbases()`)? This would also be worth some > > test cases. > Added test cases for virtual, but aren't virtual bases also included in > `bases()`? No, they are separate in `CXXRecordDecl`. ================ Comment at: test/clang-tidy/fuchsia-multiple-inheritance.cpp:48 +}; + +// Inherits from multiple concrete classes. ---------------- The virtual base test cases I was thinking of were: ``` struct Base { virtual void foo() = 0; }; struct V1 : virtual Base {}; struct V2 : virtual Base {}; struct D : V1, V2 {}; // Should be fine --- struct Base { virtual void foo(); }; struct V1 : virtual Base {}; struct V2 : virtual Base {}; struct D : V1, V2 {}; // Should be fine (there's only one concrete base)? --- struct Base {}; struct V1 : virtual Base { virtual void f(); } struct V2 : virtual Base { virtual void g(); } struct D : V1, V2 {}; // Not okay --- struct Base {}; struct V1 : virtual Base { virtual void f() = 0; } struct V2 : virtual Base { virtual void g() = 0; } struct D : V1, V2 {}; // Okay --- struct Base { virtual void f(); }; struct V1 : virtual Base { virtual void f(); } struct V2 : virtual base { virtual void g() = 0; } struct D : V1, V2 {}; // Should be okay (V1::f() overrides Base::f() which is only inherited once)? ``` https://reviews.llvm.org/D40580 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits