From cfab29b7db7f3ea63a339946e2959f7118eec7fd Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 18 Apr 2010 03:32:06 +0000 Subject: * parse.y (string_content): preserve cond_stack and cmdarg_stack. [ruby-core:29579] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index f234ae36fd..fd788daacd 100644 --- a/parse.y +++ b/parse.y @@ -4029,6 +4029,12 @@ string_content : tSTRING_CONTENT %*/ } | tSTRING_DBEG + { + $1 = cond_stack; + $$ = cmdarg_stack; + cond_stack = 0; + cmdarg_stack = 0; + } { $$ = lex_strterm; lex_strterm = 0; @@ -4036,12 +4042,14 @@ string_content : tSTRING_CONTENT } compstmt '}' { - lex_strterm = $2; + cond_stack = $1; + cmdarg_stack = $2; + lex_strterm = $3; /*%%%*/ - if ($3) $3->flags &= ~NODE_FL_NEWLINE; - $$ = new_evstr($3); + if ($4) $4->flags &= ~NODE_FL_NEWLINE; + $$ = new_evstr($4); /*% - $$ = dispatch1(string_embexpr, $3); + $$ = dispatch1(string_embexpr, $4); %*/ } ; @@ -5869,8 +5877,6 @@ parser_parse_string(struct parser_params *parser, NODE *quote) pushback(c); return tSTRING_DVAR; case '{': - COND_PUSH(0); - CMDARG_PUSH(0); return tSTRING_DBEG; } tokadd('#'); @@ -6068,8 +6074,6 @@ parser_here_document(struct parser_params *parser, NODE *here) pushback(c); return tSTRING_DVAR; case '{': - COND_PUSH(0); - CMDARG_PUSH(0); return tSTRING_DBEG; } tokadd('#'); -- cgit v1.2.3