[#35027] [Ruby 1.9-Bug#4352][Open] [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s) — "James M. Lawrence" <redmine@...>
Bug #4352: [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s)
Issue #4352 has been updated by James M. Lawrence.
Hi,
On Wed, Feb 2, 2011 at 10:47 AM, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Hi,
[#35036] [Ruby 1.9-Bug#4354][Open] File.realdirpath is expected to test for real file. — Luis Lavena <redmine@...>
Bug #4354: File.realdirpath is expected to test for real file.
[#35055] [Ruby 1.9-Bug#4359][Open] regular expressions created with Regexp::FIXEDENCODING have incorrect inspect — Aaron Patterson <redmine@...>
Bug #4359: regular expressions created with Regexp::FIXEDENCODING have incorrect inspect
[#35071] Bug in system()? — Anthony Wright <anthony@...>
I've just hit a problem where the system() method to call an external program failed in a fairly unpredictable way, and I couldn't get any clues from within ruby to diagnose the problem. As a result I ended up debugging process.c to work out what the problem was.
[#35100] [Ruby 1.9-Bug#4370][Open] Abort trap in net/http — David Phillips <redmine@...>
Bug #4370: Abort trap in net/http
[#35114] [Ruby 1.9-Bug#4373][Open] http.rb:677: [BUG] Segmentation fault — Christian Fazzini <redmine@...>
Bug #4373: http.rb:677: [BUG] Segmentation fault
[#35144] Documentation Clarifications to Array methods rotate, rotate!, index, and rindex — Loren Sands-Ramshaw <lorensr@...>
Tue Feb 8 11:47:11 2011 Loren Sands-Ramshaw <lorensr@gmail.com>
[#35146] [Ruby 1.9-Bug#4383][Assigned] psych fails to parse a symbol in a flow sequence — Yuki Sonoda <redmine@...>
Bug #4383: psych fails to parse a symbol in a flow sequence
[#35167] Redmine misconfigured (was Re: Re: [Ruby 1.9-Bug#4340] Encoding of result string for String#gsub is not consistent) — mathew <meta@...>
On Tue, Feb 8, 2011 at 16:27, Eric Hodel <drbrain@segment7.net> wrote:
[#35171] [Ruby 1.9-Bug#4386][Open] encoding: directive does not affect regex expressions — mathew murphy <redmine@...>
Bug #4386: encoding: directive does not affect regex expressions
[#35202] Patch to Net::InternetMessageIO — Daniel Cormier <daniel.cormier@...>
This patch addresses an issue when sending a message with Net::SMTP
On Fri, Feb 11, 2011 at 09:13, Daniel Cormier <daniel.cormier@gmail.com> wrote:
Perhaps that is a better solution, but shouldn't sending a message
On Fri, Feb 11, 2011 at 17:08, Daniel Cormier <daniel.cormier@gmail.com> wrote:
Ok, but since the period escaping is already being done (just with
[#35237] [Ruby 1.9-Bug#4400][Open] nested at_exit hooks run in strange order — Suraj Kurapati <redmine@...>
Bug #4400: nested at_exit hooks run in strange order
Issue #4400 has been updated by Motohiro KOSAKI.
[#35332] [ANN] Planned maintenance of redmine.ruby-lang.org — "Yuki Sonoda (Yugui)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
[#35340] odd require behavior — Roger Pack <rogerdpack2@...>
Hello all.
[#35355] eval'ing large strings runs out of stack space? — Roger Pack <rogerdpack2@...>
Hello all.
[#35356] suggestion: default irb to saving history — Roger Pack <rogerdpack2@...>
Hello all.
[#35376] [Ruby 1.9 - Feature #4447] [Open] add String#byteslice() method — Suraj Kurapati <sunaku@...>
string.force_encoding(ENCODING::BINARY).slice almost does what you want,
[ruby-core:35078] [Ruby 1.9-Bug#4364][Open] Ripper loses MLHS variables in the presence of an LHS splat
Bug #4364: Ripper loses MLHS variables in the presence of an LHS splat
http://redmine.ruby-lang.org/issues/show/4364
Author: Michael Edgar
Status: Open, Priority: Normal
ruby -v: ruby 1.9.3dev (2011-02-04 trunk 30778) [x86_64-darwin10.6.0]
Ripper.sexp currently mis-parses the following LHS forms:
*b, c = ...
*, a = ...
a, *, b = ...
Specifically, in all 3 cases, the variables after the splat are not present in the resulting AST. The cause is simply missing mlhs_add calls in parse.y.
Here is the output of the trunk Ripper.sexp:
>> pp Ripper.sexp('*, b = 1, 2, 3')
[:program,
[[:massign,
[:mlhs_add_star, [], nil],
[:mrhs_new_from_args,
[[:@int, "1", [1, 7]], [:@int, "2", [1, 10]]],
[:@int, "3", [1, 13]]]]]]
>> pp Ripper.sexp('*b, c = 1, 2, 3')
[:program,
[[:massign,
[:mlhs_add_star, [], [:@ident, "b", [1, 1]]],
[:mrhs_new_from_args,
[[:@int, "1", [1, 8]], [:@int, "2", [1, 11]]],
[:@int, "3", [1, 14]]]]]]
>> pp Ripper.sexp('a, *, c = 1, 2, 3')
[:program,
[[:massign,
[:mlhs_add_star, [[:@ident, "a", [1, 0]]], nil],
[:mrhs_new_from_args,
[[:@int, "1", [1, 10]], [:@int, "2", [1, 13]]],
[:@int, "3", [1, 16]]]]]]
And here is it after the patch I am including:
require 'ripper'
require 'pp'
>> pp Ripper.sexp('*, b = 1, 2, 3')
[:program,
[[:massign,
[:mlhs_add_star, [], nil, [[:@ident, "b", [1, 3]]]],
[:mrhs_new_from_args,
[[:@int, "1", [1, 7]], [:@int, "2", [1, 10]]],
[:@int, "3", [1, 13]]]]]]
>> pp Ripper.sexp('*b, c = 1, 2, 3, 4')
[:program,
[[:massign,
[:mlhs_add_star, [], [:@ident, "b", [1, 1]], [[:@ident, "c", [1, 4]]]],
[:mrhs_new_from_args,
[[:@int, "1", [1, 8]], [:@int, "2", [1, 11]], [:@int, "3", [1, 14]]],
[:@int, "4", [1, 17]]]]]]
>> pp Ripper.sexp('a, *, b, c = 1, 2, 3, 4')
[:program,
[[:massign,
[:mlhs_add_star,
[[:@ident, "a", [1, 0]]],
nil,
[[:@ident, "b", [1, 6]], [:@ident, "c", [1, 9]]]],
[:mrhs_new_from_args,
[[:@int, "1", [1, 13]], [:@int, "2", [1, 16]], [:@int, "3", [1, 19]]],
[:@int, "4", [1, 22]]]]]]
I based the new output on the results of the one case that does parse successfully (this is for both versions):
>> pp Ripper.sexp('a, b, *c, d, e = 1, 2, 3, 4, 5, 6')
[:program,
[[:massign,
[:mlhs_add_star,
[[:@ident, "a", [1, 0]], [:@ident, "b", [1, 3]]],
[:@ident, "c", [1, 7]],
[[:@ident, "d", [1, 10]], [:@ident, "e", [1, 13]]]],
[:mrhs_new_from_args,
[[:@int, "1", [1, 17]],
[:@int, "2", [1, 20]],
[:@int, "3", [1, 23]],
[:@int, "4", [1, 26]],
[:@int, "5", [1, 29]]],
[:@int, "6", [1, 32]]]]]]
----------------------------------------
http://redmine.ruby-lang.org
Attachments (1)
Index: parse.y =================================================================== --- parse.y (revision 30778) +++ parse.y (working copy) @@ -1518,7 +1518,8 @@ /*%%%*/ $$ = NEW_MASGN($1, NEW_POSTARG(-1, $4)); /*% - $$ = mlhs_add_star($1, Qnil); + $1 = mlhs_add_star($1, Qnil); + $$ = mlhs_add($1, $4); %*/ } | tSTAR mlhs_node @@ -1534,7 +1535,8 @@ /*%%%*/ $$ = NEW_MASGN(0, NEW_POSTARG($2,$4)); /*% - $$ = mlhs_add_star(mlhs_new(), $2); + $2 = mlhs_add_star(mlhs_new(), $2); + $$ = mlhs_add($2, $4); %*/ } | tSTAR @@ -1551,6 +1553,7 @@ $$ = NEW_MASGN(0, NEW_POSTARG(-1, $3)); /*% $$ = mlhs_add_star(mlhs_new(), Qnil); + $$ = mlhs_add($$, $3); %*/ } ;