archives

« Bugzilla Issues Index

#1816 — 15.4.3.31 Array.prototype.copyWithin typo: copyWith


- %TypedArray%#copyWithin refers to the Array#copyWithin spec at 15.4.3.23, but it's actually at 15.4.3.31.
- it's there named "copyWith", not "copyWithin".
- when describing the arity, it refers to Array#fill
- In describing the algorithm, it starts referring to a "from" and "to" parameter that aren't referenced previously.


fixed in rev19 editor's draft

22.1.3.3
22.2.3.5

Note that to/from are defined in steps 9 and 12


fixed in rev19


I'm being pedantic, but there's one more occurrence: Note 1 at the bottom of section 22.1.3.3, the sentence "Whether the copyWith function can be applied successfully to an exotic object that is not an Array is implementation-dependent." - s/copyWith/copyWithin.

Also, is "exotic object" still relevant with the Symbol changes?


(In reply to comment #3)
> Also, is "exotic object" still relevant with the Symbol changes?

With regard to?


(In reply to comment #4)
> (In reply to comment #3)
> > Also, is "exotic object" still relevant with the Symbol changes?
>
> With regard to?

I'm not very informed on symbols/exotic objects etc, I just noticed a bunch of changes in this rev of Symbol being a primitive instead of an exotic object, so i thought i'd bring it up. I'm not thinking of anything specific.


"exotic object" is spec terminology used to describe any object that requires functionality that is outside of the Meta Object Protocol (MOP). There is good discussion in the Nov 2012 meeting notes: https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-11/nov-27.md#meta-object-protocol-aka-mop


(In reply to comment #6)
> "exotic object" is spec terminology used to describe any object that requires
> functionality that is outside of the Meta Object Protocol (MOP).

Actually, its any object that requires an implement of any of the MOP functions that is different than those provided in http://people.mozilla.org/~jorendorff/es6-draft.html#sec-9.1

Objects that exactly implement the MOP as described in that section are called "ordinary objects"

All objects, whether ordinary or exotic must support the full MOP interface.


(In reply to comment #7)
> (In reply to comment #6)
> > "exotic object" is spec terminology used to describe any object that requires
> > functionality that is outside of the Meta Object Protocol (MOP).
>
> Actually, its any object that requires an implement of any of the MOP functions
> that is different than those provided in
> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-9.1
>
> Objects that exactly implement the MOP as described in that section are called
> "ordinary objects"
>
> All objects, whether ordinary or exotic must support the full MOP interface.

If I understand correctly, an exotic object becomes exotic (from ordinary) in both cases, unless that's changed since you first introduced exotic objects last fall (introduced to the spec that is). Or it's simply evolved and become more specific? I refer, again, to this conversation: https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-11/nov-27.md#meta-object-protocol-aka-mop


(In reply to comment #8)

> If I understand correctly, an exotic object becomes exotic (from ordinary) in
> both cases, unless that's changed since you first introduced exotic objects
> last fall (introduced to the spec that is). Or it's simply evolved and become
> more specific? I refer, again, to this conversation:
> https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-11/nov-27.md#meta-object-protocol-aka-mop

Well that says an ordinary object is any object that "uses the standard MOP semantics" and an exotic object is any object that is not an ordinary object.

So, it's the standard MOP semantics that is the key differentiators. The MOP interface is the same in either case. This hasn't really changed since I introduced the terms. However, the second half of the exotic definition in the notes is kind of sloppy "which means anything that specifies the use of something that is not in the MOP." Particularly it isn't clear what "use of" really means. But really, it's any MOP operation that does anything different form the ordinary MOP specification.


(In reply to comment #9)
> (In reply to comment #8)
>
> > If I understand correctly, an exotic object becomes exotic (from ordinary) in
> > both cases, unless that's changed since you first introduced exotic objects
> > last fall (introduced to the spec that is). Or it's simply evolved and become
> > more specific? I refer, again, to this conversation:
> > https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-11/nov-27.md#meta-object-protocol-aka-mop
>
> Well that says an ordinary object is any object that "uses the standard MOP
> semantics" and an exotic object is any object that is not an ordinary object.
>
> So, it's the standard MOP semantics that is the key differentiators. The MOP
> interface is the same in either case. This hasn't really changed since I
> introduced the terms. However, the second half of the exotic definition in the
> notes is kind of sloppy "which means anything that specifies the use of
> something that is not in the MOP." Particularly it isn't clear what "use of"
> really means. But really, it's any MOP operation that does anything different
> form the ordinary MOP specification.

Great, thanks for clarifying