зеркало из https://github.com/github/ruby.git
Add rb_iseq_location
This wraps iseq_location and should fix the leaked global test.
This commit is contained in:
Родитель
ec6206a81a
Коммит
60a08d9a6c
8
proc.c
8
proc.c
|
@ -1183,7 +1183,7 @@ rb_proc_get_iseq(VALUE self, int *is_proc)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
MJIT_FUNC_EXPORTED VALUE
|
||||
static VALUE
|
||||
iseq_location(const rb_iseq_t *iseq)
|
||||
{
|
||||
VALUE loc[2];
|
||||
|
@ -1196,6 +1196,12 @@ iseq_location(const rb_iseq_t *iseq)
|
|||
return rb_ary_new4(2, loc);
|
||||
}
|
||||
|
||||
MJIT_FUNC_EXPORTED VALUE
|
||||
rb_iseq_location(const rb_iseq_t *iseq)
|
||||
{
|
||||
return iseq_location(iseq);
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* prc.source_location -> [String, Integer]
|
||||
|
|
|
@ -579,13 +579,13 @@ ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
VALUE iseq_location(const rb_iseq_t *iseq);
|
||||
VALUE rb_iseq_location(const rb_iseq_t *iseq);
|
||||
|
||||
static inline void
|
||||
rb_warn_keyword_to_last_hash(struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
|
||||
{
|
||||
if (calling->recv == Qundef) return;
|
||||
VALUE loc = iseq_location(iseq);
|
||||
VALUE loc = rb_iseq_location(iseq);
|
||||
if (NIL_P(loc)) {
|
||||
rb_warn("The keyword argument for `%s' is passed as the last hash parameter", rb_id2name(ci->mid));
|
||||
}
|
||||
|
@ -599,7 +599,7 @@ static inline void
|
|||
rb_warn_split_last_hash_to_keyword(struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
|
||||
{
|
||||
if (calling->recv == Qundef) return;
|
||||
VALUE loc = iseq_location(iseq);
|
||||
VALUE loc = rb_iseq_location(iseq);
|
||||
if (NIL_P(loc)) {
|
||||
rb_warn("The last argument for `%s' is split into positional and keyword parameters", rb_id2name(ci->mid));
|
||||
}
|
||||
|
@ -613,7 +613,7 @@ static inline void
|
|||
rb_warn_last_hash_to_keyword(struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
|
||||
{
|
||||
if (calling->recv == Qundef) return;
|
||||
VALUE loc = iseq_location(iseq);
|
||||
VALUE loc = rb_iseq_location(iseq);
|
||||
if (NIL_P(loc)) {
|
||||
rb_warn("The last argument for `%s' is used as the keyword parameter", rb_id2name(ci->mid));
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче