davidbonnet / astring

🌳 Tiny and fast JavaScript code generator from an ESTree-compliant AST.

Home Page:https://david.bonnet.cc/astring/demo/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Super class (class extends) isn't parenthesized correctly

NotWearingPants opened this issue · comments

There is no parenthesis check at all in class extends ....

Using the online demo:


class A extends (a => a) {}

turns into

class A extends a => a {}

which is a syntax error.


function* f() { class A extends (yield) {} }

turns into

function* f() { class A extends yield {} }

which is a syntax error.


async function f() { class A extends (await B) {} }

turns into

async function f() { class A extends await B {} }

which is a syntax error.


class A extends (a++) {}

turns into

class A extends a++ {}

which is a syntax error.


class A extends (1+1) {}

turns into

class A extends 1+1 {}

which is a syntax error.


class A extends (-1) {}

turns into

class A extends -1 {}

which is a syntax error.