diff --git a/src/printer.js b/src/printer.js index fd6f37f6..a33e876c 100644 --- a/src/printer.js +++ b/src/printer.js @@ -4591,6 +4591,10 @@ function classChildNeedsASIProtection(node) { return; } + if (!node.computed) { + const name = node.key && node.key.name; + if (name === "in" || name === "instanceof") return true; + } switch (node.type) { case "ClassProperty": case "TSAbstractClassProperty": diff --git a/tests/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap b/tests/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap index 9a0311a2..b4f93660 100644 --- a/tests/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap +++ b/tests/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap @@ -3,17 +3,53 @@ exports[`no-semi.js 1`] = ` a ;::b.c + +class A { + a = b; + in + c + + a = b; + instanceof(){} +} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a; ::b.c; +class A { + a = b; + in; + c; + + a = b; + instanceof() {} +} + `; exports[`no-semi.js 2`] = ` a ;::b.c + +class A { + a = b; + in + c + + a = b; + instanceof(){} +} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a ;::b.c +class A { + a = b; + in + c + + a = b; + instanceof() {} +} + `; diff --git a/tests/no-semi-babylon-extensions/no-semi.js b/tests/no-semi-babylon-extensions/no-semi.js index 831940e9..86225866 100644 --- a/tests/no-semi-babylon-extensions/no-semi.js +++ b/tests/no-semi-babylon-extensions/no-semi.js @@ -1,2 +1,11 @@ a ;::b.c + +class A { + a = b; + in + c + + a = b; + instanceof(){} +}