summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-13 16:00:26 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-13 16:00:26 +0000
commit3dd4b241bfe4fad201ed50932a5dde08e1e83524 (patch)
treeff256d1e855a59b4dce84abc5a48861d277d772a
parentaca1574676e39bec9106223a41f1f2497dcbab1c (diff)
merge revision(s) 50402: [Backport #11107]
* parse.y (lambda): push and reset cmdarg_stack in lambda body. [ruby-core:69017] [Bug #11107] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--parse.y9
-rw-r--r--test/ruby/test_syntax.rb5
-rw-r--r--version.h2
4 files changed, 18 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index a470d687f1..7ae60c49e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu May 14 00:50:40 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lambda): push and reset cmdarg_stack in lambda body.
+ [ruby-core:69017] [Bug #11107]
+
Thu May 14 00:39:29 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* dln.c (dln_load): check if a different libruby is loaded by the
diff --git a/parse.y b/parse.y
index 0f9a5670b6..1e29197bfe 100644
--- a/parse.y
+++ b/parse.y
@@ -3534,14 +3534,19 @@ lambda : {
{
$<num>$ = ruby_sourceline;
}
+ {
+ $<val>$ = cmdarg_stack;
+ cmdarg_stack = 0;
+ }
lambda_body
{
lpar_beg = $<num>2;
+ cmdarg_stack = $<val>5;
/*%%%*/
- $$ = NEW_LAMBDA($3, $5);
+ $$ = NEW_LAMBDA($3, $6);
nd_set_line($$, $<num>4);
/*%
- $$ = dispatch2(lambda, $3, $5);
+ $$ = dispatch2(lambda, $3, $6);
%*/
dyna_pop($<vars>1);
}
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index 0274a11e83..dbb18164f4 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -400,6 +400,11 @@ WARN
assert_valid_syntax("bar def foo; self.each do end end", bug9308)
end
+ def test_do_block_in_lambda
+ bug11107 = '[ruby-core:69017] [Bug #11107]'
+ assert_valid_syntax('p ->() do a() do end end', bug11107)
+ end
+
def test_reserved_method_no_args
bug6403 = '[ruby-dev:45626]'
assert_valid_syntax("def self; :foo; end", __FILE__, bug6403)
diff --git a/version.h b/version.h
index 208d5ca9d9..42eb8002b6 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.3"
#define RUBY_RELEASE_DATE "2015-05-14"
-#define RUBY_PATCHLEVEL 100
+#define RUBY_PATCHLEVEL 101
#define RUBY_RELEASE_YEAR 2015
#define RUBY_RELEASE_MONTH 5