[ruby-core:68195] [Ruby trunk - Bug #10870] [Rejected] Hash Literal Declined As First Argument

From: nobu@...
Date: 2015-02-20 00:15:48 UTC
List: ruby-core #68195
Issue #10870 has been updated by Nobuyoshi Nakada.

Description updated
Status changed from Open to Rejected

It is parsed as a block.
You don't need braces in that case.

~~~ruby
def foo *args
  p args
end
foo :hello => 123
~~~

Or put parentheses.

~~~ruby
foo(:hello => 123)
foo({:hello => 123})
~~~

----------------------------------------
Bug #10870: Hash Literal Declined As First Argument
https://bugs.ruby-lang.org/issues/10870#change-51565

* Author: Imran ""
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: 2.0.0-p481
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Hi,

When a hash literal is passed as first argument to a method, Ruby throws a syntax error.
Example code:

~~~ruby
def foo *args
  p args
end

foo 'Hello'
foo 123
foo ['Hello', 123]
foo {:hello => 123}   # Syntax Error: Unexpected =>  Expecting }
~~~

However, shifting hash literal over to second place, somehow makes it all legal.

~~~ruby
foo 'Unnecessary 1st Argument', {:hello => 123}     # Error gone
~~~

Cheers.



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

In This Thread

Prev Next