summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-05 09:39:56 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-05 09:39:56 +0000
commit7b7e511246cf366fdcffb59c72556613550484cc (patch)
tree03b9b5feb0f97e2f281695cb3906b5673e05e480
parent590a8a14d2399025c1624429246c287795ea1bec (diff)
downloadruby-7b7e511246cf366fdcffb59c72556613550484cc.tar.gz
ruby-7b7e511246cf366fdcffb59c72556613550484cc.tar.xz
ruby-7b7e511246cf366fdcffb59c72556613550484cc.zip
merges r25404 from trunk into ruby_1_9_1. fixes the backport task #2232.
-- * 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/branches/ruby_1_9_1@26012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--parse.y3
-rw-r--r--test/ripper/test_parser_events.rb60
-rw-r--r--version.h2
4 files changed, 47 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ba28ee76..a518290b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+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]
Thu Oct 15 16:57:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (rb_intern3): check symbol table overflow.
diff --git a/parse.y b/parse.y
index b84d6143b..1fa248bf2 100644
--- a/parse.y
+++ b/parse.y
@@ -1475,7 +1475,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
diff --git a/version.h b/version.h
index 3dbce44b8..4573304c8 100644
--- a/version.h
+++ b/version.h
@@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.1"
-#define RUBY_PATCHLEVEL 365
+#define RUBY_PATCHLEVEL 366
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1