JavaScriptCore has never allowed octal sequences (anything other than a . or x after 0) in strict mode, and we haven't had any problems with it.
--Oliver > On Aug 5, 2014, at 11:13 AM, Allen Wirfs-Brock <al...@wirfs-brock.com> wrote: > > > On Aug 5, 2014, at 8:38 AM, Mathias Bynens wrote: > >> On 5 Aug 2014, at 17:19, Mark S. Miller <erig...@google.com> wrote: >> >>> On Tue, Aug 5, 2014 at 8:17 AM, Mathias Bynens <math...@qiwi.be> wrote: >>> >>>> The literals under discussion (e.g. `08` and `09`) are not octal literals. >>> >>> Strict mode should reject these even more vehemently! (Allen, can we have >>> an early vehement error?) > > I think we weren't clear enough in the ES5 spec. The base-line grammar says > that starting a decimal literal (other than a single '0') with a 'o' is not > valid syntax. You should expect to get a syntax error for 00, or 07, or 08, > or0123456789, or 01234567, etc. ES5 Annex B defines an extension that makes > sequences of digits (excluding '8' or '9') legal syntax. But section 7.8.3 > says that that particular extension is not allowed in strict mode code. > > The problem is that there is another extensions (that is not in ES5 Annex B) > that allows and gives meaning for '0' followed by digit sequences that > include the digits '8' and/or '9'. I'm pretty sure that when drafting ES5 we > thought the restriction in 7.8.3 was making making both of these extensions > illegal in strict mode. Apparently most real world browsers didn't interpret > things that way which is unfortunate. > >> >> Now I’m confused again. That contradicts what Allen said earlier in this >> thread: >> >> On 5 Aug 2014, at 16:20, Allen Wirfs-Brock <al...@wirfs-brock.com> wrote: >> >>> Regarding, leading 0 constants in strict mode. The long term plan is to >>> eventually make them legal decimal constants. >> >> I stand by my earlier suggestion: >> >> 1. Accept decimal integer literals with leading `0`, even in strict mode. >> 2. Interpret the value of such literals as octal in case they consist of >> octal digits only. (Note: this is already in Annex B – see >> `LegacyOctalIntegerLiteral`.) >> >> Strict mode would accept `08` as it’s a zero-prefixed decimal literal but >> not `07` since that’s an octal literal. >> >> This matches what all browsers already do (except Firefox), and fulfills the >> long-term plan Allen was talking about. > > I think this is more or less the strategy we should follow. > > All browsers in all modes apparently interpret leading 0 numbers that contain > the digits "8" or "9" as decimal literals. We should make that part of the > base language for ES6. > > The ES6 base language should make leading 0 numbers containing only octal > digits ("1"-"7") syntactically illegal. > > Annex B can continue to define the meaning for such leading 0 octal numbers. > And strict mode still makes that annex B extension illegal > > Someday, when strict mode/modules is more dominant we can relax the > restriction of leaning 0 numbers without "8" or "9" and make all leading 0 > numbers decimal literals in strict mode. > > Allen > > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss