mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
111 lines
2.6 KiB
Diff
111 lines
2.6 KiB
Diff
diff --git a/test/index.js b/test/index.js
|
|
index efc6fe5..64d3ddf 100644
|
|
--- a/test/index.js
|
|
+++ b/test/index.js
|
|
@@ -60,6 +60,105 @@ function runTest(test) {
|
|
throw new Error(mis);
|
|
}
|
|
}
|
|
+
|
|
+ require("fs").writeFileSync(test.expect.loc.replace(/\.js(on)?$/, ".ast"),
|
|
+ JSON.stringify(ast, massage, 2));
|
|
+}
|
|
+
|
|
+function massage(k, v) {
|
|
+ if (v && typeof v === 'object') {
|
|
+ if (v.type === "File")
|
|
+ return massage(k, v.program);
|
|
+
|
|
+
|
|
+ if (v.type === "ObjectProperty")
|
|
+ v.type = "Property";
|
|
+
|
|
+ if (v.type === "NumericLiteral" || v.type === "StringLiteral" || v.type === "NullLiteral")
|
|
+ v.type = "Literal";
|
|
+
|
|
+ if (v.type === "RestProperty") {
|
|
+ v.type = "Property";
|
|
+ v.key = null;
|
|
+ v.value = {
|
|
+ type: "RestElement",
|
|
+ argument: v.argument
|
|
+ };
|
|
+ delete v.argument;
|
|
+ }
|
|
+
|
|
+ if (v.type === "SpreadProperty") {
|
|
+ v.type = "Property";
|
|
+ v.key = null;
|
|
+ v.value = {
|
|
+ type: "SpreadElement",
|
|
+ argument: v.argument
|
|
+ };
|
|
+ delete v.argument;
|
|
+ }
|
|
+
|
|
+ if (v.type === "ClassMethod") {
|
|
+ v.type = "MethodDefinition";
|
|
+ v.value = {
|
|
+ type: "FunctionExpression",
|
|
+ id: v.id,
|
|
+ generator: v.generator,
|
|
+ expression: v.expression,
|
|
+ async: v.async,
|
|
+ params: v.params,
|
|
+ body: v.body
|
|
+ };
|
|
+ delete v.id; delete v.generator; delete v.expression;
|
|
+ delete v.async; delete v.params; delete v.body;
|
|
+ }
|
|
+
|
|
+ if (v.type === "ObjectMethod") {
|
|
+ v.type = "Property";
|
|
+ v.kind = "init";
|
|
+ v.value = {
|
|
+ type: "FunctionExpression",
|
|
+ id: v.id,
|
|
+ generator: v.generator,
|
|
+ expression: v.expression,
|
|
+ async: v.async,
|
|
+ params: v.params,
|
|
+ body: v.body
|
|
+ };
|
|
+ delete v.id; delete v.generator; delete v.expression;
|
|
+ delete v.async; delete v.params; delete v.body;
|
|
+ }
|
|
+
|
|
+ if (v.type === "ClassProperty")
|
|
+ v.type = "FieldDefinition";
|
|
+
|
|
+ if (v.range) {
|
|
+ v.start = v.range[0];
|
|
+ v.end = v.range[1];
|
|
+ delete v.range;
|
|
+ }
|
|
+
|
|
+ if (typeof v.start === 'number') {
|
|
+ v.loc = v.loc || {};
|
|
+ v.loc.start = v.loc.start || {};
|
|
+ v.loc.start.offset = v.start;
|
|
+ delete v.start;
|
|
+ }
|
|
+
|
|
+ if (typeof v.end === 'number') {
|
|
+ v.loc = v.loc || {};
|
|
+ v.loc.end = v.loc.end || {};
|
|
+ v.loc.end.offset = v.end;
|
|
+ delete v.end;
|
|
+ }
|
|
+
|
|
+ delete v.directives;
|
|
+ delete v.extra;
|
|
+ }
|
|
+
|
|
+ if (v instanceof RegExp)
|
|
+ return v.toString();
|
|
+
|
|
+ return v;
|
|
}
|
|
|
|
function ppJSON(v) {
|