forked from xtuc/acorn-import-attributes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_test262.js
154 lines (147 loc) · 13 KB
/
run_test262.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
"use strict";
// copy/pasted, and adjusted, from: https://github.com/acornjs/acorn-class-fields/blob/master/run_test262.js
const path = require("path");
const run = require("test262-parser-runner");
const acorn = require("acorn");
const Parser = acorn.Parser.extend(require(".").importAttributes);
const unsupportedFeatures = [];
const implementedFeatures = ["import-attributes", "json-modules"];
const whitelist = [
// 10 invalid programs did not produce a parsing error (without a corresponding entry in the whitelist file):
"language/import/json-invalid.js (default)",
"language/import/json-invalid.js (strict mode)",
"language/import/json-named-bindings.js (default)",
"language/import/json-named-bindings.js (strict mode)",
"language/module-code/early-dup-assert-key-export.js (default)",
"language/module-code/early-dup-assert-key-export.js (strict mode)",
"language/module-code/early-dup-assert-key-import-nobinding.js (default)",
"language/module-code/early-dup-assert-key-import-nobinding.js (strict mode)",
"language/module-code/early-dup-assert-key-import-withbinding.js (default)",
"language/module-code/early-dup-assert-key-import-withbinding.js (strict mode)",
// 113 valid programs produced a parsing error (without a corresponding entry in the whitelist file):
"language/module-code/import-assertion-newlines.js (default)",
"language/module-code/import-assertion-newlines.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-assert-enumeration-abrupt.js (default)",
"language/expressions/dynamic-import/2nd-param-assert-enumeration-abrupt.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-assert-enumeration.js (default)",
"language/expressions/dynamic-import/2nd-param-assert-enumeration.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-await-expr.js (default)",
"language/expressions/dynamic-import/2nd-param-await-expr.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-await-ident.js (default)",
"language/expressions/dynamic-import/2nd-param-await-ident.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-evaluation-abrupt-return.js (default)",
"language/expressions/dynamic-import/2nd-param-evaluation-abrupt-return.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-evaluation-abrupt-throw.js (default)",
"language/expressions/dynamic-import/2nd-param-evaluation-abrupt-throw.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-evaluation-sequence.js (default)",
"language/expressions/dynamic-import/2nd-param-evaluation-sequence.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-get-assert-error.js (default)",
"language/expressions/dynamic-import/2nd-param-get-assert-error.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-in.js (default)",
"language/expressions/dynamic-import/2nd-param-in.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-non-object.js (default)",
"language/expressions/dynamic-import/2nd-param-non-object.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-trailing-comma-fulfill.js (default)",
"language/expressions/dynamic-import/2nd-param-trailing-comma-fulfill.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-trailing-comma-reject.js (default)",
"language/expressions/dynamic-import/2nd-param-trailing-comma-reject.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-yield-expr.js (default)",
"language/expressions/dynamic-import/2nd-param-yield-expr.js (strict mode)",
"language/expressions/dynamic-import/2nd-param-yield-ident-valid.js (default)",
"language/expressions/dynamic-import/trailing-comma-fulfill.js (default)",
"language/expressions/dynamic-import/trailing-comma-fulfill.js (strict mode)",
"language/expressions/dynamic-import/trailing-comma-reject.js (default)",
"language/expressions/dynamic-import/trailing-comma-reject.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-while-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-while-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-while-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-while-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-with-expression-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-with-expression-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-with-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-with-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/top-level-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/top-level-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/top-level-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/top-level-trailing-comma-second.js (strict mode)",
];
run(
(content, options) =>
Parser.parse(content, { sourceType: options.sourceType, ecmaVersion: 13 }),
{
testsDirectory: path.dirname(require.resolve("test262/package.json")),
skip: (test) =>
!test.attrs.features ||
!implementedFeatures.some((f) => test.attrs.features.includes(f)) ||
unsupportedFeatures.some((f) => test.attrs.features.includes(f)),
whitelist,
}
);