diff options
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | parse.y | 12 | ||||
| -rw-r--r-- | test/ruby/test_syntax.rb | 5 | ||||
| -rw-r--r-- | version.h | 2 |
4 files changed, 21 insertions, 4 deletions
@@ -1,3 +1,9 @@ +Mon Jun 23 16:55:13 2014 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (primary): flush cmdarg flags inside left-paren in a + command argument, to allow parenthesed do-block as an argument + without arguments parentheses. [ruby-core:61950] [Bug #9726] + Mon Jun 23 16:45:48 2014 Nobuyoshi Nakada <nobu@ruby-lang.org> * ext/dl/cptr.c (dlptr_free), ext/dl/handle.c (dlhandle_free), @@ -2621,12 +2621,18 @@ primary : literal $$ = dispatch1(paren, 0); %*/ } - | tLPAREN_ARG expr {lex_state = EXPR_ENDARG;} rparen + | tLPAREN_ARG { + $<val>1 = cmdarg_stack; + cmdarg_stack = 0; + } + expr {lex_state = EXPR_ENDARG;} rparen + { + cmdarg_stack = $<val>1; /*%%%*/ - $$ = $2; + $$ = $3; /*% - $$ = dispatch1(paren, $2); + $$ = dispatch1(paren, $3); %*/ } | tLPAREN compstmt ')' diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 06188cf073..3ccb18d446 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -78,6 +78,11 @@ class TestSyntax < Test::Unit::TestCase end end + def test_do_block_in_cmdarg + bug9726 = '[ruby-core:61950] [Bug #9726]' + assert_valid_syntax("tap (proc do end)", __FILE__, bug9726) + end + def test_keyword_rest bug5989 = '[ruby-core:42455]' assert_valid_syntax("def kwrest_test(**a) a; end", __FILE__, bug5989) @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.0.0" #define RUBY_RELEASE_DATE "2014-06-23" -#define RUBY_PATCHLEVEL 491 +#define RUBY_PATCHLEVEL 492 #define RUBY_RELEASE_YEAR 2014 #define RUBY_RELEASE_MONTH 6 |
