[whatwg/webidl] Editorial: create the interface object before setting its [[Unforgeables]] (PR #1659)

In [create an interface object](https://webidl.spec.whatwg.org/#create-an-interface-object), the step "Set |F|.\[[Unforgeables]] to |unforgeables|" comes before "Let |F| be CreateBuiltinFunction(…)". That is, it writes to |F| before |F| is defined.

This PR moves the |unforgeables| steps, along with their note, to right after |F| is created:

1. Let |length| be 0.
1. If |I| was declared with a constructor operation, then … set |length| …
1. Let |F| be CreateBuiltinFunction(|steps|, |length|, |id|, « \[[Unforgeables]] », |realm|, |constructorProto|).
1. Let |unforgeables| be OrdinaryObjectCreate(null).
1. Define the unforgeable regular operations of |I| on |unforgeables|, given |realm|.
1. Define the unforgeable regular attributes of |I| on |unforgeables|, given |realm|.
1. Set |F|.\[[Unforgeables]] to |unforgeables|.

The steps in between only compute |length| and don't use |unforgeables| or |F|, so the meaning doesn't change.

This is introduced in #1539, which moved the CreateBuiltinFunction call later.
You can view, comment on, or merge this pull request online at:

  https://github.com/whatwg/webidl/pull/1659

-- Commit Summary --

  * Editorial: create the interface object before setting its [[Unforgeables]]

-- File Changes --

    M index.bs (16)

-- Patch Links --

https://github.com/whatwg/webidl/pull/1659.patch
https://github.com/whatwg/webidl/pull/1659.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/webidl/pull/1659
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/webidl/pull/1659@github.com>

Received on Wednesday, 4 November 2026 05:17:14 UTC