Skip to content

[Yaml] parse mappings with a colon in a key #20841

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

xabbuh
Copy link
Member

@xabbuh xabbuh commented Dec 9, 2016

Q A
Branch? master
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #19874
License MIT
Doc PR

@stof
Copy link
Member

stof commented Dec 9, 2016

Does it change the parsed value for previously accepted values ? If yes, we should not put this in 2.7 IMO

@@ -246,6 +246,8 @@ public function getTestsForParse()
array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')),
array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', array('foo\'' => 'bar', 'bar"' => 'foo: bar')),
array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', array('foo: ' => 'bar', 'bar: ' => 'foo: bar')),
array('{foo:bar: "baz"}', array('foo:bar' => 'baz')),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stof This was parsed differently before (it would have been parsed as ['foo' => 'bar: baz']).

Actually, I am really mixed about what to do here. But I could live with merging it into master to be completely safe.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as it was accepted before, we should indeed do it in master.

changing the behavior in a 2.7 patch release is too likely to break things silently.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, in master, it should still parse as before and generate a deprecation notice, and the behavior changed in 4.0.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then let's postpone this PR for 4.0. The deprecation should already be covered by #19504 if I didn't overlook any edge cases.

Copy link
Contributor

@GuilhemN GuilhemN Dec 9, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current deprecation is in part wrong, values such as {foo:[bar]} or {foo:} are valid, but the deprecation is triggered ({foo:} is not supported by the parser currently so for this one, I guess it's ok).

And what about replacing its message by The behaviour of colon not followed by an indicator (e.g " ", ",", "{", "}", "[", "]") is deprecated since 3.2. It will be considered as part of the value in 4.0.?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GuilhemN #20855 should fix that.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact, this is not valid YAML at all. However, we have to improve the deprecation handling (see #22829).

@xabbuh xabbuh modified the milestones: 4.0, 2.7 Dec 9, 2016
fabpot added a commit that referenced this pull request Mar 1, 2017
…abbuh)

This PR was merged into the 3.3-dev branch.

Discussion
----------

[Yaml] parse omitted inlined mapping values as null

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #20841 (comment)
| License       | MIT
| Doc PR        |

As @GuilhemN mentioned in #20841 (comment) when using the inline YAML notation, it is currently not possible to completely omit the mapping value to have it parsed as `null` (you have to pass `~` or `null` explicitly).

Commits
-------

c473504 parse omitted inlined mapping values as null
@xabbuh
Copy link
Member Author

xabbuh commented Mar 20, 2017

Closing here for now. To be reopened when we start the development of 4.0.

@xabbuh xabbuh closed this Mar 20, 2017
@xabbuh xabbuh deleted the issue-19874 branch May 21, 2017 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants