Actions
Bug #11833
closed2.2.4 syntax error when naked percent notation touches keyword arguments
Description
Possible regression:
In Ruby 2.2.3, naked percent-notation was allowed in keyword arguments without spacing, like this:
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]
$ ruby -e "def foo(x:%i[a b c]); puts x end; foo"
a
b
c
In Ruby 2.2.4 this is a syntax error:
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]
$ ruby -e "def foo(x:%i[a b c]); puts x end; foo"
-e:1: syntax error, unexpected '%', expecting ')'
def foo(x:%i[a b c]); puts x end; foo
^
-e:1: syntax error, unexpected ')', expecting end-of-input
def foo(x:%i[a b c]); puts x end; foo
This however works:
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]
$ ruby -e "def foo(x: %i[a b c]); puts x end; foo"
a
b
c
Notice the extra space after x:
Updated by yui-knk (Kaneko Yuichiro) almost 10 years ago
- Related to Bug #11812: Lack of space between colon and % literal causes syntax error added
Updated by yui-knk (Kaneko Yuichiro) almost 10 years ago
I think backport of #11812 to ruby 2.2 is required.
Updated by nagachika (Tomoyuki Chikanaga) almost 10 years ago
- Status changed from Open to Closed
Applied in changeset backport22:r53257.
merge revision(s) 53092,53093: [Backport #11812] [Backport #11833]
* parse.y (parse_percent): Allow %-literals in labeled arg as
r51624 did for parentheses.
Fixes [ruby-core:72084] [Bug #11812].
* test/ruby/test_syntax.rb: fix typo in test
Updated by nagachika (Tomoyuki Chikanaga) almost 10 years ago
Thank you for your report and notice.
I've just backport at r53257.
Are there any concrete gems which is affected by this regression?
I want to know the severity of this issue in the real world.
Updated by hsbt (Hiroshi SHIBATA) almost 10 years ago
- Has duplicate Bug #11914: 2.2.4: Parsing "symbol:%w(word)" gives SyntaxError added
Updated by usa (Usaku NAKAMURA) over 9 years ago
- Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE
Actions
Like0
Like0Like0Like0Like0Like0Like0