Przeglądaj źródła

clang-analyzer: Suppress warnings in intentional use-after-move cases

Brad King 4 lat temu
rodzic
commit
b6c4d93dcd
2 zmienionych plików z 6 dodań i 0 usunięć
  1. 2 0
      Tests/CMakeLib/testOptional.cxx
  2. 4 0
      Tests/CMakeLib/testString.cxx

+ 2 - 0
Tests/CMakeLib/testOptional.cxx

@@ -301,12 +301,14 @@ static bool testMoveConstruct(std::vector<Event>& expected)
   cm::optional<EventLogger> o3{};
   const cm::optional<EventLogger> o4{ std::move(o3) };
 
+#ifndef __clang_analyzer__ /* cplusplus.Move */
   expected = {
     { Event::VALUE_CONSTRUCT, &*o1, nullptr, 4 },
     { Event::MOVE_CONSTRUCT, &*o2, &*o1, 4 },
     { Event::DESTRUCT, &*o2, nullptr, 4 },
     { Event::DESTRUCT, &*o1, nullptr, 4 },
   };
+#endif
   return true;
 }
 

+ 4 - 0
Tests/CMakeLib/testString.cxx

@@ -326,12 +326,14 @@ static bool testConstructMove()
   std::cout << "testConstructMove()\n";
   cm::String s1 = std::string("abc");
   cm::String s2 = std::move(s1);
+#ifndef __clang_analyzer__ /* cplusplus.Move */
   ASSERT_TRUE(s1.data() == nullptr);
   ASSERT_TRUE(s1.size() == 0);
   ASSERT_TRUE(s2.size() == 3);
   ASSERT_TRUE(std::strncmp(s2.data(), "abc", 3) == 0);
   ASSERT_TRUE(s1.is_stable());
   ASSERT_TRUE(s2.is_stable());
+#endif
   return true;
 }
 
@@ -356,12 +358,14 @@ static bool testAssignMove()
   cm::String s1 = std::string("abc");
   cm::String s2;
   s2 = std::move(s1);
+#ifndef __clang_analyzer__ /* cplusplus.Move */
   ASSERT_TRUE(s1.data() == nullptr);
   ASSERT_TRUE(s1.size() == 0);
   ASSERT_TRUE(s2.size() == 3);
   ASSERT_TRUE(std::strncmp(s2.data(), "abc", 3) == 0);
   ASSERT_TRUE(s1.is_stable());
   ASSERT_TRUE(s2.is_stable());
+#endif
   return true;
 }