Thank you very much! That rule is exactly what I wanted and I'm surprised I
could not find it before.

On Wednesday, 13 July 2016, 長島徹 <[email protected]> wrote:

> Safari has not been broken. This is a correct behavior in ES5. ES5
> disallows function declarations on blocks (except function bodies). On the
> other hand, ES2015 (ES6) has relaxed this restriction.
>
> I'd like to recommend a use of no-inner-declarations
> <http://eslint.org/docs/rules/no-inner-declarations> rule.
> This rule would disallow such function declarations.
>
>
> 2016年7月14日(木) 4:59 Robin Ward <[email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>>:
>
>> Recently we broke Safari in production because code I'd written that
>> looked like this:
>>
>> ```javascript
>> if (true) {
>>   function test() {
>>   }
>>   test();
>> }
>> ```
>>
>> In Chrome and Firefox the above works well, but in Safari you get an
>> error: `SyntaxError: Strict mode does not allow function declarations in a
>> lexically nested statement.`
>>
>> This can be fixed by changing the code to this:
>>
>>
>> ```javascript
>> if (true) {
>>   const test = function() {
>>   }
>>   test();
>> }
>> ```
>>
>> I looked for a rule in ESLint to prevent the first (bad) code from
>> running but I can't find one. The closest seems to be `func-style` which
>> locks you into one or the other, but what I'm actually looking for is the
>> ability to raise an error when Safari would.
>>
>> Is there anything in ESLint to do this? Is there a way to propose this if
>> not?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "ESLint" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected]
>> <javascript:_e(%7B%7D,'cvml','eslint%[email protected]');>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ESLint" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to