Enable -Werror. (#5969)
authorMathias Preiner <mathias.preiner@gmail.com>
Thu, 25 Feb 2021 00:26:44 +0000 (16:26 -0800)
committerGitHub <noreply@github.com>
Thu, 25 Feb 2021 00:26:44 +0000 (16:26 -0800)
15 files changed:
CMakeLists.txt
src/api/cvc4cpp.cpp
src/api/python/CMakeLists.txt
src/expr/node_trie.cpp
src/parser/CMakeLists.txt
src/preprocessing/passes/bv_to_int.cpp
src/theory/arith/nl/poly_conversion.cpp
src/theory/arrays/theory_arrays.cpp
src/theory/booleans/circuit_propagator.cpp
src/theory/booleans/circuit_propagator.h
src/theory/booleans/proof_checker.cpp
src/theory/quantifiers/ematching/inst_match_generator_simple.cpp
src/theory/quantifiers/skolemize.cpp
src/util/real_algebraic_number_poly_imp.cpp
test/unit/theory/logic_info_white.cpp

index 3dd282a8de6ec5e313e06485e41ed37d0c57b5ba..c32c10f4d6d468c36a3094857e4284198f1174b6 100644 (file)
@@ -234,8 +234,9 @@ include(Config${CMAKE_BUILD_TYPE})
 
 add_check_c_cxx_flag("-O${OPTIMIZATION_LEVEL}")
 add_check_c_cxx_flag("-Wall")
+add_check_c_cxx_flag("-Werror")
+add_check_c_cxx_flag("-Wno-unused-private-field")
 add_check_c_flag("-fexceptions")
-add_check_c_cxx_flag("-Wno-deprecated")
 add_check_cxx_flag("-Wsuggest-override")
 add_check_cxx_flag("-Wnon-virtual-dtor")
 add_check_c_cxx_flag("-Wimplicit-fallthrough")
index 10f39cb383a34ba3ff7f539e6f0cc14fb2b3451b..0c94320c3b0bbd65018936c8d08e9b242f4aeba1 100644 (file)
@@ -748,7 +748,7 @@ class CVC4ApiExceptionStream
    * default to noexcept(true) (else this triggers a call to std::terminate). */
   ~CVC4ApiExceptionStream() noexcept(false)
   {
-    if (!std::uncaught_exception())
+    if (std::uncaught_exceptions() == 0)
     {
       throw CVC4ApiException(d_stream.str());
     }
@@ -769,7 +769,7 @@ class CVC4ApiRecoverableExceptionStream
    * default to noexcept(true) (else this triggers a call to std::terminate). */
   ~CVC4ApiRecoverableExceptionStream() noexcept(false)
   {
-    if (!std::uncaught_exception())
+    if (std::uncaught_exceptions() == 0)
     {
       throw CVC4ApiRecoverableException(d_stream.str());
     }
index dde29110fea6fbd5b8fbc7eafbbcb9c632c55713..211fb5ff8a7340ea02f65abfc76548c212c996c2 100644 (file)
@@ -48,6 +48,12 @@ add_library(pycvc4
 
 target_link_libraries(pycvc4 cvc4 ${PYTHON_LIBRARIES})
 
+# Disable -Werror and other warnings for code generated by Cython.
+set_target_properties(pycvc4
+                      PROPERTIES
+                      COMPILE_FLAGS
+                      "-Wno-error -Wno-shadow -Wno-implicit-fallthrough")
+
 python_extension_module(pycvc4)
 
 # Installation based on https://bloerg.net/2012/11/10/cmake-and-distutils.html
index 58ad36da9cc6f4b3e974027c86f78d190feca054..d2da99509b026f662dc141ae24b1b5beda83e36e 100644 (file)
@@ -24,7 +24,7 @@ NodeTemplate<ref_count> NodeTemplateTrie<ref_count>::existsTerm(
   const NodeTemplateTrie<ref_count>* tnt = this;
   typename std::map<NodeTemplate<ref_count>,
                     NodeTemplateTrie<ref_count>>::const_iterator it;
-  for (const NodeTemplate<ref_count> r : reps)
+  for (const NodeTemplate<ref_count>& r : reps)
   {
     it = tnt->d_data.find(r);
     if (it == tnt->d_data.end())
@@ -51,7 +51,7 @@ NodeTemplate<ref_count> NodeTemplateTrie<ref_count>::addOrGetTerm(
     NodeTemplate<ref_count> n, const std::vector<NodeTemplate<ref_count>>& reps)
 {
   NodeTemplateTrie<ref_count>* tnt = this;
-  for (const NodeTemplate<ref_count> r : reps)
+  for (const NodeTemplate<ref_count>& r : reps)
   {
     tnt = &(tnt->d_data[r]);
   }
index 8e69da34b3a3d561fdd1d19298c03c413729e02b..2fe92fb458e0bca7c9074df97118018e9e0e44c8 100644 (file)
@@ -93,7 +93,7 @@ foreach(lang Cvc Smt2 Tptp)
 
   # We don't want to enable -Wall for code generated by ANTLR.
   set_source_files_properties(
-    ${gen_src_files} PROPERTIES COMPILE_FLAGS -Wno-all)
+    ${gen_src_files} PROPERTIES COMPILE_FLAGS "-Wno-all -Wno-error")
 
   # Add generated source files to the parser source files
   list(APPEND libcvc4parser_src_files ${gen_src_files})
index f5d840a4907cc4bc44c9173a93757e7329019134..4712db91f6b73cb0bdf15ef311fbffd386df5d45 100644 (file)
@@ -691,6 +691,9 @@ Node BVToInt::translateWithChildren(Node original,
     {
       // Exists is eliminated by the rewriter.
       Assert(false);
+#ifdef NDEBUG
+      CVC4_FALLTHROUGH;
+#endif
     }
     default:
     {
index 0e4e21b76705eac3ceaf45be42c834a4a86a35a5..5b7edb3ef1ac08d44a6ff897fdd0e5278072a3f6 100644 (file)
@@ -452,9 +452,11 @@ Node lower_bound_as_node(const Node& var,
       poly::get_upper(poly::get_isolating_interval(alg)));
   int sl = poly::sign_at(get_defining_polynomial(alg),
                          poly::get_lower(poly::get_isolating_interval(alg)));
+#ifndef NDEBUG
   int su = poly::sign_at(get_defining_polynomial(alg),
                          poly::get_upper(poly::get_isolating_interval(alg)));
   Assert(sl != 0 && su != 0 && sl != su);
+#endif
 
   // open:  var <= l  or  (var < u  and  sgn(poly(var)) == sl)
   // !open: var <= l  or  (var < u  and  sgn(poly(var)) == sl/0)
@@ -506,8 +508,10 @@ Node upper_bound_as_node(const Node& var,
       poly::get_lower(poly::get_isolating_interval(alg)));
   Rational u = poly_utils::toRational(
       poly::get_upper(poly::get_isolating_interval(alg)));
+#ifndef NDEBUG
   int sl = poly::sign_at(get_defining_polynomial(alg),
                          poly::get_lower(poly::get_isolating_interval(alg)));
+#endif
   int su = poly::sign_at(get_defining_polynomial(alg),
                          poly::get_upper(poly::get_isolating_interval(alg)));
   Assert(sl != 0 && su != 0 && sl != su);
index f07140d4e93f58cc0602ab4274400597518229d4..4dd7dcafd195fed5e5275da8f106504c31efe6b0 100644 (file)
@@ -936,7 +936,10 @@ void TheoryArrays::checkPair(TNode r1, TNode r2)
     case EQUALITY_FALSE_AND_PROPAGATED:
       // Should have been propagated to us
       Assert(false);
-    case EQUALITY_FALSE:
+#ifdef NDEBUG
+      CVC4_FALLTHROUGH;
+#endif
+    case EQUALITY_FALSE: CVC4_FALLTHROUGH;
     case EQUALITY_FALSE_IN_MODEL:
       // This is unlikely, but I think it could happen
       Debug("arrays::sharing") << "TheoryArrays::computeCareGraph(): checkPair called when false in model" << std::endl;
index 24e821e33cf42e6c90b358b13eccbec59b36bb94..726160d838f14bb3b56cb0b4d9b327551760982b 100644 (file)
@@ -252,8 +252,10 @@ void CircuitPropagator::propagateBackward(TNode parent, bool parentAssignment)
       else
       {
         // AND = FALSE: if all children BUT ONE == TRUE, assign(c = FALSE)
-        TNode::iterator holdout = find_if_unique(
-            parent.begin(), parent.end(), not1(IsAssignedTo(*this, true)));
+        TNode::iterator holdout =
+            find_if_unique(parent.begin(), parent.end(), [this](TNode x) {
+              return !isAssignedTo(x, true);
+            });
         if (holdout != parent.end())
         {
           assignAndEnqueue(*holdout, false, prover.andFalse(parent, holdout));
@@ -264,8 +266,10 @@ void CircuitPropagator::propagateBackward(TNode parent, bool parentAssignment)
       if (parentAssignment)
       {
         // OR = TRUE: if all children BUT ONE == FALSE, assign(c = TRUE)
-        TNode::iterator holdout = find_if_unique(
-            parent.begin(), parent.end(), not1(IsAssignedTo(*this, false)));
+        TNode::iterator holdout =
+            find_if_unique(parent.begin(), parent.end(), [this](TNode x) {
+              return !isAssignedTo(x, false);
+            });
         if (holdout != parent.end())
         {
           assignAndEnqueue(*holdout, true, prover.orTrue(parent, holdout));
@@ -450,8 +454,10 @@ void CircuitPropagator::propagateForward(TNode child, bool childAssignment)
         if (childAssignment)
         {
           TNode::iterator holdout;
-          holdout = find_if(
-              parent.begin(), parent.end(), not1(IsAssignedTo(*this, true)));
+          holdout = find_if(parent.begin(), parent.end(), [this](TNode x) {
+            return !isAssignedTo(x, true);
+          });
+
           if (holdout == parent.end())
           {  // all children are assigned TRUE
             // AND ...(x=TRUE)...: if all children now assigned to TRUE,
@@ -461,8 +467,10 @@ void CircuitPropagator::propagateForward(TNode child, bool childAssignment)
           else if (isAssignedTo(parent, false))
           {  // the AND is FALSE
             // is the holdout unique ?
-            TNode::iterator other = find_if(
-                holdout + 1, parent.end(), not1(IsAssignedTo(*this, true)));
+            TNode::iterator other =
+                find_if(holdout + 1, parent.end(), [this](TNode x) {
+                  return !isAssignedTo(x, true);
+                });
             if (other == parent.end())
             {  // the holdout is unique
               // AND ...(x=TRUE)...: if all children BUT ONE now assigned to
@@ -487,8 +495,9 @@ void CircuitPropagator::propagateForward(TNode child, bool childAssignment)
         else
         {
           TNode::iterator holdout;
-          holdout = find_if(
-              parent.begin(), parent.end(), not1(IsAssignedTo(*this, false)));
+          holdout = find_if(parent.begin(), parent.end(), [this](TNode x) {
+            return !isAssignedTo(x, false);
+          });
           if (holdout == parent.end())
           {  // all children are assigned FALSE
             // OR ...(x=FALSE)...: if all children now assigned to FALSE,
@@ -498,8 +507,10 @@ void CircuitPropagator::propagateForward(TNode child, bool childAssignment)
           else if (isAssignedTo(parent, true))
           {  // the OR is TRUE
             // is the holdout unique ?
-            TNode::iterator other = find_if(
-                holdout + 1, parent.end(), not1(IsAssignedTo(*this, false)));
+            TNode::iterator other =
+                find_if(holdout + 1, parent.end(), [this](TNode x) {
+                  return !isAssignedTo(x, false);
+                });
             if (other == parent.end())
             {  // the holdout is unique
               // OR ...(x=FALSE)...: if all children BUT ONE now assigned to
index 3546a4d35d04eb3da730f7a7f04aad28491a15a5..469a01815742cc22c06acf6ba2537eaef5a660d6 100644 (file)
@@ -169,35 +169,6 @@ class CircuitPropagator
     T& d_data;
   }; /* class DataClearer<T> */
 
-  /** Predicate for use in STL functions. */
-  class IsAssigned : public std::unary_function<TNode, bool>
-  {
-    CircuitPropagator& d_circuit;
-
-   public:
-    IsAssigned(CircuitPropagator& circuit) : d_circuit(circuit) {}
-
-    bool operator()(TNode in) const { return d_circuit.isAssigned(in); }
-  }; /* class IsAssigned */
-
-  /** Predicate for use in STL functions. */
-  class IsAssignedTo : public std::unary_function<TNode, bool>
-  {
-    CircuitPropagator& d_circuit;
-    bool d_value;
-
-   public:
-    IsAssignedTo(CircuitPropagator& circuit, bool value)
-        : d_circuit(circuit), d_value(value)
-    {
-    }
-
-    bool operator()(TNode in) const
-    {
-      return d_circuit.isAssignedTo(in, d_value);
-    }
-  }; /* class IsAssignedTo */
-
   /**
    * Assignment status of each node.
    */
index 83662a50f92940805b4c2b6f8a0dec9a7636cfcf..405dae2500658a71fbe6c8bf5d3702f390198671 100644 (file)
@@ -272,7 +272,7 @@ Node BoolProofRuleChecker::checkInternal(PfRule id,
       {
         if (lits[j] == rhsElim)
         {
-          rhsElim == Node::null();
+          rhsElim = Node::null();
           continue;
         }
         auto it = lhsElim.find(lits[j]);
index 39dd8ed22ee8cfce0281d829733228c5c2347dac..6b2f1b7f83e9aab2502b72b8c47f9b005dce839b 100644 (file)
@@ -131,7 +131,7 @@ void InstMatchGeneratorSimple::addInstantiations(InstMatch& m,
     TNode t = tat->getData();
     Debug("simple-trigger") << "Actual term is " << t << std::endl;
     // convert to actual used terms
-    for (const std::pair<unsigned, int>& v : d_var_num)
+    for (const auto& v : d_var_num)
     {
       if (v.second >= 0)
       {
index 2e9093b8242acd32825d637c570be1c5589a08fd..a9ac7d0d253822271668eb01b1b4c3d8f7467375 100644 (file)
@@ -383,7 +383,7 @@ void Skolemize::getSkolemTermVectors(
 {
   std::unordered_map<Node, std::vector<Node>, NodeHashFunction>::const_iterator
       itk;
-  for (const std::pair<const Node, Node>& p : d_skolemized)
+  for (const auto& p : d_skolemized)
   {
     Node q = p.first;
     itk = d_skolem_constants.find(q);
index 674850534fd33a1fa5f9cecf08666ad85c438a6d..e0a56f6101eb463b38379a7169050eac737a943a 100644 (file)
@@ -60,6 +60,7 @@ RealAlgebraicNumber::RealAlgebraicNumber(const std::vector<long>& coefficients,
                                          long lower,
                                          long upper)
 {
+#ifndef NDEBUG
   for (long c : coefficients)
   {
     Assert(std::numeric_limits<std::int32_t>::min() <= c
@@ -67,6 +68,7 @@ RealAlgebraicNumber::RealAlgebraicNumber(const std::vector<long>& coefficients,
         << "Coefficients need to fit within 32 bit integers. Please use the "
            "constructor based on Integer instead.";
   }
+#endif
   d_value = poly::AlgebraicNumber(poly::UPolynomial(coefficients),
                                   poly::DyadicInterval(lower, upper));
 }
index 7ffbd6d2a279fc6e905432a76cbd6fab97c94624..5dc8c45cbea7a7031049bfcdd17da7b895ac9206 100644 (file)
@@ -27,8 +27,8 @@ namespace test {
 
 class TestTheoryWhiteLogicInfo : public TestInternal
 {
-#warning \
-    "This test is of questionable compatiblity with contrib/new-theory. Is the new theory id handled correctly by the Logic info."
+  // This test is of questionable compatiblity with contrib/new-theory. Is the
+  // new theory id handled correctly by the Logic info.
  protected:
   void eq(const LogicInfo& logic1, const LogicInfo& logic2) const
   {