From 4fafbd7266d8243cf83174c7552df4424d4821dd Mon Sep 17 00:00:00 2001 From: didier-brizet Date: Wed, 14 Sep 2022 17:41:38 +0200 Subject: [PATCH] Try to find required properties in patch --- src/json-validator.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/json-validator.cpp b/src/json-validator.cpp index 7452651..fe59481 100644 --- a/src/json-validator.cpp +++ b/src/json-validator.cpp @@ -1012,10 +1012,6 @@ class object : public schema if (minProperties_.first && instance.size() < minProperties_.second) e.error(ptr, instance, "too few properties"); - for (auto &r : required_) - if (instance.find(r) == instance.end()) - e.error(ptr, instance, "required property '" + r + "' not found in object"); - // for each property in instance for (auto &p : instance.items()) { if (propertyNames_) @@ -1064,6 +1060,14 @@ class object : public schema } } + for (const auto &r : required_) { + if (instance.find(r) != instance.end()) + continue; + if (!find_patch_add((ptr / r), patch).is_null()) + continue; + e.error(ptr, instance, "required property '" + r + "' not found in object"); + } + for (auto &dep : dependencies_) { auto prop = instance.find(dep.first); if (prop != instance.end()) // if dependency-property is present in instance