Bug #8628

Parse error with method argument that is a Hash with a specific pattern

Added by Dimitri Geshef over 3 years ago. Updated over 3 years ago.

Target version:
ruby -v:
ruby 2.0.0p195 (2013-05-14) [i386-mingw32]


The next two lines cause a parse error

p /=/ => 'works'

/in comment/ => 'fails'

The reported error is:

syntax error, unexpected ',', expecting $end

/in comment/ => 'fails'


The issue is caused by the /=/ regexp in the method p call.

Notice that no parse error occurs when the Hash argument is put between parentheses

p(/=/ => 'works').

snippet.rb View (319 Bytes) Dimitri Geshef, 07/12/2013 03:33 PM


#1 [ruby-core:55969] Updated by Dimitri Geshef over 3 years ago

First detected in ruby 1.9.3p374 (2013-01-15) [i386-mingw32]

#2 [ruby-core:55970] Updated by Dimitri Geshef over 3 years ago

The error message when you run the snippet in attachment is:
snippet.rb:9: syntax error, unexpected tIDENTIFIER, expecting $end

/in comment/ => 'fails'


#3 [ruby-core:55971] Updated by Dimitri Geshef over 3 years ago

Could also reproduce the problem with the regexp /,/

In other words, this will also result in a parse error:

p /,/ => 'problematic too'

/in comment/ => 'parse fails in this line'

#4 [ruby-core:55973] Updated by Nobuyoshi Nakada over 3 years ago

  • Status changed from Open to Rejected

p /=/' is interpreted asp /= /.../', an assignment to a variable `p'.

#5 [ruby-core:55974] Updated by Dimitri Geshef over 3 years ago

My apologies for this false alarm.
Thank you for pointing the grammatical ambiguity:
/=/ can be parsed as the /= operator followed by a regexp literal or the regexp literal /=/ itself.
Didn't realize this.

Also available in: Atom PDF