Added location parameter to argument list for create functions

This commit is contained in:
Ron Buckton 2015-07-10 11:42:03 -07:00
parent b6207f2f36
commit e5fce042ca
3 changed files with 321 additions and 315 deletions

View file

@ -825,29 +825,21 @@ function generate(outputFile: string) {
function writeCreateFunction(syntaxNode: SyntaxNode) {
writer.write(`export function create${syntaxNode.kindName}(`);
let first = true;
for (let member of syntaxNode.members) {
if (!first) {
writer.write(`, `);
}
else {
first = false;
}
let type =
member.isNodeArray ? `Array<${member.elementTypeName}>` :
member.isModifiersArray ? `Array<Node>` :
member.typeName;
writer.write(`${member.paramName}?: ${type}`);
writer.write(`${member.paramName}?: ${type}, `);
}
writer.write(`): ${syntaxNode.typeName} {`);
writer.write(`location?: TextRange): ${syntaxNode.typeName} {`);
writer.writeLine();
writer.increaseIndent();
if (syntaxNode.members.length) {
writer.write(`let node = createNode<${syntaxNode.typeName}>(SyntaxKind.${syntaxNode.kindName});`);
writer.write(`let node = createNode<${syntaxNode.typeName}>(SyntaxKind.${syntaxNode.kindName}, location);`);
writer.writeLine();
if (syntaxNode.members.length > 1) {
writer.write(`if (arguments.length) {`);

File diff suppressed because it is too large Load diff

View file

@ -49,21 +49,21 @@ namespace ts {
return newNode;
}
export function createNode<T extends Node>(kind: SyntaxKind): T {
return <T>new (getNodeConstructor(kind))();
export function createNode<T extends Node>(kind: SyntaxKind, location?: TextRange): T {
return setTextRange(<T>new (getNodeConstructor(kind))(), location);
}
export function createNodeArray<TNode extends Node>(elements?: TNode[]) {
export function createNodeArray<TNode extends Node>(elements?: TNode[], location?: TextRange) {
let nodes = <NodeArray<TNode>>(elements || []);
if (nodes.pos === undefined) {
nodes.pos = -1;
nodes.end = -1;
}
return nodes;
return setTextRange(nodes, location);
}
export function createModifiersArray(elements?: Node[]) {
export function createModifiersArray(elements?: Node[], location?: TextRange) {
let modifiers = <ModifiersArray>(elements || []);
if (modifiers.flags === undefined) {
let flags = 0;
@ -74,7 +74,7 @@ namespace ts {
modifiers.flags = flags;
}
return modifiers;
return setTextRange(modifiers, location);
}
export function createSourceFile(): SourceFile {