Bug #6674
closed1.9 parser regression: not ()
Description
4482 % ruby18 -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
4483 % ruby19 -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]
4484 % ruby18 -cwe '! (a); not (a); ! (); not ()'
Syntax OK
4485 % ruby19 -cwe '! (a)'
Syntax OK
4486 % ruby19 -cwe 'not (a)'
-e:1: warning: (...) interpreted as grouped expression
Syntax OK
4487 % ruby19 -cwe '! ()'
Syntax OK
4488 % ruby19 -cwe 'not ()'
-e:1: syntax error, unexpected ')'
4489 % ruby20 -v
ruby 2.0.0dev (2012-05-05 trunk 35541) [x86_64-darwin11.3.0]
4490 % ruby20 -cwe '! (a)'
Syntax OK
4491 % ruby20 -cwe 'not (a)'
-e:1: warning: (...) interpreted as grouped expression
Syntax OK
4492 % ruby20 -cwe '! ()'
Syntax OK
4493 % ruby20 -cwe 'not ()'
-e:1: warning: (...) interpreted as grouped expression
-e:1: syntax error, unexpected ')'
4494 %
Files
Updated by shugo (Shugo Maeda) over 12 years ago
zenspider (Ryan Davis) wrote:
4486 % ruby19 -cwe 'not (a)'
-e:1: warning: (...) interpreted as grouped expression
Syntax OK
(snip)
4488 % ruby19 -cwe 'not ()'
-e:1: syntax error, unexpected ')'
I've attached a patch to fix the problem.
In Ruby 1.9, space before argument parentheses is not allowed (i.e.,
`foo (1, 2)' is now syntax error) anymore, so there is no need to
warn grouped expressions not only for "not" but also for method calls.
What do you think of it, Matz?
Updated by matz (Yukihiro Matsumoto) over 12 years ago
- Assignee changed from matz (Yukihiro Matsumoto) to shugo (Shugo Maeda)
I accept the fix. Please check in.
Matz.
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Open to Assigned
Updated by shugo (Shugo Maeda) over 12 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r36434.
Ryan, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
-
parse.y (primary): allow an empty grouped expression as the
operand of the not operator (e.g., not ()).
[ruby-core:45976] [Bug #6674] -
parse.y (parser_yylex): show no warning for a grouped expression
as the operand of the not operator (e.g., not (a)) or as an
argument of a method call without parentheses (e.g., foo (a)).
[ruby-core:39050] [Bug #5214]
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
- Related to Bug #19281: SyntaxError if first argument of command call has semicolon inside parenthesis added