diff --git a/src/tokens/expression.php b/src/tokens/expression.php index 47cd690..33b918a 100644 --- a/src/tokens/expression.php +++ b/src/tokens/expression.php @@ -225,6 +225,7 @@ protected function isEol(tokenise $tokens, object $prev, ?object $beforeprev = n $key = __NAMESPACE__.'\\keyword'; $bra = __NAMESPACE__.'\\brackets'; $op = __NAMESPACE__.'\\operator'; + $var = __NAMESPACE__.'\\variable'; // check for kewords $keywords = ['debugger', 'continue', 'break', 'throw', 'return']; @@ -238,6 +239,9 @@ protected function isEol(tokenise $tokens, object $prev, ?object $beforeprev = n } elseif ($prevtype === $bra && $prev->bracket === 'curly' && $beforeprevtype !== $op) { return $assignment; + // if class declaration + } elseif ($beforeprevtype === $key && $prevtype === $var && $beforeprev->content === 'class') { + // get next token } elseif (($next = $this->getNextSignificantToken($tokens)) === null) { diff --git a/tests/jsliteTest.php b/tests/jsliteTest.php index 4027433..9d0c8df 100644 --- a/tests/jsliteTest.php +++ b/tests/jsliteTest.php @@ -577,6 +577,21 @@ public function testHandleDifficultJavascript() { }', 'output' => 'class ClassWithGetSet{#msg="hello world";get msg(){return this.#msg}set msg(x){this.#msg=`hello ${x}`}}' ], + [ + 'input' => 'class TypicalClass + { + constructor() { + this.msg = "Typical"; + } + get msg() { + return this.msg; + } + update(newmsg) { + this.msg = newmsg; + } + }', + 'output' => 'class TypicalClass{constructor(){this.msg="Typical"}get msg(){return this.msg}update(newmsg){this.msg=newmsg}}' + ], [ 'input' => 'var get = "foo"; function get(val) { @@ -790,6 +805,13 @@ function () { + 6;', 'output' => 'var val=5+6;' + ], + [ + 'input' => 'class MyClass + { + + }', + 'output' => 'class MyClass{}' ] ]; $this->compareMinify($tests, ['semicolons' => false]);