You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description
In case there is a comment before the first item of an unindented collection there is a parse error:
You cannot define a mapping item when in a sequence at line ..
For example, parsing this yaml will generate the error:
test:
item1:
# comment
- aitem2:
- b
The error will occur if there is a new dictionary item after the first item (in this case item2). It will occur only for unindented collections (when the dashes are on the same indent level as the key)
wdiesveld
changed the title
Parse error when YAML comments are in unindented collections
YAML parse error when unindented collections contain a comment
Apr 24, 2020
… a comment (wdiesveld)
This PR was squashed before being merged into the 3.4 branch.
Discussion
----------
[Yaml] fix parse error when unindented collections contain a comment
| Q | A
| ------------- | ---
| Branch? | 5.0
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#36558
| License | MIT
### Problem
The method `Parser::getNextEmbedBlock` did not determine the yaml-block correctly when there was a comment before the first unindented collection item. This was caused by the fact that the check for unindented collection items was done for the _first line of the block only_. So in case this first line is a comment, this check will result in _false_, while in fact the parser is in an unindented collection.
### Solution
In the solution I implemented the parser will check for comment lines as well. As long as the loop encounters a comment line, it will check (in the next iteration) whether the line is an unindented collection item. So this check will be done until all comments before the first uncommented item are parsed.
Commits
-------
58bb2c5 [Yaml] fix parse error when unindented collections contain a comment
Symfony version(s) affected: 5.0.7
Description
In case there is a comment before the first item of an unindented collection there is a parse error:
For example, parsing this yaml will generate the error:
The error will occur if there is a new dictionary item after the first item (in this case item2). It will occur only for unindented collections (when the dashes are on the same indent level as the key)
How to reproduce
Possible Solution
The problem is that due to the comment the parser regards this as a single embedded block:
which is not a correct yaml block.
I have a fix for it; will create a pull request...
The text was updated successfully, but these errors were encountered: