From 2699bf923b1d7f5e2e465afe082c2329789a19da Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Thu, 10 Mar 2016 11:45:20 -0800 Subject: [PATCH] Removed NodeArrayNode in favor of arrays --- src/compiler/factory.ts | 6 ------ src/compiler/transformers/es6.ts | 4 +--- src/compiler/transformers/module/module.ts | 12 ++++++------ src/compiler/transformers/module/system.ts | 4 ++-- src/compiler/transformers/ts.ts | 16 ++++++++-------- src/compiler/types.ts | 15 +-------------- src/compiler/utilities.ts | 7 ------- src/compiler/visitor.ts | 10 ++-------- 8 files changed, 20 insertions(+), 54 deletions(-) diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index cf333af3f00..84eb1ac62cc 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -102,12 +102,6 @@ namespace ts { return clone; } - export function createNodeArrayNode(elements: T[]): NodeArrayNode { - const node = >createSynthesizedNode(SyntaxKind.NodeArrayNode); - node.nodes = createNodeArray(elements); - return node; - } - // Literals export function createLiteral(value: string, location?: TextRange): StringLiteral; diff --git a/src/compiler/transformers/es6.ts b/src/compiler/transformers/es6.ts index 8fe144a6d62..d0fa179372b 100644 --- a/src/compiler/transformers/es6.ts +++ b/src/compiler/transformers/es6.ts @@ -1047,9 +1047,7 @@ namespace ts { // If we are here it is because the name contains a binding pattern. Debug.assert(isBindingPattern(node.name)); - return createNodeArrayNode( - flattenVariableDestructuring(node, /*value*/ undefined, visitor) - ); + return flattenVariableDestructuring(node, /*value*/ undefined, visitor); } function visitLabeledStatement(node: LabeledStatement) { diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index 632514f2a27..a258cb914bb 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -281,7 +281,7 @@ namespace ts { } addExportImportAssignments(statements, node); - return createNodeArrayNode(statements); + return statements; } return undefined; @@ -329,7 +329,7 @@ namespace ts { } addExportImportAssignments(statements, node); - return createNodeArrayNode(statements); + return statements; } return undefined; @@ -370,7 +370,7 @@ namespace ts { } } - return createNodeArrayNode(statements); + return statements; } else { // export * from "mod"; @@ -395,7 +395,7 @@ namespace ts { if (!node.isExportEquals && resolver.isValueAliasDeclaration(node)) { const statements: Statement[] = []; addExportDefault(statements, node.expression, /*location*/ node); - return createNodeArrayNode(statements); + return statements; } return undefined; @@ -540,7 +540,7 @@ namespace ts { /*location*/ node ); } - return createNodeArrayNode(statements); + return statements; } function visitClassDeclaration(node: ClassDeclaration): OneOrMany { @@ -580,7 +580,7 @@ namespace ts { ); } - return createNodeArrayNode(statements); + return statements; } function substituteExpression(node: Expression) { diff --git a/src/compiler/transformers/module/system.ts b/src/compiler/transformers/module/system.ts index 9920878c159..1ba5d365fcf 100644 --- a/src/compiler/transformers/module/system.ts +++ b/src/compiler/transformers/module/system.ts @@ -506,7 +506,7 @@ namespace ts { if (!node.moduleSpecifier) { const statements: Statement[] = []; addNodes(statements, map(node.exportClause.elements, visitExportSpecifier)); - return createNodeArrayNode(statements); + return statements; } return undefined; @@ -648,7 +648,7 @@ namespace ts { addNode(statements, createDeclarationExport(node)); } - return createNodeArrayNode(statements); + return statements; } /** diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 401ccb17873..b92e98d7cd4 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -408,7 +408,7 @@ namespace ts { * * @param node The node to transform. */ - function visitClassDeclaration(node: ClassDeclaration): NodeArrayNode { + function visitClassDeclaration(node: ClassDeclaration): OneOrMany { const staticProperties = getInitializedProperties(node, /*isStatic*/ true); const hasExtendsClause = getClassExtendsHeritageClauseElement(node) !== undefined; @@ -471,7 +471,7 @@ namespace ts { } } - return createNodeArrayNode(statements); + return statements; } /** @@ -1870,10 +1870,10 @@ namespace ts { ); if (isNamespaceExport(node)) { - return createNodeArrayNode([ + return [ func, createNamespaceExport(getSynthesizedClone(node.name), getSynthesizedClone(node.name)) - ]); + ]; } return func; @@ -2150,7 +2150,7 @@ namespace ts { * * @param node The enum declaration node. */ - function visitEnumDeclaration(node: EnumDeclaration) { + function visitEnumDeclaration(node: EnumDeclaration): OneOrMany { if (shouldElideEnumDeclaration(node)) { return undefined; } @@ -2215,7 +2215,7 @@ namespace ts { } currentNamespaceLocalName = savedCurrentNamespaceLocalName; - return createNodeArrayNode(statements); + return statements; } /** @@ -2362,7 +2362,7 @@ namespace ts { * * @param node The module declaration node. */ - function visitModuleDeclaration(node: ModuleDeclaration) { + function visitModuleDeclaration(node: ModuleDeclaration): OneOrMany { if (shouldElideModuleDeclaration(node)) { return undefined; } @@ -2435,7 +2435,7 @@ namespace ts { ); currentNamespaceLocalName = savedCurrentNamespaceLocalName; - return createNodeArrayNode(statements); + return statements; } /** diff --git a/src/compiler/types.ts b/src/compiler/types.ts index c03fd2744f5..7e9dafabe7a 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -342,7 +342,7 @@ namespace ts { // Synthesized list SyntaxList, - NodeArrayNode, + // Enum value count Count, // Markers @@ -469,19 +469,6 @@ namespace ts { hasTrailingComma?: boolean; } - /** - * A NodeArrayNode is a transient node used during transformations to indicate that more than - * one node will substitute a single node in the source. When the source is a NodeArray (as - * part of a call to `visitNodes`), the nodes of a NodeArrayNode will be spread into the - * result array. When the source is a Node (as part of a call to `visitNode`), the NodeArrayNode - * must be converted into a compatible node via the `lift` callback. - */ - /* @internal */ - // @kind(SyntaxKind.NodeArrayNode) - export interface NodeArrayNode extends Node { - nodes: NodeArray; - } - // @kind(SyntaxKind.AbstractKeyword) // @kind(SyntaxKind.AsyncKeyword) // @kind(SyntaxKind.ConstKeyword) diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 7d37d2bf96b..ca8e4d5289e 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -3471,13 +3471,6 @@ namespace ts { export function isEnumMember(node: Node): node is EnumMember { return node.kind === SyntaxKind.EnumMember; } - - - // Synthesized - - export function isNodeArrayNode(node: Node): node is NodeArrayNode { - return node.kind === SyntaxKind.NodeArrayNode; - } } namespace ts { diff --git a/src/compiler/visitor.ts b/src/compiler/visitor.ts index 92307b707f8..5eec55005fa 100644 --- a/src/compiler/visitor.ts +++ b/src/compiler/visitor.ts @@ -3,7 +3,7 @@ /* @internal */ namespace ts { - export type OneOrMany = T | NodeArrayNode | T[]; + export type OneOrMany = T | T[]; /** * Describes an edge of a Node, used when traversing a syntax tree. @@ -512,9 +512,6 @@ namespace ts { if (isArray(visited)) { visitedNode = (lift || extractSingleNode)(>visited); } - else if (isNodeArrayNode(visited)) { - visitedNode = (lift || extractSingleNode)((>visited).nodes); - } else { visitedNode = visited; } @@ -668,7 +665,7 @@ namespace ts { if (nodes) { for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; - if (result || node === undefined || isArray(node) || isNodeArrayNode(node)) { + if (result || node === undefined || isArray(node)) { if (!result) { result = nodes.slice(0, i); } @@ -705,9 +702,6 @@ namespace ts { if (isArray(from)) { addNodesWorker(to, from, startOnNewLine, test, parenthesize, parentNode, isVisiting); } - else if (isNodeArrayNode(from)) { - addNodesWorker(to, from.nodes, startOnNewLine, test, parenthesize, parentNode, isVisiting); - } else { const node = parenthesize !== undefined ? parenthesize(from, parentNode) : from; Debug.assert(test === undefined || test(node), "Wrong node type after visit.", () => `Node ${formatSyntaxKind(node.kind)} did not pass test ${(test).name}.`);