Rolf B: Node.js und Firebase

Beitrag lesen

Hallo dedlfix,

Der ES5

wurde jetzt von Dir ins Spiel gebracht und war bisher auf der Veteranentribüne...

Sogar der IE11 kann schon let. Fast das einzige ES6, was er gelernt hat. Und was der kann, kann man als universell nutzbar ansehen 😉

Staufers Hinweis bezog sich aber auf ES7 (aka 2016) vs ES8 (aka 2017).

Und ich hatte mein "ESLint muss dazulernen" auch anders gedacht. Wenn ich einen Linter herausbringe, der bis hin zu ECMAScript 2017 oder vielleicht auch mehr beherrscht, und ihm eine Option wie „JS Konstrukte sind nur bis ECMAScript 2016 zulässig“, dann ist ein stumpfes dumb-down auf den ECMAScript 2016 Parser eine zu einfache Lösung.

Die aufwändige Lösung ist ein ECMAScript Parser für den aktuellen Sprachlevel, der jedes erkannte Sprachkonstrukt mit "valid in ES.x" markiert und ggf. auch "deprecated in ES.y", und nachdem der durch ist, durchsucht ESLint den gefundenen AST nach Sprachmarkierungen, die für den gewünschten Ziellevel zu hoch sind.

Die billigere Lösung wäre, für jeden Sprachlevel einen Parser aufzubewahren, mit dem Parser für den gewünschten Level zu beginnen, und bei gefundenen Fehlern so lange auf den nächsthöheren Level zu wechseln, bis der Fehler weggeht. In Casablancas Fall hätte er - mutmaßlich - mit ES7 begonnen, den Parser Error bekommen, es mit ES8 nochmal probiert, das Weggehen des Fehlers festgestellt und dann sagen können: Sorry, ECMAScript 2017 Feature, you wanted only ECMAScript 2016.

Und wenn der Fehler nicht weggeht, kann er immer noch „That's tommy-rot in line 4711“ ausgeben...

Rolf

--
sumpsi - posui - obstruxi