diff options
author | Kevin Newton <kddnewton@gmail.com> | 2021-10-07 11:01:37 -0400 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:43 -0400 |
commit | 56b1b93a0c504b93f7536effca155c0fdeebeb8e (patch) | |
tree | 4d95a850993e32b24e9937f6e7287d15c8a840d3 /bootstraptest | |
parent | c5acbd0208aa61e05718f73a093c7c6bdc142091 (diff) |
Feedback, tests, and rebase for kwargs
Diffstat (limited to 'bootstraptest')
-rw-r--r-- | bootstraptest/test_yjit.rb | 77 |
1 files changed, 50 insertions, 27 deletions
diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb index cf4a65fea2..100cb99cee 100644 --- a/bootstraptest/test_yjit.rb +++ b/bootstraptest/test_yjit.rb @@ -2074,37 +2074,60 @@ assert_equal '["sub", "sub"]', %q{ [foo(sub), foo(sub)] } -assert_equal '[[1, 2, 3, 4]]', %q{ - def four(a:, b:, c:, d:) - [a, b, c, d] +# leading and keyword arguments are swapped into the right order +assert_equal '[[1, 2, 3, 4, 5, 6]]', %q{ + def kwargs(five, six, a:, b:, c:, d:) + [a, b, c, d, five, six] end 5.times.flat_map do [ - four(a: 1, b: 2, c: 3, d: 4), - four(a: 1, b: 2, d: 4, c: 3), - four(a: 1, c: 3, b: 2, d: 4), - four(a: 1, c: 3, d: 4, b: 2), - four(a: 1, d: 4, b: 2, c: 3), - four(a: 1, d: 4, c: 3, b: 2), - four(b: 2, a: 1, c: 3, d: 4), - four(b: 2, a: 1, d: 4, c: 3), - four(b: 2, c: 3, a: 1, d: 4), - four(b: 2, c: 3, d: 4, a: 1), - four(b: 2, d: 4, a: 1, c: 3), - four(b: 2, d: 4, c: 3, a: 1), - four(c: 3, a: 1, b: 2, d: 4), - four(c: 3, a: 1, d: 4, b: 2), - four(c: 3, b: 2, a: 1, d: 4), - four(c: 3, b: 2, d: 4, a: 1), - four(c: 3, d: 4, a: 1, b: 2), - four(c: 3, d: 4, b: 2, a: 1), - four(d: 4, a: 1, b: 2, c: 3), - four(d: 4, a: 1, c: 3, b: 2), - four(d: 4, b: 2, a: 1, c: 3), - four(d: 4, b: 2, c: 3, a: 1), - four(d: 4, c: 3, a: 1, b: 2), - four(d: 4, c: 3, b: 2, a: 1) + kwargs(5, 6, a: 1, b: 2, c: 3, d: 4), + kwargs(5, 6, a: 1, b: 2, d: 4, c: 3), + kwargs(5, 6, a: 1, c: 3, b: 2, d: 4), + kwargs(5, 6, a: 1, c: 3, d: 4, b: 2), + kwargs(5, 6, a: 1, d: 4, b: 2, c: 3), + kwargs(5, 6, a: 1, d: 4, c: 3, b: 2), + kwargs(5, 6, b: 2, a: 1, c: 3, d: 4), + kwargs(5, 6, b: 2, a: 1, d: 4, c: 3), + kwargs(5, 6, b: 2, c: 3, a: 1, d: 4), + kwargs(5, 6, b: 2, c: 3, d: 4, a: 1), + kwargs(5, 6, b: 2, d: 4, a: 1, c: 3), + kwargs(5, 6, b: 2, d: 4, c: 3, a: 1), + kwargs(5, 6, c: 3, a: 1, b: 2, d: 4), + kwargs(5, 6, c: 3, a: 1, d: 4, b: 2), + kwargs(5, 6, c: 3, b: 2, a: 1, d: 4), + kwargs(5, 6, c: 3, b: 2, d: 4, a: 1), + kwargs(5, 6, c: 3, d: 4, a: 1, b: 2), + kwargs(5, 6, c: 3, d: 4, b: 2, a: 1), + kwargs(5, 6, d: 4, a: 1, b: 2, c: 3), + kwargs(5, 6, d: 4, a: 1, c: 3, b: 2), + kwargs(5, 6, d: 4, b: 2, a: 1, c: 3), + kwargs(5, 6, d: 4, b: 2, c: 3, a: 1), + kwargs(5, 6, d: 4, c: 3, a: 1, b: 2), + kwargs(5, 6, d: 4, c: 3, b: 2, a: 1) ] end.uniq } + +# implicit hashes get skipped and don't break compilation +assert_equal '[[:key]]', %q{ + def implicit(hash) + hash.keys + end + + 5.times.map { implicit(key: :value) }.uniq +} + +# default values on keywords don't mess up argument order +assert_equal '[2]', %q{ + def default_value + 1 + end + + def default_expression(value: default_value) + value + end + + 5.times.map { default_expression(value: 2) }.uniq +} |