Issue #15535 has been updated by nobu (Nobuyoshi Nakada).

Status changed from Open to Rejected

Required arguments cannot be placed between optional arguments **syntactically**, so it must be a `SyntaxError`.
`ArgumentError` is a runtime error.


----------------------------------------
Bug #15535: Optional arguments for definition - Syntax Error is not the correct Error type
https://bugs.ruby-lang.org/issues/15535#change-76322

* Author: waheedi (Waheed Barghouthi)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.6.0p0
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
The below definition throws a Syntax Error, while there is no syntax error and I'm not sure what is the intention behind the Syntax Error

``` ruby
def hello(foo="bar", bar, yanko="me")
  p "Hello"
end
```

The same definition below with a tiny modification in the argument set, give a Syntax OK.

``` ruby
def hello(foo="bar", bar="foo", yanko="me")
  p "Hello"
end
```


It seems when there is a required argument in the definition that happens to be in between optional arguments that triggers a Syntax Error, I think the ArgumentError is more related to it. 

This has been tested on mostly every ruby version after 1.8.7 and it gave the same result.




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>