diff --git a/features.txt b/features.txt
index 7b3c74a5fe819c5ab92bc85866be549880832b1b..c1a145619effb2c11b4e7a1d9785afd46198053d 100644
--- a/features.txt
+++ b/features.txt
@@ -77,6 +77,10 @@ numeric-separator-literal
 String.prototype.matchAll
 Symbol.matchAll
 
+# ECMAScript ⊃ JSON
+# https://github.com/tc39/proposal-json-superset
+json-superset
+
 # Intl.Locale
 # https://github.com/tc39/proposal-intl-locale
 Intl.Locale
diff --git a/test/language/line-terminators/S7.3_A2.3.js b/test/language/line-terminators/S7.3_A2.3.js
deleted file mode 100644
index fb26e7e7a7133c940835c462cf6bc8a3630978a7..0000000000000000000000000000000000000000
--- a/test/language/line-terminators/S7.3_A2.3.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: LINE SEPARATOR (U+2028) within strings is not allowed
-es5id: 7.3_A2.3
-description: Insert LINE SEPARATOR (\u2028) into string
----*/
-
-assert.throws(SyntaxError, function() {
-  eval("'\u2028str\u2028ing\u2028'");
-});
diff --git a/test/language/line-terminators/S7.3_A2.4.js b/test/language/line-terminators/S7.3_A2.4.js
deleted file mode 100644
index 582a84f6429e5744ddeae8f78a1a1dad1bff4049..0000000000000000000000000000000000000000
--- a/test/language/line-terminators/S7.3_A2.4.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: PARAGRAPH SEPARATOR (U+2029) within strings is not allowed
-es5id: 7.3_A2.4
-description: Insert PARAGRAPH SEPARATOR (\u2029) into string
----*/
-
-// CHECK#1
-assert.throws(SyntaxError, function() {
-  eval("'\u2029str\u2029ing\u2029'");
-});
diff --git a/test/language/literals/string/line-separator-eval.js b/test/language/literals/string/line-separator-eval.js
new file mode 100644
index 0000000000000000000000000000000000000000..c8f4b33cbcd707603f8782ebaa2e9eab2e90f83e
--- /dev/null
+++ b/test/language/literals/string/line-separator-eval.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2018 Richard Gibson. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-literals-string-literals
+description: >
+  U+2028 LINE SEPARATOR can appear in string literals (eval code).
+info: |
+  11.8.4 String Literals
+
+  All code points may appear literally in a string literal except for the
+  closing quote code points, U+005C (REVERSE SOLIDUS), U+000D (CARRIAGE RETURN),
+  and U+000A (LINE FEED).
+features: [json-superset]
+---*/
+
+assert.sameValue(eval("'\u2028'"), "\u2028");
diff --git a/test/language/literals/string/line-separator.js b/test/language/literals/string/line-separator.js
new file mode 100644
index 0000000000000000000000000000000000000000..359b8977fcd4ac971e8a2ec107b2e8da05762642
--- /dev/null
+++ b/test/language/literals/string/line-separator.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2018 Richard Gibson. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-literals-string-literals
+description: >
+  U+2028 LINE SEPARATOR can appear in string literals.
+info: |
+  11.8.4 String Literals
+
+  All code points may appear literally in a string literal except for the
+  closing quote code points, U+005C (REVERSE SOLIDUS), U+000D (CARRIAGE RETURN),
+  and U+000A (LINE FEED).
+features: [json-superset]
+---*/
+
+// U+2028 in strings; UTF8(0x2028) = 0xE2 0x80 0xA8
+assert.sameValue("
", "\u2028");
diff --git a/test/language/literals/string/paragraph-separator-eval.js b/test/language/literals/string/paragraph-separator-eval.js
new file mode 100644
index 0000000000000000000000000000000000000000..18e8df3a3f3d67ad2a6cd1b441aa842c7e4ed765
--- /dev/null
+++ b/test/language/literals/string/paragraph-separator-eval.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2018 Richard Gibson. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-literals-string-literals
+description: >
+  U+2029 PARAGRAPH SEPARATOR can appear in string literals (eval code).
+info: |
+  11.8.4 String Literals
+
+  All code points may appear literally in a string literal except for the
+  closing quote code points, U+005C (REVERSE SOLIDUS), U+000D (CARRIAGE RETURN),
+  and U+000A (LINE FEED).
+features: [json-superset]
+---*/
+
+assert.sameValue(eval("'\u2029'"), "\u2029");
diff --git a/test/language/literals/string/paragraph-separator.js b/test/language/literals/string/paragraph-separator.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e0ab447606fff3c092c84e5307f80c416be62be
--- /dev/null
+++ b/test/language/literals/string/paragraph-separator.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2018 Richard Gibson. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-literals-string-literals
+description: >
+  U+2029 PARAGRAPH SEPARATOR can appear in string literals.
+info: |
+  11.8.4 String Literals
+
+  All code points may appear literally in a string literal except for the
+  closing quote code points, U+005C (REVERSE SOLIDUS), U+000D (CARRIAGE RETURN),
+  and U+000A (LINE FEED).
+features: [json-superset]
+---*/
+
+// U+2029 in strings; UTF8(0x2029) = 0xE2 0x80 0xA9
+assert.sameValue("
", "\u2029");