diff options
author | Nobuyoshi Nakada <[email protected]> | 2025-01-09 20:21:41 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2025-01-09 20:21:41 +0900 |
commit | 073c4e1cc712064e626914fa4a5a8061f903a637 (patch) | |
tree | 48145ef8858d0b0df83861c20e0d6e5dce5e087c /proc.c | |
parent | dfe6b7c02efa3bc2f5426eb64107ac0ac45a66a4 (diff) |
[Feature #6012] Extend `source_location` for end position and columns
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/12539
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -1364,14 +1364,20 @@ proc_eq(VALUE self, VALUE other) static VALUE iseq_location(const rb_iseq_t *iseq) { - VALUE loc[2]; + VALUE loc[5]; + int i = 0; if (!iseq) return Qnil; rb_iseq_check(iseq); - loc[0] = rb_iseq_path(iseq); - loc[1] = RB_INT2NUM(ISEQ_BODY(iseq)->location.first_lineno); - - return rb_ary_new4(2, loc); + loc[i++] = rb_iseq_path(iseq); + const rb_code_location_t *cl = &ISEQ_BODY(iseq)->location.code_location; + loc[i++] = RB_INT2NUM(cl->beg_pos.lineno); + loc[i++] = RB_INT2NUM(cl->beg_pos.column); + loc[i++] = RB_INT2NUM(cl->end_pos.lineno); + loc[i++] = RB_INT2NUM(cl->end_pos.column); + RUBY_ASSERT_ALWAYS(i == numberof(loc)); + + return rb_ary_new_from_values(i, loc); } VALUE |