Issue #11105 has been updated by Shugo Maeda.


Nobuyoshi Nakada wrote:
> > lexington:ruby$ ./ruby x.rb
> > x.rb:4: warning: duplicated key at line 4 ignored: :a
> > x.rb:4: warning: duplicated key at line 4 ignored: :a
> > {:a=>3}
> > ```
> 
> Why they make the same symbol?
> `a`, `@a` and `$a` are irrelevant, separate variables.
> I'd expect `{:a=>1, :@a=>2, :$a=>3}` without any warnings.

Because I don't come up with any use case of such ugly key names.
I believe code like {a, @a} should not be used in real world applications.


----------------------------------------
Feature #11105: ES6-like hash literals
https://bugs.ruby-lang.org/issues/11105#change-52447

* Author: Shugo Maeda
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Why not support ECMAScript6-like hash literals?

For example,

    {x, y}

is equivalent to:

    {x: x, y: y}

For convenience, the prefix of global, instance, and class variables should be removed from the key name as follows:

    a = 1
    B = 2
    $c = 3
    @d = 4
    @@e = 5
    p({a, B, $c, @d, @@e, f: 6})
    #=> {:a=>1, :B=>2, :c=>3, :d=>4, :e=>5, :f=>6}


---Files--------------------------------
0001-support-ES6-like-hash-literals.patch (3.88 KB)


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