瀏覽代碼

refactor: fix warnings

Sam Jaffe 3 周之前
父節點
當前提交
5af9ca8824

+ 1 - 1
include/jvalidate/constraint/extension_constraint.h

@@ -6,7 +6,7 @@
 #include <jvalidate/status.h>
 
 namespace jvalidate::constraint {
-class ExtensionConstraint {
+struct ExtensionConstraint {
 public:
   struct Impl {
     virtual ~Impl() = default;

+ 2 - 2
include/jvalidate/detail/number.h

@@ -27,8 +27,8 @@ inline bool is_json_integer(double number) { return std::floor(number) == number
  * actually fits in the 64-bit integer type that we use for JSON Integer.
  */
 inline bool fits_in_integer(double number) {
-  static constexpr double g_int_max = std::numeric_limits<int64_t>::max();
-  static constexpr double g_int_min = std::numeric_limits<int64_t>::min();
+  static constexpr double g_int_max = static_cast<double>(std::numeric_limits<int64_t>::max());
+  static constexpr double g_int_min = static_cast<double>(std::numeric_limits<int64_t>::min());
   return is_json_integer(number) && number <= g_int_max && number >= g_int_min;
 }
 

+ 0 - 1
include/jvalidate/detail/out.h

@@ -66,7 +66,6 @@ public:
     if (ref_) {
       *ref_ = std::forward<U>(val);
     }
-    return *this;
   }
 };
 

+ 1 - 1
include/jvalidate/detail/reference_manager.h

@@ -82,7 +82,7 @@ public:
    */
   ReferenceManager(DocumentCache<A> & external, A const & root, schema::Version version,
                    ConstraintFactory<A> const & constraints)
-      : external_(external), constraints_(constraints), roots_{{{}, root}} {
+      : constraints_(constraints), external_(external), roots_{{{}, root}} {
     prime(root, {}, &vocab(version));
   }
 

+ 2 - 2
include/jvalidate/detail/simple_adapter.h

@@ -250,7 +250,7 @@ public:
 
       bool rval = true;
       auto array = this->as_array();
-      rhs.apply_array([&, this, index = 0UL](adapter::Adapter const & elem) mutable {
+      rhs.apply_array([&, index = 0UL](adapter::Adapter const & elem) mutable {
         // Short-Circuit OK
         rval = rval && array[index].equals(elem, strict);
         ++index;
@@ -269,7 +269,7 @@ public:
 
       bool rval = true;
       auto object = this->as_object();
-      rhs.apply_object([&, this](std::string const & key, adapter::Adapter const & elem) {
+      rhs.apply_object([&](std::string const & key, adapter::Adapter const & elem) {
         // Short-Circuit OK
         rval = rval && object.contains(key) && object[key].equals(elem, strict);
         return Status::Accept;

+ 1 - 1
include/jvalidate/detail/string.h

@@ -9,7 +9,7 @@
 #include <unicode/brkiter.h>
 #include <unicode/unistr.h>
 #endif
-#include <iostream>
+#include <cstring>
 
 namespace jvalidate::detail {
 /**

+ 1 - 1
include/jvalidate/schema.h

@@ -111,7 +111,7 @@ namespace jvalidate {
 class Schema : public schema::Node {
 private:
   friend class schema::Node;
-  template <Adapter A> friend class detail::ParserContext;
+  template <Adapter A> friend struct detail::ParserContext;
 
 private:
   schema::Node accept_;

+ 11 - 7
include/jvalidate/validation_visitor.h

@@ -24,9 +24,10 @@
 
 #define VISITED(type) std::get<std::unordered_set<type>>(*visited_)
 
-#define VALIDATE_SUBSCHEMA_AND_MARK_LOCAL_VISIT(subschema, subinstance, path, local_visited)       \
+#define VALIDATE_SUBSCHEMA_AND_MARK_LOCAL_VISIT(subschema, subinstance, path, local_visited, ...)  \
   do {                                                                                             \
-    Status const partial = validate_subschema_on(subschema, subinstance, path);                    \
+    Status const partial =                                                                         \
+        validate_subschema_on(subschema, subinstance, path __VA_OPT__(, ) __VA_ARGS__);            \
     rval &= partial;                                                                               \
     if (result_ and partial != Status::Noop) {                                                     \
       local_visited.insert(local_visited.end(), path);                                             \
@@ -509,7 +510,7 @@ public:
     std::vector<std::string> properties;
     for (auto const & [key, elem] : object) {
       if (auto it = cons.properties.find(key); it != cons.properties.end()) {
-        VALIDATE_SUBSCHEMA_AND_MARK_LOCAL_VISIT(it->second, elem, key, properties);
+        VALIDATE_SUBSCHEMA_AND_MARK_LOCAL_VISIT(it->second, elem, key, properties, key);
       }
       BREAK_EARLY_IF_NO_RESULT_TREE();
     }
@@ -635,7 +636,8 @@ public:
     for (auto const & [key, p_constraint] : schema_->constraints()) {
       BREAK_EARLY_IF_NO_RESULT_TREE();
       schema_path_ = current_schema / key;
-      rval &= std::visit([this, &document](auto & c) { return visit(c, document); }, *p_constraint);
+      rval &= std::visit([this, &document](auto & c) { return this->visit(c, document); },
+                         *p_constraint);
     }
 
     // Post Constraints represent the unevaluatedItems and unevaluatedProperties
@@ -643,7 +645,8 @@ public:
     for (auto const & [key, p_constraint] : schema_->post_constraints()) {
       BREAK_EARLY_IF_NO_RESULT_TREE();
       schema_path_ = current_schema / key;
-      rval &= std::visit([this, &document](auto & c) { return visit(c, document); }, *p_constraint);
+      rval &= std::visit([this, &document](auto & c) { return this->visit(c, document); },
+                         *p_constraint);
     }
 
     (result_ ? result_->valid(where_, current_schema, static_cast<bool>(rval)) : void());
@@ -722,7 +725,7 @@ private:
     if (schema::Node const * const * ppschema = std::get_if<0>(&subschema)) {
       return validate_subschema(*ppschema, document, keys...);
     } else {
-      return std::visit([this, &document](auto & c) { return visit(c, document); },
+      return std::visit([this, &document](auto & c) { return this->visit(c, document); },
                         *std::get<1>(subschema));
     }
   }
@@ -770,11 +773,12 @@ private:
    */
   template <typename K>
   Status validate_subschema_on(schema::Node const * subschema, Adapter auto const & document,
-                               K const & key) const {
+                               K const & key, auto const &... schema_keys) const {
     ValidationResult result;
 
     ValidationVisitor next = *this;
     next.where_ /= key;
+    ((next.schema_path_ /= schema_keys), ...);
     std::tie(next.schema_, next.result_, next.visited_) =
         std::forward_as_tuple(subschema, result_ ? &result : nullptr, nullptr);