Skip to content

Commit 885db86

Browse files
Merge branch '3.2' into 3.3
* 3.2: typo [Console] Fix tests [Console] Fixed different behaviour of key and value user inputs in multiple choice question [Cache] Dont use pipelining with RedisCluster [Yaml] fix colon without space deprecation [Intl] Fix intl tests for PHP < 5.5.10
2 parents 6887cbf + 4cdb9fe commit 885db86

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ CHANGELOG
5353
-----
5454

5555
* Mappings with a colon (`:`) that is not followed by a whitespace are deprecated
56-
and will lead to a `ParseException` in Symfony 4.0 (e.g. `foo:bar` must be
57-
`foo: bar`).
56+
when the mapping key is not quoted and will lead to a `ParseException` in
57+
Symfony 4.0 (e.g. `foo:bar` must be `foo: bar`).
5858

5959
* Added support for parsing PHP constants:
6060

Inline.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,7 @@ private static function parseMapping($mapping, $flags, &$i = 0, $references = ar
479479
}
480480

481481
// key
482+
$isKeyQuoted = in_array($mapping[$i], array('"', "'"), true);
482483
$key = self::parseScalar($mapping, $flags, array(':', ' '), $i, false, array(), true);
483484

484485
if (':' !== $key && false === $i = strpos($mapping, ':', $i)) {
@@ -497,8 +498,8 @@ private static function parseMapping($mapping, $flags, &$i = 0, $references = ar
497498
}
498499
}
499500

500-
if (':' !== $key && (!isset($mapping[$i + 1]) || !in_array($mapping[$i + 1], array(' ', ',', '[', ']', '{', '}'), true))) {
501-
@trigger_error('Using a colon that is not followed by an indication character (i.e. " ", ",", "[", "]", "{", "}" is deprecated since version 3.2 and will throw a ParseException in 4.0.', E_USER_DEPRECATED);
501+
if (':' !== $key && !$isKeyQuoted && (!isset($mapping[$i + 1]) || !in_array($mapping[$i + 1], array(' ', ',', '[', ']', '{', '}'), true))) {
502+
@trigger_error('Using a colon after an unquoted mapping key that is not followed by an indication character (i.e. " ", ",", "[", "]", "{", "}") is deprecated since version 3.2 and will throw a ParseException in 4.0.', E_USER_DEPRECATED);
502503
}
503504

504505
while ($i < $len) {

Tests/InlineTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public function testParseInvalidMappingKeyShouldThrowException()
168168

169169
/**
170170
* @group legacy
171-
* @expectedDeprecation Using a colon that is not followed by an indication character (i.e. " ", ",", "[", "]", "{", "}" is deprecated since version 3.2 and will throw a ParseException in 4.0.
171+
* @expectedDeprecation Using a colon after an unquoted mapping key that is not followed by an indication character (i.e. " ", ",", "[", "]", "{", "}") is deprecated since version 3.2 and will throw a ParseException in 4.0.
172172
* throws \Symfony\Component\Yaml\Exception\ParseException in 4.0
173173
*/
174174
public function testParseMappingKeyWithColonNotFollowedBySpace()
@@ -391,6 +391,8 @@ public function getTestsForParse()
391391
array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')),
392392
array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', array('foo\'' => 'bar', 'bar"' => 'foo: bar')),
393393
array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', array('foo: ' => 'bar', 'bar: ' => 'foo: bar')),
394+
array('{"foo:bar": "baz"}', array('foo:bar' => 'baz')),
395+
array('{"foo":"bar"}', array('foo' => 'bar')),
394396

395397
// nested sequences and mappings
396398
array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))),
@@ -460,6 +462,8 @@ public function getTestsForParseWithMapObjects()
460462
array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')),
461463
array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', (object) array('foo\'' => 'bar', 'bar"' => 'foo: bar')),
462464
array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', (object) array('foo: ' => 'bar', 'bar: ' => 'foo: bar')),
465+
array('{"foo:bar": "baz"}', (object) array('foo:bar' => 'baz')),
466+
array('{"foo":"bar"}', (object) array('foo' => 'bar')),
463467

464468
// nested sequences and mappings
465469
array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))),

0 commit comments

Comments
 (0)