* parse.y (bv_decls, bvar): fix for block variables.

[ruby-dev:39423]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-10-03 13:14:19 +00:00
Родитель 7b26a97142
Коммит 72ad8595f2
3 изменённых файлов: 18 добавлений и 3 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Sat Oct 3 22:14:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (bv_decls, bvar): fix for block variables.
[ruby-dev:39423]
Sat Oct 3 21:19:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_method.c (rb_add_method_def): no redefinition warning on

Просмотреть файл

@ -3403,7 +3403,7 @@ bv_decls : bvar
/*%c%*/
/*%c
{
$$ = rb_ary_new2($1);
$$ = rb_ary_new3(1, $1);
}
%*/
| bv_decls ',' bvar
@ -3417,10 +3417,10 @@ bv_decls : bvar
bvar : tIDENTIFIER
{
new_bv($1);
new_bv(get_id($1));
/*%%%*/
/*%
$$ = $1;
$$ = get_value($1);
%*/
}
| f_bad_arg

Просмотреть файл

@ -1,6 +1,7 @@
begin
require_relative 'dummyparser'
require_relative '../ruby/envutil'
require 'test/unit'
class TestRipper_ParserEvents < Test::Unit::TestCase
@ -566,6 +567,15 @@ class TestRipper_ParserEvents < Test::Unit::TestCase
assert_equal("[fcall(p,[],&block([w],[#{div}]))]", parse("p{|w|w /25 # /\n}"), bug1939)
assert_equal("[def(p,[w],bodystmt([#{div}]))]", parse("def p(w)\nw /25 # /\nend"), bug1939)
end
def test_block_variables
assert_equal("[fcall(proc,[],&block([],[void()]))]", parse("proc{|;y|}"))
if defined?(Process::RLIMIT_AS)
assert_in_out_err(["-I#{File.dirname(__FILE__)}", "-rdummyparser"],
'Process.setrlimit(Process::RLIMIT_AS,102400); puts DummyParser.new("proc{|;y|}").parse',
["[fcall(proc,[],&block([],[void()]))]"], [], '[ruby-dev:39423]')
end
end
end
rescue LoadError