Skip to content

Commit 306b4a2

Browse files
committed
Merge pull request microsoft#1347 from Microsoft/test262RunnerUpdates
Update test262 runner to serialize flags
2 parents e3320c2 + e52b1fc commit 306b4a2

1 file changed

Lines changed: 36 additions & 1 deletion

File tree

src/harness/test262Runner.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,30 @@ class Test262BaselineRunner extends RunnerBase {
2626
return (<any>ts).SyntaxKind[k]
2727
}
2828

29+
function getFlagName(flags: any, f: number): any {
30+
if (f === 0) return 0;
31+
var result = "";
32+
ts.forEach(Object.getOwnPropertyNames(flags),(v: any) => {
33+
if (isFinite(v)) {
34+
v = +v;
35+
if (f === +v) {
36+
result = flags[v];
37+
return true;
38+
}
39+
else if ((f & v) > 0) {
40+
if (result.length)
41+
result += " | ";
42+
result += flags[v];
43+
return false;
44+
}
45+
}
46+
});
47+
return result;
48+
}
49+
50+
function getNodeFlagName(f: number) { return getFlagName((<any>ts).NodeFlags, f); }
51+
function getParserContextFlagName(f: number) { return getFlagName((<any>ts).ParserContextFlags, f); }
52+
2953
function serializeNode(n: ts.Node): any {
3054
var o = { kind: getKindName(n.kind) };
3155
ts.forEach(Object.getOwnPropertyNames(n), i => {
@@ -39,13 +63,24 @@ class Test262BaselineRunner extends RunnerBase {
3963
case "parseDiagnostics":
4064
case "grammarDiagnostics":
4165
return undefined;
66+
67+
case "flags":
68+
(<any>o)[i] = getNodeFlagName(n.flags);
69+
return undefined;
70+
71+
case "parserContextFlags":
72+
(<any>o)[i] = getParserContextFlagName(n.parserContextFlags);
73+
return undefined;
74+
4275
case "nextContainer":
4376
if (n.nextContainer) {
44-
(<any>o)[i] = { kind: getKindName(n.nextContainer.kind), pos: n.nextContainer.pos, end: n.nextContainer.end };
77+
(<any>o)[i] = { kind: n.nextContainer.kind, pos: n.nextContainer.pos, end: n.nextContainer.end };
4578
return undefined;
4679
}
80+
4781
case "text":
4882
if (n.kind === ts.SyntaxKind.SourceFile) return undefined;
83+
4984
default:
5085
(<any>o)[i] = ((<any>n)[i]);
5186
}

0 commit comments

Comments
 (0)