[Bug #3456] bisarre comma

Bug #3456: bisarre comma
http://redmine.ruby-lang.org/issues/show/3456

e$B5/I<<Te(B: Shyouhei U.
e$B%9%F!<%?%9e(B: Assigned, e$BM%@hEYe(B: Normal
e$BC4Ev<Te(B: Yukihiro M., e$B%+%F%4%je(B: core, Target version:
1.9.2
ruby -v: ruby 1.9.3dev (2010-06-19 trunk 28363) [x86_64-linux]

e$B$R$g$C$H$7$F0U?^E*$J$N$+$b$7$l$^$;$s$,!"0J2<$N$h$&$JFf$Ne(B ,
e$B$,e(B1.9e$B7O$Ge(BSyntax OKe$B$K$J$k$N$O$J$s$G$G$7$g$&e(B?

% ruby -wcve ‘x y , ;’
ruby 1.8.8dev (2010-06-15 revision 27061) [x86_64-linux]
-e:1: syntax error, unexpected ‘;’
% ruby -wcve ‘x y , ;’
ruby 1.9.3dev (2010-06-19 trunk 28363) [x86_64-linux]
Syntax OK

e$B$J$+$@$G$9!#e(B

At Sun, 20 Jun 2010 02:04:50 +0900,
Shyouhei U. wrote in [ruby-dev:41654]:

e$B$R$g$C$H$7$F0U?^E*$J$N$+$b$7$l$^$;$s$,!"0J2<$N$h$&$JFf$Ne(B , e$B$,e(B1.9e$B7O$Ge(BSyntax OKe$B$K$J$k$N$O$J$s$G$G$7$g$&e(B?

e$B0U?^E*$J$h$&$G$9!#e(B

r19837 | matz | 2008-10-18 20:49:39 +0900 (Sat, 18 Oct 2008) | 2 lines

  • parse.y (opt_block_arg): allow trailing comma after usual
    arguments. not after block argument.

e$B%A%1%C%He(B #3456 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!<%?%9e(B Assignede$B$+$ie(BRejectede$B$KJQ99e(B

e$B1sF#$G$9!#e(B

e$B0U?^$O$o$+$j$^$;$s$,!“>/$J$/$H$b0U?^$7$?JQ99$G$”$k$3$H$O3N$+$J$h$&e(B
e$B$G$9$N$G!“$3$N%A%1%C%H$OJD$8$^$9!#e(B
rationale e$B$O;d$b6=L#$”$k$H$3$m$G$9$,!"e(Bredmine
e$B$N30$G$d$j$^$7$g$&!#e(B

2010e$BG/e(B6e$B7ne(B20e$BF|e(B15:48 Nobuyoshi N.
[email protected]:

  • parse.y (opt_block_arg): allow trailing comma after usual
    arguments. not after block argument.


— e$BKM$NA0$Ke(BBuge$B$O$J$$!#e(B
— e$BKM$N8e$m$Ke(BBuge$B$O$G$-$k!#e(B
e$BCfEDe(B e$B?-1Ye(B


Yusuke E. [email protected]

http://redmine.ruby-lang.org/issues/show/3456

e$B%A%1%C%He(B #3456 e$B$,99?7$5$l$^$7$?!#e(B (by Akinori MUSHA)

array = [
1,
2,
]

hash = {
:a => 1,
:b => 2,
}

some_method(1, 2, {
:a => 1,
:b => 2,
})

e$B$O5v$5$l$k$N$G!"e(B

some_method(
1,
2,
)

e$B$de(B

some_method(1, 2,
:a => 1,
:b => 2,
)

e$B$be(BOKe$B$K$7$?$H$$$&$3$H$G$O$J$$$G$7$g$&$+!#e(B

http://redmine.ruby-lang.org/issues/show/3456

e$B%A%1%C%He(B #3456 e$B$,99?7$5$l$^$7$?!#e(B (by Shyouhei U.)

e$B%9%F!<%?%9e(B Rejectede$B$+$ie(BOpene$B$KJQ99e(B

e$B$$$d!"$d$C$Q$*$+$7$$$G$9!#0J2<$NNc$rH/8+$7$^$7$?!#e(B

zsh % ruby -ve ‘i j,’ -e’k i’
ruby 1.9.3dev (2010-06-28 trunk 28452) [x86_64-linux]
-e:2: syntax error, unexpected tIDENTIFIER, expecting keyword_do or ‘{’
or ‘(’

e$B$b$A$m$se(B , e$B$,$J$1$l$Pe(Bsyntax errore$B$K$O$J$j$^$;$s!#e(B


http://redmine.ruby-lang.org/issues/show/3456

e$B%A%1%C%He(B #3456 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!<%?%9e(B Opene$B$+$ie(BRejectede$B$KJQ99e(B

e$B1sF#$G$9!#e(B

2 e$B$DL$Ne(B -e e$B$OC1$K<!$N9T$KB3$$$F$$$k$HH=Dj$5$l$k$h$&$G$9!#e(B

$ ./ruby -ve ‘p 1 +’ -e ‘1’
ruby 1.9.3dev (2010-06-27 trunk 28451) [i686-linux]
2

e$BMW$9$k$K0J2<$HF1$8$G$9!#e(B

$ ./ruby -ve ‘i j,
k i’
ruby 1.9.3dev (2010-06-27 trunk 28451) [i686-linux]
-e:2: syntax error, unexpected tIDENTIFIER, expecting keyword_do or ‘{’
or ‘(’

$ ./ruby -ve ‘i j, k i’
ruby 1.9.3dev (2010-06-27 trunk 28451) [i686-linux]
-e:1: syntax error, unexpected tIDENTIFIER, expecting keyword_do or ‘{’
or ‘(’

e$B$3$N;EMM$N@'Hs$O5DO@$NM>CO$,$“$j$=$&$G$9$,!”%P%0$G$O$J$$$H9M$($^$9!#e(B


Yusuke E. [email protected]

http://redmine.ruby-lang.org/issues/show/3456

e$B%A%1%C%He(B #3456 e$B$,99?7$5$l$^$7$?!#e(B (by Shyouhei U.)

e$B%9%F!<%?%9e(B Rejectede$B$+$ie(BOpene$B$KJQ99e(B

e$B$($($H!“$Y$D$K8=>u$N2r@b$rJ9$-$?$$$o$1$G$O$”$j$^$;$s!#$I$&$7$F%(%i!<$K$J$k$+$/$i$$$O3NG’$7$F$+$iJs9p$7$^$7$?$N$G!#e(B

e$B$G!“26$,$3$l$O%P%0$@$H;W$&$N$O!“3g8L$N$”$k$J$7$G0UL#$,JQ$o$k$H$$$&$N$,6’0-$@$H$$$&;W$&$+$i$G$9!#$J$<e(B
i(j,)
k l
e$B$,e(BOKe$B$Ge(B
i j,
k l
e$B$,e(BNGe$B$J$N$+!”$"$-$i$+$K:.Mp$N$b$H$G$9!#$5$i$K$$$&$He(B
i j, do end
k l
e$B$b8=>ue(BOKe$B$G$9!#$b$O$d$o$1$o$+$i$s!#e(B

e$B$3$N9TKv$Ke(B,e$B$r5v$=$&$H$7$?JQ99$Oe(Breverte$B$7$?$[$&$,$h$$$H;W$$$^$9!#e(B

http://redmine.ruby-lang.org/issues/show/3456

e$B%A%1%C%He(B #3456 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!<%?%9e(B Opene$B$+$ie(BAssignede$B$KJQ99e(B
Target version 1.9.2e$B$+$ie(B1.9.xe$B$KJQ99e(B

e$B1sF#$G$9!#e(B

e$B$^$:!“e(B1.9.2 e$B$Ge(B revert e$B$9$k$3$H$O$”$j$($^$;$s!#e(B
e$B$3$N%A%1%C%H$Oe(B 1.9.x e$B$K@_Dj$7$F$*$-$^$9!#e(B
e$B$?$@!“$3$l$Oe(B 1.9.1 e$B$+$i$”$kJ8K!$J$N$Ge(B 1.9.x e$BCf$Ge(B
revert e$B$9$k$N$be(B
e$B$+$J$jH?BP$G$9!#e(B

e$B5!G=<+BN$K$D$$$F$O!"e(BSet[1,2,3,] e$B$r5v$9$N$O;?@.$J$N$G$9$,!“e(B
foo(1,2,3,) e$B$r5v$9I,MW$,$”$k$H$O;W$$$^$;$s!#e(B
foo(1,2,3,a:1,b:2,) e$B$O!"HyL/$J$H$3$m$G$9!#e(B
foo 1,2,3,a:1,b:2, e$B$O!"KNIt$5$s$HF1$8M}M3$G5v$5$J$$J}$,$h$5$=$&$Je(B
e$B5$$,$7$^$9!#e(B


Yusuke E. [email protected]

http://redmine.ruby-lang.org/issues/show/3456