diff --git a/package.json b/package.json
index 7d1d9e3b3339..e0a90fd46efe 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
   "devDependencies": {
     "@types/mocha": "^2.2.41",
     "@types/node": "^8.0.17",
-    "acorn": "^5.1.1",
+    "acorn": "^5.4.1",
     "acorn-dynamic-import": "^2.0.2",
     "chalk": "^2.0.1",
     "codecov": "^2.2.0",
diff --git a/src/parse/read/directives.ts b/src/parse/read/directives.ts
index 2a27f378127d..99744e024457 100644
--- a/src/parse/read/directives.ts
+++ b/src/parse/read/directives.ts
@@ -31,7 +31,9 @@ function readExpression(parser: Parser, start: number, quoteMark: string|null) {
 		}
 	}
 
-	const expression = parseExpressionAt(repeat(' ', start) + str, start);
+	const expression = parseExpressionAt(repeat(' ', start) + str, start, {
+		ecmaVersion: 9,
+	});
 	parser.index = expression.end;
 
 	parser.allowWhitespace();
@@ -102,7 +104,7 @@ export function readBindingDirective(
 		}
 
 		const source = repeat(' ', a) + parser.template.slice(a, b);
-		value = parseExpressionAt(source, a);
+		value = parseExpressionAt(source, a, { ecmaVersion: 9 });
 
 		if (value.type !== 'Identifier' && value.type !== 'MemberExpression') {
 			parser.error(`Cannot bind to rvalue`, value.start);
diff --git a/src/parse/read/expression.ts b/src/parse/read/expression.ts
index 47e1d706df16..c8c3054274f4 100644
--- a/src/parse/read/expression.ts
+++ b/src/parse/read/expression.ts
@@ -32,6 +32,7 @@ export default function readExpression(parser: Parser) {
 
 	try {
 		const node = parseExpressionAt(parser.template, parser.index, {
+			ecmaVersion: 9,
 			preserveParens: true,
 		});
 		parser.index = node.end;
diff --git a/src/parse/read/script.ts b/src/parse/read/script.ts
index d88c0a822df4..4f28200b4321 100644
--- a/src/parse/read/script.ts
+++ b/src/parse/read/script.ts
@@ -22,7 +22,7 @@ export default function readScript(parser: Parser, start: number, attributes: No
 
 	try {
 		ast = acorn.parse(source, {
-			ecmaVersion: 8,
+			ecmaVersion: 9,
 			sourceType: 'module',
 			plugins: {
 				dynamicImport: true
diff --git a/yarn.lock b/yarn.lock
index e79897d0af82..65ad9e530726 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -58,10 +58,14 @@ acorn@^4.0.3:
   version "4.0.13"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
 
-acorn@^5.0.0, acorn@^5.1.1, acorn@^5.2.1, acorn@^5.3.0:
+acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
 
+acorn@^5.4.1:
+  version "5.4.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102"
+
 acorn@~5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"