diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-09-27 06:44:02 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-09-27 06:44:02 +0000 |
commit | 859337b17b5e1f9ee9ebeb0ac9e3ed7d73691ca2 (patch) | |
tree | 2f87021f6f7a577c1ab65ed51191bd448e39570e /compile.c | |
parent | 71730b42434e3c2dce7e7f6488bd54fae52cae51 (diff) | |
download | ruby-859337b17b5e1f9ee9ebeb0ac9e3ed7d73691ca2.tar.gz |
fronzen-string-literal pragma
* compile.c (iseq_compile_each): override compile option by option
given by pragma.
* iseq.c (rb_iseq_make_compile_option): extract a function to
overwrite rb_compile_option_t.
* parse.y (parser_set_compile_option_flag): introduce pragma to
override compile options.
* parse.y (magic_comments): new pragma "fronzen-string-literal".
[Feature #8976]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -5588,8 +5588,15 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) break; } case NODE_PRELUDE:{ + const rb_compile_option_t *orig_opt = iseq->compile_data->option; + if (node->nd_orig) { + rb_compile_option_t new_opt = *orig_opt; + rb_iseq_make_compile_option(&new_opt, node->nd_orig); + iseq->compile_data->option = &new_opt; + } COMPILE_POPED(ret, "prelude", node->nd_head); COMPILE_(ret, "body", node->nd_body, poped); + iseq->compile_data->option = orig_opt; break; } case NODE_LAMBDA:{ |