diff --git a/src/parser/statement.js b/src/parser/statement.js index aa0d6abf66..d7073ef1bd 100644 --- a/src/parser/statement.js +++ b/src/parser/statement.js @@ -648,6 +648,9 @@ pp.parseClassBody = function (node) { while (!this.eat(tt.braceR)) { if (this.eat(tt.semi)) { + if (decorators.length > 0) { + this.raise(this.state.lastTokEnd, "Decorators must not be followed by a semicolon"); + } continue; } diff --git a/test/fixtures/experimental/decorators/no-semi/actual.js b/test/fixtures/experimental/decorators/no-semi/actual.js new file mode 100644 index 0000000000..6138e9c6f9 --- /dev/null +++ b/test/fixtures/experimental/decorators/no-semi/actual.js @@ -0,0 +1,4 @@ +class A { + @a; + m(){} +} diff --git a/test/fixtures/experimental/decorators/no-semi/options.json b/test/fixtures/experimental/decorators/no-semi/options.json new file mode 100644 index 0000000000..ffac21b695 --- /dev/null +++ b/test/fixtures/experimental/decorators/no-semi/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Decorators must not be followed by a semicolon (2:5)" +}