This revision was automatically updated to reflect the committed changes.
Closed by commit rCTE325015: [clang-tidy] Update fuchsia-multiple-inheritance 
to not fail (authored by juliehockett, committed by ).

Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D43223

Files:
  clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
  test/clang-tidy/fuchsia-multiple-inheritance.cpp


Index: clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
===================================================================
--- clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
+++ clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
@@ -66,7 +66,7 @@
   for (const auto &I : Node->bases()) {
     if (I.isVirtual()) continue;
     const auto *Ty = I.getType()->getAs<RecordType>();
-    assert(Ty && "RecordType of base class is unknown");
+    if (!Ty) continue;
     const RecordDecl *D = Ty->getDecl()->getDefinition();
     if (!D) continue;
     const auto *Base = cast<CXXRecordDecl>(D);
@@ -96,18 +96,18 @@
     // concrete classes
     unsigned NumConcrete = 0;
     for (const auto &I : D->bases()) {
-      if (I.isVirtual() || I.getType()->getAs<TemplateTypeParmType>()) 
continue;
+      if (I.isVirtual()) continue;
       const auto *Ty = I.getType()->getAs<RecordType>();
-      assert(Ty && "RecordType of base class is unknown");
+      if (!Ty) continue;
       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
       if (!isInterface(Base)) NumConcrete++;
     }
     
     // Check virtual bases to see if there is more than one concrete 
     // non-virtual base.
     for (const auto &V : D->vbases()) {
       const auto *Ty = V.getType()->getAs<RecordType>();
-      assert(Ty && "RecordType of base class is unknown");
+      if (!Ty) continue;
       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
       if (!isInterface(Base)) NumConcrete++;
     }
Index: test/clang-tidy/fuchsia-multiple-inheritance.cpp
===================================================================
--- test/clang-tidy/fuchsia-multiple-inheritance.cpp
+++ test/clang-tidy/fuchsia-multiple-inheritance.cpp
@@ -131,3 +131,6 @@
 
 template<typename T> struct A : T {};
 template<typename T> struct B : virtual T {};
+
+template<typename> struct C {};
+template<typename T> struct D : C<T> {};


Index: clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
===================================================================
--- clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
+++ clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
@@ -66,7 +66,7 @@
   for (const auto &I : Node->bases()) {
     if (I.isVirtual()) continue;
     const auto *Ty = I.getType()->getAs<RecordType>();
-    assert(Ty && "RecordType of base class is unknown");
+    if (!Ty) continue;
     const RecordDecl *D = Ty->getDecl()->getDefinition();
     if (!D) continue;
     const auto *Base = cast<CXXRecordDecl>(D);
@@ -96,18 +96,18 @@
     // concrete classes
     unsigned NumConcrete = 0;
     for (const auto &I : D->bases()) {
-      if (I.isVirtual() || I.getType()->getAs<TemplateTypeParmType>()) continue;
+      if (I.isVirtual()) continue;
       const auto *Ty = I.getType()->getAs<RecordType>();
-      assert(Ty && "RecordType of base class is unknown");
+      if (!Ty) continue;
       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
       if (!isInterface(Base)) NumConcrete++;
     }
     
     // Check virtual bases to see if there is more than one concrete 
     // non-virtual base.
     for (const auto &V : D->vbases()) {
       const auto *Ty = V.getType()->getAs<RecordType>();
-      assert(Ty && "RecordType of base class is unknown");
+      if (!Ty) continue;
       const auto *Base = cast<CXXRecordDecl>(Ty->getDecl()->getDefinition());
       if (!isInterface(Base)) NumConcrete++;
     }
Index: test/clang-tidy/fuchsia-multiple-inheritance.cpp
===================================================================
--- test/clang-tidy/fuchsia-multiple-inheritance.cpp
+++ test/clang-tidy/fuchsia-multiple-inheritance.cpp
@@ -131,3 +131,6 @@
 
 template<typename T> struct A : T {};
 template<typename T> struct B : virtual T {};
+
+template<typename> struct C {};
+template<typename T> struct D : C<T> {};
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to