diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-20 06:07:39 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-20 06:07:39 +0000 |
commit | b682d78ff592acdd857ac5f81c4a0efd75a3fa82 (patch) | |
tree | f93da1503be892cd70770ebd5a5b9f4599ec72b3 | |
parent | 6274f42d79b8f50f7d2c6520459e4c4d61332804 (diff) | |
download | ruby-b682d78ff592acdd857ac5f81c4a0efd75a3fa82.tar.gz ruby-b682d78ff592acdd857ac5f81c4a0efd75a3fa82.tar.xz ruby-b682d78ff592acdd857ac5f81c4a0efd75a3fa82.zip |
* parse.y (mlhs_basic): fixed handling splat in middle of mlhs. a
patch from Andy Keep in [ruby-core:26163]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ripper/test_parser_events.rb | 60 |
3 files changed, 46 insertions, 22 deletions
@@ -1,4 +1,7 @@ -Tue Oct 20 14:50:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> +Tue Oct 20 15:07:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (mlhs_basic): fixed handling splat in middle of mlhs. a + patch from Andy Keep in [ruby-core:26163] * parse.y (parser_here_document): dispatch delayed heredoc contents. based on a patch from Andy Keep in [ruby-core:24855]. @@ -1436,7 +1436,8 @@ mlhs_basic : mlhs_head /*%%%*/ $$ = NEW_MASGN($1, NEW_POSTARG($3,$5)); /*% - $$ = mlhs_add_star($1, $3); + $1 = mlhs_add_star($1, $3); + $$ = mlhs_add($1, $5); %*/ } | mlhs_head tSTAR diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index 2494434d8..e82d37c1d 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -216,6 +216,46 @@ class TestRipper_ParserEvents < Test::Unit::TestCase assert_equal("heredoc1\nheredoc2\n", heredoc, bug1921) end + def test_massign + thru_massign = false + parse("a, b = 1, 2", :on_massign) {thru_massign = true} + assert_equal true, thru_massign + end + + def test_mlhs_add + thru_mlhs_add = false + parse("a, b = 1, 2", :on_mlhs_add) {thru_mlhs_add = true} + assert_equal true, thru_mlhs_add + end + + def test_mlhs_add_star + bug2232 = '[ruby-core:26163]' + + thru_mlhs_add_star = false + tree = parse("a, *b = 1, 2", :on_mlhs_add_star) {thru_mlhs_add_star = true} + assert_equal true, thru_mlhs_add_star + assert_match /mlhs_add_star\(mlhs_add\(mlhs_new\(\),a\),b\)/, tree + thru_mlhs_add_star = false + tree = parse("a, *b, c = 1, 2", :on_mlhs_add_star) {thru_mlhs_add_star = true} + assert_equal true, thru_mlhs_add_star + assert_match /mlhs_add\(mlhs_add_star\(mlhs_add\(mlhs_new\(\),a\),b\),mlhs_add\(mlhs_new\(\),c\)\)/, tree, bug2232 + end + + def test_mlhs_new + thru_mlhs_new = false + parse("a, b = 1, 2", :on_mlhs_new) {thru_mlhs_new = true} + assert_equal true, thru_mlhs_new + end + + def test_mlhs_paren + thru_mlhs_paren = false + parse("a, b = 1, 2", :on_mlhs_paren) {thru_mlhs_paren = true} + assert_equal false, thru_mlhs_paren + thru_mlhs_paren = false + parse("(a, b) = 1, 2", :on_mlhs_paren) {thru_mlhs_paren = true} + assert_equal true, thru_mlhs_paren + end + =begin def test_brace_block assert_equal true, $thru__brace_block @@ -333,30 +373,10 @@ class TestRipper_ParserEvents < Test::Unit::TestCase assert_equal true, $thru__iter_block end - def test_massign - assert_equal true, $thru__massign - end - def test_method_add_arg assert_equal true, $thru__method_add_arg end - def test_mlhs_add - assert_equal true, $thru__mlhs_add - end - - def test_mlhs_add_star - assert_equal true, $thru__mlhs_add_star - end - - def test_mlhs_new - assert_equal true, $thru__mlhs_new - end - - def test_mlhs_paren - assert_equal true, $thru__mlhs_paren - end - def test_module assert_equal true, $thru__module end |