Re: [heycam/webidl] Clarify [[Call]] + [[Construct]] for named (and possibly non-named) constructors (#278)

Hmm, why do you think it's implicit? What phrasing do you think triggers that ES clause? I still think to trigger that ES stuff you need to say something like

> Interface objects are [built-in function objects]\(link to ES spec\) that are constructors, and whose [[Call]] and [[Construct]] behavior is governed by the following algorithm:

and similarly for named constructors. Maybe the "that are constructors" is confusing to the casual reader, in which case I would add something like:

> Note: interface objects "are constructors" in the strict sense of the ECMAScript specification, that [IsConstructor] returns true when applied to them because they have a [[Construct]] internal method. But unless they are annotated with the [Constructor] extended attribute, attempting to construct an interface object will always throw. Thus they are often not "constructors" in the sense an ECMAScript programmer might expect.

I agree those lines are redundant from a specification perspective; I always thought of them as stating a fact, not a normative requirement (no "must", instead "will" or "can"). Moving them to a note seems fine; I'm never sure when it's better to put non-normative statements of fact inside notes or just leave them there.

Now that I re-read the above, I guess maybe my suggestions re-state a lot of those two lines you quote, although IMO in a more explicit way.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/heycam/webidl/issues/278#issuecomment-277003865

Received on Thursday, 2 February 2017 16:19:35 UTC