diff --git a/test/language/statements/async-function/let-newline-await-in-async-function.js b/test/language/statements/async-function/let-newline-await-in-async-function.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7a7adb7989571848d1831295cb2561fcc0b2422
--- /dev/null
+++ b/test/language/statements/async-function/let-newline-await-in-async-function.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Jeff Walden <jwalden+code@mit.edu>
+esid: sec-let-and-const-declarations
+description: >
+  `let await` does not permit ASI in between, as `await` is a BindingIdentifier
+info: >
+  `await` is a perfectly cromulent binding name in any context grammatically, just
+  prohibited by static semantics in some contexts.  Therefore ASI can never apply
+  between `let` (where a LexicalDeclaration is permitted) and `await`,
+  so a subsequent `0` where `=` was expected is a syntax error.
+negative:
+  phase: early
+  type: SyntaxError
+---*/
+
+async function f() {
+    let
+    await 0;
+}
diff --git a/test/language/statements/let/syntax/let-newline-await-in-normal-function.js b/test/language/statements/let/syntax/let-newline-await-in-normal-function.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e35b7fd691f869768dcb1d2476868084703ae3f
--- /dev/null
+++ b/test/language/statements/let/syntax/let-newline-await-in-normal-function.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Jeff Walden <jwalden+code@mit.edu>
+esid: sec-let-and-const-declarations
+description: >
+  `let await` does not permit ASI in between, as `await` is a BindingIdentifier
+info: >
+  `await` is a perfectly cromulent binding name in any context grammatically, just
+  prohibited by static semantics in some contexts.  Therefore ASI can never apply
+  between `let` (where a LexicalDeclaration is permitted) and `await`,
+  so a subsequent `0` where `=` was expected is a syntax error.
+negative:
+  phase: early
+  type: SyntaxError
+---*/
+
+function f() {
+    let
+    await 0;
+}
diff --git a/test/language/statements/let/syntax/let-newline-yield-in-generator-function.js b/test/language/statements/let/syntax/let-newline-yield-in-generator-function.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7a7adb7989571848d1831295cb2561fcc0b2422
--- /dev/null
+++ b/test/language/statements/let/syntax/let-newline-yield-in-generator-function.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Jeff Walden <jwalden+code@mit.edu>
+esid: sec-let-and-const-declarations
+description: >
+  `let await` does not permit ASI in between, as `await` is a BindingIdentifier
+info: >
+  `await` is a perfectly cromulent binding name in any context grammatically, just
+  prohibited by static semantics in some contexts.  Therefore ASI can never apply
+  between `let` (where a LexicalDeclaration is permitted) and `await`,
+  so a subsequent `0` where `=` was expected is a syntax error.
+negative:
+  phase: early
+  type: SyntaxError
+---*/
+
+async function f() {
+    let
+    await 0;
+}
diff --git a/test/language/statements/let/syntax/let-newline-yield-in-normal-function.js b/test/language/statements/let/syntax/let-newline-yield-in-normal-function.js
new file mode 100644
index 0000000000000000000000000000000000000000..60471fede4c7739dd990c539fa0405542d9484b7
--- /dev/null
+++ b/test/language/statements/let/syntax/let-newline-yield-in-normal-function.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-let-and-const-declarations
+description: >
+  `let yield` does not permit ASI in between, as `yield` is a BindingIdentifier
+info: >
+  `yield` is a perfectly cromulent binding name in any context grammatically, just
+  prohibited by static semantics in some contexts.  Therefore ASI can never apply
+  between `let` (where a LexicalDeclaration is permitted) and `yield`,
+  so a subsequent `0` where `=` was expected is a syntax error.
+negative:
+  phase: early
+  type: SyntaxError
+---*/
+
+function f() {
+    let
+    yield 0;
+}