[ruby-trunk - Bug #5738][Open] if false; BEGIN {}; end が syntax error になる

Issue #5738 has been reported by Sho H…


Bug #5738: if false; BEGIN {}; end が syntax error になる

Author: Sho H.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3dev (2011-07-31 revision 32789) [i686-linux]

1.8 の時と異なり、以下のコードが syntax error になります。

if false; BEGIN {}; end

test/ruby/test_beginendblock.rb や過去の NEWS
に記述がない事などから、もしかしたらバグかもしれないと考えています。1.9 からの仕様であれば reject してやってください。

なお、以下についても syntax error になりますが、1.8 の時と異なり、yyerror(“BEGIN in method”);
に到達しない事からチケットを発行する事にしました。

def foo; BEGIN {}; end

Issue #5738 has been updated by Sho H…

了解です。ありがとうございます。

Bug #5738: if false; BEGIN {}; end が syntax error になる

Author: Sho H.
Status: Rejected
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3dev (2011-07-31 revision 32789) [i686-linux]

1.8 の時と異なり、以下のコードが syntax error になります。

if false; BEGIN {}; end

test/ruby/test_beginendblock.rb や過去の NEWS
に記述がない事などから、もしかしたらバグかもしれないと考えています。1.9 からの仕様であれば reject してやってください。

なお、以下についても syntax error になりますが、1.8 の時と異なり、yyerror(“BEGIN in method”);
に到達しない事からチケットを発行する事にしました。

def foo; BEGIN {}; end

Issue #5738 has been updated by Yukihiro M…

Status changed from Open to Rejected

エラーのタイプは異なりますが、この変更は意図的です。ifでくくってあってもBEGINはコンパイル時に登録されます。ので、トップレベルでしか登録できないように文法が変更されました。

Bug #5738: if false; BEGIN {}; end が syntax error になる

Author: Sho H.
Status: Rejected
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3dev (2011-07-31 revision 32789) [i686-linux]

1.8 の時と異なり、以下のコードが syntax error になります。

if false; BEGIN {}; end

test/ruby/test_beginendblock.rb や過去の NEWS
に記述がない事などから、もしかしたらバグかもしれないと考えています。1.9 からの仕様であれば reject してやってください。

なお、以下についても syntax error になりますが、1.8 の時と異なり、yyerror(“BEGIN in method”);
に到達しない事からチケットを発行する事にしました。

def foo; BEGIN {}; end

$BA0ED$G$9!#(B

2011$BG/(B12$B7n(B10$BF|(B22:10 Yukihiro M. [email protected]:

$B%(%i!<$N%?%$%W$O0[$J$j$^$9$,!“$3$NJQ99$O0U?^E*$G$9!#(Bif$B$G$/$/$C$F$”$C$F$b(BBEGIN$B$O%3%s%Q%$%k;~$KEPO?$5$l$^$9!#$N$G!"%H%C%W%l%Y%k$G$7$+EPO?$G$-$J$$$h$&$KJ8K!$,JQ99$5$l$^$7$?!#(B

$B%(%i!<%a%C%;!<%8$,$o$+$j$K$/$/$J$C$F$$$k5$$,$9$k$N$G$9$,!"$3$s$J46$8$G(B
$B%(%i!<%a%C%;!<%8$rI=<($7$F$O$I$&$G$7$g$&$+!#(B

error message for BEGIN · GitHub

$B$;$a$F!"0J2<$N%Q%9$ODL$i$J$$$N$G:o$C$?J}$,$$$$$h$&$K;W$$$^$9!#(B

  if (in_def || in_single) {
      yyerror("BEGIN in method");
  }

$B$^$D$b$H(B $B$f$-$R$m$G$9(B

In message “Re: [ruby-dev:44966] Re: [ruby-trunk - Bug #5738][Rejected]
if false; BEGIN {}; end $B$,(B syntax error $B$K$J$k(B”
on Sat, 10 Dec 2011 23:25:19 +0900, Shugo M.
[email protected] writes:

|$B%(%i!<%a%C%;!<%8$,$o$+$j$K$/$/$J$C$F$$$k5$$,$9$k$N$G$9$,!"$3$s$J46$8$G(B
|$B%(%i!<%a%C%;!<%8$rI=<($7$F$O$I$&$G$7$g$&$+!#(B
|
| error message for BEGIN · GitHub

$B$J$k$[$I!#$=$l$G$b$$$$$+$b$7$l$^$;$s$M!#%3%_%C%H$7$F$/$@$5$$!#(B