Yusuke SUZUKI (2015-06-17T18:19:38.000Z)
>
> It turns out the spec is fine <
> https://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap.prototype.set>
> step 5 says
>
> If Type
> <https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-data-types-and-values>
> (*key*) is not Object, throw a *TypeError* exception.
>
>
> as I hoped and expected. The reason I was alarmed is that I got the
> following behavior on v8/iojs:
>
> > var w = new WeakMap();
> undefined
>
> > var r = Symbol.for('foo');
> undefined
>
> > w.set(r, true);
> {}
>
> > w.get(r)
> true
>
>
> I will file a v8 bug. Please someone, add a test for this to test262.
>
>
Ah, I see.

FYI (you may know deeper than I ;)), since symbols are primitive values,
they cannot be used as a WeakMap's key.
And since they are primitive values, they cannot have any properties. It
means that primitive values are immutable.
So Symbol.for / Symbol.keyFor's registry can be WeakMap in the internal
implementation.

Actually, we implemented so :D http://trac.webkit.org/changeset/182915
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150618/782b1988/attachment-0001.html>
d at domenic.me (2015-07-07T01:41:41.754Z)
> It turns out the spec is fine
>
> ...
> 
> I will file a v8 bug. Please someone, add a test for this to test262.

Ah, I see.

FYI (you may know deeper than I ;)), since symbols are primitive values,
they cannot be used as a WeakMap's key.
And since they are primitive values, they cannot have any properties. It
means that primitive values are immutable.
So Symbol.for / Symbol.keyFor's registry can be WeakMap in the internal
implementation.

Actually, we implemented so :D http://trac.webkit.org/changeset/182915