diff vendor/symfony/validator/Constraints/AbstractComparison.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 7a779792577d
children 129ea1e6d783
line wrap: on
line diff
--- a/vendor/symfony/validator/Constraints/AbstractComparison.php	Mon Apr 23 09:33:26 2018 +0100
+++ b/vendor/symfony/validator/Constraints/AbstractComparison.php	Mon Apr 23 09:46:53 2018 +0100
@@ -11,6 +11,7 @@
 
 namespace Symfony\Component\Validator\Constraints;
 
+use Symfony\Component\PropertyAccess\PropertyAccess;
 use Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
 
@@ -24,6 +25,7 @@
 {
     public $message;
     public $value;
+    public $propertyPath;
 
     /**
      * {@inheritdoc}
@@ -34,11 +36,18 @@
             $options = array();
         }
 
-        if (is_array($options) && !isset($options['value'])) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The %s constraint requires the "value" option to be set.',
-                get_class($this)
-            ));
+        if (is_array($options)) {
+            if (!isset($options['value']) && !isset($options['propertyPath'])) {
+                throw new ConstraintDefinitionException(sprintf('The "%s" constraint requires either the "value" or "propertyPath" option to be set.', get_class($this)));
+            }
+
+            if (isset($options['value']) && isset($options['propertyPath'])) {
+                throw new ConstraintDefinitionException(sprintf('The "%s" constraint requires only one of the "value" or "propertyPath" options to be set, not both.', get_class($this)));
+            }
+
+            if (isset($options['propertyPath']) && !class_exists(PropertyAccess::class)) {
+                throw new ConstraintDefinitionException(sprintf('The "%s" constraint requires the Symfony PropertyAccess component to use the "propertyPath" option.', get_class($this)));
+            }
         }
 
         parent::__construct($options);