Bug #17727
Updated by colintherobot (Colin Hart) over 4 years ago
Given a method that takes a kwarg and **arg
``` ruby
def foo(a:, **b)
[a,b]
end
```
If you call this method without deconstructing the hash passed to the second argument first it throws an error that that I thought was maybe just an unhandled case. I would Would expect a message indicating you need to deconstruct the hash first.
Instead it throws a syntax error:
``` ruby
foo(a: '1', {b: 2})
SyntaxError: unexpected ')', expecting =>
foo(a: '1', {b: 2})
^
```
Passing case when you deconstruct the hash first: first
``` ruby
foo(a: '1', **{b: 2})
=> ["1", {:b=>2}]
```
But wondering if there's something else going on because cause you get a different error when defining this case on multiple lines. If In fact, if you're trying to run this in a the repl environment it won't even let you complete the method call.
from repl: repl
``` ruby
foo(
a: '1',
{b: 2}
SyntaxError: unexpected '\n', expecting =>
```
passing case: case
``` ruby
foo(
a: '1',
**{b:1}
)
=> ["1", {:b=>1}]
```
Attached is a ruby script to reproduce the above cases.