Early error on '0' followed by '8' or '9' in numeric literals does not seem to be web-compatible
alex at kocharin.ru
Thu Aug 7 07:08:47 PDT 2014
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> wrote:
>>> 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 octal
>> 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 do.
More information about the es-discuss