diff --git a/test/language/eval-code/export.js b/test/language/eval-code/export.js
new file mode 100644
index 0000000000000000000000000000000000000000..0b6b6094edfd99390a42c0c6589a724b5141b1f3
--- /dev/null
+++ b/test/language/eval-code/export.js
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: The `export` declaration may not appear within eval code
+id: sec-scripts
+flags: [module]
+info: |
+     Eval code is the source text supplied to the built-in eval function. More
+     precisely, if the parameter to the built-in eval function is a String, it
+     is treated as an ECMAScript Script. The eval code for a particular
+     invocation of eval is the global code portion of that Script.
+
+     A.5 Scripts and Modules
+
+     Script:
+         ScriptBodyopt
+
+     ScriptBody:
+         StatementList
+---*/
+
+assert.throws(SyntaxError, function() {
+  eval('export default null;');
+});
diff --git a/test/language/eval-code/import.js b/test/language/eval-code/import.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1ffb7a31de982f800cdab0c0725beba25347d62
--- /dev/null
+++ b/test/language/eval-code/import.js
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: The `import` declaration may not appear within eval code
+id: sec-scripts
+flags: [module]
+info: |
+     Eval code is the source text supplied to the built-in eval function. More
+     precisely, if the parameter to the built-in eval function is a String, it
+     is treated as an ECMAScript Script. The eval code for a particular
+     invocation of eval is the global code portion of that Script.
+
+     A.5 Scripts and Modules
+
+     Script:
+         ScriptBodyopt
+
+     ScriptBody:
+         StatementList
+---*/
+
+assert.throws(SyntaxError, function() {
+  eval('import v from "./import.js";');
+});
diff --git a/test/language/global-code/export.js b/test/language/global-code/export.js
new file mode 100644
index 0000000000000000000000000000000000000000..5b80e1b446f9888320ac47400cf1c1db8e703033
--- /dev/null
+++ b/test/language/global-code/export.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: The `export` declaration may not appear within a ScriptBody
+id: sec-scripts
+negative: SyntaxError
+info: |
+     A.5 Scripts and Modules
+
+     Script:
+         ScriptBodyopt
+
+     ScriptBody:
+         StatementList
+---*/
+
+export default null;
diff --git a/test/language/global-code/import.js b/test/language/global-code/import.js
new file mode 100644
index 0000000000000000000000000000000000000000..f0c43cab0cbd7bb658c2b619588b27a7459601f0
--- /dev/null
+++ b/test/language/global-code/import.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: The `import` declaration may not appear within a ScriptBody
+id: sec-scripts
+negative: SyntaxError
+info: |
+     A.5 Scripts and Modules
+
+     Script:
+         ScriptBodyopt
+
+     ScriptBody:
+         StatementList
+---*/
+
+import v from './import.js';
diff --git a/test/language/module-code/decl-pos-export-arrow-function.js b/test/language/module-code/decl-pos-export-arrow-function.js
new file mode 100644
index 0000000000000000000000000000000000000000..e17a600e5c805e1119fed7cad5f1701443df0058
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-arrow-function.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+() => { export default null; };
diff --git a/test/language/module-code/decl-pos-export-block-stmt-list.js b/test/language/module-code/decl-pos-export-block-stmt-list.js
new file mode 100644
index 0000000000000000000000000000000000000000..135d2cad3f21a04aca06c56b98d6fb2decdee1f3
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-block-stmt-list.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+{ void 0; export default null; }
diff --git a/test/language/module-code/decl-pos-export-block-stmt.js b/test/language/module-code/decl-pos-export-block-stmt.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4da0a7eaca2d34af7aac0f921aeb74d91074867
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-block-stmt.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+{ export default null; }
diff --git a/test/language/module-code/decl-pos-export-class-decl-meth-static.js b/test/language/module-code/decl-pos-export-class-decl-meth-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d1105989931120094f4725be6ffde4916d7d5a2
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-decl-meth-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { static method() { export default null; } }
diff --git a/test/language/module-code/decl-pos-export-class-decl-meth.js b/test/language/module-code/decl-pos-export-class-decl-meth.js
new file mode 100644
index 0000000000000000000000000000000000000000..c94dc220d877ce66bfaae6b6fe72d003aa314682
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-decl-meth.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { method() { export default null; } }
diff --git a/test/language/module-code/decl-pos-export-class-decl-method-gen-static.js b/test/language/module-code/decl-pos-export-class-decl-method-gen-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..02d76661d0d80cdb5daef91dcbb5d808fa6f4453
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-decl-method-gen-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { static *method() { export default null; } }
diff --git a/test/language/module-code/decl-pos-export-class-decl-method-gen.js b/test/language/module-code/decl-pos-export-class-decl-method-gen.js
new file mode 100644
index 0000000000000000000000000000000000000000..4568bf8e5f4dd7d4a395db3b35f87c835929920d
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-decl-method-gen.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { *method() { export default null; } }
diff --git a/test/language/module-code/decl-pos-export-class-expr-meth-gen-static.js b/test/language/module-code/decl-pos-export-class-expr-meth-gen-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fbb9e4194be218357ba9fff48ca1b8a685f5422
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-expr-meth-gen-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { static *method() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-class-expr-meth-gen.js b/test/language/module-code/decl-pos-export-class-expr-meth-gen.js
new file mode 100644
index 0000000000000000000000000000000000000000..97c1fe067d301451eee1d7d608c643f033a94d4e
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-expr-meth-gen.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { *method() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-class-expr-meth-static.js b/test/language/module-code/decl-pos-export-class-expr-meth-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..228abe0cd6385c5f53bdb081c1774390e9674c09
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-expr-meth-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { static method() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-class-expr-meth.js b/test/language/module-code/decl-pos-export-class-expr-meth.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f8bc61b9bcd013d3cd72c9963873c53eb41692b
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-class-expr-meth.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { method() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-do-while.js b/test/language/module-code/decl-pos-export-do-while.js
new file mode 100644
index 0000000000000000000000000000000000000000..65417fe6d7d463fd51facaf3a8a5a3fc22d07ecd
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-do-while.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+do export default null; while (false)
diff --git a/test/language/module-code/decl-pos-export-for-const.js b/test/language/module-code/decl-pos-export-for-const.js
new file mode 100644
index 0000000000000000000000000000000000000000..51866046edd6a7b8e93e3f3599b33c7392566e20
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-const.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (const x = 0; false;)
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-in-const.js b/test/language/module-code/decl-pos-export-for-in-const.js
new file mode 100644
index 0000000000000000000000000000000000000000..39756d89380a91eff2891531b519f2b9f2f3318b
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-in-const.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (const y in [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-in-let.js b/test/language/module-code/decl-pos-export-for-in-let.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc530b1b8ad09d3b41b735f2ec0effe30ee4ca30
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-in-let.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (let y in [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-in-lhs.js b/test/language/module-code/decl-pos-export-for-in-lhs.js
new file mode 100644
index 0000000000000000000000000000000000000000..e77cd8d3f21b17fb6d18bad0a86c6617afe34112
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-in-lhs.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (y in [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-in-var.js b/test/language/module-code/decl-pos-export-for-in-var.js
new file mode 100644
index 0000000000000000000000000000000000000000..e28d918b4a892f51f4db1d42f754850a6c3cd656
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-in-var.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (var y in [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-let.js b/test/language/module-code/decl-pos-export-for-let.js
new file mode 100644
index 0000000000000000000000000000000000000000..94cc8419b806cb84ab8f4cef2fc1827ee97a686b
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-let.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (let x = 0; false;)
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-lhs.js b/test/language/module-code/decl-pos-export-for-lhs.js
new file mode 100644
index 0000000000000000000000000000000000000000..6b5b4b8ddcf7cf5b266036c2fe95acbd60e88c55
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-lhs.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (x = 0; false;)
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-of-const.js b/test/language/module-code/decl-pos-export-for-of-const.js
new file mode 100644
index 0000000000000000000000000000000000000000..865c3f8efdd507912361bf581a222179454dfb90
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-of-const.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (const y of [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-of-let.js b/test/language/module-code/decl-pos-export-for-of-let.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b3538e091e00a7d587cccfdb4ec3d4a5e97a848
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-of-let.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (let y of [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-of-lhs.js b/test/language/module-code/decl-pos-export-for-of-lhs.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1b7028738518860657efbffb18ad26473042e4f
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-of-lhs.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (y of [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-of-var.js b/test/language/module-code/decl-pos-export-for-of-var.js
new file mode 100644
index 0000000000000000000000000000000000000000..a6f77c0409b464e002d83151c15122b3b768dd64
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-of-var.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (var y of [])
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-for-var.js b/test/language/module-code/decl-pos-export-for-var.js
new file mode 100644
index 0000000000000000000000000000000000000000..f98efec954e84bb9b20c057865f813cc19c2e85e
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-for-var.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (var x = 0; false;)
+  export default null;
diff --git a/test/language/module-code/decl-pos-export-function-decl.js b/test/language/module-code/decl-pos-export-function-decl.js
new file mode 100644
index 0000000000000000000000000000000000000000..8be6dc1d968ed12791717d32186662320440c5d2
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-function-decl.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+function f() { export default null; }
diff --git a/test/language/module-code/decl-pos-export-function-expr.js b/test/language/module-code/decl-pos-export-function-expr.js
new file mode 100644
index 0000000000000000000000000000000000000000..aaa9546f961d2f86dc33fddae8e539fb7ecbe266
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-function-expr.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(function() { export default null; });
diff --git a/test/language/module-code/decl-pos-export-generator-decl.js b/test/language/module-code/decl-pos-export-generator-decl.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bc329f146cf002ebd41a9aebdfdf076efffb7ec
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-generator-decl.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+function* g() { export default null; }
diff --git a/test/language/module-code/decl-pos-export-generator-expr.js b/test/language/module-code/decl-pos-export-generator-expr.js
new file mode 100644
index 0000000000000000000000000000000000000000..8737b1842098ea54919dc6baee7790ea3a019d11
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-generator-expr.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(function*() { export default null; });
diff --git a/test/language/module-code/decl-pos-export-if-else.js b/test/language/module-code/decl-pos-export-if-else.js
new file mode 100644
index 0000000000000000000000000000000000000000..cb14fe46b34aa0d04f0ea8df9eaa35e95567b9db
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-if-else.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+if (true) { } else export default null;
diff --git a/test/language/module-code/decl-pos-export-if-if.js b/test/language/module-code/decl-pos-export-if-if.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c223f01424bf6bb944394ed599b7b574300cab5
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-if-if.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+if (false) export default null;
diff --git a/test/language/module-code/decl-pos-export-labeled.js b/test/language/module-code/decl-pos-export-labeled.js
new file mode 100644
index 0000000000000000000000000000000000000000..36851d263d41106651c8123cf2a9987fc0fa3aaa
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-labeled.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+test262: export default null;
diff --git a/test/language/module-code/decl-pos-export-object-gen-method.js b/test/language/module-code/decl-pos-export-object-gen-method.js
new file mode 100644
index 0000000000000000000000000000000000000000..d03390a3a1df1b5b913b526d61f96f643dfacf72
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-object-gen-method.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ *m() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-object-getter.js b/test/language/module-code/decl-pos-export-object-getter.js
new file mode 100644
index 0000000000000000000000000000000000000000..7dce8c98c74f61af40786e0b6e3f7fe08f59847e
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-object-getter.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ get m() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-object-method.js b/test/language/module-code/decl-pos-export-object-method.js
new file mode 100644
index 0000000000000000000000000000000000000000..4cd5fa6e21ccd2bd758b7decdd14555cfa58ac73
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-object-method.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ m() { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-object-setter.js b/test/language/module-code/decl-pos-export-object-setter.js
new file mode 100644
index 0000000000000000000000000000000000000000..f76af99e5568c0d42e1637fb6fc7ce9794d16972
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-object-setter.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ set m(x) { export default null; } });
diff --git a/test/language/module-code/decl-pos-export-switch-case-dflt.js b/test/language/module-code/decl-pos-export-switch-case-dflt.js
new file mode 100644
index 0000000000000000000000000000000000000000..af7361ebaad894351597ceaecfd5b330cafb6f69
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-switch-case-dflt.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+switch(0) { case 1: export default null; default: }
diff --git a/test/language/module-code/decl-pos-export-switch-case.js b/test/language/module-code/decl-pos-export-switch-case.js
new file mode 100644
index 0000000000000000000000000000000000000000..40d4427519ffa63246b0902db0d980dc9d7a87af
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-switch-case.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+switch(0) { case 1: export default null; }
diff --git a/test/language/module-code/decl-pos-export-switch-dftl.js b/test/language/module-code/decl-pos-export-switch-dftl.js
new file mode 100644
index 0000000000000000000000000000000000000000..f0a1610500237d564b2be5e5432d4dda908e683c
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-switch-dftl.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+switch(0) { default: export default null; }
diff --git a/test/language/module-code/decl-pos-export-try-catch-finally.js b/test/language/module-code/decl-pos-export-try-catch-finally.js
new file mode 100644
index 0000000000000000000000000000000000000000..33d46e9c6d0bdc92138a8265e959d19bc9c21ca1
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-try-catch-finally.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try { } catch (err) { } finally {
+  export default null;
+}
diff --git a/test/language/module-code/decl-pos-export-try-catch.js b/test/language/module-code/decl-pos-export-try-catch.js
new file mode 100644
index 0000000000000000000000000000000000000000..07a776f8d8129bf037c327821cac0e557989ab8c
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-try-catch.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try { } catch (err) {
+  export default null;
+}
diff --git a/test/language/module-code/decl-pos-export-try-finally.js b/test/language/module-code/decl-pos-export-try-finally.js
new file mode 100644
index 0000000000000000000000000000000000000000..4389d013a82b3128add9015f5e0053c35c5e0ff4
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-try-finally.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try { } finally {
+  export default null;
+}
diff --git a/test/language/module-code/decl-pos-export-try-try.js b/test/language/module-code/decl-pos-export-try-try.js
new file mode 100644
index 0000000000000000000000000000000000000000..338f2fd42915ea2e10c93f33db6ac5ad067f633d
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-try-try.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try {
+  export default null;
+} catch (err) { }
diff --git a/test/language/module-code/decl-pos-export-while.js b/test/language/module-code/decl-pos-export-while.js
new file mode 100644
index 0000000000000000000000000000000000000000..b6c7999b43f9f52aac5ed4b6809549543a4945bb
--- /dev/null
+++ b/test/language/module-code/decl-pos-export-while.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `export` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+while (false) export default null;
diff --git a/test/language/module-code/decl-pos-import-arrow-function.js b/test/language/module-code/decl-pos-import-arrow-function.js
new file mode 100644
index 0000000000000000000000000000000000000000..ffb82404cf3aac02fbc3c4ec864154d45080f3b4
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-arrow-function.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+() => { import v from './decl-pos-import-arrow-function.js'; };
diff --git a/test/language/module-code/decl-pos-import-block-stmt-list.js b/test/language/module-code/decl-pos-import-block-stmt-list.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f96d3cab63dbb139d972d7a2a249a33ca048497
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-block-stmt-list.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+{ void 0; import v from './decl-pos-import-block-stmt-list.js'; }
diff --git a/test/language/module-code/decl-pos-import-block-stmt.js b/test/language/module-code/decl-pos-import-block-stmt.js
new file mode 100644
index 0000000000000000000000000000000000000000..c0bcc64ee68d994befc378509f44d3f2e799c924
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-block-stmt.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+{ import v from './decl-pos-import-block-stmt.js'; }
diff --git a/test/language/module-code/decl-pos-import-class-decl-meth-static.js b/test/language/module-code/decl-pos-import-class-decl-meth-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..09827efdd9a6719d39ec83ed1f8ac23e590bcb0f
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-decl-meth-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { static method() { import v from './decl-pos-import-class-decl-meth-static.js'; } }
diff --git a/test/language/module-code/decl-pos-import-class-decl-meth.js b/test/language/module-code/decl-pos-import-class-decl-meth.js
new file mode 100644
index 0000000000000000000000000000000000000000..e20faa0e6d67cefaf3086d0c994fb208caa23be3
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-decl-meth.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { method() { import v from './decl-pos-import-class-decl-meth.js'; } }
diff --git a/test/language/module-code/decl-pos-import-class-decl-method-gen-static.js b/test/language/module-code/decl-pos-import-class-decl-method-gen-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..37c133ba44089f845088ab7c013118a1e4d0c5ed
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-decl-method-gen-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { static *method() { import v from './decl-pos-import-class-decl-method-gen-static.js'; } }
diff --git a/test/language/module-code/decl-pos-import-class-decl-method-gen.js b/test/language/module-code/decl-pos-import-class-decl-method-gen.js
new file mode 100644
index 0000000000000000000000000000000000000000..d178f0e07141f2c107702fa0879c5a181328db88
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-decl-method-gen.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+class C { *method() { import v from './decl-pos-import-class-decl-method-gen.js'; } }
diff --git a/test/language/module-code/decl-pos-import-class-expr-meth-gen-static.js b/test/language/module-code/decl-pos-import-class-expr-meth-gen-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..c4598c63c2d59bb29d41194362c940909a42cd37
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-expr-meth-gen-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { static *method() { import v from './decl-pos-import-class-expr-meth-gen-static.js'; } });
diff --git a/test/language/module-code/decl-pos-import-class-expr-meth-gen.js b/test/language/module-code/decl-pos-import-class-expr-meth-gen.js
new file mode 100644
index 0000000000000000000000000000000000000000..aeafdf93c7a3a92a7fd8be604d3016b5b1dbcd8b
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-expr-meth-gen.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { *method() { import v from './decl-pos-import-class-expr-meth-gen.js'; } });
diff --git a/test/language/module-code/decl-pos-import-class-expr-meth-static.js b/test/language/module-code/decl-pos-import-class-expr-meth-static.js
new file mode 100644
index 0000000000000000000000000000000000000000..59ba70dc4f6a07b225b5b0a184071e28e237f4fb
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-expr-meth-static.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { static method() { import v from './decl-pos-import-class-expr-meth-static.js'; } });
diff --git a/test/language/module-code/decl-pos-import-class-expr-meth.js b/test/language/module-code/decl-pos-import-class-expr-meth.js
new file mode 100644
index 0000000000000000000000000000000000000000..57965c47f9abd03b585c5c7d172f1c0897b7b9c9
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-class-expr-meth.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(class { method() { import v from './decl-pos-import-class-expr-meth.js'; } });
diff --git a/test/language/module-code/decl-pos-import-do-while.js b/test/language/module-code/decl-pos-import-do-while.js
new file mode 100644
index 0000000000000000000000000000000000000000..80ba3e2ba4da6dfba1d6fb76106e2543e65afe47
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-do-while.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+do import v from './decl-pos-import-do-while.js'; while (false)
diff --git a/test/language/module-code/decl-pos-import-for-const.js b/test/language/module-code/decl-pos-import-for-const.js
new file mode 100644
index 0000000000000000000000000000000000000000..8c86c28c820e9c6bb6e44f8d12a58e07f986527a
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-const.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (const x = 0; false;)
+  import v from './decl-pos-import-for-const.js';
diff --git a/test/language/module-code/decl-pos-import-for-in-const.js b/test/language/module-code/decl-pos-import-for-in-const.js
new file mode 100644
index 0000000000000000000000000000000000000000..e492ddb2a765b1281dac4204277da190e17dd902
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-in-const.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (const y in [])
+  import v from './decl-pos-import-for-in-const.js';
diff --git a/test/language/module-code/decl-pos-import-for-in-let.js b/test/language/module-code/decl-pos-import-for-in-let.js
new file mode 100644
index 0000000000000000000000000000000000000000..abadc3c96fe298458a0f149df6d3ada87fa61f83
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-in-let.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (let y in [])
+  import v from './decl-pos-import-for-in-let.js';
diff --git a/test/language/module-code/decl-pos-import-for-in-lhs.js b/test/language/module-code/decl-pos-import-for-in-lhs.js
new file mode 100644
index 0000000000000000000000000000000000000000..f75a2af51c97b7f97de9bc04815426fcd447ab34
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-in-lhs.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (y in [])
+  import v from './decl-pos-import-for-in-lhs.js';
diff --git a/test/language/module-code/decl-pos-import-for-in-var.js b/test/language/module-code/decl-pos-import-for-in-var.js
new file mode 100644
index 0000000000000000000000000000000000000000..365e1a8c07a8804f9db940a443b293e88bfb1d68
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-in-var.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (var y in [])
+  import v from './decl-pos-import-for-in-var.js';
diff --git a/test/language/module-code/decl-pos-import-for-let.js b/test/language/module-code/decl-pos-import-for-let.js
new file mode 100644
index 0000000000000000000000000000000000000000..b95c90d7fd8a4b652dd5fe6d2bae98d9eb8ddc5d
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-let.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (let x = 0; false;)
+  import v from './decl-pos-import-for-let.js';
diff --git a/test/language/module-code/decl-pos-import-for-lhs.js b/test/language/module-code/decl-pos-import-for-lhs.js
new file mode 100644
index 0000000000000000000000000000000000000000..419fcf7f958812203aaa589eb53b9906aa522ed2
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-lhs.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (x = 0; false;)
+  import v from './decl-pos-import-for-lhs.js';
diff --git a/test/language/module-code/decl-pos-import-for-of-const.js b/test/language/module-code/decl-pos-import-for-of-const.js
new file mode 100644
index 0000000000000000000000000000000000000000..0dbc347bc68b41a67b0826494b3b56dba2f5501f
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-of-const.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (const y of [])
+  import v from './decl-pos-import-for-of-const.js';
diff --git a/test/language/module-code/decl-pos-import-for-of-let.js b/test/language/module-code/decl-pos-import-for-of-let.js
new file mode 100644
index 0000000000000000000000000000000000000000..408ac54da7b02130359dcc922ceee2f905ccbf38
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-of-let.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (let y of [])
+  import v from './decl-pos-import-for-of-let.js';
diff --git a/test/language/module-code/decl-pos-import-for-of-lhs.js b/test/language/module-code/decl-pos-import-for-of-lhs.js
new file mode 100644
index 0000000000000000000000000000000000000000..166ca9f6b7c82c853ce144d609fe5544743c1b55
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-of-lhs.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (y of [])
+  import v from './decl-pos-import-for-of-lhs.js';
diff --git a/test/language/module-code/decl-pos-import-for-of-var.js b/test/language/module-code/decl-pos-import-for-of-var.js
new file mode 100644
index 0000000000000000000000000000000000000000..de1c6a1ac69bed24af026ad373abe3230cab3a70
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-of-var.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (var y of [])
+  import v from './decl-pos-import-for-of-var.js';
diff --git a/test/language/module-code/decl-pos-import-for-var.js b/test/language/module-code/decl-pos-import-for-var.js
new file mode 100644
index 0000000000000000000000000000000000000000..f527a78485ffd7f4caef484711a1831176d7015c
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-for-var.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+for (var x = 0; false;)
+  import v from './decl-pos-import-for-var.js';
diff --git a/test/language/module-code/decl-pos-import-function-decl.js b/test/language/module-code/decl-pos-import-function-decl.js
new file mode 100644
index 0000000000000000000000000000000000000000..82f39eaf81a91eea86f1b3fe7e73c9e2891c5c67
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-function-decl.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+function f() { import v from './decl-pos-import-function-decl.js'; }
diff --git a/test/language/module-code/decl-pos-import-function-expr.js b/test/language/module-code/decl-pos-import-function-expr.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbbacbd017b2699b5bab170dbdb6999ef6ad18b0
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-function-expr.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(function() { import v from './decl-pos-import-function-expr.js'; });
diff --git a/test/language/module-code/decl-pos-import-generator-decl.js b/test/language/module-code/decl-pos-import-generator-decl.js
new file mode 100644
index 0000000000000000000000000000000000000000..daa2903bc63760f9ce853e9d063472b032b43e09
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-generator-decl.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+function* g() { import v from './decl-pos-import-generator-decl.js'; }
diff --git a/test/language/module-code/decl-pos-import-generator-expr.js b/test/language/module-code/decl-pos-import-generator-expr.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9c7a6b7e3952e4c7d5c7ee2b2b3b2c153d1e4d1
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-generator-expr.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+(function*() { import v from './decl-pos-import-generator-expr.js'; });
diff --git a/test/language/module-code/decl-pos-import-if-else.js b/test/language/module-code/decl-pos-import-if-else.js
new file mode 100644
index 0000000000000000000000000000000000000000..3b6744242b8ebfa3391ecfb74bae80b43cbb567c
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-if-else.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+if (true) { } else import v from './decl-pos-import-if-else.js';
diff --git a/test/language/module-code/decl-pos-import-if-if.js b/test/language/module-code/decl-pos-import-if-if.js
new file mode 100644
index 0000000000000000000000000000000000000000..8a186880b8c8c9cf1acf11926a1d4ea3a8fd37eb
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-if-if.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+if (false) import v from './decl-pos-import-if-if.js';
diff --git a/test/language/module-code/decl-pos-import-labeled.js b/test/language/module-code/decl-pos-import-labeled.js
new file mode 100644
index 0000000000000000000000000000000000000000..b76f5ccbd4947304fccb11caebd4a92c5757bf86
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-labeled.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+test262: import v from './decl-pos-import-labeled.js';
diff --git a/test/language/module-code/decl-pos-import-object-gen-method.js b/test/language/module-code/decl-pos-import-object-gen-method.js
new file mode 100644
index 0000000000000000000000000000000000000000..49b2bd006e3d4754e85b1c174fb3ed8656d29f91
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-object-gen-method.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ *m() { import v from './decl-pos-import-object-gen-method.js'; } });
diff --git a/test/language/module-code/decl-pos-import-object-getter.js b/test/language/module-code/decl-pos-import-object-getter.js
new file mode 100644
index 0000000000000000000000000000000000000000..e99a4947fd17ee496a25494a152488ac5b2475e2
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-object-getter.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ get m() { import v from './decl-pos-import-object-getter.js'; } });
diff --git a/test/language/module-code/decl-pos-import-object-method.js b/test/language/module-code/decl-pos-import-object-method.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d4b0e5eedb8599001ba4c7ec1bb8c0f2a623e01
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-object-method.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ m() { import v from './decl-pos-import-object-method.js'; } });
diff --git a/test/language/module-code/decl-pos-import-object-setter.js b/test/language/module-code/decl-pos-import-object-setter.js
new file mode 100644
index 0000000000000000000000000000000000000000..5764040689b598ca0e349a6fe759287c9f5427be
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-object-setter.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Expression cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+({ set m(x) { import v from './decl-pos-import-object-setter.js'; } });
diff --git a/test/language/module-code/decl-pos-import-switch-case-dflt.js b/test/language/module-code/decl-pos-import-switch-case-dflt.js
new file mode 100644
index 0000000000000000000000000000000000000000..7bf60cdea6383ad97481fb81084f109518178cf9
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-switch-case-dflt.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+switch(0) { case 1: import v from './decl-pos-import-switch-case-dflt.js'; default: }
diff --git a/test/language/module-code/decl-pos-import-switch-case.js b/test/language/module-code/decl-pos-import-switch-case.js
new file mode 100644
index 0000000000000000000000000000000000000000..bf86fbad25d5f9b1f580a793adf0240154357b6d
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-switch-case.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+switch(0) { case 1: import v from './decl-pos-import-switch-case.js'; }
diff --git a/test/language/module-code/decl-pos-import-switch-dftl.js b/test/language/module-code/decl-pos-import-switch-dftl.js
new file mode 100644
index 0000000000000000000000000000000000000000..f99e3a2e424898877ffab2b476ef04b59db81f25
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-switch-dftl.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+switch(0) { default: import v from './decl-pos-import-switch-dftl.js'; }
diff --git a/test/language/module-code/decl-pos-import-try-catch-finally.js b/test/language/module-code/decl-pos-import-try-catch-finally.js
new file mode 100644
index 0000000000000000000000000000000000000000..522ca2d4443aa9c94d3cddc56cc3a978d7d2fe5a
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-try-catch-finally.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try { } catch (err) { } finally {
+  import v from './decl-pos-import-try-catch-finally.js';
+}
diff --git a/test/language/module-code/decl-pos-import-try-catch.js b/test/language/module-code/decl-pos-import-try-catch.js
new file mode 100644
index 0000000000000000000000000000000000000000..3c103b490ff5532a1ca46d73ae2d1e6192cca413
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-try-catch.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try { } catch (err) {
+  import v from './decl-pos-import-try-catch.js';
+}
diff --git a/test/language/module-code/decl-pos-import-try-finally.js b/test/language/module-code/decl-pos-import-try-finally.js
new file mode 100644
index 0000000000000000000000000000000000000000..71c69c4468254846d4057ededf7f1452f5125934
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-try-finally.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try { } finally {
+  import v from './decl-pos-import-try-finally.js';
+}
diff --git a/test/language/module-code/decl-pos-import-try-try.js b/test/language/module-code/decl-pos-import-try-try.js
new file mode 100644
index 0000000000000000000000000000000000000000..814a9a08125be18afe97d31f6609242d075fc7f1
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-try-try.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+try {
+  import v from './decl-pos-import-try-try.js';
+} catch (err) { }
diff --git a/test/language/module-code/decl-pos-import-while.js b/test/language/module-code/decl-pos-import-while.js
new file mode 100644
index 0000000000000000000000000000000000000000..23a2a6cea75d1fe899177df6957dc1cbece0afb3
--- /dev/null
+++ b/test/language/module-code/decl-pos-import-while.js
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Statement cannot contain an `import` declaration
+id: sec-modules
+negative: SyntaxError
+flags: [module]
+---*/
+
+while (false) import v from './decl-pos-import-while.js';
diff --git a/test/language/module-code/strict-mode.js b/test/language/module-code/strict-mode.js
new file mode 100644
index 0000000000000000000000000000000000000000..7b31b38b0f5e8b87a34455c0bd8621291b2db8d5
--- /dev/null
+++ b/test/language/module-code/strict-mode.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: Module code is always strict mode code.
+es6id: 10.2.1
+id: sec-strict-mode-code
+flags: [module]
+negative: SyntaxError
+---*/
+
+$ERROR('This statement should not be executed.');
+var public;
diff --git a/test/language/reserved-words/await-module.js b/test/language/reserved-words/await-module.js
new file mode 100644
index 0000000000000000000000000000000000000000..14d3e25721e78e7b8ac8c5833cebcfd3c4589386
--- /dev/null
+++ b/test/language/reserved-words/await-module.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+id: sec-reserved-words
+es6id: 11.6.2
+description: The `await` token is not permitted as an identifier in module code
+flags: [module]
+negative: SyntaxError
+---*/
+
+var await;
diff --git a/test/language/reserved-words/await-script.js b/test/language/reserved-words/await-script.js
new file mode 100644
index 0000000000000000000000000000000000000000..bae9067072bc260e7b37243ee156745718948bc1
--- /dev/null
+++ b/test/language/reserved-words/await-script.js
@@ -0,0 +1,9 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+id: sec-reserved-words
+es6id: 11.6.2
+description: The `await` token is permitted as an identifier in script code
+---*/
+
+var await;