From 561d4f74b09613c3edfe659d382fac5abab827ba Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Wed, 22 Feb 2017 07:24:40 -0800 Subject: [PATCH] Forbid semicolons after decorators in classes (#352) --- src/parser/statement.js | 3 +++ test/fixtures/experimental/decorators/no-semi/actual.js | 4 ++++ test/fixtures/experimental/decorators/no-semi/options.json | 3 +++ 3 files changed, 10 insertions(+) create mode 100644 test/fixtures/experimental/decorators/no-semi/actual.js create mode 100644 test/fixtures/experimental/decorators/no-semi/options.json 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)" +}