From 174d48a29e8c7cb839e79f2ea0375fce67693f76 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 8 Dec 2014 17:02:34 -0800 Subject: [PATCH 1/2] Fix some parts of for-each invariant checking. --- src/harness/test262Runner.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/harness/test262Runner.ts b/src/harness/test262Runner.ts index 1602379902a..7fdc347bd96 100644 --- a/src/harness/test262Runner.ts +++ b/src/harness/test262Runner.ts @@ -42,7 +42,19 @@ class Test262BaselineRunner extends RunnerBase { var childNodesAndArrays: any[] = []; ts.forEachChild(node, child => { childNodesAndArrays.push(child) }, array => { childNodesAndArrays.push(array) }); + /* + parent?: Node; // Parent node (initialized by binding) + symbol?: Symbol; // Symbol declared by node (initialized by binding) + locals?: SymbolTable; // Locals associated with node (initialized by binding) + nextContainer?: Node; // Next container in declaration order (initialized by binding) + localSymbol?: Symbol; // Local symbol declared by node (initialized by binding only for exported nodes) + modifiers?: ModifiersArray; // Array of modifiers + */ + for (var childName in node) { + if (childName === "parent" || childName === "nextContainer" || childName === "modifiers") { + continue; + } var child = (node)[childName]; if (Test262BaselineRunner.isNodeOrArray(child)) { if (childNodesAndArrays.indexOf(child) < 0) { From 21301b94cb73e3b0be7c847f9c2b250e036efc52 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 8 Dec 2014 17:42:54 -0800 Subject: [PATCH 2/2] Prevent json recursion overflow in 262 tests. --- src/harness/test262Runner.ts | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/harness/test262Runner.ts b/src/harness/test262Runner.ts index 7fdc347bd96..547cc48a617 100644 --- a/src/harness/test262Runner.ts +++ b/src/harness/test262Runner.ts @@ -42,15 +42,6 @@ class Test262BaselineRunner extends RunnerBase { var childNodesAndArrays: any[] = []; ts.forEachChild(node, child => { childNodesAndArrays.push(child) }, array => { childNodesAndArrays.push(array) }); - /* - parent?: Node; // Parent node (initialized by binding) - symbol?: Symbol; // Symbol declared by node (initialized by binding) - locals?: SymbolTable; // Locals associated with node (initialized by binding) - nextContainer?: Node; // Next container in declaration order (initialized by binding) - localSymbol?: Symbol; // Local symbol declared by node (initialized by binding only for exported nodes) - modifiers?: ModifiersArray; // Array of modifiers - */ - for (var childName in node) { if (childName === "parent" || childName === "nextContainer" || childName === "modifiers") { continue; @@ -96,6 +87,19 @@ class Test262BaselineRunner extends RunnerBase { function getNodeFlagName(f: number) { return getFlagName((ts).NodeFlags, f); } function getParserContextFlagName(f: number) { return getFlagName((ts).ParserContextFlags, f); } + function convertDiagnostics(diagnostics: ts.Diagnostic[]) { + return diagnostics.map(convertDiagnostic); + } + + function convertDiagnostic(diagnostic: ts.Diagnostic): any { + return { + start: diagnostic.start, + length: diagnostic.length, + messageText: diagnostic.messageText, + category: (ts).DiagnosticCategory[diagnostic.category], + code: diagnostic.code + }; + } function serializeNode(n: ts.Node): any { var o: any = { kind: getKindName(n.kind) }; @@ -124,6 +128,12 @@ class Test262BaselineRunner extends RunnerBase { o[propertyName] = getParserContextFlagName(n.parserContextFlags); break; + case "referenceDiagnostics": + case "parseDiagnostics": + case "grammarDiagnostics": + o[propertyName] = convertDiagnostics((n)[propertyName]); + break; + case "nextContainer": if (n.nextContainer) { o[propertyName] = { kind: n.nextContainer.kind, pos: n.nextContainer.pos, end: n.nextContainer.end };