diff options
| author | Takeshi Watanabe <[email protected]> | 2014-04-14 20:34:49 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-14 22:01:52 +0900 |
| commit | 6e0c48d7584d27883d8fb7e5c6fe8eb6f1db0a91 (patch) | |
| tree | 957324b72a56e9e45efcd35acb51d5ca196d87ca | |
| parent | 4685a43dd69b8303cc0fbff063d6e2812ce7489c (diff) | |
| download | mruby-6e0c48d7584d27883d8fb7e5c6fe8eb6f1db0a91.tar.gz mruby-6e0c48d7584d27883d8fb7e5c6fe8eb6f1db0a91.zip | |
Fix and add test to Proc#inspect .
| -rw-r--r-- | mrbgems/mruby-proc-ext/src/proc.c | 15 | ||||
| -rw-r--r-- | mrbgems/mruby-proc-ext/test/proc.rb | 5 |
2 files changed, 12 insertions, 8 deletions
diff --git a/mrbgems/mruby-proc-ext/src/proc.c b/mrbgems/mruby-proc-ext/src/proc.c index 8b6ee4740..b105c95d7 100644 --- a/mrbgems/mruby-proc-ext/src/proc.c +++ b/mrbgems/mruby-proc-ext/src/proc.c @@ -84,18 +84,17 @@ mrb_proc_inspect(mrb_state *mrb, mrb_value self) if (!MRB_PROC_CFUNC_P(p)) { mrb_irep *irep = p->body.irep; + const char *filename; + int32_t line; mrb_str_cat_lit(mrb, str, "@"); - if (irep->filename) { - mrb_str_cat_cstr(mrb, str, irep->filename); - } - else { - mrb_str_cat_lit(mrb, str, "-"); - } + filename = mrb_debug_get_filename(irep, 0); + mrb_str_cat_cstr(mrb, str, filename ? filename : "-"); mrb_str_cat_lit(mrb, str, ":"); - if (irep->lines) { - mrb_str_append(mrb, str, mrb_fixnum_value(*irep->lines)); + line = mrb_debug_get_line(irep, 0); + if (line != -1) { + mrb_str_append(mrb, str, mrb_fixnum_value(line)); } else { mrb_str_cat_lit(mrb, str, "-"); diff --git a/mrbgems/mruby-proc-ext/test/proc.rb b/mrbgems/mruby-proc-ext/test/proc.rb index f5aacd490..0f5ecfb94 100644 --- a/mrbgems/mruby-proc-ext/test/proc.rb +++ b/mrbgems/mruby-proc-ext/test/proc.rb @@ -8,6 +8,11 @@ assert('Proc#source_location') do assert_equal loc[1], 5 end +assert('Proc#inspect') do + ins = Proc.new{}.inspect + assert_true ins.kind_of? String +end + assert('Proc#lambda?') do assert_true lambda{}.lambda? assert_true !Proc.new{}.lambda? |
