Mark S. Miller (2014-12-01T02:12:50.000Z)
d at domenic.me (2014-12-19T22:33:00.033Z)
On Sun, Nov 30, 2014 at 12:21 PM, Boris Zbarsky <bzbarsky at mit.edu> wrote: > Per spec ES6, it seems to me like attempting to define a non-configurable > property on a WindowProxy should throw and getting a property descriptor for > a non-configurable property that got defined on the Window (e.g. via "var") > should report it as configurable. Yes, both of these conclusions are correct. > But that matches precisely 0 UAs.... and > throwing seems like a compat worry. :( > > Anyway, what are reasonable behaviors here? What are UAs willing to align > on? The only reasonable behavior that I see is the one you specified. Introducing an invariant violation of this sort would kill these invariants in general, as the Proxy target mechanism relies on these invariants to enforce that Proxies cannot introduce more violations. Put another way, if this invariant is preserved by WindowProxy, then anyone else seeking to create another object that violates this invariant can create a Proxy whose target is a WindowProxy. Its violation enables further violations. The invariants are inductive. A violation breaks the induction. From prior similar experiences, the way to get this fixed quickly is to add test262 tests which fail on these violations. All browsers have been much quicker to fix breakage that shows up in test262 results than to mere bug reports.
d at domenic.me (2014-12-19T22:32:52.085Z)
On Sun, Nov 30, 2014 at 12:21 PM, Boris Zbarsky <bzbarsky at mit.edu> wrote: > Per spec ES6, it seems to me like attempting to define a non-configurable > property on a WindowProxy should throw and getting a property descriptor for > a non-configurable property that got defined on the Window (e.g. via "var") > should report it as configurable. Yes, both of these conclusions are correct. > But that matches precisely 0 UAs.... and > throwing seems like a compat worry. :( > > Anyway, what are reasonable behaviors here? What are UAs willing to align > on? The only reasonable behavior that I see is the one you specified. Introducing an invariant violation of this sort would kill these invariants in general, as the Proxy target mechanism relies on these invariants to enforce that Proxies cannot introduce more violations. Put another way, if this invariant is preserved by WindowProxy, then anyone else seeking to create another object that violates this invariant can create a Proxy whose target is a WindowProxy. Its violation enables further violations. The invariants are inductive. A violation breaks the induction. >From prior similar experiences, the way to get this fixed quickly is to add test262 tests which fail on these violations. All browsers have been much quicker to fix breakage that shows up in test262 results than to mere bug reports.