Early error on '0' followed by '8' or '9' in numeric literals does not seem to be web-compatible
Mark S. Miller
erights at google.com
Thu Aug 7 07:51:22 PDT 2014
On Thu, Aug 7, 2014 at 7:08 AM, Alex Kocharin <alex at kocharin.ru> wrote:
> 07.08.2014, 09:49, "Mathias Bynens" <mathias at qiwi.be>:
> > On 7 Aug 2014, at 02:46, Bill Frantz <frantz at pwpconsult.com> wrote:
> >> On Tue, Aug 5, 2014 at 7:56 AM, Mathias Bynens <mathias at qiwi.be>
> >> ...
> >>> In section 11.8.3 (Numeric Literals), the definition for
> >>> `DecimalIntegerLiteral` should somehow be tweaked to match that of
> >>> `DecimalDigits`, with the exception that if the first digit is `0`
> and all
> >>> other digits are octal digits (0-7) it must be treated as a legacy
> >>> literal.
> >> So this horrible footgun, changing the value of a constant changes its
> radix, is only lurking in sloppy mode.
> > It affects strict mode code too in existing implementations: there you
> go from not throwing on e.g. `0123456789` (which is not an octal literal
> because of the `8` and `9`) to suddenly throwing a syntax error when the
> value changes to `0` followed by only octal digits (as then it is an octal
> literal). See my previous posts in this thread.
> Throw if value is ambiguous (i.e. `052`), don't throw if value is
> unambiguous (i.e. `05`, `082`). Looks good to me.
> It is not compiler job to prevent bad code style, it's what linters should
It is partially the job of strict mode to prevent some egregiously
confusing constructs. There is a line to draw between what strict mode
prohibits and what linters warn about. But there's no one line statement of
principle that captures this. Strict mode prohibits "with" and some other
constructs that make it especially hard to reason about programs.
FF strict does prohibit 05 and 082 (I just checked on Nightly). This
demonstrates that the saner rule is web compatible. This also better
reflects the intent of what we thought we'd agreed to regarding what is
allowed in strict mode.
> es-discuss mailing list
> es-discuss at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss