|
@@ -108,6 +108,16 @@ public:
|
|
|
return result(Status::Reject, type, " is not in types [", cons.types, "]");
|
|
return result(Status::Reject, type, " is not in types [", cons.types, "]");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ Status visit(constraint::ConstConstraint const & cons, Adapter auto const & document) const {
|
|
|
|
|
+ auto is_equal = [this, &document](auto const & frozen) {
|
|
|
|
|
+ return document.equals(frozen, cfg_.strict_equality);
|
|
|
|
|
+ };
|
|
|
|
|
+ if (cons.value->apply(is_equal)) {
|
|
|
|
|
+ return result(Status::Accept);
|
|
|
|
|
+ }
|
|
|
|
|
+ return result(Status::Reject, cons.value, " was expected");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
Status visit(constraint::EnumConstraint const & cons, Adapter auto const & document) const {
|
|
Status visit(constraint::EnumConstraint const & cons, Adapter auto const & document) const {
|
|
|
auto is_equal = [this, &document](auto const & frozen) {
|
|
auto is_equal = [this, &document](auto const & frozen) {
|
|
|
return document.equals(frozen, cfg_.strict_equality);
|
|
return document.equals(frozen, cfg_.strict_equality);
|