summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--parse.y7
-rw-r--r--test/ripper/test_parser_events.rb13
-rw-r--r--version.h2
4 files changed, 24 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e8cae27ea3..ce3ad75e0e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (mlhs_basic): include mlhs_post for ripper. a patch
+ from Michael Edgar at [ruby-core:35078].
+
Sat Feb 5 11:29:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/json/parser/parser.h (GET_PARSER): raise TypeError.
diff --git a/parse.y b/parse.y
index ff1747d4e7..f2c3ef27d9 100644
--- a/parse.y
+++ b/parse.y
@@ -1507,7 +1507,8 @@ mlhs_basic : mlhs_head
/*%%%*/
$$ = 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
@@ -1523,7 +1524,8 @@ mlhs_basic : mlhs_head
/*%%%*/
$$ = 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
@@ -1540,6 +1542,7 @@ mlhs_basic : mlhs_head
$$ = NEW_MASGN(0, NEW_POSTARG(-1, $3));
/*%
$$ = mlhs_add_star(mlhs_new(), Qnil);
+ $$ = mlhs_add($$, $3);
%*/
}
;
diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb
index 15a5d2b3a9..3958213f77 100644
--- a/test/ripper/test_parser_events.rb
+++ b/test/ripper/test_parser_events.rb
@@ -368,6 +368,7 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
def test_mlhs_add_star
bug2232 = '[ruby-core:26163]'
+ bug4364 = '[ruby-core:35078]'
thru_mlhs_add_star = false
tree = parse("a, *b = 1, 2", :on_mlhs_add_star) {thru_mlhs_add_star = true}
@@ -377,6 +378,18 @@ class TestRipper::ParserEvents < Test::Unit::TestCase
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)
+ thru_mlhs_add_star = false
+ tree = parse("a, *, 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\)\),mlhs_add\(mlhs_new\(\),c\)\)/, tree, bug4364)
+ thru_mlhs_add_star = false
+ tree = parse("*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_new\(\),b\),mlhs_add\(mlhs_new\(\),c\)\)/, tree, bug4364)
+ thru_mlhs_add_star = false
+ tree = parse("*, 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_new\(\)\),mlhs_add\(mlhs_new\(\),c\)\)/, tree, bug4364)
end
def test_mlhs_new
diff --git a/version.h b/version.h
index ea9a34f850..fd5990d7cd 100644
--- a/version.h
+++ b/version.h
@@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 193
+#define RUBY_PATCHLEVEL 194
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1