From f03c2c244cdafa247891b34e9684e5a231a1ca55 Mon Sep 17 00:00:00 2001
From: Mike Pennisi <mike@mikepennisi.com>
Date: Sat, 4 Mar 2017 10:59:52 -0500
Subject: [PATCH] Procedurally generate related tests

Take advantage of a recent extension to the test generation tool in
order to limit duplication.
---
 .../literal-string-line-continuation.case     | 22 +++++++++++++++++++
 ...-inst-literal-string-line-continuation.js} | 18 +++++++--------
 ...tatic-literal-string-line-continuation.js} | 18 +++++++--------
 ...-name-literal-string-line-continuation.js} | 18 +++++++--------
 ...-inst-literal-string-line-continuation.js} | 18 +++++++--------
 ...tatic-literal-string-line-continuation.js} | 18 +++++++--------
 6 files changed, 67 insertions(+), 45 deletions(-)
 create mode 100644 src/accessor-names/literal-string-line-continuation.case
 rename test/language/expressions/class/{accessor-name-inst-literal-string-line-terminator.js => accessor-name-inst-literal-string-line-continuation.js} (61%)
 rename test/language/expressions/class/{accessor-name-static-literal-string-line-terminator.js => accessor-name-static-literal-string-line-continuation.js} (64%)
 rename test/language/expressions/object/{accessor-name-literal-string-line-terminator.js => accessor-name-literal-string-line-continuation.js} (64%)
 rename test/language/statements/class/{accessor-name-inst-literal-string-line-terminator.js => accessor-name-inst-literal-string-line-continuation.js} (61%)
 rename test/language/statements/class/{accessor-name-static-literal-string-line-terminator.js => accessor-name-static-literal-string-line-continuation.js} (63%)

diff --git a/src/accessor-names/literal-string-line-continuation.case b/src/accessor-names/literal-string-line-continuation.case
new file mode 100644
index 0000000000..24b2291aca
--- /dev/null
+++ b/src/accessor-names/literal-string-line-continuation.case
@@ -0,0 +1,22 @@
+// Copyright (C) 2017 Mike Pennisi. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+desc: Computed values as accessor property names (string literal containing LineContinuation)
+template: default
+info: |
+  12.2.6.7 Runtime Semantics: Evaluation
+
+  [...]
+
+  ComputedPropertyName : [ AssignmentExpression ]
+
+  1. Let exprValue be the result of evaluating AssignmentExpression.
+  2. Let propName be ? GetValue(exprValue).
+  3. Return ? ToPropertyKey(propName).
+---*/
+
+//- declareWith
+'line\
+Continuation'
+//- referenceWith
+'lineContinuation'
diff --git a/test/language/expressions/class/accessor-name-inst-literal-string-line-terminator.js b/test/language/expressions/class/accessor-name-inst-literal-string-line-continuation.js
similarity index 61%
rename from test/language/expressions/class/accessor-name-inst-literal-string-line-terminator.js
rename to test/language/expressions/class/accessor-name-inst-literal-string-line-continuation.js
index 693d03160c..9a663d71c5 100644
--- a/test/language/expressions/class/accessor-name-inst-literal-string-line-terminator.js
+++ b/test/language/expressions/class/accessor-name-inst-literal-string-line-continuation.js
@@ -1,9 +1,11 @@
-// Copyright (C) 2017 Mike Pennisi. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
+// This file was procedurally generated from the following sources:
+// - src/accessor-names/literal-string-line-continuation.case
+// - src/accessor-names/default/cls-expr-inst.template
 /*---
-description: Computed values as accessor property names (string literal containing a line terminator) (Class expression, instance method)
+description: Computed values as accessor property names (string literal containing LineContinuation) (Class expression, instance method)
 esid: sec-runtime-semantics-classdefinitionevaluation
 es6id: 14.5.14
+flags: [generated]
 info: |
     [...]
     21. For each ClassElement m in order from methods
@@ -26,14 +28,12 @@ var stringSet;
 
 var C = class {
   get 'line\
-Terminator'
-() { return 'get string'; }
+Continuation'() { return 'get string'; }
   set 'line\
-Terminator'
-(param) { stringSet = param; }
+Continuation'(param) { stringSet = param; }
 };
 
-assert.sameValue(C.prototype['lineTerminator'], 'get string');
+assert.sameValue(C.prototype['lineContinuation'], 'get string');
 
-C.prototype['lineTerminator'] = 'set string';
+C.prototype['lineContinuation'] = 'set string';
 assert.sameValue(stringSet, 'set string');
diff --git a/test/language/expressions/class/accessor-name-static-literal-string-line-terminator.js b/test/language/expressions/class/accessor-name-static-literal-string-line-continuation.js
similarity index 64%
rename from test/language/expressions/class/accessor-name-static-literal-string-line-terminator.js
rename to test/language/expressions/class/accessor-name-static-literal-string-line-continuation.js
index be13537550..1ecd300e4d 100644
--- a/test/language/expressions/class/accessor-name-static-literal-string-line-terminator.js
+++ b/test/language/expressions/class/accessor-name-static-literal-string-line-continuation.js
@@ -1,9 +1,11 @@
-// Copyright (C) 2017 Mike Pennisi. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
+// This file was procedurally generated from the following sources:
+// - src/accessor-names/literal-string-line-continuation.case
+// - src/accessor-names/default/cls-expr-static.template
 /*---
-description: Computed values as accessor property names (string literal containing a line terminator) (Class expression, static method)
+description: Computed values as accessor property names (string literal containing LineContinuation) (Class expression, static method)
 esid: sec-runtime-semantics-classdefinitionevaluation
 es6id: 14.5.14
+flags: [generated]
 info: |
     [...]
     21. For each ClassElement m in order from methods
@@ -28,14 +30,12 @@ var stringSet;
 
 var C = class {
   static get 'line\
-Terminator'
-() { return 'get string'; }
+Continuation'() { return 'get string'; }
   static set 'line\
-Terminator'
-(param) { stringSet = param; }
+Continuation'(param) { stringSet = param; }
 };
 
-assert.sameValue(C['lineTerminator'], 'get string');
+assert.sameValue(C['lineContinuation'], 'get string');
 
-C['lineTerminator'] = 'set string';
+C['lineContinuation'] = 'set string';
 assert.sameValue(stringSet, 'set string');
diff --git a/test/language/expressions/object/accessor-name-literal-string-line-terminator.js b/test/language/expressions/object/accessor-name-literal-string-line-continuation.js
similarity index 64%
rename from test/language/expressions/object/accessor-name-literal-string-line-terminator.js
rename to test/language/expressions/object/accessor-name-literal-string-line-continuation.js
index bb230c3ad4..546a46ff8d 100644
--- a/test/language/expressions/object/accessor-name-literal-string-line-terminator.js
+++ b/test/language/expressions/object/accessor-name-literal-string-line-continuation.js
@@ -1,9 +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.
+// This file was procedurally generated from the following sources:
+// - src/accessor-names/literal-string-line-continuation.case
+// - src/accessor-names/default/obj.template
 /*---
-description: Computed values as accessor property names (string literal containing a line terminator) (Object initializer)
+description: Computed values as accessor property names (string literal containing LineContinuation) (Object initializer)
 esid: sec-object-initializer-runtime-semantics-evaluation
 es6id: 12.2.6.8
+flags: [generated]
 info: |
     ObjectLiteral :
       { PropertyDefinitionList }
@@ -27,14 +29,12 @@ info: |
 var stringSet;
 var obj = {
   get ['line\
-Terminator'
-]() { return 'get string'; },
+Continuation']() { return 'get string'; },
   set ['line\
-Terminator'
-](param) { stringSet = param; }
+Continuation'](param) { stringSet = param; }
 };
 
-assert.sameValue(obj['lineTerminator'], 'get string');
+assert.sameValue(obj['lineContinuation'], 'get string');
 
-obj['lineTerminator'] = 'set string';
+obj['lineContinuation'] = 'set string';
 assert.sameValue(stringSet, 'set string');
diff --git a/test/language/statements/class/accessor-name-inst-literal-string-line-terminator.js b/test/language/statements/class/accessor-name-inst-literal-string-line-continuation.js
similarity index 61%
rename from test/language/statements/class/accessor-name-inst-literal-string-line-terminator.js
rename to test/language/statements/class/accessor-name-inst-literal-string-line-continuation.js
index a9fa0c268c..12dabf5012 100644
--- a/test/language/statements/class/accessor-name-inst-literal-string-line-terminator.js
+++ b/test/language/statements/class/accessor-name-inst-literal-string-line-continuation.js
@@ -1,9 +1,11 @@
-// Copyright (C) 2017 Mike Pennisi. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
+// This file was procedurally generated from the following sources:
+// - src/accessor-names/literal-string-line-continuation.case
+// - src/accessor-names/default/cls-decl-inst.template
 /*---
-description: Computed values as accessor property names (string literal containing a line terminator) (Class declaration, instance method)
+description: Computed values as accessor property names (string literal containing LineContinuation) (Class declaration, instance method)
 esid: sec-runtime-semantics-classdefinitionevaluation
 es6id: 14.5.14
+flags: [generated]
 info: |
     [...]
     21. For each ClassElement m in order from methods
@@ -26,14 +28,12 @@ var stringSet;
 
 class C {
   get 'line\
-Terminator'
-() { return 'get string'; }
+Continuation'() { return 'get string'; }
   set 'line\
-Terminator'
-(param) { stringSet = param; }
+Continuation'(param) { stringSet = param; }
 }
 
-assert.sameValue(C.prototype['lineTerminator'], 'get string');
+assert.sameValue(C.prototype['lineContinuation'], 'get string');
 
-C.prototype['lineTerminator'] = 'set string';
+C.prototype['lineContinuation'] = 'set string';
 assert.sameValue(stringSet, 'set string');
diff --git a/test/language/statements/class/accessor-name-static-literal-string-line-terminator.js b/test/language/statements/class/accessor-name-static-literal-string-line-continuation.js
similarity index 63%
rename from test/language/statements/class/accessor-name-static-literal-string-line-terminator.js
rename to test/language/statements/class/accessor-name-static-literal-string-line-continuation.js
index b68f24df8c..b08c8cd636 100644
--- a/test/language/statements/class/accessor-name-static-literal-string-line-terminator.js
+++ b/test/language/statements/class/accessor-name-static-literal-string-line-continuation.js
@@ -1,9 +1,11 @@
-// Copyright (C) 2017 Mike Pennisi. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
+// This file was procedurally generated from the following sources:
+// - src/accessor-names/literal-string-line-continuation.case
+// - src/accessor-names/default/cls-decl-static.template
 /*---
-description: Computed values as accessor property names (string literal containing a line terminator) (Class declaration, static method)
+description: Computed values as accessor property names (string literal containing LineContinuation) (Class declaration, static method)
 esid: sec-runtime-semantics-classdefinitionevaluation
 es6id: 14.5.14
+flags: [generated]
 info: |
     [...]
     21. For each ClassElement m in order from methods
@@ -28,14 +30,12 @@ var stringSet;
 
 class C {
   static get 'line\
-Terminator'
-() { return 'get string'; }
+Continuation'() { return 'get string'; }
   static set 'line\
-Terminator'
-(param) { stringSet = param; }
+Continuation'(param) { stringSet = param; }
 }
 
-assert.sameValue(C['lineTerminator'], 'get string');
+assert.sameValue(C['lineContinuation'], 'get string');
 
-C['lineTerminator'] = 'set string';
+C['lineContinuation'] = 'set string';
 assert.sameValue(stringSet, 'set string');
-- 
GitLab