diff --git a/core/modules/user/src/Tests/UserValidationTest.php b/core/modules/user/src/Tests/UserValidationTest.php
index 44cd775..454a476 100644
--- a/core/modules/user/src/Tests/UserValidationTest.php
+++ b/core/modules/user/src/Tests/UserValidationTest.php
@@ -104,15 +104,9 @@ function testValidation() {
     $mail = $this->randomName(EMAIL_MAX_LENGTH - 11) . '@example.com';
     $user->set('mail', $mail);
     $violations = $user->validate();
-    // @todo There are two violations because EmailItem::getConstraints()
-    //   overlaps with the implicit constraint of the 'email' property type used
-    //   in EmailItem::propertyDefinitions(). Resolve this in
-    //   https://drupal.org/node/2023465.
-    $this->assertEqual(count($violations), 2, 'Violations found when email is too long');
+    $this->assertEqual(count($violations), 1, 'Violations found when email is too long');
     $this->assertEqual($violations[0]->getPropertyPath(), 'mail.0.value');
     $this->assertEqual($violations[0]->getMessage(), t('%name: the email address can not be longer than @max characters.', array('%name' => $user->get('mail')->getFieldDefinition()->getLabel(), '@max' => EMAIL_MAX_LENGTH)));
-    $this->assertEqual($violations[1]->getPropertyPath(), 'mail.0.value');
-    $this->assertEqual($violations[1]->getMessage(), t('This value is not a valid email address.'));
 
     // Provoke a email collision with an exsiting user.
     $user->set('mail', 'existing@example.com');
diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php
index c9afe86..f6256d8 100644
--- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php
+++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php
@@ -15,8 +15,8 @@
 use Drupal\Core\TypedData\Validation\MetadataFactory;
 use Drupal\Core\Validation\ConstraintManager;
 use Drupal\Core\Validation\DrupalTranslator;
-use Symfony\Component\Validator\ValidatorInterface;
 use Symfony\Component\Validator\Validation;
+use Symfony\Component\Validator\Validator\ValidatorInterface;
 
 /**
  * Manages data type plugins.
@@ -298,7 +298,7 @@ public function getPropertyInstance(TypedDataInterface $object, $property_name,
   /**
    * Sets the validator for validating typed data.
    *
-   * @param \Symfony\Component\Validator\ValidatorInterface $validator
+   * @param \Symfony\Component\Validator\Validator\ValidatorInterface $validator
    *   The validator object to set.
    */
   public function setValidator(ValidatorInterface $validator) {
@@ -308,7 +308,7 @@ public function setValidator(ValidatorInterface $validator) {
   /**
    * Gets the validator for validating typed data.
    *
-   * @return \Symfony\Component\Validator\ValidatorInterface
+   * @return \Symfony\Component\Validator\Validator\ValidatorInterface
    *   The validator object.
    */
   public function getValidator() {
@@ -316,6 +316,7 @@ public function getValidator() {
       $this->validator = Validation::createValidatorBuilder()
         ->setMetadataFactory(new MetadataFactory())
         ->setTranslator(new DrupalTranslator())
+        ->setApiVersion(Validation::API_VERSION_2_4)
         ->getValidator();
     }
     return $this->validator;
