Project

General

Profile

Feature #2674

Updated by ko1 (Koichi Sasada) over 7 years ago

=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 
 

Back