[ruby-cvs:79056] beae6cbf0f (master): Fully separate positional arguments and keyword arguments
"Jeremy Evans" <[email protected]> Fri, 3 Jan 2020 11:40:57 +0900 (JST)
| Newsgroups | gmane.comp.lang.ruby.cvs |
|---|---|
| Message-ID | <[email protected]> |
Jeremy Evans 2019-10-05 04:51:57 +0900 (Sat, 05 Oct 2019)
New Revision: beae6cbf0f
https://github.com/ruby/ruby/commit/beae6cbf0f
Log:
Fully separate positional arguments and keyword arguments
=
This removes the warnings added in 2.7, and changes the behavior
so that a final positional hash is not treated as keywords or
vice-versa.
=
To handle the arg_setup_block splat case correctly with keyword
arguments, we need to check if we are taking a keyword hash.
That case didn't have a test, but it affects real-world code,
so add a test for it.
=
This removes rb_empty_keyword_given_p() and related code, as
that is not needed in Ruby 3. The empty keyword case is the
same as the no keyword case in Ruby 3.
=
This changes rb_scan_args to implement keyword argument
separation for C functions when the : character is used.
For backwards compatibility, it returns a duped hash.
This is a bad idea for performance, but not duping the hash
breaks at least Enumerator::ArithmeticSequence#inspect.
=
Instead of having RB_PASS_CALLED_KEYWORDS be a number,
simplify the code by just making it be rb_keyword_given_p().
Modified files:
class.c
cont.c
enumerator.c
eval.c
ext/-test-/scan_args/scan_args.c
include/ruby/ruby.h
internal/vm.h
object.c
proc.c
test/ruby/test_proc.rb
thread.c
vm.c
vm_args.c
vm_core.h
vm_eval.c
vm_insnhelper.c=