vm_args.c: make the keyword deprecation message helpful

```
$ ./miniruby -e 'def foo(kw: 1); end; h = {kw: 1}; foo(h)'
-e:1: warning: The last argument is used as the keyword parameter
-e:1: warning: for `foo' defined here; maybe ** should be added to the call?
```
This commit is contained in:
Yusuke Endoh 2019-12-03 17:56:50 +09:00
Родитель 409e4ab740
Коммит a1f98cd4c1
1 изменённых файлов: 3 добавлений и 3 удалений

Просмотреть файл

@ -693,18 +693,18 @@ rb_warn_last_hash_to_keyword(rb_execution_context_t * const ec, struct rb_callin
name = rb_id2str(ci->mid); name = rb_id2str(ci->mid);
loc = rb_iseq_location(iseq); loc = rb_iseq_location(iseq);
if (NIL_P(loc)) { if (NIL_P(loc)) {
rb_warn("The last argument for `%"PRIsVALUE"' is used as the keyword parameter", rb_warn("The last argument for `%"PRIsVALUE"' is used as the keyword parameter; maybe ** should be added to the call?",
name); name);
} }
else { else {
rb_warn("The last argument is used as the keyword parameter"); rb_warn("The last argument is used as the keyword parameter");
if (calling->recv != Qundef) { if (calling->recv != Qundef) {
rb_compile_warn(RSTRING_PTR(RARRAY_AREF(loc, 0)), FIX2INT(RARRAY_AREF(loc, 1)), rb_compile_warn(RSTRING_PTR(RARRAY_AREF(loc, 0)), FIX2INT(RARRAY_AREF(loc, 1)),
"for `%"PRIsVALUE"' defined here", name); "for `%"PRIsVALUE"' defined here; maybe ** should be added to the call?", name);
} }
else { else {
rb_compile_warn(RSTRING_PTR(RARRAY_AREF(loc, 0)), FIX2INT(RARRAY_AREF(loc, 1)), rb_compile_warn(RSTRING_PTR(RARRAY_AREF(loc, 0)), FIX2INT(RARRAY_AREF(loc, 1)),
"for method defined here"); "for method defined here; maybe ** should be added to the call?");
} }
} }
} }