The part that matters here is in annex B: http://www.ecma-international.org/ecma-262/7.0/#sec-forbidden-extensions
This forbids functions in strict code from having own properties "caller" or "arguments". Newer function kinds have these restrictions in sloppy mode. AddRestricted... adds the accessor which makes getting/setting "caller" or "arguments" throw, but is per spec only performed on intrinsics (like %FunctionPrototype%). So unfortunately, this is something your membrane would need to be aware of and work around. Mozilla's approach violates ECMAScript's forbidden extensions and can't be considered "correct" Sent from my iPhone > On Sep 5, 2016, at 8:54 PM, Alex Vincent <[email protected]> wrote: > > <script> > "use strict" > function A() {} > </script> > <script> > function B() {} > </script> > <script> > window.onload = function() { > let a = Reflect.ownKeys(A); > let b = Reflect.ownKeys(B); > document.getElementById("output").value = (a.includes("arguments") === > b.includes("arguments")); > } > </script> > > Mozilla Firefox reports true. Google Chrome and node.js report false. Which > one is correct? > > I looked through Mozilla's Bugzilla, Google Chrome's Monorail, and the ES7 > spec to try figuring this out. The closest I could get was section 9.2.7 of > the ES7 spec. [1] > > Right now I have an inadvertent mix of strict code / non-strict code in my > membrane, and this difference is causing my most recent patch to fail tests > in nodejs and Google Chrome, and to pass in Mozilla Firefox. In Chrome and > nodejs, I get: > > TypeError: 'ownKeys' on proxy: trap result did not include 'arguments' > > If it turns out Google & nodejs are correct, this could be an issue going > forward: I can't control whether my membrane library's users are running > strict mode code or not... likewise, I don't know if my code should be > consistently strict mode or consistently non-strict. (I feel that a mix is > not good, except for finding bugs like this...) > > My apologies for treating this list as a help forum, but I'm just not sure > where else to go... > > [1] > http://www.ecma-international.org/ecma-262/7.0/#sec-addrestrictedfunctionproperties > -- > "The first step in confirming there is a bug in someone else's work is > confirming there are no bugs in your own." > -- Alexander J. Vincent, June 30, 2001 > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

