Merge pull request #1028 from Microsoft/abstractTrees

Remove abstract syntax tree generation support from fidelity.
This commit is contained in:
CyrusNajmabadi 2014-11-01 17:31:01 -07:00
commit bcf319fd40
9 changed files with 117 additions and 821 deletions

View File

@ -2596,21 +2596,7 @@ function generateSyntaxInterfaces() {
}
result += generateSyntaxInterface(definition);
}
result += "\r\n\r\n";
result += " export module Syntax {\r\n";
result += " export interface ISyntaxFactory {\r\n";
result += " isConcrete: boolean;\r\n";
for (var i = 0; i < definitions.length; i++) {
var definition = definitions[i];
result += " " + definition.name + ": { new(data: number";
for (var j = 0; j < definition.children.length; j++) {
var child = definition.children[j];
result += ", " + child.name + ": " + getType(child);
}
result += "): " + definition.name + " };\r\n";
}
result += " }\r\n";
result += " }\r\n";
result += "\r\n";
result += "}";
return result;
}
@ -2633,13 +2619,8 @@ function generateSyntaxInterface(definition) {
}
function generateNodes(abstract) {
var result = "///<reference path='references.ts' />\r\n\r\n";
result += "module TypeScript.Syntax.";
var moduleName = abstract ? "Abstract" : "Concrete";
result += moduleName;
result += "module TypeScript";
result += " {\r\n";
result += " // Inject this module as the factory for producing syntax nodes in the parser.\r\n";
result += " Parser.syntaxFactory = " + moduleName + ";\r\n";
result += " export var isConcrete: boolean = " + !abstract + ";\r\n\r\n";
for (var i = 0; i < definitions.length; i++) {
var definition = definitions[i];
if (i > 0) {

View File

@ -855,7 +855,6 @@ module TypeScript.IncrementalParser {
var setTokenFullStartWalker = new SetTokenFullStartWalker();
export function parse(oldSyntaxTree: SyntaxTree, textChangeRange: TextChangeRange, newText: ISimpleText): SyntaxTree {
Debug.assert(oldSyntaxTree.isConcrete(), "Can only incrementally parse a concrete syntax tree.");
if (textChangeRange.isUnchanged()) {
return oldSyntaxTree;
}

View File

@ -1,10 +1,6 @@
///<reference path='references.ts' />
module TypeScript.Parser {
// The factory used to produce parse tree nodes. Injected normally by the
// TypeScript.Syntax.Abstract or TypeScript.Syntax.Conrete modules.
export var syntaxFactory: Syntax.ISyntaxFactory;
// Interface that represents the source that the parser pulls tokens from. Essentially, this
// is the interface that the parser needs an underlying scanner to provide. This allows us to
// separate out "what" the parser does with the tokens it retrieves versus "how" it obtains
@ -226,7 +222,7 @@ module TypeScript.Parser {
var allDiagnostics = source.tokenDiagnostics().concat(diagnostics);
allDiagnostics.sort((a: Diagnostic, b: Diagnostic) => a.start() - b.start());
return new SyntaxTree(syntaxFactory.isConcrete, sourceUnit, isDeclaration, allDiagnostics, fileName, source.text, languageVersion);
return new SyntaxTree(sourceUnit, isDeclaration, allDiagnostics, fileName, source.text, languageVersion);
}
function getRewindPoint(): IParserRewindPoint {
@ -704,7 +700,7 @@ module TypeScript.Parser {
setStrictMode(savedIsInStrictMode);
var sourceUnit = new syntaxFactory.SourceUnitSyntax(parseNodeData, moduleElements, currentToken());
var sourceUnit = new SourceUnitSyntax(parseNodeData, moduleElements, currentToken());
sourceUnit = <SourceUnitSyntax>addSkippedTokensBeforeNode(sourceUnit, skippedTokens);
@ -817,12 +813,12 @@ module TypeScript.Parser {
}
function parseImportDeclaration(): ImportDeclarationSyntax {
return new syntaxFactory.ImportDeclarationSyntax(parseNodeData,
return new ImportDeclarationSyntax(parseNodeData,
parseModifiers(), eatToken(SyntaxKind.ImportKeyword), eatIdentifierToken(), eatToken(SyntaxKind.EqualsToken), parseModuleReference(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
function parseExportAssignment(): ExportAssignmentSyntax {
return new syntaxFactory.ExportAssignmentSyntax(parseNodeData,
return new ExportAssignmentSyntax(parseNodeData,
eatToken(SyntaxKind.ExportKeyword), eatToken(SyntaxKind.EqualsToken), eatIdentifierToken(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
@ -836,12 +832,12 @@ module TypeScript.Parser {
}
function parseExternalModuleReference(): ExternalModuleReferenceSyntax {
return new syntaxFactory.ExternalModuleReferenceSyntax(parseNodeData,
return new ExternalModuleReferenceSyntax(parseNodeData,
eatToken(SyntaxKind.RequireKeyword), eatToken(SyntaxKind.OpenParenToken), eatToken(SyntaxKind.StringLiteral), eatToken(SyntaxKind.CloseParenToken));
}
function parseModuleNameModuleReference(): ModuleNameModuleReferenceSyntax {
return new syntaxFactory.ModuleNameModuleReferenceSyntax(parseNodeData, parseName(/*allowIdentifierNames:*/ false));
return new ModuleNameModuleReferenceSyntax(parseNodeData, parseName(/*allowIdentifierNames:*/ false));
}
function tryParseTypeArgumentList(inExpression: boolean): TypeArgumentListSyntax {
@ -859,7 +855,7 @@ module TypeScript.Parser {
var typeArguments = parseSeparatedSyntaxList<ITypeSyntax>(ListParsingState.TypeArgumentList_Types, skippedTokens);
lessThanToken = addSkippedTokensAfterToken(lessThanToken, skippedTokens);
return new syntaxFactory.TypeArgumentListSyntax(parseNodeData, lessThanToken, typeArguments, eatToken(SyntaxKind.GreaterThanToken));
return new TypeArgumentListSyntax(parseNodeData, lessThanToken, typeArguments, eatToken(SyntaxKind.GreaterThanToken));
}
// If we're in an expression, then we only want to consume this as a type argument list
@ -886,7 +882,7 @@ module TypeScript.Parser {
}
else {
releaseRewindPoint(rewindPoint);
return new syntaxFactory.TypeArgumentListSyntax(parseNodeData, lessThanToken, typeArguments, greaterThanToken);
return new TypeArgumentListSyntax(parseNodeData, lessThanToken, typeArguments, greaterThanToken);
}
}
@ -979,7 +975,7 @@ module TypeScript.Parser {
var dotToken = consumeToken(currentToken());
var identifierName = eatRightSideOfName(allowIdentifierNames);
current = new syntaxFactory.QualifiedNameSyntax(parseNodeData, current, dotToken, identifierName);
current = new QualifiedNameSyntax(parseNodeData, current, dotToken, identifierName);
shouldContinue = identifierName.fullWidth() > 0;
}
@ -1000,7 +996,7 @@ module TypeScript.Parser {
openBraceToken = addSkippedTokensAfterToken(openBraceToken, skippedTokens);
}
return new syntaxFactory.EnumDeclarationSyntax(parseNodeData, modifiers, enumKeyword, identifier, openBraceToken, enumElements, eatToken(SyntaxKind.CloseBraceToken));
return new EnumDeclarationSyntax(parseNodeData, modifiers, enumKeyword, identifier, openBraceToken, enumElements, eatToken(SyntaxKind.CloseBraceToken));
}
function isEnumElement(inErrorRecovery: boolean): boolean {
@ -1027,7 +1023,7 @@ module TypeScript.Parser {
return undefined;
}
return new syntaxFactory.EnumElementSyntax(parseNodeData, eatPropertyName(), tryParseEnumElementEqualsValueClause());
return new EnumElementSyntax(parseNodeData, eatPropertyName(), tryParseEnumElementEqualsValueClause());
}
function isModifierKind(kind: SyntaxKind): boolean {
@ -1130,7 +1126,7 @@ module TypeScript.Parser {
openBraceToken = addSkippedTokensAfterToken(openBraceToken, skippedTokens);
};
return new syntaxFactory.ClassDeclarationSyntax(parseNodeData,
return new ClassDeclarationSyntax(parseNodeData,
modifiers, classKeyword, identifier, typeParameterList, heritageClauses, openBraceToken, classElements, eatToken(SyntaxKind.CloseBraceToken));
}
@ -1161,14 +1157,14 @@ module TypeScript.Parser {
}
function parseGetMemberAccessorDeclaration(modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, checkForStrictMode: boolean): GetAccessorSyntax {
return new syntaxFactory.GetAccessorSyntax(parseNodeData,
return new GetAccessorSyntax(parseNodeData,
modifiers, consumeToken(getKeyword), eatPropertyName(),
parseCallSignature(/*requireCompleteTypeParameterList:*/ false),
parseBlock(/*parseStatementsEvenWithNoOpenBrace:*/ false, checkForStrictMode));
}
function parseSetMemberAccessorDeclaration(modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, checkForStrictMode: boolean): SetAccessorSyntax {
return new syntaxFactory.SetAccessorSyntax(parseNodeData,
return new SetAccessorSyntax(parseNodeData,
modifiers, consumeToken(setKeyword), eatPropertyName(),
parseCallSignature(/*requireCompleteTypeParameterList:*/ false),
parseBlock(/*parseStatementsEvenWithNoOpenBrace:*/ false, checkForStrictMode));
@ -1240,7 +1236,7 @@ module TypeScript.Parser {
semicolonToken = eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false);
}
return new syntaxFactory.ConstructorDeclarationSyntax(parseNodeData, modifiers, constructorKeyword, callSignature, block, semicolonToken);
return new ConstructorDeclarationSyntax(parseNodeData, modifiers, constructorKeyword, callSignature, block, semicolonToken);
}
function isMemberFunctionDeclaration(modifierCount: number, inErrorRecovery: boolean): boolean {
@ -1266,7 +1262,7 @@ module TypeScript.Parser {
semicolon = eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false);
}
return new syntaxFactory.MemberFunctionDeclarationSyntax(parseNodeData, modifiers, propertyName, callSignature, block, semicolon);
return new MemberFunctionDeclarationSyntax(parseNodeData, modifiers, propertyName, callSignature, block, semicolon);
}
function isDefinitelyMemberVariablePropertyName(index: number): boolean {
@ -1302,7 +1298,7 @@ module TypeScript.Parser {
}
function parseMemberVariableDeclaration(): MemberVariableDeclarationSyntax {
return new syntaxFactory.MemberVariableDeclarationSyntax(parseNodeData,
return new MemberVariableDeclarationSyntax(parseNodeData,
parseModifiers(),
tryParseVariableDeclarator(/*allowIn:*/ true, /*allowPropertyName:*/ true), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
@ -1312,7 +1308,7 @@ module TypeScript.Parser {
}
function parseIndexMemberDeclaration(): IndexMemberDeclarationSyntax {
return new syntaxFactory.IndexMemberDeclarationSyntax(parseNodeData,
return new IndexMemberDeclarationSyntax(parseNodeData,
parseModifiers(), parseIndexSignature(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewLine:*/ false));
}
@ -1335,11 +1331,7 @@ module TypeScript.Parser {
consumeToken(token0);
// Note: we only do this if we're creating a concrete syntax tree (which contains
// everything, including skipped tokens, in it).
if (syntaxFactory.isConcrete) {
addSkippedTokenAfterNode(callSignature, token0);
}
addSkippedTokenAfterNode(callSignature, token0);
return true;
}
}
@ -1373,7 +1365,7 @@ module TypeScript.Parser {
semicolonToken = eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false);
}
return new syntaxFactory.FunctionDeclarationSyntax(parseNodeData, modifiers, functionKeyword, identifier, callSignature, block, semicolonToken);
return new FunctionDeclarationSyntax(parseNodeData, modifiers, functionKeyword, identifier, callSignature, block, semicolonToken);
}
function parseModuleDeclaration(): ModuleDeclarationSyntax {
@ -1399,12 +1391,12 @@ module TypeScript.Parser {
openBraceToken = addSkippedTokensAfterToken(openBraceToken, skippedTokens);
}
return new syntaxFactory.ModuleDeclarationSyntax(parseNodeData,
return new ModuleDeclarationSyntax(parseNodeData,
modifiers, moduleKeyword, moduleName, stringLiteral, openBraceToken, moduleElements, eatToken(SyntaxKind.CloseBraceToken));
}
function parseInterfaceDeclaration(): InterfaceDeclarationSyntax {
return new syntaxFactory.InterfaceDeclarationSyntax(parseNodeData,
return new InterfaceDeclarationSyntax(parseNodeData,
parseModifiers(), eatToken(SyntaxKind.InterfaceKeyword), eatIdentifierToken(),
tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), parseHeritageClauses(), parseObjectType());
}
@ -1419,7 +1411,7 @@ module TypeScript.Parser {
openBraceToken = addSkippedTokensAfterToken(openBraceToken, skippedTokens);
}
return new syntaxFactory.ObjectTypeSyntax(parseNodeData, openBraceToken, typeMembers, eatToken(SyntaxKind.CloseBraceToken));
return new ObjectTypeSyntax(parseNodeData, openBraceToken, typeMembers, eatToken(SyntaxKind.CloseBraceToken));
}
function parseTupleType(currentToken: ISyntaxToken): TupleTypeSyntax {
@ -1432,7 +1424,7 @@ module TypeScript.Parser {
openBracket = addSkippedTokensAfterToken(openBracket, skippedTokens);
}
return new syntaxFactory.TupleTypeSyntax(parseNodeData, openBracket, types, eatToken(SyntaxKind.CloseBracketToken));
return new TupleTypeSyntax(parseNodeData, openBracket, types, eatToken(SyntaxKind.CloseBracketToken));
}
function isTypeMember(inErrorRecovery: boolean): boolean {
@ -1477,7 +1469,7 @@ module TypeScript.Parser {
}
function parseConstructSignature(): ConstructSignatureSyntax {
return new syntaxFactory.ConstructSignatureSyntax(parseNodeData, eatToken(SyntaxKind.NewKeyword), parseCallSignature(/*requireCompleteTypeParameterList:*/ false));
return new ConstructSignatureSyntax(parseNodeData, eatToken(SyntaxKind.NewKeyword), parseCallSignature(/*requireCompleteTypeParameterList:*/ false));
}
function parseIndexSignature(): IndexSignatureSyntax {
@ -1487,17 +1479,17 @@ module TypeScript.Parser {
var parameters = parseSeparatedSyntaxList<ParameterSyntax>(ListParsingState.IndexSignature_Parameters, skippedTokens);
openBracketToken = addSkippedTokensAfterToken(openBracketToken, skippedTokens);
return new syntaxFactory.IndexSignatureSyntax(parseNodeData,
return new IndexSignatureSyntax(parseNodeData,
openBracketToken, parameters, eatToken(SyntaxKind.CloseBracketToken), parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false));
}
function parseMethodSignature(): MethodSignatureSyntax {
return new syntaxFactory.MethodSignatureSyntax(parseNodeData,
return new MethodSignatureSyntax(parseNodeData,
eatPropertyName(), tryEatToken(SyntaxKind.QuestionToken), parseCallSignature(/*requireCompleteTypeParameterList:*/ false));
}
function parsePropertySignature(): PropertySignatureSyntax {
return new syntaxFactory.PropertySignatureSyntax(parseNodeData,
return new PropertySignatureSyntax(parseNodeData,
eatPropertyName(), tryEatToken(SyntaxKind.QuestionToken), parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false));
}
@ -1602,7 +1594,7 @@ module TypeScript.Parser {
var typeNames = parseSeparatedSyntaxList<INameSyntax>(ListParsingState.HeritageClause_TypeNameList, skippedTokens);
extendsOrImplementsKeyword = addSkippedTokensAfterToken(extendsOrImplementsKeyword, skippedTokens);
return new syntaxFactory.HeritageClauseSyntax(parseNodeData, extendsOrImplementsKeyword, typeNames);
return new HeritageClauseSyntax(parseNodeData, extendsOrImplementsKeyword, typeNames);
}
function isInterfaceEnumClassModuleImportOrExport(modifierCount: number): boolean {
@ -1790,7 +1782,7 @@ module TypeScript.Parser {
}
function parseDebuggerStatement(debuggerKeyword: ISyntaxToken): DebuggerStatementSyntax {
return new syntaxFactory.DebuggerStatementSyntax(parseNodeData, consumeToken(debuggerKeyword), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
return new DebuggerStatementSyntax(parseNodeData, consumeToken(debuggerKeyword), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
function parseDoStatement(doKeyword: ISyntaxToken): DoStatementSyntax {
@ -1798,7 +1790,7 @@ module TypeScript.Parser {
// 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
// spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby
// do;while(0)x will have a semicolon inserted before x.
return new syntaxFactory.DoStatementSyntax(parseNodeData,
return new DoStatementSyntax(parseNodeData,
consumeToken(doKeyword), parseStatement(/*inErrorRecovery:*/ false), eatToken(SyntaxKind.WhileKeyword), eatToken(SyntaxKind.OpenParenToken),
parseExpression(/*allowIn:*/ true), eatToken(SyntaxKind.CloseParenToken), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ true));
}
@ -1808,7 +1800,7 @@ module TypeScript.Parser {
}
function parseLabeledStatement(identifierToken: ISyntaxToken): LabeledStatementSyntax {
return new syntaxFactory.LabeledStatementSyntax(parseNodeData,
return new LabeledStatementSyntax(parseNodeData,
consumeToken(identifierToken), eatToken(SyntaxKind.ColonToken), parseStatement(/*inErrorRecovery:*/ false));
}
@ -1832,7 +1824,7 @@ module TypeScript.Parser {
finallyClause = parseFinallyClause();
}
return new syntaxFactory.TryStatementSyntax(parseNodeData, tryKeyword, block, catchClause, finallyClause);
return new TryStatementSyntax(parseNodeData, tryKeyword, block, catchClause, finallyClause);
}
function parseCatchClauseBlock(): BlockSyntax {
@ -1845,23 +1837,23 @@ module TypeScript.Parser {
}
function parseCatchClause(): CatchClauseSyntax {
return new syntaxFactory.CatchClauseSyntax(parseNodeData,
return new CatchClauseSyntax(parseNodeData,
eatToken(SyntaxKind.CatchKeyword), eatToken(SyntaxKind.OpenParenToken), eatIdentifierToken(),
parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), eatToken(SyntaxKind.CloseParenToken), parseCatchClauseBlock());
}
function parseFinallyClause(): FinallyClauseSyntax {
return new syntaxFactory.FinallyClauseSyntax(parseNodeData,
return new FinallyClauseSyntax(parseNodeData,
eatToken(SyntaxKind.FinallyKeyword), parseBlock(/*parseStatementsEvenWithNoOpenBrace:*/ false, /*checkForStrictMode:*/ false));
}
function parseWithStatement(withKeyword: ISyntaxToken): WithStatementSyntax {
return new syntaxFactory.WithStatementSyntax(parseNodeData,
return new WithStatementSyntax(parseNodeData,
consumeToken(withKeyword), eatToken(SyntaxKind.OpenParenToken), parseExpression(/*allowIn:*/ true), eatToken(SyntaxKind.CloseParenToken), parseStatement(/*inErrorRecovery:*/ false));
}
function parseWhileStatement(whileKeyword: ISyntaxToken): WhileStatementSyntax {
return new syntaxFactory.WhileStatementSyntax(parseNodeData,
return new WhileStatementSyntax(parseNodeData,
consumeToken(whileKeyword), eatToken(SyntaxKind.OpenParenToken), parseExpression(/*allowIn:*/ true), eatToken(SyntaxKind.CloseParenToken), parseStatement(/*inErrorRecovery:*/ false));
}
@ -1880,7 +1872,7 @@ module TypeScript.Parser {
}
function parseEmptyStatement(semicolonToken: ISyntaxToken): EmptyStatementSyntax {
return new syntaxFactory.EmptyStatementSyntax(parseNodeData, consumeToken(semicolonToken));
return new EmptyStatementSyntax(parseNodeData, consumeToken(semicolonToken));
}
function parseForOrForInStatement(forKeyword: ISyntaxToken): IStatementSyntax {
@ -1923,7 +1915,7 @@ module TypeScript.Parser {
function parseForInStatementWithVariableDeclarationOrInitializer(forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, variableDeclaration: VariableDeclarationSyntax, initializer: IExpressionSyntax): ForInStatementSyntax {
// for ( var VariableDeclarationNoIn in Expression ) Statement
return new syntaxFactory.ForInStatementSyntax(parseNodeData,
return new ForInStatementSyntax(parseNodeData,
forKeyword, openParenToken, variableDeclaration, initializer, eatToken(SyntaxKind.InKeyword),
parseExpression(/*allowIn:*/ true), eatToken(SyntaxKind.CloseParenToken), parseStatement(/*inErrorRecovery:*/ false));
}
@ -1974,7 +1966,7 @@ module TypeScript.Parser {
// a semicolon is never inserted automatically if the semicolon would then ... become
// one of the two semicolons in the header of a for statement
return new syntaxFactory.ForStatementSyntax(parseNodeData,
return new ForStatementSyntax(parseNodeData,
forKeyword, openParenToken, variableDeclaration, initializer,
eatToken(SyntaxKind.SemicolonToken), tryParseForStatementCondition(),
eatToken(SyntaxKind.SemicolonToken), tryParseForStatementIncrementor(),
@ -1995,12 +1987,12 @@ module TypeScript.Parser {
}
function parseBreakStatement(breakKeyword: ISyntaxToken): BreakStatementSyntax {
return new syntaxFactory.BreakStatementSyntax(parseNodeData,
return new BreakStatementSyntax(parseNodeData,
consumeToken(breakKeyword), tryEatBreakOrContinueLabel(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
function parseContinueStatement(continueKeyword: ISyntaxToken): ContinueStatementSyntax {
return new syntaxFactory.ContinueStatementSyntax(parseNodeData,
return new ContinueStatementSyntax(parseNodeData,
consumeToken(continueKeyword), tryEatBreakOrContinueLabel(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
@ -2020,7 +2012,7 @@ module TypeScript.Parser {
openBraceToken = addSkippedTokensAfterToken(openBraceToken, skippedTokens);
}
return new syntaxFactory.SwitchStatementSyntax(parseNodeData, switchKeyword, openParenToken, expression, closeParenToken, openBraceToken, switchClauses, eatToken(SyntaxKind.CloseBraceToken));
return new SwitchStatementSyntax(parseNodeData, switchKeyword, openParenToken, expression, closeParenToken, openBraceToken, switchClauses, eatToken(SyntaxKind.CloseBraceToken));
}
function isSwitchClause(): boolean {
@ -2069,7 +2061,7 @@ module TypeScript.Parser {
colonToken = addSkippedTokensAfterToken(colonToken, skippedTokens);
}
return new syntaxFactory.CaseSwitchClauseSyntax(parseNodeData, caseKeyword, expression, colonToken, statements);
return new CaseSwitchClauseSyntax(parseNodeData, caseKeyword, expression, colonToken, statements);
}
function parseDefaultSwitchClause(defaultKeyword: ISyntaxToken): DefaultSwitchClauseSyntax {
@ -2087,7 +2079,7 @@ module TypeScript.Parser {
colonToken = addSkippedTokensAfterToken(colonToken, skippedTokens);
}
return new syntaxFactory.DefaultSwitchClauseSyntax(parseNodeData, defaultKeyword, colonToken, statements);
return new DefaultSwitchClauseSyntax(parseNodeData, defaultKeyword, colonToken, statements);
}
function parseThrowStatementExpression(): IExpressionSyntax {
@ -2100,7 +2092,7 @@ module TypeScript.Parser {
}
function parseThrowStatement(throwKeyword: ISyntaxToken): ThrowStatementSyntax {
return new syntaxFactory.ThrowStatementSyntax(parseNodeData,
return new ThrowStatementSyntax(parseNodeData,
consumeToken(throwKeyword), parseThrowStatementExpression(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
@ -2109,7 +2101,7 @@ module TypeScript.Parser {
}
function parseReturnStatement(returnKeyword: ISyntaxToken): ReturnStatementSyntax {
return new syntaxFactory.ReturnStatementSyntax(parseNodeData,
return new ReturnStatementSyntax(parseNodeData,
consumeToken(returnKeyword), tryParseReturnStatementExpression(), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
@ -2128,7 +2120,7 @@ module TypeScript.Parser {
// Debug.assert(isAssignmentOrOmittedExpression());
if (currentToken().kind() === SyntaxKind.CommaToken) {
return new syntaxFactory.OmittedExpressionSyntax(parseNodeData);
return new OmittedExpressionSyntax(parseNodeData);
}
return tryParseAssignmentExpressionOrHigher(/*force:*/ false, /*allowIn:*/ true);
@ -2202,11 +2194,11 @@ module TypeScript.Parser {
}
function parseExpressionStatement(): ExpressionStatementSyntax {
return new syntaxFactory.ExpressionStatementSyntax(parseNodeData, parseExpression(/*allowIn:*/ true), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
return new ExpressionStatementSyntax(parseNodeData, parseExpression(/*allowIn:*/ true), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
function parseIfStatement(ifKeyword: ISyntaxToken): IfStatementSyntax {
return new syntaxFactory.IfStatementSyntax(parseNodeData,
return new IfStatementSyntax(parseNodeData,
consumeToken(ifKeyword), eatToken(SyntaxKind.OpenParenToken), parseExpression(/*allowIn:*/ true),
eatToken(SyntaxKind.CloseParenToken), parseStatement(/*inErrorRecovery:*/ false), parseOptionalElseClause());
}
@ -2216,7 +2208,7 @@ module TypeScript.Parser {
}
function parseElseClause(): ElseClauseSyntax {
return new syntaxFactory.ElseClauseSyntax(parseNodeData, eatToken(SyntaxKind.ElseKeyword), parseStatement(/*inErrorRecovery:*/ false));
return new ElseClauseSyntax(parseNodeData, eatToken(SyntaxKind.ElseKeyword), parseStatement(/*inErrorRecovery:*/ false));
}
function isVariableStatement(modifierCount: number): boolean {
@ -2224,7 +2216,7 @@ module TypeScript.Parser {
}
function parseVariableStatement(): VariableStatementSyntax {
return new syntaxFactory.VariableStatementSyntax(parseNodeData,
return new VariableStatementSyntax(parseNodeData,
parseModifiers(), parseVariableDeclaration(/*allowIn:*/ true), eatExplicitOrAutomaticSemicolon(/*allowWithoutNewline:*/ false));
}
@ -2242,7 +2234,7 @@ module TypeScript.Parser {
var variableDeclarators = parseSeparatedSyntaxList<VariableDeclaratorSyntax>(listParsingState, skippedTokens);
varKeyword = addSkippedTokensAfterToken(varKeyword, skippedTokens);
return new syntaxFactory.VariableDeclarationSyntax(parseNodeData, varKeyword, variableDeclarators);
return new VariableDeclarationSyntax(parseNodeData, varKeyword, variableDeclarators);
}
function isVariableDeclarator(): boolean {
@ -2310,7 +2302,7 @@ module TypeScript.Parser {
}
}
return new syntaxFactory.VariableDeclaratorSyntax(parseNodeData, propertyName, typeAnnotation, equalsValueClause);
return new VariableDeclaratorSyntax(parseNodeData, propertyName, typeAnnotation, equalsValueClause);
}
function isEqualsValueClause(inParameter: boolean): boolean {
@ -2351,7 +2343,7 @@ module TypeScript.Parser {
}
function parseEqualsValueClause(allowIn: boolean): EqualsValueClauseSyntax {
return new syntaxFactory.EqualsValueClauseSyntax(parseNodeData,
return new EqualsValueClauseSyntax(parseNodeData,
eatToken(SyntaxKind.EqualsToken), tryParseAssignmentExpressionOrHigher(/*force:*/ true, allowIn));
}
@ -2367,7 +2359,7 @@ module TypeScript.Parser {
break;
}
leftOperand = new syntaxFactory.BinaryExpressionSyntax(parseNodeData, leftOperand, consumeToken(_currentToken),
leftOperand = new BinaryExpressionSyntax(parseNodeData, leftOperand, consumeToken(_currentToken),
tryParseAssignmentExpressionOrHigher(/*force:*/ true, allowIn));
}
@ -2431,7 +2423,7 @@ module TypeScript.Parser {
// Check for recursive assignment expressions.
if (SyntaxFacts.isAssignmentOperatorToken(operatorToken.kind())) {
return new syntaxFactory.BinaryExpressionSyntax(parseNodeData, leftOperand, consumeToken(operatorToken),
return new BinaryExpressionSyntax(parseNodeData, leftOperand, consumeToken(operatorToken),
tryParseAssignmentExpressionOrHigher(/*force:*/ true, allowIn));
}
}
@ -2456,7 +2448,7 @@ module TypeScript.Parser {
case SyntaxKind.ExclamationToken:
case SyntaxKind.PlusPlusToken:
case SyntaxKind.MinusMinusToken:
return new syntaxFactory.PrefixUnaryExpressionSyntax(parseNodeData, consumeToken(_currentToken), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
return new PrefixUnaryExpressionSyntax(parseNodeData, consumeToken(_currentToken), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
case SyntaxKind.TypeOfKeyword: return parseTypeOfExpression(_currentToken);
case SyntaxKind.VoidKeyword: return parseVoidExpression(_currentToken);
case SyntaxKind.DeleteKeyword: return parseDeleteExpression(_currentToken);
@ -2496,7 +2488,7 @@ module TypeScript.Parser {
// Note: we explicitly do *not* pass 'allowIn' to the whenTrue part. An 'in' expression is always
// allowed in the 'true' part of a conditional expression.
return new syntaxFactory.ConditionalExpressionSyntax(parseNodeData,
return new ConditionalExpressionSyntax(parseNodeData,
leftOperand, consumeToken(_currentToken), tryParseAssignmentExpressionOrHigher(/*force:*/ true, /*allowIn:*/ true),
eatToken(SyntaxKind.ColonToken), tryParseAssignmentExpressionOrHigher(/*force:*/ true, allowIn));
}
@ -2537,7 +2529,7 @@ module TypeScript.Parser {
// Precedence is okay, so we'll "take" this operator.
// Now skip the operator token we're on.
leftOperand = new syntaxFactory.BinaryExpressionSyntax(parseNodeData, leftOperand, consumeToken(operatorToken),
leftOperand = new BinaryExpressionSyntax(parseNodeData, leftOperand, consumeToken(operatorToken),
tryParseBinaryExpressionOrHigher(currentToken(), /*force:*/ true, newPrecedence, allowIn));
}
@ -2623,7 +2615,7 @@ module TypeScript.Parser {
switch (currentTokenKind) {
case SyntaxKind.OpenParenToken:
expression = new syntaxFactory.InvocationExpressionSyntax(parseNodeData, expression, parseArgumentList(/*typeArgumentList:*/ undefined));
expression = new InvocationExpressionSyntax(parseNodeData, expression, parseArgumentList(/*typeArgumentList:*/ undefined));
continue;
case SyntaxKind.LessThanToken:
@ -2636,7 +2628,7 @@ module TypeScript.Parser {
break;
}
expression = new syntaxFactory.InvocationExpressionSyntax(parseNodeData, expression, argumentList);
expression = new InvocationExpressionSyntax(parseNodeData, expression, argumentList);
continue;
case SyntaxKind.OpenBracketToken:
@ -2644,7 +2636,7 @@ module TypeScript.Parser {
continue;
case SyntaxKind.DotToken:
expression = new syntaxFactory.MemberAccessExpressionSyntax(parseNodeData, expression, consumeToken(_currentToken), eatIdentifierNameToken());
expression = new MemberAccessExpressionSyntax(parseNodeData, expression, consumeToken(_currentToken), eatIdentifierNameToken());
continue;
}
@ -2663,7 +2655,7 @@ module TypeScript.Parser {
continue;
case SyntaxKind.DotToken:
expression = new syntaxFactory.MemberAccessExpressionSyntax(parseNodeData, expression, consumeToken(_currentToken), eatIdentifierNameToken());
expression = new MemberAccessExpressionSyntax(parseNodeData, expression, consumeToken(_currentToken), eatIdentifierNameToken());
continue;
}
@ -2727,7 +2719,7 @@ module TypeScript.Parser {
var currentTokenKind = currentToken().kind();
return currentTokenKind === SyntaxKind.OpenParenToken || currentTokenKind === SyntaxKind.DotToken
? expression
: new syntaxFactory.MemberAccessExpressionSyntax(parseNodeData, expression, eatToken(SyntaxKind.DotToken), eatIdentifierNameToken());
: new MemberAccessExpressionSyntax(parseNodeData, expression, eatToken(SyntaxKind.DotToken), eatIdentifierNameToken());
}
function tryParsePostfixExpressionOrHigher(_currentToken: ISyntaxToken, force: boolean): IPostfixExpressionSyntax {
@ -2748,7 +2740,7 @@ module TypeScript.Parser {
break;
}
return new syntaxFactory.PostfixUnaryExpressionSyntax(parseNodeData, expression, consumeToken(_currentToken));
return new PostfixUnaryExpressionSyntax(parseNodeData, expression, consumeToken(_currentToken));
}
return expression;
@ -2790,7 +2782,7 @@ module TypeScript.Parser {
DiagnosticCode.A_parameter_list_must_follow_a_generic_type_argument_list_expected, undefined);
addDiagnostic(diagnostic);
return new syntaxFactory.ArgumentListSyntax(parseNodeData, typeArgumentList,
return new ArgumentListSyntax(parseNodeData, typeArgumentList,
Syntax.emptyToken(SyntaxKind.OpenParenToken), Syntax.emptySeparatedList<IExpressionSyntax>(), Syntax.emptyToken(SyntaxKind.CloseParenToken));
}
else {
@ -2824,7 +2816,7 @@ module TypeScript.Parser {
openParenToken = addSkippedTokensAfterToken(openParenToken, skippedTokens);
}
return new syntaxFactory.ArgumentListSyntax(parseNodeData, typeArgumentList, openParenToken, _arguments, eatToken(SyntaxKind.CloseParenToken));
return new ArgumentListSyntax(parseNodeData, typeArgumentList, openParenToken, _arguments, eatToken(SyntaxKind.CloseParenToken));
}
function tryParseArgumentListExpression(): IExpressionSyntax {
@ -2858,7 +2850,7 @@ module TypeScript.Parser {
function parseElementAccessExpression(expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, inObjectCreation: boolean): ElementAccessExpressionSyntax {
// Debug.assert(currentToken().kind() === SyntaxKind.OpenBracketToken);
return new syntaxFactory.ElementAccessExpressionSyntax(parseNodeData, expression, consumeToken(openBracketToken),
return new ElementAccessExpressionSyntax(parseNodeData, expression, consumeToken(openBracketToken),
parseElementAccessArgumentExpression(openBracketToken, inObjectCreation), eatToken(SyntaxKind.CloseBracketToken));
}
@ -2937,19 +2929,19 @@ module TypeScript.Parser {
}
function parseTypeOfExpression(typeOfKeyword: ISyntaxToken): TypeOfExpressionSyntax {
return new syntaxFactory.TypeOfExpressionSyntax(parseNodeData, consumeToken(typeOfKeyword), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
return new TypeOfExpressionSyntax(parseNodeData, consumeToken(typeOfKeyword), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
}
function parseDeleteExpression(deleteKeyword: ISyntaxToken): DeleteExpressionSyntax {
return new syntaxFactory.DeleteExpressionSyntax(parseNodeData, consumeToken(deleteKeyword), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
return new DeleteExpressionSyntax(parseNodeData, consumeToken(deleteKeyword), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
}
function parseVoidExpression(voidKeyword: ISyntaxToken): VoidExpressionSyntax {
return new syntaxFactory.VoidExpressionSyntax(parseNodeData, consumeToken(voidKeyword), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
return new VoidExpressionSyntax(parseNodeData, consumeToken(voidKeyword), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
}
function parseFunctionExpression(functionKeyword: ISyntaxToken): FunctionExpressionSyntax {
return new syntaxFactory.FunctionExpressionSyntax(parseNodeData,
return new FunctionExpressionSyntax(parseNodeData,
consumeToken(functionKeyword), eatOptionalIdentifierToken(),
parseCallSignature(/*requireCompleteTypeParameterList:*/ false),
parseBlock(/*parseStatementsEvenWithNoOpenBrace:*/ false, /*checkForStrictMode:*/ true));
@ -2965,17 +2957,17 @@ module TypeScript.Parser {
// See comment in tryParseMemberExpressionOrHigher for a more complete explanation of
// this decision.
return new syntaxFactory.ObjectCreationExpressionSyntax(parseNodeData,
return new ObjectCreationExpressionSyntax(parseNodeData,
consumeToken(newKeyword), tryParseMemberExpressionOrHigher(currentToken(), /*force:*/ true, /*inObjectCreation:*/ true), tryParseArgumentList());
}
function parseCastExpression(lessThanToken: ISyntaxToken): CastExpressionSyntax {
return new syntaxFactory.CastExpressionSyntax(parseNodeData,
return new CastExpressionSyntax(parseNodeData,
consumeToken(lessThanToken), parseType(), eatToken(SyntaxKind.GreaterThanToken), tryParseUnaryExpressionOrHigher(currentToken(), /*force:*/ true));
}
function parseParenthesizedExpression(openParenToken: ISyntaxToken): ParenthesizedExpressionSyntax {
return new syntaxFactory.ParenthesizedExpressionSyntax(parseNodeData,
return new ParenthesizedExpressionSyntax(parseNodeData,
consumeToken(openParenToken), parseExpression(/*allowIn:*/ true), eatToken(SyntaxKind.CloseParenToken));
}
@ -3036,7 +3028,7 @@ module TypeScript.Parser {
expression = tryParseAssignmentExpressionOrHigher(/*force:*/ true, /*allowIn:*/ true);
}
return new syntaxFactory.ParenthesizedArrowFunctionExpressionSyntax(parseNodeData, callSignature, equalsGreaterThanToken, block, expression);
return new ParenthesizedArrowFunctionExpressionSyntax(parseNodeData, callSignature, equalsGreaterThanToken, block, expression);
}
function tryParseArrowFunctionBlock(): BlockSyntax {
@ -3092,7 +3084,7 @@ module TypeScript.Parser {
expression = tryParseAssignmentExpressionOrHigher(/*force:*/ true, /*allowIn:*/ true);
}
return new syntaxFactory.SimpleArrowFunctionExpressionSyntax(parseNodeData, parameter, equalsGreaterThanToken, block, expression);
return new SimpleArrowFunctionExpressionSyntax(parseNodeData, parameter, equalsGreaterThanToken, block, expression);
}
function isBlock(): boolean {
@ -3268,7 +3260,7 @@ module TypeScript.Parser {
var propertyAssignments = parseSeparatedSyntaxList<IPropertyAssignmentSyntax>(ListParsingState.ObjectLiteralExpression_PropertyAssignments, skippedTokens);
openBraceToken = addSkippedTokensAfterToken(openBraceToken, skippedTokens);
return new syntaxFactory.ObjectLiteralExpressionSyntax(parseNodeData, openBraceToken, propertyAssignments, eatToken(SyntaxKind.CloseBraceToken));
return new ObjectLiteralExpressionSyntax(parseNodeData, openBraceToken, propertyAssignments, eatToken(SyntaxKind.CloseBraceToken));
}
function tryParsePropertyAssignment(inErrorRecovery: boolean): IPropertyAssignmentSyntax {
@ -3307,7 +3299,7 @@ module TypeScript.Parser {
}
function parseFunctionPropertyAssignment(): FunctionPropertyAssignmentSyntax {
return new syntaxFactory.FunctionPropertyAssignmentSyntax(parseNodeData,
return new FunctionPropertyAssignmentSyntax(parseNodeData,
eatPropertyName(), parseCallSignature(/*requireCompleteTypeParameterList:*/ false),
parseBlock(/*parseBlockEvenWithNoOpenBrace:*/ false, /*checkForStrictMode:*/ true));
}
@ -3317,7 +3309,7 @@ module TypeScript.Parser {
}
function parseSimplePropertyAssignment(): SimplePropertyAssignmentSyntax {
return new syntaxFactory.SimplePropertyAssignmentSyntax(parseNodeData,
return new SimplePropertyAssignmentSyntax(parseNodeData,
eatPropertyName(), eatToken(SyntaxKind.ColonToken), tryParseAssignmentExpressionOrHigher(/*force:*/ true, /*allowIn:*/ true));
}
@ -3353,7 +3345,7 @@ module TypeScript.Parser {
var expressions = parseSeparatedSyntaxList<IExpressionSyntax>(ListParsingState.ArrayLiteralExpression_AssignmentExpressions, skippedTokens);
openBracketToken = addSkippedTokensAfterToken(openBracketToken, skippedTokens);
return new syntaxFactory.ArrayLiteralExpressionSyntax(parseNodeData, openBracketToken, expressions, eatToken(SyntaxKind.CloseBracketToken));
return new ArrayLiteralExpressionSyntax(parseNodeData, openBracketToken, expressions, eatToken(SyntaxKind.CloseBracketToken));
}
function parseBlock(parseBlockEvenWithNoOpenBrace: boolean, checkForStrictMode: boolean): BlockSyntax {
@ -3371,11 +3363,11 @@ module TypeScript.Parser {
setStrictMode(savedIsInStrictMode);
}
return new syntaxFactory.BlockSyntax(parseNodeData, openBraceToken, statements, eatToken(SyntaxKind.CloseBraceToken));
return new BlockSyntax(parseNodeData, openBraceToken, statements, eatToken(SyntaxKind.CloseBraceToken));
}
function parseCallSignature(requireCompleteTypeParameterList: boolean): CallSignatureSyntax {
return new syntaxFactory.CallSignatureSyntax(parseNodeData,
return new CallSignatureSyntax(parseNodeData,
tryParseTypeParameterList(requireCompleteTypeParameterList), parseParameterList(), parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false));
}
@ -3403,7 +3395,7 @@ module TypeScript.Parser {
}
else {
releaseRewindPoint(rewindPoint);
return new syntaxFactory.TypeParameterListSyntax(parseNodeData, lessThanToken, typeParameters, greaterThanToken);
return new TypeParameterListSyntax(parseNodeData, lessThanToken, typeParameters, greaterThanToken);
}
}
@ -3417,7 +3409,7 @@ module TypeScript.Parser {
return undefined;
}
return new syntaxFactory.TypeParameterSyntax(parseNodeData, eatIdentifierToken(), tryParseConstraint());
return new TypeParameterSyntax(parseNodeData, eatIdentifierToken(), tryParseConstraint());
}
function tryParseConstraint(): ConstraintSyntax {
@ -3425,7 +3417,7 @@ module TypeScript.Parser {
return undefined;
}
return new syntaxFactory.ConstraintSyntax(parseNodeData, eatToken(SyntaxKind.ExtendsKeyword), parseTypeOrExpression());
return new ConstraintSyntax(parseNodeData, eatToken(SyntaxKind.ExtendsKeyword), parseTypeOrExpression());
}
function tryParseParameterList(): ParameterListSyntax {
@ -3450,7 +3442,7 @@ module TypeScript.Parser {
openParenToken = addSkippedTokensAfterToken(openParenToken, skippedTokens);
}
return new syntaxFactory.ParameterListSyntax(parseNodeData, openParenToken, parameters, eatToken(SyntaxKind.CloseParenToken));
return new ParameterListSyntax(parseNodeData, openParenToken, parameters, eatToken(SyntaxKind.CloseParenToken));
}
function parseOptionalTypeAnnotation(allowStringLiteral: boolean): TypeAnnotationSyntax {
@ -3469,7 +3461,7 @@ module TypeScript.Parser {
}
function parseTypeAnnotation(allowStringLiteral: boolean): TypeAnnotationSyntax {
return new syntaxFactory.TypeAnnotationSyntax(parseNodeData, consumeToken(currentToken()), parseTypeAnnotationType(allowStringLiteral));
return new TypeAnnotationSyntax(parseNodeData, consumeToken(currentToken()), parseTypeAnnotationType(allowStringLiteral));
}
function isType(): boolean {
@ -3539,7 +3531,7 @@ module TypeScript.Parser {
consumeToken(barToken);
var right = parsePrimaryType();
type = new syntaxFactory.UnionTypeSyntax(parseNodeData, type, barToken, right);
type = new UnionTypeSyntax(parseNodeData, type, barToken, right);
}
}
@ -3567,14 +3559,14 @@ module TypeScript.Parser {
break;
}
type = new syntaxFactory.ArrayTypeSyntax(parseNodeData, type, consumeToken(_currentToken), eatToken(SyntaxKind.CloseBracketToken));
type = new ArrayTypeSyntax(parseNodeData, type, consumeToken(_currentToken), eatToken(SyntaxKind.CloseBracketToken));
}
return type;
}
function parseTypeQuery(typeOfKeyword: ISyntaxToken): TypeQuerySyntax {
return new syntaxFactory.TypeQuerySyntax(parseNodeData, consumeToken(typeOfKeyword), parseName(/*allowIdentifierNames:*/ true));
return new TypeQuerySyntax(parseNodeData, consumeToken(typeOfKeyword), parseName(/*allowIdentifierNames:*/ true));
}
function tryParseNonArrayType(): ITypeSyntax {
@ -3602,7 +3594,7 @@ module TypeScript.Parser {
}
function parseParenthesizedType(openParenToken: ISyntaxToken): ParenthesizedTypeSyntax {
return new syntaxFactory.ParenthesizedTypeSyntax(parseNodeData, consumeToken(openParenToken), parseType(), eatToken(SyntaxKind.CloseParenToken));
return new ParenthesizedTypeSyntax(parseNodeData, consumeToken(openParenToken), parseType(), eatToken(SyntaxKind.CloseParenToken));
}
function tryParseNameOrGenericType(): ITypeSyntax {
@ -3622,7 +3614,7 @@ module TypeScript.Parser {
var typeArgumentList = tryParseTypeArgumentList(/*inExpression:*/ false);
return !typeArgumentList
? name
: new syntaxFactory.GenericTypeSyntax(parseNodeData, name, typeArgumentList);
: new GenericTypeSyntax(parseNodeData, name, typeArgumentList);
}
function isFunctionType(): boolean {
@ -3691,12 +3683,12 @@ module TypeScript.Parser {
var typeParameterList = tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false);
var parameterList = parseParameterList();
return new syntaxFactory.FunctionTypeSyntax(parseNodeData,
return new FunctionTypeSyntax(parseNodeData,
typeParameterList, parameterList, eatToken(SyntaxKind.EqualsGreaterThanToken), parseType());
}
function parseConstructorType(): ConstructorTypeSyntax {
return new syntaxFactory.ConstructorTypeSyntax(parseNodeData,
return new ConstructorTypeSyntax(parseNodeData,
eatToken(SyntaxKind.NewKeyword), tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false),
parseParameterList(), eatToken(SyntaxKind.EqualsGreaterThanToken), parseType());
}
@ -3717,7 +3709,7 @@ module TypeScript.Parser {
}
function eatSimpleParameter() {
return new syntaxFactory.ParameterSyntax(parseNodeData,
return new ParameterSyntax(parseNodeData,
/*dotDotDotToken:*/ undefined, /*modifiers:*/ Syntax.emptyList<ISyntaxToken>(), eatIdentifierToken(),
/*questionToken:*/ undefined, /*typeAnnotation:*/ undefined, /*equalsValueClause:*/ undefined);
}
@ -3757,7 +3749,7 @@ module TypeScript.Parser {
equalsValueClause = parseEqualsValueClause(/*allowIn:*/ true);
}
return new syntaxFactory.ParameterSyntax(parseNodeData, dotDotDotToken, modifiers, identifier, questionToken, typeAnnotation, equalsValueClause);
return new ParameterSyntax(parseNodeData, dotDotDotToken, modifiers, identifier, questionToken, typeAnnotation, equalsValueClause);
}
function parseSyntaxList<T extends ISyntaxNodeOrToken>(
@ -3810,30 +3802,27 @@ module TypeScript.Parser {
// Continue parsing this list. Attach this token to whatever we've seen already.
return false;
}
function addSkippedTokenToList(
nodesAndSeparators: ISyntaxNodeOrToken[], skippedTokens: ISyntaxToken[], skippedToken: ISyntaxToken): void {
nodesAndSeparators: ISyntaxNodeOrToken[], skippedTokens: ISyntaxToken[], skippedToken: ISyntaxToken): void {
// Now, add this skipped token to the last item we successfully parsed in the list. Or
// add it to the list of skipped tokens if we haven't parsed anything. Our caller will
// have to deal with them.
//
// Note: we only bother doing this if we're creating a concrete syntax tree.
if (syntaxFactory.isConcrete) {
var length = nodesAndSeparators.length;
var length = nodesAndSeparators.length;
for (var i = length - 1; i >= 0; i--) {
var item = nodesAndSeparators[i];
var _lastToken = lastToken(item);
if (_lastToken && _lastToken.fullWidth() > 0) {
nodesAndSeparators[i] = addSkippedTokenAfterNodeOrToken(item, skippedToken);
return;
}
for (var i = length - 1; i >= 0; i--) {
var item = nodesAndSeparators[i];
var _lastToken = lastToken(item);
if (_lastToken && _lastToken.fullWidth() > 0) {
nodesAndSeparators[i] = addSkippedTokenAfterNodeOrToken(item, skippedToken);
return;
}
// Didn't have anything in the list we could add to. Add to the skipped items array
// for our caller to handle.
skippedTokens.push(skippedToken);
}
// Didn't have anything in the list we could add to. Add to the skipped items array
// for our caller to handle.
skippedTokens.push(skippedToken);
}
function tryParseExpectedListItem(

View File

@ -19,7 +19,6 @@
///<reference path='syntaxList.ts' />
///<reference path='syntaxNode.ts' />
///<reference path='syntaxNodeOrToken.ts' />
///<reference path='syntaxNodes.interfaces.generated.ts' />
// SyntaxDedenter depends on SyntaxRewriter
// ///<reference path='syntaxDedenter.ts' />

View File

@ -2036,49 +2036,7 @@ function generateSyntaxInterfaces(): string {
result += generateSyntaxInterface(definition);
}
result += "\r\n\r\n";
/*
result += " export var nodeMetadata: string[][] = [";
for (var i = 0; i <= TypeScript.SyntaxKind.LastNode; i++) {
if (i < TypeScript.SyntaxKind.FirstNode) {
result += "[],";
continue;
}
var kindName = syntaxKindName(i);
var definition = getDefinitionForKind(i);
var metadata = "[";
var children = definition.children.filter(m => m.type !== "SyntaxKind").map(m => '"' + m.name + '"');
metadata += children.join(",");
metadata += "],";
result += metadata;
}
result += "];\r\n\r\n";
*/
result += " export module Syntax {\r\n"
result += " export interface ISyntaxFactory {\r\n";
result += " isConcrete: boolean;\r\n";
for (var i = 0; i < definitions.length; i++) {
var definition = definitions[i];
result += " " + definition.name + ": { new(data: number";
for (var j = 0; j < definition.children.length; j++) {
var child = definition.children[j];
result += ", " + child.name + ": " + getType(child);
}
result += "): " + definition.name + " };\r\n";
}
result += " }\r\n";
result += " }\r\n";
result += "\r\n";
result += "}";
return result;
@ -2112,16 +2070,9 @@ function generateSyntaxInterface(definition: ITypeDefinition): string {
function generateNodes(abstract: boolean): string {
var result = "///<reference path='references.ts' />\r\n\r\n";
result += "module TypeScript.Syntax.";
var moduleName = abstract ? "Abstract" : "Concrete";
result += moduleName;
result += "module TypeScript";
result += " {\r\n";
result += " // Inject this module as the factory for producing syntax nodes in the parser.\r\n";
result += " Parser.syntaxFactory = " + moduleName + ";\r\n";
result += " export var isConcrete: boolean = " + !abstract + ";\r\n\r\n";
for (var i = 0; i < definitions.length; i++) {
var definition = definitions[i];
@ -2131,24 +2082,6 @@ function generateNodes(abstract: boolean): string {
result += generateNode(definition, abstract);
}
/*
result += "\r\n\r\n ";
for (var i = 0; i < definitions.length; i++) {
var definition = definitions[i];
if (definition.syntaxKinds) {
continue;
}
if (i) {
result += ", "
}
result += "(<any>" + definition.name + ").prototype.__kind = SyntaxKind." + getNameWithoutSuffix(definition)
}
result += ";\r\n";*/
result += "\r\n}";
return result;
@ -2834,7 +2767,6 @@ var defaultVisitor = generateDefaultVisitor();
var servicesUtilities = generateServicesUtilities();
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false);
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.interfaces.generated.ts", syntaxInterfaces, false);
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxRewriter.generated.ts", rewriter, false);
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker.generated.ts", walker, false);
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false);

View File

@ -1,499 +0,0 @@
///<reference path='references.ts' />
module TypeScript {
export enum NodeFlags {
Export = 0x00000001, // Declarations
Ambient = 0x00000002, // Declarations
Optional = 0x00000004, // Parameter/Property/Method
Rest = 0x00000008, // Parameter
Public = 0x00000010, // Property/Method
Private = 0x00000020, // Property/Method
Static = 0x00000040, // Property/Method
}
interface SyntaxElement {
kind: SyntaxKind;
}
interface SyntaxNode extends SyntaxElement {
flags: NodeFlags;
}
function nodeStart(node: Node): number {
}
function nodeWidth(node: Node): number {
}
interface SyntaxToken extends Name, PrimaryExpression {
}
// The raw text of the token, as written in the original source.
function tokenText(token: SyntaxToken): string {
}
// The token's javascript value. i.e. 0.0 in the text would have the javascript number value: 0.
function tokenValue(token: SyntaxToken): any {
}
// The token's value in string form. i.e. \u0041 in the source text would result in a string with the text: A.
function tokenValueText(token: SyntaxToken): string {
}
interface SyntaxList<T> extends SyntaxElement {
length: number;
item(index: number): T;
}
interface SourceUnit extends Node {
moduleElements: SyntaxList<ModuleElement>;
}
interface QualifiedName extends Name {
left: Name;
right: SyntaxToken;
}
interface ObjectType extends Type {
typeMembers: SyntaxList<TypeMember>;
}
interface FunctionType extends Type {
typeParameterList?: TypeParameterList;
parameterList: ParameterList;
type: Type;
}
interface ArrayType extends Type {
type: Type;
}
interface ConstructorType extends Type {
typeParameterList?: TypeParameterList;
parameterList: ParameterList;
type: Type;
}
interface GenericType extends Type {
name: Name;
typeArgumentList: TypeArgumentList;
}
interface TypeQuery extends Type {
name: Name;
}
interface InterfaceDeclaration extends ModuleElement {
identifier: SyntaxToken;
typeParameterList?: TypeParameterList;
heritageClauses: SyntaxList<HeritageClause>;
body: ObjectType;
}
interface FunctionDeclaration extends Statement {
identifier: SyntaxToken;
callSignature: CallSignature;
block?: Block;
}
interface ModuleDeclaration extends ModuleElement {
name?: Name;
stringLiteral?: SyntaxToken;
moduleElements: SyntaxList<ModuleElement>;
}
interface ClassDeclaration extends ModuleElement {
identifier: SyntaxToken;
typeParameterList?: TypeParameterList;
heritageClauses: SyntaxList<HeritageClause>;
classElements: SyntaxList<ClassElement>;
}
interface EnumDeclaration extends ModuleElement {
identifier: SyntaxToken;
enumElements: SyntaxList<EnumElement>;
}
interface ImportDeclaration extends ModuleElement {
identifier: SyntaxToken;
moduleReference: ModuleReference;
}
interface ExportAssignment extends ModuleElement {
identifier: SyntaxToken;
}
interface MemberFunctionDeclaration extends MemberDeclaration {
propertyName: SyntaxToken;
callSignature: CallSignature;
block?: Block;
}
interface MemberVariableDeclaration extends MemberDeclaration {
variableDeclarator: VariableDeclarator;
}
interface ConstructorDeclaration extends ClassElement {
callSignature: CallSignature;
block?: Block;
}
interface IndexMemberDeclaration extends ClassElement {
indexSignature: IndexSignature;
}
interface GetAccessor extends MemberDeclaration, PropertyAssignment {
propertyName: SyntaxToken;
callSignature: CallSignature;
block: Block;
}
interface SetAccessor extends MemberDeclaration, PropertyAssignment {
propertyName: SyntaxToken;
callSignature: CallSignature;
block: Block;
}
interface PropertySignature extends TypeMember {
propertyName: SyntaxToken;
typeAnnotation?: TypeAnnotation;
}
interface CallSignature extends TypeMember {
typeParameterList?: TypeParameterList;
parameterList: ParameterList;
typeAnnotation?: TypeAnnotation;
}
interface ConstructSignature extends TypeMember {
callSignature: CallSignature;
}
interface IndexSignature extends TypeMember {
parameters: SyntaxList<Parameter>;
typeAnnotation?: TypeAnnotation;
}
interface MethodSignature extends TypeMember {
propertyName: SyntaxToken;
callSignature: CallSignature;
}
interface Block extends Statement {
statements: SyntaxList<Statement>;
}
interface IfStatement extends Statement {
condition: Expression;
statement: Statement;
elseClause?: ElseClause;
}
interface VariableStatement extends Statement {
variableDeclaration: VariableDeclaration;
}
interface ExpressionStatement extends Statement {
expression: Expression;
}
interface ReturnStatement extends Statement {
expression?: Expression;
}
interface SwitchStatement extends Statement {
expression: Expression;
switchClauses: SyntaxList<SwitchClause>;
}
interface BreakStatement extends Statement {
identifier?: SyntaxToken;
}
interface ContinueStatement extends Statement {
identifier?: SyntaxToken;
}
interface ForStatement extends Statement {
variableDeclaration?: VariableDeclaration;
initializer?: Expression;
condition?: Expression;
incrementor?: Expression;
statement: Statement;
}
interface ForInStatement extends Statement {
variableDeclaration?: VariableDeclaration;
left?: Expression;
expression: Expression;
statement: Statement;
}
interface ThrowStatement extends Statement {
expression: Expression;
}
interface WhileStatement extends Statement {
condition: Expression;
statement: Statement;
}
interface TryStatement extends Statement {
block: Block;
catchClause?: CatchClause;
finallyClause?: FinallyClause;
}
interface LabeledStatement extends Statement {
identifier: SyntaxToken;
statement: Statement;
}
interface DoStatement extends Statement {
statement: Statement;
condition: Expression;
}
interface WithStatement extends Statement {
condition: Expression;
statement: Statement;
}
interface PrefixUnaryExpression extends UnaryExpression {
operand: UnaryExpression;
}
interface DeleteExpression extends UnaryExpression {
expression: UnaryExpression;
}
interface TypeOfExpression extends UnaryExpression {
expression: UnaryExpression;
}
interface VoidExpression extends UnaryExpression {
expression: UnaryExpression;
}
interface ConditionalExpression extends Expression {
condition: Expression;
whenTrue: Expression;
whenFalse: Expression;
}
interface BinaryExpression extends Expression {
left: Expression;
right: Expression;
}
interface PostfixUnaryExpression extends PostfixExpression {
operand: LeftHandSideExpression;
}
interface MemberAccessExpression extends MemberExpression, CallExpression {
expression: LeftHandSideExpression;
name: SyntaxToken;
}
interface InvocationExpression extends CallExpression {
expression: LeftHandSideExpression;
argumentList: ArgumentList;
}
interface ArrayLiteralExpression extends PrimaryExpression {
expressions: SyntaxList<Expression>;
}
interface ObjectLiteralExpression extends PrimaryExpression {
propertyAssignments: SyntaxList<PropertyAssignment>;
}
interface ObjectCreationExpression extends MemberExpression {
expression: MemberExpression;
argumentList?: ArgumentList;
}
interface ParenthesizedExpression extends PrimaryExpression {
expression: Expression;
}
interface ParenthesizedArrowFunctionExpression extends UnaryExpression {
callSignature: CallSignature;
block?: Block;
expression?: Expression;
}
interface SimpleArrowFunctionExpression extends UnaryExpression {
parameter: Parameter;
block?: Block;
expression?: Expression;
}
interface CastExpression extends UnaryExpression {
type: Type;
expression: UnaryExpression;
}
interface ElementAccessExpression extends MemberExpression, CallExpression {
expression: LeftHandSideExpression;
argumentExpression: Expression;
}
interface FunctionExpression extends PrimaryExpression {
identifier?: SyntaxToken;
callSignature: CallSignature;
block: Block;
}
interface VariableDeclaration extends Node {
variableDeclarators: SyntaxList<VariableDeclarator>;
}
interface VariableDeclarator extends Node {
propertyName: SyntaxToken;
typeAnnotation?: TypeAnnotation;
equalsValueClause?: EqualsValueClause;
}
interface ArgumentList extends Node {
typeArgumentList?: TypeArgumentList;
arguments: SyntaxList<Expression>;
}
interface ParameterList extends Node {
parameters: SyntaxList<Parameter>;
}
interface TypeArgumentList extends Node {
typeArguments: SyntaxList<Type>;
}
interface TypeParameterList extends Node {
typeParameters: SyntaxList<TypeParameter>;
}
interface HeritageClause extends Node {
typeNames: SyntaxList<Name>;
}
interface EqualsValueClause extends Node {
value: Expression;
}
interface CaseSwitchClause extends SwitchClause {
expression: Expression;
statements: SyntaxList<Statement>;
}
interface DefaultSwitchClause extends SwitchClause {
statements: SyntaxList<Statement>;
}
interface ElseClause extends Node {
statement: Statement;
}
interface CatchClause extends Node {
identifier: SyntaxToken;
typeAnnotation?: TypeAnnotation;
block: Block;
}
interface FinallyClause extends Node {
block: Block;
}
interface TypeParameter extends Node {
identifier: SyntaxToken;
constraint?: Constraint;
}
interface Constraint extends Node {
type: Type;
}
interface SimplePropertyAssignment extends PropertyAssignment {
propertyName: SyntaxToken;
expression: Expression;
}
interface FunctionPropertyAssignment extends PropertyAssignment {
propertyName: SyntaxToken;
callSignature: CallSignature;
block: Block;
}
interface Parameter extends Node {
identifier: SyntaxToken;
typeAnnotation?: TypeAnnotation;
equalsValueClause?: EqualsValueClause;
}
interface EnumElement extends Node {
propertyName: SyntaxToken;
equalsValueClause?: EqualsValueClause;
}
interface TypeAnnotation extends Node {
type: Type;
}
interface ExternalModuleReference extends ModuleReference {
stringLiteral: SyntaxToken;
}
interface ModuleNameModuleReference extends ModuleReference {
moduleName: Name;
}
interface MemberDeclaration extends ClassElement {
}
interface Statement extends ModuleElement {
}
interface Name extends Type {
}
interface UnaryExpression extends Expression {
}
interface PostfixExpression extends UnaryExpression {
}
interface LeftHandSideExpression extends PostfixExpression {
}
interface MemberExpression extends LeftHandSideExpression {
}
interface CallExpression extends LeftHandSideExpression {
}
interface PrimaryExpression extends MemberExpression {
}
interface ModuleElement extends SyntaxElement {
}
interface ModuleReference extends Node {
}
interface ClassElement extends Node {
}
interface TypeMember extends Node {
}
interface PropertyAssignment extends Node {
}
interface SwitchClause extends Node {
}
interface Expression extends SyntaxElement {
}
interface Type extends SyntaxElement {
}
}

View File

@ -1,10 +1,6 @@
///<reference path='references.ts' />
module TypeScript.Syntax.Concrete {
// Inject this module as the factory for producing syntax nodes in the parser.
Parser.syntaxFactory = Concrete;
export var isConcrete: boolean = true;
module TypeScript {
export class SourceUnitSyntax extends SyntaxNode {
public syntaxTree: SyntaxTree = undefined;
public moduleElements: IModuleElementSyntax[];

View File

@ -492,98 +492,4 @@ module TypeScript {
export interface ModuleNameModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax {
moduleName: INameSyntax;
}
export module Syntax {
export interface ISyntaxFactory {
isConcrete: boolean;
SourceUnitSyntax: { new(data: number, moduleElements: IModuleElementSyntax[], endOfFileToken: ISyntaxToken): SourceUnitSyntax };
QualifiedNameSyntax: { new(data: number, left: INameSyntax, dotToken: ISyntaxToken, right: ISyntaxToken): QualifiedNameSyntax };
ObjectTypeSyntax: { new(data: number, openBraceToken: ISyntaxToken, typeMembers: ISeparatedSyntaxList<ITypeMemberSyntax>, closeBraceToken: ISyntaxToken): ObjectTypeSyntax };
FunctionTypeSyntax: { new(data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax): FunctionTypeSyntax };
ArrayTypeSyntax: { new(data: number, type: ITypeSyntax, openBracketToken: ISyntaxToken, closeBracketToken: ISyntaxToken): ArrayTypeSyntax };
ConstructorTypeSyntax: { new(data: number, newKeyword: ISyntaxToken, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax): ConstructorTypeSyntax };
GenericTypeSyntax: { new(data: number, name: INameSyntax, typeArgumentList: TypeArgumentListSyntax): GenericTypeSyntax };
TypeQuerySyntax: { new(data: number, typeOfKeyword: ISyntaxToken, name: INameSyntax): TypeQuerySyntax };
TupleTypeSyntax: { new(data: number, openBracketToken: ISyntaxToken, types: ISeparatedSyntaxList<ITypeSyntax>, closeBracketToken: ISyntaxToken): TupleTypeSyntax };
UnionTypeSyntax: { new(data: number, left: ITypeSyntax, barToken: ISyntaxToken, right: ITypeSyntax): UnionTypeSyntax };
ParenthesizedTypeSyntax: { new(data: number, openParenToken: ISyntaxToken, type: ITypeSyntax, closeParenToken: ISyntaxToken): ParenthesizedTypeSyntax };
InterfaceDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], interfaceKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], body: ObjectTypeSyntax): InterfaceDeclarationSyntax };
FunctionDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax, semicolonToken: ISyntaxToken): FunctionDeclarationSyntax };
ModuleDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], moduleKeyword: ISyntaxToken, name: INameSyntax, stringLiteral: ISyntaxToken, openBraceToken: ISyntaxToken, moduleElements: IModuleElementSyntax[], closeBraceToken: ISyntaxToken): ModuleDeclarationSyntax };
ClassDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], classKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], openBraceToken: ISyntaxToken, classElements: IClassElementSyntax[], closeBraceToken: ISyntaxToken): ClassDeclarationSyntax };
EnumDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], enumKeyword: ISyntaxToken, identifier: ISyntaxToken, openBraceToken: ISyntaxToken, enumElements: ISeparatedSyntaxList<EnumElementSyntax>, closeBraceToken: ISyntaxToken): EnumDeclarationSyntax };
ImportDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], importKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, moduleReference: IModuleReferenceSyntax, semicolonToken: ISyntaxToken): ImportDeclarationSyntax };
ExportAssignmentSyntax: { new(data: number, exportKeyword: ISyntaxToken, equalsToken: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken): ExportAssignmentSyntax };
MemberFunctionDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax, semicolonToken: ISyntaxToken): MemberFunctionDeclarationSyntax };
MemberVariableDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], variableDeclarator: VariableDeclaratorSyntax, semicolonToken: ISyntaxToken): MemberVariableDeclarationSyntax };
ConstructorDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax, semicolonToken: ISyntaxToken): ConstructorDeclarationSyntax };
IndexMemberDeclarationSyntax: { new(data: number, modifiers: ISyntaxToken[], indexSignature: IndexSignatureSyntax, semicolonToken: ISyntaxToken): IndexMemberDeclarationSyntax };
GetAccessorSyntax: { new(data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax): GetAccessorSyntax };
SetAccessorSyntax: { new(data: number, modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax): SetAccessorSyntax };
PropertySignatureSyntax: { new(data: number, propertyName: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax): PropertySignatureSyntax };
CallSignatureSyntax: { new(data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, typeAnnotation: TypeAnnotationSyntax): CallSignatureSyntax };
ConstructSignatureSyntax: { new(data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax): ConstructSignatureSyntax };
IndexSignatureSyntax: { new(data: number, openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList<ParameterSyntax>, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax): IndexSignatureSyntax };
MethodSignatureSyntax: { new(data: number, propertyName: ISyntaxToken, questionToken: ISyntaxToken, callSignature: CallSignatureSyntax): MethodSignatureSyntax };
BlockSyntax: { new(data: number, openBraceToken: ISyntaxToken, statements: IStatementSyntax[], closeBraceToken: ISyntaxToken): BlockSyntax };
IfStatementSyntax: { new(data: number, ifKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax, elseClause: ElseClauseSyntax): IfStatementSyntax };
VariableStatementSyntax: { new(data: number, modifiers: ISyntaxToken[], variableDeclaration: VariableDeclarationSyntax, semicolonToken: ISyntaxToken): VariableStatementSyntax };
ExpressionStatementSyntax: { new(data: number, expression: IExpressionSyntax, semicolonToken: ISyntaxToken): ExpressionStatementSyntax };
ReturnStatementSyntax: { new(data: number, returnKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken): ReturnStatementSyntax };
SwitchStatementSyntax: { new(data: number, switchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, openBraceToken: ISyntaxToken, switchClauses: ISwitchClauseSyntax[], closeBraceToken: ISyntaxToken): SwitchStatementSyntax };
BreakStatementSyntax: { new(data: number, breakKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken): BreakStatementSyntax };
ContinueStatementSyntax: { new(data: number, continueKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken): ContinueStatementSyntax };
ForStatementSyntax: { new(data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, variableDeclaration: VariableDeclarationSyntax, initializer: IExpressionSyntax, firstSemicolonToken: ISyntaxToken, condition: IExpressionSyntax, secondSemicolonToken: ISyntaxToken, incrementor: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): ForStatementSyntax };
ForInStatementSyntax: { new(data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, variableDeclaration: VariableDeclarationSyntax, left: IExpressionSyntax, inKeyword: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): ForInStatementSyntax };
EmptyStatementSyntax: { new(data: number, semicolonToken: ISyntaxToken): EmptyStatementSyntax };
ThrowStatementSyntax: { new(data: number, throwKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken): ThrowStatementSyntax };
WhileStatementSyntax: { new(data: number, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): WhileStatementSyntax };
TryStatementSyntax: { new(data: number, tryKeyword: ISyntaxToken, block: BlockSyntax, catchClause: CatchClauseSyntax, finallyClause: FinallyClauseSyntax): TryStatementSyntax };
LabeledStatementSyntax: { new(data: number, identifier: ISyntaxToken, colonToken: ISyntaxToken, statement: IStatementSyntax): LabeledStatementSyntax };
DoStatementSyntax: { new(data: number, doKeyword: ISyntaxToken, statement: IStatementSyntax, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, semicolonToken: ISyntaxToken): DoStatementSyntax };
DebuggerStatementSyntax: { new(data: number, debuggerKeyword: ISyntaxToken, semicolonToken: ISyntaxToken): DebuggerStatementSyntax };
WithStatementSyntax: { new(data: number, withKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax): WithStatementSyntax };
PrefixUnaryExpressionSyntax: { new(data: number, operatorToken: ISyntaxToken, operand: IUnaryExpressionSyntax): PrefixUnaryExpressionSyntax };
DeleteExpressionSyntax: { new(data: number, deleteKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): DeleteExpressionSyntax };
TypeOfExpressionSyntax: { new(data: number, typeOfKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): TypeOfExpressionSyntax };
VoidExpressionSyntax: { new(data: number, voidKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax): VoidExpressionSyntax };
ConditionalExpressionSyntax: { new(data: number, condition: IExpressionSyntax, questionToken: ISyntaxToken, whenTrue: IExpressionSyntax, colonToken: ISyntaxToken, whenFalse: IExpressionSyntax): ConditionalExpressionSyntax };
BinaryExpressionSyntax: { new(data: number, left: IExpressionSyntax, operatorToken: ISyntaxToken, right: IExpressionSyntax): BinaryExpressionSyntax };
PostfixUnaryExpressionSyntax: { new(data: number, operand: ILeftHandSideExpressionSyntax, operatorToken: ISyntaxToken): PostfixUnaryExpressionSyntax };
MemberAccessExpressionSyntax: { new(data: number, expression: ILeftHandSideExpressionSyntax, dotToken: ISyntaxToken, name: ISyntaxToken): MemberAccessExpressionSyntax };
InvocationExpressionSyntax: { new(data: number, expression: ILeftHandSideExpressionSyntax, argumentList: ArgumentListSyntax): InvocationExpressionSyntax };
ArrayLiteralExpressionSyntax: { new(data: number, openBracketToken: ISyntaxToken, expressions: ISeparatedSyntaxList<IExpressionSyntax>, closeBracketToken: ISyntaxToken): ArrayLiteralExpressionSyntax };
ObjectLiteralExpressionSyntax: { new(data: number, openBraceToken: ISyntaxToken, propertyAssignments: ISeparatedSyntaxList<IPropertyAssignmentSyntax>, closeBraceToken: ISyntaxToken): ObjectLiteralExpressionSyntax };
ObjectCreationExpressionSyntax: { new(data: number, newKeyword: ISyntaxToken, expression: IMemberExpressionSyntax, argumentList: ArgumentListSyntax): ObjectCreationExpressionSyntax };
ParenthesizedExpressionSyntax: { new(data: number, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken): ParenthesizedExpressionSyntax };
ParenthesizedArrowFunctionExpressionSyntax: { new(data: number, callSignature: CallSignatureSyntax, equalsGreaterThanToken: ISyntaxToken, block: BlockSyntax, expression: IExpressionSyntax): ParenthesizedArrowFunctionExpressionSyntax };
SimpleArrowFunctionExpressionSyntax: { new(data: number, parameter: ParameterSyntax, equalsGreaterThanToken: ISyntaxToken, block: BlockSyntax, expression: IExpressionSyntax): SimpleArrowFunctionExpressionSyntax };
CastExpressionSyntax: { new(data: number, lessThanToken: ISyntaxToken, type: ITypeSyntax, greaterThanToken: ISyntaxToken, expression: IUnaryExpressionSyntax): CastExpressionSyntax };
ElementAccessExpressionSyntax: { new(data: number, expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, argumentExpression: IExpressionSyntax, closeBracketToken: ISyntaxToken): ElementAccessExpressionSyntax };
FunctionExpressionSyntax: { new(data: number, functionKeyword: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax): FunctionExpressionSyntax };
OmittedExpressionSyntax: { new(data: number): OmittedExpressionSyntax };
VariableDeclarationSyntax: { new(data: number, varKeyword: ISyntaxToken, variableDeclarators: ISeparatedSyntaxList<VariableDeclaratorSyntax>): VariableDeclarationSyntax };
VariableDeclaratorSyntax: { new(data: number, propertyName: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax): VariableDeclaratorSyntax };
ArgumentListSyntax: { new(data: number, typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken, arguments: ISeparatedSyntaxList<IExpressionSyntax>, closeParenToken: ISyntaxToken): ArgumentListSyntax };
ParameterListSyntax: { new(data: number, openParenToken: ISyntaxToken, parameters: ISeparatedSyntaxList<ParameterSyntax>, closeParenToken: ISyntaxToken): ParameterListSyntax };
TypeArgumentListSyntax: { new(data: number, lessThanToken: ISyntaxToken, typeArguments: ISeparatedSyntaxList<ITypeSyntax>, greaterThanToken: ISyntaxToken): TypeArgumentListSyntax };
TypeParameterListSyntax: { new(data: number, lessThanToken: ISyntaxToken, typeParameters: ISeparatedSyntaxList<TypeParameterSyntax>, greaterThanToken: ISyntaxToken): TypeParameterListSyntax };
HeritageClauseSyntax: { new(data: number, extendsOrImplementsKeyword: ISyntaxToken, typeNames: ISeparatedSyntaxList<INameSyntax>): HeritageClauseSyntax };
EqualsValueClauseSyntax: { new(data: number, equalsToken: ISyntaxToken, value: IExpressionSyntax): EqualsValueClauseSyntax };
CaseSwitchClauseSyntax: { new(data: number, caseKeyword: ISyntaxToken, expression: IExpressionSyntax, colonToken: ISyntaxToken, statements: IStatementSyntax[]): CaseSwitchClauseSyntax };
DefaultSwitchClauseSyntax: { new(data: number, defaultKeyword: ISyntaxToken, colonToken: ISyntaxToken, statements: IStatementSyntax[]): DefaultSwitchClauseSyntax };
ElseClauseSyntax: { new(data: number, elseKeyword: ISyntaxToken, statement: IStatementSyntax): ElseClauseSyntax };
CatchClauseSyntax: { new(data: number, catchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, identifier: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, closeParenToken: ISyntaxToken, block: BlockSyntax): CatchClauseSyntax };
FinallyClauseSyntax: { new(data: number, finallyKeyword: ISyntaxToken, block: BlockSyntax): FinallyClauseSyntax };
TypeParameterSyntax: { new(data: number, identifier: ISyntaxToken, constraint: ConstraintSyntax): TypeParameterSyntax };
ConstraintSyntax: { new(data: number, extendsKeyword: ISyntaxToken, typeOrExpression: ISyntaxNodeOrToken): ConstraintSyntax };
SimplePropertyAssignmentSyntax: { new(data: number, propertyName: ISyntaxToken, colonToken: ISyntaxToken, expression: IExpressionSyntax): SimplePropertyAssignmentSyntax };
FunctionPropertyAssignmentSyntax: { new(data: number, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax): FunctionPropertyAssignmentSyntax };
ParameterSyntax: { new(data: number, dotDotDotToken: ISyntaxToken, modifiers: ISyntaxToken[], identifier: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax): ParameterSyntax };
EnumElementSyntax: { new(data: number, propertyName: ISyntaxToken, equalsValueClause: EqualsValueClauseSyntax): EnumElementSyntax };
TypeAnnotationSyntax: { new(data: number, colonToken: ISyntaxToken, type: ITypeSyntax): TypeAnnotationSyntax };
ExternalModuleReferenceSyntax: { new(data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, stringLiteral: ISyntaxToken, closeParenToken: ISyntaxToken): ExternalModuleReferenceSyntax };
ModuleNameModuleReferenceSyntax: { new(data: number, moduleName: INameSyntax): ModuleNameModuleReferenceSyntax };
}
}
}

View File

@ -4,7 +4,6 @@ module TypeScript {
export var syntaxDiagnosticsTime: number = 0;
export class SyntaxTree {
private _isConcrete: boolean;
private _sourceUnit: SourceUnitSyntax;
private _isDeclaration: boolean;
private _parserDiagnostics: Diagnostic[];
@ -17,14 +16,12 @@ module TypeScript {
private _amdDependencies: string[];
private _isExternalModule: boolean;
constructor(isConcrete: boolean,
sourceUnit: SourceUnitSyntax,
constructor(sourceUnit: SourceUnitSyntax,
isDeclaration: boolean,
diagnostics: Diagnostic[],
fileName: string,
public text: ISimpleText,
languageVersion: ts.ScriptTarget) {
this._isConcrete = isConcrete;
this._sourceUnit = sourceUnit;
this._isDeclaration = isDeclaration;
this._parserDiagnostics = diagnostics;
@ -35,10 +32,6 @@ module TypeScript {
sourceUnit.syntaxTree = this;
}
public isConcrete(): boolean {
return this._isConcrete;
}
public sourceUnit(): SourceUnitSyntax {
return this._sourceUnit;
}