Forum: Ruby-dev [Closed] RubyVM::InstructionSequence to accept IOs

Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-24 01:57
(Received via mailing list)
Issue #2674 has been updated by mame (Yusuke Endoh).

Status changed from Assigned to Closed

卜部さん、

これって r37339 で入ったということでいいですよね?
勝手に閉じますが間違ってたら適当にしてください。

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Feature #2674: RubyVM::InstructionSequence to accept IOs
https://bugs.ruby-lang.org/issues/2674#change-33699

Author: shyouhei (Shyouhei Urabe)
Status: Closed
Priority: Normal
Assignee: shyouhei (Shyouhei Urabe)
Category: YARV
Target version: 2.0.0


=begin
 RipperはRipper#initializeでIOを受け付けますが、ISeqはそうはなっていません。
 非対称なのでISeqもIOを受け付けるようにするのはどうでしょうか。

 Signed-off-by: Urabe, Shyuohei <shyouhei@ruby-lang.org>
 ---
  iseq.c |    6 +++++-
  1 files changed, 5 insertions(+), 1 deletions(-)

 diff --git a/iseq.c b/iseq.c
 index 3c957c7..2d86f5d 100644
 --- a/iseq.c
 +++ b/iseq.c
 @@ -538,10 +538,14 @@ rb_iseq_compile_with_option(VALUE src, VALUE 
file, VALUE line, VALUE opt)
      rb_compile_option_t option;
      const char *fn = StringValueCStr(file);
      int ln = NUM2INT(line);
 -    NODE *node = parse_string(StringValue(src), fn, ln);
 +    NODE *node;
      rb_thread_t *th = GET_THREAD();
      make_compile_option(&option, opt);

 +    if (rb_obj_respond_to(src, rb_intern("gets"), 0))
 +        node = rb_compile_file(fn, src, ln);
 +    else
 +        node = rb_compile_string(fn, StringValue(src), ln);
      if (th->base_block && th->base_block->iseq) {
    return rb_iseq_new_with_opt(node, th->base_block->iseq->name,
              file, line, th->base_block->iseq->self,
 -- 1.6.0.4
=end
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.