diff --git a/src/services/syntax/SyntaxGenerator.js b/src/services/syntax/SyntaxGenerator.js index 3d30ba1531c..666b7ce3bf9 100644 --- a/src/services/syntax/SyntaxGenerator.js +++ b/src/services/syntax/SyntaxGenerator.js @@ -2536,12 +2536,13 @@ function generateUpdateMethod(definition) { return result; } function generateNode(definition, abstract) { - var result = " export class " + definition.name + " extends SyntaxNode"; + var result = " export class " + definition.name + " implements ISyntaxNode"; if (definition.interfaces) { - result += " implements "; + result += ", "; result += definition.interfaces.join(", "); } result += " {\r\n"; + result += " public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement;\r\n"; if (definition.name === "SourceUnitSyntax") { result += " public syntaxTree: SyntaxTree = undefined;\r\n"; } @@ -2556,7 +2557,7 @@ function generateNode(definition, abstract) { result += ", " + getSafeName(child) + ": " + getType(child); } result += ") {\r\n"; - result += " super(data);\r\n"; + result += " if (data) { this.__data = data; }\r\n"; if (definition.name === "SourceUnitSyntax") { result += " this.parent = undefined,\r\n"; } diff --git a/src/services/syntax/scannerUtilities.generated.ts b/src/services/syntax/scannerUtilities.generated.ts index 97f0093a672..9e1a018006b 100644 --- a/src/services/syntax/scannerUtilities.generated.ts +++ b/src/services/syntax/scannerUtilities.generated.ts @@ -2,6 +2,117 @@ module TypeScript { export module ScannerUtilities { + export function fixedWidthTokenLength(kind: SyntaxKind) { + switch (kind) { + case SyntaxKind.BreakKeyword: return 5; + case SyntaxKind.CaseKeyword: return 4; + case SyntaxKind.CatchKeyword: return 5; + case SyntaxKind.ContinueKeyword: return 8; + case SyntaxKind.DebuggerKeyword: return 8; + case SyntaxKind.DefaultKeyword: return 7; + case SyntaxKind.DeleteKeyword: return 6; + case SyntaxKind.DoKeyword: return 2; + case SyntaxKind.ElseKeyword: return 4; + case SyntaxKind.FalseKeyword: return 5; + case SyntaxKind.FinallyKeyword: return 7; + case SyntaxKind.ForKeyword: return 3; + case SyntaxKind.FunctionKeyword: return 8; + case SyntaxKind.IfKeyword: return 2; + case SyntaxKind.InKeyword: return 2; + case SyntaxKind.InstanceOfKeyword: return 10; + case SyntaxKind.NewKeyword: return 3; + case SyntaxKind.NullKeyword: return 4; + case SyntaxKind.ReturnKeyword: return 6; + case SyntaxKind.SwitchKeyword: return 6; + case SyntaxKind.ThisKeyword: return 4; + case SyntaxKind.ThrowKeyword: return 5; + case SyntaxKind.TrueKeyword: return 4; + case SyntaxKind.TryKeyword: return 3; + case SyntaxKind.TypeOfKeyword: return 6; + case SyntaxKind.VarKeyword: return 3; + case SyntaxKind.VoidKeyword: return 4; + case SyntaxKind.WhileKeyword: return 5; + case SyntaxKind.WithKeyword: return 4; + case SyntaxKind.ClassKeyword: return 5; + case SyntaxKind.ConstKeyword: return 5; + case SyntaxKind.EnumKeyword: return 4; + case SyntaxKind.ExportKeyword: return 6; + case SyntaxKind.ExtendsKeyword: return 7; + case SyntaxKind.ImportKeyword: return 6; + case SyntaxKind.SuperKeyword: return 5; + case SyntaxKind.ImplementsKeyword: return 10; + case SyntaxKind.InterfaceKeyword: return 9; + case SyntaxKind.LetKeyword: return 3; + case SyntaxKind.PackageKeyword: return 7; + case SyntaxKind.PrivateKeyword: return 7; + case SyntaxKind.ProtectedKeyword: return 9; + case SyntaxKind.PublicKeyword: return 6; + case SyntaxKind.StaticKeyword: return 6; + case SyntaxKind.YieldKeyword: return 5; + case SyntaxKind.AnyKeyword: return 3; + case SyntaxKind.BooleanKeyword: return 7; + case SyntaxKind.ConstructorKeyword: return 11; + case SyntaxKind.DeclareKeyword: return 7; + case SyntaxKind.GetKeyword: return 3; + case SyntaxKind.ModuleKeyword: return 6; + case SyntaxKind.RequireKeyword: return 7; + case SyntaxKind.NumberKeyword: return 6; + case SyntaxKind.SetKeyword: return 3; + case SyntaxKind.StringKeyword: return 6; + case SyntaxKind.OpenBraceToken: return 1; + case SyntaxKind.CloseBraceToken: return 1; + case SyntaxKind.OpenParenToken: return 1; + case SyntaxKind.CloseParenToken: return 1; + case SyntaxKind.OpenBracketToken: return 1; + case SyntaxKind.CloseBracketToken: return 1; + case SyntaxKind.DotToken: return 1; + case SyntaxKind.DotDotDotToken: return 3; + case SyntaxKind.SemicolonToken: return 1; + case SyntaxKind.CommaToken: return 1; + case SyntaxKind.LessThanToken: return 1; + case SyntaxKind.GreaterThanToken: return 1; + case SyntaxKind.LessThanEqualsToken: return 2; + case SyntaxKind.GreaterThanEqualsToken: return 2; + case SyntaxKind.EqualsEqualsToken: return 2; + case SyntaxKind.EqualsGreaterThanToken: return 2; + case SyntaxKind.ExclamationEqualsToken: return 2; + case SyntaxKind.EqualsEqualsEqualsToken: return 3; + case SyntaxKind.ExclamationEqualsEqualsToken: return 3; + case SyntaxKind.PlusToken: return 1; + case SyntaxKind.MinusToken: return 1; + case SyntaxKind.AsteriskToken: return 1; + case SyntaxKind.PercentToken: return 1; + case SyntaxKind.PlusPlusToken: return 2; + case SyntaxKind.MinusMinusToken: return 2; + case SyntaxKind.LessThanLessThanToken: return 2; + case SyntaxKind.GreaterThanGreaterThanToken: return 2; + case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: return 3; + case SyntaxKind.AmpersandToken: return 1; + case SyntaxKind.BarToken: return 1; + case SyntaxKind.CaretToken: return 1; + case SyntaxKind.ExclamationToken: return 1; + case SyntaxKind.TildeToken: return 1; + case SyntaxKind.AmpersandAmpersandToken: return 2; + case SyntaxKind.BarBarToken: return 2; + case SyntaxKind.QuestionToken: return 1; + case SyntaxKind.ColonToken: return 1; + case SyntaxKind.EqualsToken: return 1; + case SyntaxKind.PlusEqualsToken: return 2; + case SyntaxKind.MinusEqualsToken: return 2; + case SyntaxKind.AsteriskEqualsToken: return 2; + case SyntaxKind.PercentEqualsToken: return 2; + case SyntaxKind.LessThanLessThanEqualsToken: return 3; + case SyntaxKind.GreaterThanGreaterThanEqualsToken: return 3; + case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: return 4; + case SyntaxKind.AmpersandEqualsToken: return 2; + case SyntaxKind.BarEqualsToken: return 2; + case SyntaxKind.CaretEqualsToken: return 2; + case SyntaxKind.SlashToken: return 1; + case SyntaxKind.SlashEqualsToken: return 2; + default: throw new Error(); + } + } + export function identifierKind(str: string, start: number, length: number): SyntaxKind { switch (length) { case 2: // do, if, in diff --git a/src/services/syntax/syntaxGenerator.ts b/src/services/syntax/syntaxGenerator.ts index 94932d701df..a6833b6e665 100644 --- a/src/services/syntax/syntaxGenerator.ts +++ b/src/services/syntax/syntaxGenerator.ts @@ -1939,14 +1939,16 @@ function generateUpdateMethod(definition: ITypeDefinition): string { } function generateNode(definition: ITypeDefinition, abstract: boolean): string { - var result = " export class " + definition.name + " extends SyntaxNode" + var result = " export class " + definition.name + " implements ISyntaxNode" // + " extends SyntaxNode" if (definition.interfaces) { - result += " implements "; + // result += " implements "; + result += ", "; result += definition.interfaces.join(", "); } result += " {\r\n"; + result += " public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement;\r\n"; if (definition.name === "SourceUnitSyntax") { result += " public syntaxTree: SyntaxTree = undefined;\r\n"; @@ -1967,7 +1969,7 @@ function generateNode(definition: ITypeDefinition, abstract: boolean): string { } result += ") {\r\n"; - result += " super(data);\r\n"; + result += " if (data) { this.__data = data; }\r\n"; if (definition.name === "SourceUnitSyntax") { result += " this.parent = undefined,\r\n"; diff --git a/src/services/syntax/syntaxNode.ts b/src/services/syntax/syntaxNode.ts index 0cd0177b3fb..f53bd706c10 100644 --- a/src/services/syntax/syntaxNode.ts +++ b/src/services/syntax/syntaxNode.ts @@ -1,6 +1,7 @@ /// module TypeScript { + /* export class SyntaxNode implements ISyntaxNode { // private __kind: SyntaxKind; public __data: number; @@ -29,4 +30,5 @@ module TypeScript { throw Errors.abstract(); } } + */ } \ No newline at end of file diff --git a/src/services/syntax/syntaxNodes.concrete.generated.ts b/src/services/syntax/syntaxNodes.concrete.generated.ts index 7b3674b29a4..2e46a63da8f 100644 --- a/src/services/syntax/syntaxNodes.concrete.generated.ts +++ b/src/services/syntax/syntaxNodes.concrete.generated.ts @@ -1,12 +1,13 @@ /// module TypeScript { - export class SourceUnitSyntax extends SyntaxNode { + export class SourceUnitSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public syntaxTree: SyntaxTree = undefined; public moduleElements: IModuleElementSyntax[]; public endOfFileToken: ISyntaxToken; constructor(data: number, moduleElements: IModuleElementSyntax[], endOfFileToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.parent = undefined, this.moduleElements = moduleElements, this.endOfFileToken = endOfFileToken, @@ -34,13 +35,14 @@ module TypeScript { return visitor.visitSourceUnit(this); } } - export class QualifiedNameSyntax extends SyntaxNode implements INameSyntax { + export class QualifiedNameSyntax implements ISyntaxNode, INameSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public left: INameSyntax; public dotToken: ISyntaxToken; public right: ISyntaxToken; public _nameBrand: any; public _typeBrand: any; constructor(data: number, left: INameSyntax, dotToken: ISyntaxToken, right: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.left = left, this.dotToken = dotToken, this.right = right, @@ -70,13 +72,14 @@ module TypeScript { return visitor.visitQualifiedName(this); } } - export class ObjectTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class ObjectTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openBraceToken: ISyntaxToken; public typeMembers: ISeparatedSyntaxList; public closeBraceToken: ISyntaxToken; public _typeBrand: any; constructor(data: number, openBraceToken: ISyntaxToken, typeMembers: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openBraceToken = openBraceToken, this.typeMembers = typeMembers, this.closeBraceToken = closeBraceToken, @@ -106,14 +109,15 @@ module TypeScript { return visitor.visitObjectType(this); } } - export class FunctionTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class FunctionTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public typeParameterList: TypeParameterListSyntax; public parameterList: ParameterListSyntax; public equalsGreaterThanToken: ISyntaxToken; public type: ITypeSyntax; public _typeBrand: any; constructor(data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { - super(data); + if (data) { this.__data = data; } this.typeParameterList = typeParameterList, this.parameterList = parameterList, this.equalsGreaterThanToken = equalsGreaterThanToken, @@ -146,13 +150,14 @@ module TypeScript { return visitor.visitFunctionType(this); } } - export class ArrayTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class ArrayTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public type: ITypeSyntax; public openBracketToken: ISyntaxToken; public closeBracketToken: ISyntaxToken; public _typeBrand: any; constructor(data: number, type: ITypeSyntax, openBracketToken: ISyntaxToken, closeBracketToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.type = type, this.openBracketToken = openBracketToken, this.closeBracketToken = closeBracketToken, @@ -182,7 +187,8 @@ module TypeScript { return visitor.visitArrayType(this); } } - export class ConstructorTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class ConstructorTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public newKeyword: ISyntaxToken; public typeParameterList: TypeParameterListSyntax; public parameterList: ParameterListSyntax; @@ -190,7 +196,7 @@ module TypeScript { public type: ITypeSyntax; public _typeBrand: any; constructor(data: number, newKeyword: ISyntaxToken, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { - super(data); + if (data) { this.__data = data; } this.newKeyword = newKeyword, this.typeParameterList = typeParameterList, this.parameterList = parameterList, @@ -226,12 +232,13 @@ module TypeScript { return visitor.visitConstructorType(this); } } - export class GenericTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class GenericTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public name: INameSyntax; public typeArgumentList: TypeArgumentListSyntax; public _typeBrand: any; constructor(data: number, name: INameSyntax, typeArgumentList: TypeArgumentListSyntax) { - super(data); + if (data) { this.__data = data; } this.name = name, this.typeArgumentList = typeArgumentList, name.parent = this, @@ -258,12 +265,13 @@ module TypeScript { return visitor.visitGenericType(this); } } - export class TypeQuerySyntax extends SyntaxNode implements ITypeSyntax { + export class TypeQuerySyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public typeOfKeyword: ISyntaxToken; public name: INameSyntax; public _typeBrand: any; constructor(data: number, typeOfKeyword: ISyntaxToken, name: INameSyntax) { - super(data); + if (data) { this.__data = data; } this.typeOfKeyword = typeOfKeyword, this.name = name, typeOfKeyword.parent = this, @@ -290,13 +298,14 @@ module TypeScript { return visitor.visitTypeQuery(this); } } - export class TupleTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class TupleTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openBracketToken: ISyntaxToken; public types: ISeparatedSyntaxList; public closeBracketToken: ISyntaxToken; public _typeBrand: any; constructor(data: number, openBracketToken: ISyntaxToken, types: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openBracketToken = openBracketToken, this.types = types, this.closeBracketToken = closeBracketToken, @@ -326,13 +335,14 @@ module TypeScript { return visitor.visitTupleType(this); } } - export class UnionTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class UnionTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public left: ITypeSyntax; public barToken: ISyntaxToken; public right: ITypeSyntax; public _typeBrand: any; constructor(data: number, left: ITypeSyntax, barToken: ISyntaxToken, right: ITypeSyntax) { - super(data); + if (data) { this.__data = data; } this.left = left, this.barToken = barToken, this.right = right, @@ -362,13 +372,14 @@ module TypeScript { return visitor.visitUnionType(this); } } - export class ParenthesizedTypeSyntax extends SyntaxNode implements ITypeSyntax { + export class ParenthesizedTypeSyntax implements ISyntaxNode, ITypeSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openParenToken: ISyntaxToken; public type: ITypeSyntax; public closeParenToken: ISyntaxToken; public _typeBrand: any; constructor(data: number, openParenToken: ISyntaxToken, type: ITypeSyntax, closeParenToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openParenToken = openParenToken, this.type = type, this.closeParenToken = closeParenToken, @@ -398,7 +409,8 @@ module TypeScript { return visitor.visitParenthesizedType(this); } } - export class InterfaceDeclarationSyntax extends SyntaxNode implements IModuleElementSyntax { + export class InterfaceDeclarationSyntax implements ISyntaxNode, IModuleElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public interfaceKeyword: ISyntaxToken; public identifier: ISyntaxToken; @@ -407,7 +419,7 @@ module TypeScript { public body: ObjectTypeSyntax; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], interfaceKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], body: ObjectTypeSyntax) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.interfaceKeyword = interfaceKeyword, this.identifier = identifier, @@ -446,7 +458,8 @@ module TypeScript { return visitor.visitInterfaceDeclaration(this); } } - export class FunctionDeclarationSyntax extends SyntaxNode implements IStatementSyntax { + export class FunctionDeclarationSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public functionKeyword: ISyntaxToken; public identifier: ISyntaxToken; @@ -455,7 +468,7 @@ module TypeScript { public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.functionKeyword = functionKeyword, this.identifier = identifier, @@ -494,7 +507,8 @@ module TypeScript { return visitor.visitFunctionDeclaration(this); } } - export class ModuleDeclarationSyntax extends SyntaxNode implements IModuleElementSyntax { + export class ModuleDeclarationSyntax implements ISyntaxNode, IModuleElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public moduleKeyword: ISyntaxToken; public name: INameSyntax; @@ -504,7 +518,7 @@ module TypeScript { public closeBraceToken: ISyntaxToken; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], moduleKeyword: ISyntaxToken, name: INameSyntax, stringLiteral: ISyntaxToken, openBraceToken: ISyntaxToken, moduleElements: IModuleElementSyntax[], closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.moduleKeyword = moduleKeyword, this.name = name, @@ -546,7 +560,8 @@ module TypeScript { return visitor.visitModuleDeclaration(this); } } - export class ClassDeclarationSyntax extends SyntaxNode implements IModuleElementSyntax { + export class ClassDeclarationSyntax implements ISyntaxNode, IModuleElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public classKeyword: ISyntaxToken; public identifier: ISyntaxToken; @@ -557,7 +572,7 @@ module TypeScript { public closeBraceToken: ISyntaxToken; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], classKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], openBraceToken: ISyntaxToken, classElements: IClassElementSyntax[], closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.classKeyword = classKeyword, this.identifier = identifier, @@ -602,7 +617,8 @@ module TypeScript { return visitor.visitClassDeclaration(this); } } - export class EnumDeclarationSyntax extends SyntaxNode implements IModuleElementSyntax { + export class EnumDeclarationSyntax implements ISyntaxNode, IModuleElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public enumKeyword: ISyntaxToken; public identifier: ISyntaxToken; @@ -611,7 +627,7 @@ module TypeScript { public closeBraceToken: ISyntaxToken; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], enumKeyword: ISyntaxToken, identifier: ISyntaxToken, openBraceToken: ISyntaxToken, enumElements: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.enumKeyword = enumKeyword, this.identifier = identifier, @@ -650,7 +666,8 @@ module TypeScript { return visitor.visitEnumDeclaration(this); } } - export class ImportDeclarationSyntax extends SyntaxNode implements IModuleElementSyntax { + export class ImportDeclarationSyntax implements ISyntaxNode, IModuleElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public importKeyword: ISyntaxToken; public identifier: ISyntaxToken; @@ -659,7 +676,7 @@ module TypeScript { public semicolonToken: ISyntaxToken; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], importKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, moduleReference: IModuleReferenceSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.importKeyword = importKeyword, this.identifier = identifier, @@ -698,14 +715,15 @@ module TypeScript { return visitor.visitImportDeclaration(this); } } - export class ExportAssignmentSyntax extends SyntaxNode implements IModuleElementSyntax { + export class ExportAssignmentSyntax implements ISyntaxNode, IModuleElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public exportKeyword: ISyntaxToken; public equalsToken: ISyntaxToken; public identifier: ISyntaxToken; public semicolonToken: ISyntaxToken; public _moduleElementBrand: any; constructor(data: number, exportKeyword: ISyntaxToken, equalsToken: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.exportKeyword = exportKeyword, this.equalsToken = equalsToken, this.identifier = identifier, @@ -738,7 +756,8 @@ module TypeScript { return visitor.visitExportAssignment(this); } } - export class MemberFunctionDeclarationSyntax extends SyntaxNode implements IMemberDeclarationSyntax { + export class MemberFunctionDeclarationSyntax implements ISyntaxNode, IMemberDeclarationSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public propertyName: ISyntaxToken; public callSignature: CallSignatureSyntax; @@ -746,7 +765,7 @@ module TypeScript { public semicolonToken: ISyntaxToken; public _memberDeclarationBrand: any; public _classElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.propertyName = propertyName, this.callSignature = callSignature, @@ -782,13 +801,14 @@ module TypeScript { return visitor.visitMemberFunctionDeclaration(this); } } - export class MemberVariableDeclarationSyntax extends SyntaxNode implements IMemberDeclarationSyntax { + export class MemberVariableDeclarationSyntax implements ISyntaxNode, IMemberDeclarationSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public variableDeclarator: VariableDeclaratorSyntax; public semicolonToken: ISyntaxToken; public _memberDeclarationBrand: any; public _classElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], variableDeclarator: VariableDeclaratorSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.variableDeclarator = variableDeclarator, this.semicolonToken = semicolonToken, @@ -818,7 +838,8 @@ module TypeScript { return visitor.visitMemberVariableDeclaration(this); } } - export class ConstructorDeclarationSyntax extends SyntaxNode implements IClassElementSyntax { + export class ConstructorDeclarationSyntax implements ISyntaxNode, IClassElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public constructorKeyword: ISyntaxToken; public callSignature: CallSignatureSyntax; @@ -826,7 +847,7 @@ module TypeScript { public semicolonToken: ISyntaxToken; public _classElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.constructorKeyword = constructorKeyword, this.callSignature = callSignature, @@ -862,13 +883,14 @@ module TypeScript { return visitor.visitConstructorDeclaration(this); } } - export class IndexMemberDeclarationSyntax extends SyntaxNode implements IClassElementSyntax { + export class IndexMemberDeclarationSyntax implements ISyntaxNode, IClassElementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public indexSignature: IndexSignatureSyntax; public semicolonToken: ISyntaxToken; public _classElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], indexSignature: IndexSignatureSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.indexSignature = indexSignature, this.semicolonToken = semicolonToken, @@ -898,7 +920,8 @@ module TypeScript { return visitor.visitIndexMemberDeclaration(this); } } - export class GetAccessorSyntax extends SyntaxNode implements IMemberDeclarationSyntax, IPropertyAssignmentSyntax { + export class GetAccessorSyntax implements ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public getKeyword: ISyntaxToken; public propertyName: ISyntaxToken; @@ -906,7 +929,7 @@ module TypeScript { public block: BlockSyntax; public _memberDeclarationBrand: any; public _propertyAssignmentBrand: any; public _classElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.getKeyword = getKeyword, this.propertyName = propertyName, @@ -942,7 +965,8 @@ module TypeScript { return visitor.visitGetAccessor(this); } } - export class SetAccessorSyntax extends SyntaxNode implements IMemberDeclarationSyntax, IPropertyAssignmentSyntax { + export class SetAccessorSyntax implements ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public setKeyword: ISyntaxToken; public propertyName: ISyntaxToken; @@ -950,7 +974,7 @@ module TypeScript { public block: BlockSyntax; public _memberDeclarationBrand: any; public _propertyAssignmentBrand: any; public _classElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.setKeyword = setKeyword, this.propertyName = propertyName, @@ -986,13 +1010,14 @@ module TypeScript { return visitor.visitSetAccessor(this); } } - export class PropertySignatureSyntax extends SyntaxNode implements ITypeMemberSyntax { + export class PropertySignatureSyntax implements ISyntaxNode, ITypeMemberSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public propertyName: ISyntaxToken; public questionToken: ISyntaxToken; public typeAnnotation: TypeAnnotationSyntax; public _typeMemberBrand: any; constructor(data: number, propertyName: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax) { - super(data); + if (data) { this.__data = data; } this.propertyName = propertyName, this.questionToken = questionToken, this.typeAnnotation = typeAnnotation, @@ -1022,13 +1047,14 @@ module TypeScript { return visitor.visitPropertySignature(this); } } - export class CallSignatureSyntax extends SyntaxNode implements ITypeMemberSyntax { + export class CallSignatureSyntax implements ISyntaxNode, ITypeMemberSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public typeParameterList: TypeParameterListSyntax; public parameterList: ParameterListSyntax; public typeAnnotation: TypeAnnotationSyntax; public _typeMemberBrand: any; constructor(data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, typeAnnotation: TypeAnnotationSyntax) { - super(data); + if (data) { this.__data = data; } this.typeParameterList = typeParameterList, this.parameterList = parameterList, this.typeAnnotation = typeAnnotation, @@ -1058,12 +1084,13 @@ module TypeScript { return visitor.visitCallSignature(this); } } - export class ConstructSignatureSyntax extends SyntaxNode implements ITypeMemberSyntax { + export class ConstructSignatureSyntax implements ISyntaxNode, ITypeMemberSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public newKeyword: ISyntaxToken; public callSignature: CallSignatureSyntax; public _typeMemberBrand: any; constructor(data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax) { - super(data); + if (data) { this.__data = data; } this.newKeyword = newKeyword, this.callSignature = callSignature, newKeyword.parent = this, @@ -1090,14 +1117,15 @@ module TypeScript { return visitor.visitConstructSignature(this); } } - export class IndexSignatureSyntax extends SyntaxNode implements ITypeMemberSyntax { + export class IndexSignatureSyntax implements ISyntaxNode, ITypeMemberSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openBracketToken: ISyntaxToken; public parameters: ISeparatedSyntaxList; public closeBracketToken: ISyntaxToken; public typeAnnotation: TypeAnnotationSyntax; public _typeMemberBrand: any; constructor(data: number, openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax) { - super(data); + if (data) { this.__data = data; } this.openBracketToken = openBracketToken, this.parameters = parameters, this.closeBracketToken = closeBracketToken, @@ -1130,13 +1158,14 @@ module TypeScript { return visitor.visitIndexSignature(this); } } - export class MethodSignatureSyntax extends SyntaxNode implements ITypeMemberSyntax { + export class MethodSignatureSyntax implements ISyntaxNode, ITypeMemberSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public propertyName: ISyntaxToken; public questionToken: ISyntaxToken; public callSignature: CallSignatureSyntax; public _typeMemberBrand: any; constructor(data: number, propertyName: ISyntaxToken, questionToken: ISyntaxToken, callSignature: CallSignatureSyntax) { - super(data); + if (data) { this.__data = data; } this.propertyName = propertyName, this.questionToken = questionToken, this.callSignature = callSignature, @@ -1166,13 +1195,14 @@ module TypeScript { return visitor.visitMethodSignature(this); } } - export class BlockSyntax extends SyntaxNode implements IStatementSyntax { + export class BlockSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openBraceToken: ISyntaxToken; public statements: IStatementSyntax[]; public closeBraceToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, openBraceToken: ISyntaxToken, statements: IStatementSyntax[], closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openBraceToken = openBraceToken, this.statements = statements, this.closeBraceToken = closeBraceToken, @@ -1202,7 +1232,8 @@ module TypeScript { return visitor.visitBlock(this); } } - export class IfStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class IfStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public ifKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public condition: IExpressionSyntax; @@ -1211,7 +1242,7 @@ module TypeScript { public elseClause: ElseClauseSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, ifKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax, elseClause: ElseClauseSyntax) { - super(data); + if (data) { this.__data = data; } this.ifKeyword = ifKeyword, this.openParenToken = openParenToken, this.condition = condition, @@ -1250,13 +1281,14 @@ module TypeScript { return visitor.visitIfStatement(this); } } - export class VariableStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class VariableStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public modifiers: ISyntaxToken[]; public variableDeclaration: VariableDeclarationSyntax; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, modifiers: ISyntaxToken[], variableDeclaration: VariableDeclarationSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.modifiers = modifiers, this.variableDeclaration = variableDeclaration, this.semicolonToken = semicolonToken, @@ -1286,12 +1318,13 @@ module TypeScript { return visitor.visitVariableStatement(this); } } - export class ExpressionStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class ExpressionStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public expression: IExpressionSyntax; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.expression = expression, this.semicolonToken = semicolonToken, expression.parent = this, @@ -1318,13 +1351,14 @@ module TypeScript { return visitor.visitExpressionStatement(this); } } - export class ReturnStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class ReturnStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public returnKeyword: ISyntaxToken; public expression: IExpressionSyntax; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, returnKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.returnKeyword = returnKeyword, this.expression = expression, this.semicolonToken = semicolonToken, @@ -1354,7 +1388,8 @@ module TypeScript { return visitor.visitReturnStatement(this); } } - export class SwitchStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class SwitchStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public switchKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public expression: IExpressionSyntax; @@ -1364,7 +1399,7 @@ module TypeScript { public closeBraceToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, switchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, openBraceToken: ISyntaxToken, switchClauses: ISwitchClauseSyntax[], closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.switchKeyword = switchKeyword, this.openParenToken = openParenToken, this.expression = expression, @@ -1406,13 +1441,14 @@ module TypeScript { return visitor.visitSwitchStatement(this); } } - export class BreakStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class BreakStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public breakKeyword: ISyntaxToken; public identifier: ISyntaxToken; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, breakKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.breakKeyword = breakKeyword, this.identifier = identifier, this.semicolonToken = semicolonToken, @@ -1442,13 +1478,14 @@ module TypeScript { return visitor.visitBreakStatement(this); } } - export class ContinueStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class ContinueStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public continueKeyword: ISyntaxToken; public identifier: ISyntaxToken; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, continueKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.continueKeyword = continueKeyword, this.identifier = identifier, this.semicolonToken = semicolonToken, @@ -1478,7 +1515,8 @@ module TypeScript { return visitor.visitContinueStatement(this); } } - export class ForStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class ForStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public forKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public variableDeclaration: VariableDeclarationSyntax; @@ -1491,7 +1529,7 @@ module TypeScript { public statement: IStatementSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, variableDeclaration: VariableDeclarationSyntax, initializer: IExpressionSyntax, firstSemicolonToken: ISyntaxToken, condition: IExpressionSyntax, secondSemicolonToken: ISyntaxToken, incrementor: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - super(data); + if (data) { this.__data = data; } this.forKeyword = forKeyword, this.openParenToken = openParenToken, this.variableDeclaration = variableDeclaration, @@ -1542,7 +1580,8 @@ module TypeScript { return visitor.visitForStatement(this); } } - export class ForInStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class ForInStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public forKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public variableDeclaration: VariableDeclarationSyntax; @@ -1553,7 +1592,7 @@ module TypeScript { public statement: IStatementSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, variableDeclaration: VariableDeclarationSyntax, left: IExpressionSyntax, inKeyword: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - super(data); + if (data) { this.__data = data; } this.forKeyword = forKeyword, this.openParenToken = openParenToken, this.variableDeclaration = variableDeclaration, @@ -1598,11 +1637,12 @@ module TypeScript { return visitor.visitForInStatement(this); } } - export class EmptyStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class EmptyStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.semicolonToken = semicolonToken, semicolonToken.parent = this; } @@ -1626,13 +1666,14 @@ module TypeScript { return visitor.visitEmptyStatement(this); } } - export class ThrowStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class ThrowStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public throwKeyword: ISyntaxToken; public expression: IExpressionSyntax; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, throwKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.throwKeyword = throwKeyword, this.expression = expression, this.semicolonToken = semicolonToken, @@ -1662,7 +1703,8 @@ module TypeScript { return visitor.visitThrowStatement(this); } } - export class WhileStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class WhileStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public whileKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public condition: IExpressionSyntax; @@ -1670,7 +1712,7 @@ module TypeScript { public statement: IStatementSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - super(data); + if (data) { this.__data = data; } this.whileKeyword = whileKeyword, this.openParenToken = openParenToken, this.condition = condition, @@ -1706,14 +1748,15 @@ module TypeScript { return visitor.visitWhileStatement(this); } } - export class TryStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class TryStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public tryKeyword: ISyntaxToken; public block: BlockSyntax; public catchClause: CatchClauseSyntax; public finallyClause: FinallyClauseSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, tryKeyword: ISyntaxToken, block: BlockSyntax, catchClause: CatchClauseSyntax, finallyClause: FinallyClauseSyntax) { - super(data); + if (data) { this.__data = data; } this.tryKeyword = tryKeyword, this.block = block, this.catchClause = catchClause, @@ -1746,13 +1789,14 @@ module TypeScript { return visitor.visitTryStatement(this); } } - export class LabeledStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class LabeledStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public identifier: ISyntaxToken; public colonToken: ISyntaxToken; public statement: IStatementSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, identifier: ISyntaxToken, colonToken: ISyntaxToken, statement: IStatementSyntax) { - super(data); + if (data) { this.__data = data; } this.identifier = identifier, this.colonToken = colonToken, this.statement = statement, @@ -1782,7 +1826,8 @@ module TypeScript { return visitor.visitLabeledStatement(this); } } - export class DoStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class DoStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public doKeyword: ISyntaxToken; public statement: IStatementSyntax; public whileKeyword: ISyntaxToken; @@ -1792,7 +1837,7 @@ module TypeScript { public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, doKeyword: ISyntaxToken, statement: IStatementSyntax, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.doKeyword = doKeyword, this.statement = statement, this.whileKeyword = whileKeyword, @@ -1834,12 +1879,13 @@ module TypeScript { return visitor.visitDoStatement(this); } } - export class DebuggerStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class DebuggerStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public debuggerKeyword: ISyntaxToken; public semicolonToken: ISyntaxToken; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, debuggerKeyword: ISyntaxToken, semicolonToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.debuggerKeyword = debuggerKeyword, this.semicolonToken = semicolonToken, debuggerKeyword.parent = this, @@ -1866,7 +1912,8 @@ module TypeScript { return visitor.visitDebuggerStatement(this); } } - export class WithStatementSyntax extends SyntaxNode implements IStatementSyntax { + export class WithStatementSyntax implements ISyntaxNode, IStatementSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public withKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public condition: IExpressionSyntax; @@ -1874,7 +1921,7 @@ module TypeScript { public statement: IStatementSyntax; public _statementBrand: any; public _moduleElementBrand: any; constructor(data: number, withKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { - super(data); + if (data) { this.__data = data; } this.withKeyword = withKeyword, this.openParenToken = openParenToken, this.condition = condition, @@ -1910,12 +1957,13 @@ module TypeScript { return visitor.visitWithStatement(this); } } - export class PrefixUnaryExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class PrefixUnaryExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public operatorToken: ISyntaxToken; public operand: IUnaryExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, operatorToken: ISyntaxToken, operand: IUnaryExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.operatorToken = operatorToken, this.operand = operand, operatorToken.parent = this, @@ -1942,12 +1990,13 @@ module TypeScript { return visitor.visitPrefixUnaryExpression(this); } } - export class DeleteExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class DeleteExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public deleteKeyword: ISyntaxToken; public expression: IUnaryExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, deleteKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.deleteKeyword = deleteKeyword, this.expression = expression, deleteKeyword.parent = this, @@ -1974,12 +2023,13 @@ module TypeScript { return visitor.visitDeleteExpression(this); } } - export class TypeOfExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class TypeOfExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public typeOfKeyword: ISyntaxToken; public expression: IUnaryExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, typeOfKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.typeOfKeyword = typeOfKeyword, this.expression = expression, typeOfKeyword.parent = this, @@ -2006,12 +2056,13 @@ module TypeScript { return visitor.visitTypeOfExpression(this); } } - export class VoidExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class VoidExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public voidKeyword: ISyntaxToken; public expression: IUnaryExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, voidKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.voidKeyword = voidKeyword, this.expression = expression, voidKeyword.parent = this, @@ -2038,7 +2089,8 @@ module TypeScript { return visitor.visitVoidExpression(this); } } - export class ConditionalExpressionSyntax extends SyntaxNode implements IExpressionSyntax { + export class ConditionalExpressionSyntax implements ISyntaxNode, IExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public condition: IExpressionSyntax; public questionToken: ISyntaxToken; public whenTrue: IExpressionSyntax; @@ -2046,7 +2098,7 @@ module TypeScript { public whenFalse: IExpressionSyntax; public _expressionBrand: any; constructor(data: number, condition: IExpressionSyntax, questionToken: ISyntaxToken, whenTrue: IExpressionSyntax, colonToken: ISyntaxToken, whenFalse: IExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.condition = condition, this.questionToken = questionToken, this.whenTrue = whenTrue, @@ -2082,13 +2134,14 @@ module TypeScript { return visitor.visitConditionalExpression(this); } } - export class BinaryExpressionSyntax extends SyntaxNode implements IExpressionSyntax { + export class BinaryExpressionSyntax implements ISyntaxNode, IExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public left: IExpressionSyntax; public operatorToken: ISyntaxToken; public right: IExpressionSyntax; public _expressionBrand: any; constructor(data: number, left: IExpressionSyntax, operatorToken: ISyntaxToken, right: IExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.left = left, this.operatorToken = operatorToken, this.right = right, @@ -2118,12 +2171,13 @@ module TypeScript { return visitor.visitBinaryExpression(this); } } - export class PostfixUnaryExpressionSyntax extends SyntaxNode implements IPostfixExpressionSyntax { + export class PostfixUnaryExpressionSyntax implements ISyntaxNode, IPostfixExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public operand: ILeftHandSideExpressionSyntax; public operatorToken: ISyntaxToken; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, operand: ILeftHandSideExpressionSyntax, operatorToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.operand = operand, this.operatorToken = operatorToken, operand.parent = this, @@ -2150,13 +2204,14 @@ module TypeScript { return visitor.visitPostfixUnaryExpression(this); } } - export class MemberAccessExpressionSyntax extends SyntaxNode implements IMemberExpressionSyntax, ICallExpressionSyntax { + export class MemberAccessExpressionSyntax implements ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public expression: ILeftHandSideExpressionSyntax; public dotToken: ISyntaxToken; public name: ISyntaxToken; public _memberExpressionBrand: any; public _callExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, expression: ILeftHandSideExpressionSyntax, dotToken: ISyntaxToken, name: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.expression = expression, this.dotToken = dotToken, this.name = name, @@ -2186,12 +2241,13 @@ module TypeScript { return visitor.visitMemberAccessExpression(this); } } - export class InvocationExpressionSyntax extends SyntaxNode implements ICallExpressionSyntax { + export class InvocationExpressionSyntax implements ISyntaxNode, ICallExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public expression: ILeftHandSideExpressionSyntax; public argumentList: ArgumentListSyntax; public _callExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, expression: ILeftHandSideExpressionSyntax, argumentList: ArgumentListSyntax) { - super(data); + if (data) { this.__data = data; } this.expression = expression, this.argumentList = argumentList, expression.parent = this, @@ -2218,13 +2274,14 @@ module TypeScript { return visitor.visitInvocationExpression(this); } } - export class ArrayLiteralExpressionSyntax extends SyntaxNode implements IPrimaryExpressionSyntax { + export class ArrayLiteralExpressionSyntax implements ISyntaxNode, IPrimaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openBracketToken: ISyntaxToken; public expressions: ISeparatedSyntaxList; public closeBracketToken: ISyntaxToken; public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, openBracketToken: ISyntaxToken, expressions: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openBracketToken = openBracketToken, this.expressions = expressions, this.closeBracketToken = closeBracketToken, @@ -2254,13 +2311,14 @@ module TypeScript { return visitor.visitArrayLiteralExpression(this); } } - export class ObjectLiteralExpressionSyntax extends SyntaxNode implements IPrimaryExpressionSyntax { + export class ObjectLiteralExpressionSyntax implements ISyntaxNode, IPrimaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openBraceToken: ISyntaxToken; public propertyAssignments: ISeparatedSyntaxList; public closeBraceToken: ISyntaxToken; public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, openBraceToken: ISyntaxToken, propertyAssignments: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openBraceToken = openBraceToken, this.propertyAssignments = propertyAssignments, this.closeBraceToken = closeBraceToken, @@ -2290,13 +2348,14 @@ module TypeScript { return visitor.visitObjectLiteralExpression(this); } } - export class ObjectCreationExpressionSyntax extends SyntaxNode implements IPrimaryExpressionSyntax { + export class ObjectCreationExpressionSyntax implements ISyntaxNode, IPrimaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public newKeyword: ISyntaxToken; public expression: IMemberExpressionSyntax; public argumentList: ArgumentListSyntax; public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, newKeyword: ISyntaxToken, expression: IMemberExpressionSyntax, argumentList: ArgumentListSyntax) { - super(data); + if (data) { this.__data = data; } this.newKeyword = newKeyword, this.expression = expression, this.argumentList = argumentList, @@ -2326,13 +2385,14 @@ module TypeScript { return visitor.visitObjectCreationExpression(this); } } - export class ParenthesizedExpressionSyntax extends SyntaxNode implements IPrimaryExpressionSyntax { + export class ParenthesizedExpressionSyntax implements ISyntaxNode, IPrimaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openParenToken: ISyntaxToken; public expression: IExpressionSyntax; public closeParenToken: ISyntaxToken; public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openParenToken = openParenToken, this.expression = expression, this.closeParenToken = closeParenToken, @@ -2362,14 +2422,15 @@ module TypeScript { return visitor.visitParenthesizedExpression(this); } } - export class ParenthesizedArrowFunctionExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class ParenthesizedArrowFunctionExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public callSignature: CallSignatureSyntax; public equalsGreaterThanToken: ISyntaxToken; public block: BlockSyntax; public expression: IExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, callSignature: CallSignatureSyntax, equalsGreaterThanToken: ISyntaxToken, block: BlockSyntax, expression: IExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.callSignature = callSignature, this.equalsGreaterThanToken = equalsGreaterThanToken, this.block = block, @@ -2402,14 +2463,15 @@ module TypeScript { return visitor.visitParenthesizedArrowFunctionExpression(this); } } - export class SimpleArrowFunctionExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class SimpleArrowFunctionExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public parameter: ParameterSyntax; public equalsGreaterThanToken: ISyntaxToken; public block: BlockSyntax; public expression: IExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, parameter: ParameterSyntax, equalsGreaterThanToken: ISyntaxToken, block: BlockSyntax, expression: IExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.parameter = parameter, this.equalsGreaterThanToken = equalsGreaterThanToken, this.block = block, @@ -2442,14 +2504,15 @@ module TypeScript { return visitor.visitSimpleArrowFunctionExpression(this); } } - export class CastExpressionSyntax extends SyntaxNode implements IUnaryExpressionSyntax { + export class CastExpressionSyntax implements ISyntaxNode, IUnaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public lessThanToken: ISyntaxToken; public type: ITypeSyntax; public greaterThanToken: ISyntaxToken; public expression: IUnaryExpressionSyntax; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, lessThanToken: ISyntaxToken, type: ITypeSyntax, greaterThanToken: ISyntaxToken, expression: IUnaryExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.lessThanToken = lessThanToken, this.type = type, this.greaterThanToken = greaterThanToken, @@ -2482,14 +2545,15 @@ module TypeScript { return visitor.visitCastExpression(this); } } - export class ElementAccessExpressionSyntax extends SyntaxNode implements IMemberExpressionSyntax, ICallExpressionSyntax { + export class ElementAccessExpressionSyntax implements ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public expression: ILeftHandSideExpressionSyntax; public openBracketToken: ISyntaxToken; public argumentExpression: IExpressionSyntax; public closeBracketToken: ISyntaxToken; public _memberExpressionBrand: any; public _callExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, argumentExpression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.expression = expression, this.openBracketToken = openBracketToken, this.argumentExpression = argumentExpression, @@ -2522,14 +2586,15 @@ module TypeScript { return visitor.visitElementAccessExpression(this); } } - export class FunctionExpressionSyntax extends SyntaxNode implements IPrimaryExpressionSyntax { + export class FunctionExpressionSyntax implements ISyntaxNode, IPrimaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public functionKeyword: ISyntaxToken; public identifier: ISyntaxToken; public callSignature: CallSignatureSyntax; public block: BlockSyntax; public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, functionKeyword: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax) { - super(data); + if (data) { this.__data = data; } this.functionKeyword = functionKeyword, this.identifier = identifier, this.callSignature = callSignature, @@ -2562,10 +2627,11 @@ module TypeScript { return visitor.visitFunctionExpression(this); } } - export class OmittedExpressionSyntax extends SyntaxNode implements IExpressionSyntax { + export class OmittedExpressionSyntax implements ISyntaxNode, IExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public _expressionBrand: any; constructor(data: number) { - super(data); + if (data) { this.__data = data; } } public kind(): SyntaxKind { @@ -2584,12 +2650,13 @@ module TypeScript { return visitor.visitOmittedExpression(this); } } - export class TemplateExpressionSyntax extends SyntaxNode implements IPrimaryExpressionSyntax { + export class TemplateExpressionSyntax implements ISyntaxNode, IPrimaryExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public templateStartToken: ISyntaxToken; public templateClauses: TemplateClauseSyntax[]; public _primaryExpressionBrand: any; public _memberExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, templateStartToken: ISyntaxToken, templateClauses: TemplateClauseSyntax[]) { - super(data); + if (data) { this.__data = data; } this.templateStartToken = templateStartToken, this.templateClauses = templateClauses, templateStartToken.parent = this, @@ -2616,12 +2683,13 @@ module TypeScript { return visitor.visitTemplateExpression(this); } } - export class TemplateAccessExpressionSyntax extends SyntaxNode implements IMemberExpressionSyntax, ICallExpressionSyntax { + export class TemplateAccessExpressionSyntax implements ISyntaxNode, IMemberExpressionSyntax, ICallExpressionSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public expression: ILeftHandSideExpressionSyntax; public templateExpression: IPrimaryExpressionSyntax; public _memberExpressionBrand: any; public _callExpressionBrand: any; public _leftHandSideExpressionBrand: any; public _postfixExpressionBrand: any; public _unaryExpressionBrand: any; public _expressionBrand: any; constructor(data: number, expression: ILeftHandSideExpressionSyntax, templateExpression: IPrimaryExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.expression = expression, this.templateExpression = templateExpression, expression.parent = this, @@ -2648,11 +2716,12 @@ module TypeScript { return visitor.visitTemplateAccessExpression(this); } } - export class VariableDeclarationSyntax extends SyntaxNode { + export class VariableDeclarationSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public varKeyword: ISyntaxToken; public variableDeclarators: ISeparatedSyntaxList; constructor(data: number, varKeyword: ISyntaxToken, variableDeclarators: ISeparatedSyntaxList) { - super(data); + if (data) { this.__data = data; } this.varKeyword = varKeyword, this.variableDeclarators = variableDeclarators, varKeyword.parent = this, @@ -2679,12 +2748,13 @@ module TypeScript { return visitor.visitVariableDeclaration(this); } } - export class VariableDeclaratorSyntax extends SyntaxNode { + export class VariableDeclaratorSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public propertyName: ISyntaxToken; public typeAnnotation: TypeAnnotationSyntax; public equalsValueClause: EqualsValueClauseSyntax; constructor(data: number, propertyName: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { - super(data); + if (data) { this.__data = data; } this.propertyName = propertyName, this.typeAnnotation = typeAnnotation, this.equalsValueClause = equalsValueClause, @@ -2714,13 +2784,14 @@ module TypeScript { return visitor.visitVariableDeclarator(this); } } - export class ArgumentListSyntax extends SyntaxNode { + export class ArgumentListSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public typeArgumentList: TypeArgumentListSyntax; public openParenToken: ISyntaxToken; public arguments: ISeparatedSyntaxList; public closeParenToken: ISyntaxToken; constructor(data: number, typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken, _arguments: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.typeArgumentList = typeArgumentList, this.openParenToken = openParenToken, this.arguments = _arguments, @@ -2753,12 +2824,13 @@ module TypeScript { return visitor.visitArgumentList(this); } } - export class ParameterListSyntax extends SyntaxNode { + export class ParameterListSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public openParenToken: ISyntaxToken; public parameters: ISeparatedSyntaxList; public closeParenToken: ISyntaxToken; constructor(data: number, openParenToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.openParenToken = openParenToken, this.parameters = parameters, this.closeParenToken = closeParenToken, @@ -2788,12 +2860,13 @@ module TypeScript { return visitor.visitParameterList(this); } } - export class TypeArgumentListSyntax extends SyntaxNode { + export class TypeArgumentListSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public lessThanToken: ISyntaxToken; public typeArguments: ISeparatedSyntaxList; public greaterThanToken: ISyntaxToken; constructor(data: number, lessThanToken: ISyntaxToken, typeArguments: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.lessThanToken = lessThanToken, this.typeArguments = typeArguments, this.greaterThanToken = greaterThanToken, @@ -2823,12 +2896,13 @@ module TypeScript { return visitor.visitTypeArgumentList(this); } } - export class TypeParameterListSyntax extends SyntaxNode { + export class TypeParameterListSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public lessThanToken: ISyntaxToken; public typeParameters: ISeparatedSyntaxList; public greaterThanToken: ISyntaxToken; constructor(data: number, lessThanToken: ISyntaxToken, typeParameters: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.lessThanToken = lessThanToken, this.typeParameters = typeParameters, this.greaterThanToken = greaterThanToken, @@ -2858,11 +2932,12 @@ module TypeScript { return visitor.visitTypeParameterList(this); } } - export class HeritageClauseSyntax extends SyntaxNode { + export class HeritageClauseSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public extendsOrImplementsKeyword: ISyntaxToken; public typeNames: ISeparatedSyntaxList; constructor(data: number, extendsOrImplementsKeyword: ISyntaxToken, typeNames: ISeparatedSyntaxList) { - super(data); + if (data) { this.__data = data; } this.extendsOrImplementsKeyword = extendsOrImplementsKeyword, this.typeNames = typeNames, extendsOrImplementsKeyword.parent = this, @@ -2889,11 +2964,12 @@ module TypeScript { return visitor.visitHeritageClause(this); } } - export class EqualsValueClauseSyntax extends SyntaxNode { + export class EqualsValueClauseSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public equalsToken: ISyntaxToken; public value: IExpressionSyntax; constructor(data: number, equalsToken: ISyntaxToken, value: IExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.equalsToken = equalsToken, this.value = value, equalsToken.parent = this, @@ -2920,14 +2996,15 @@ module TypeScript { return visitor.visitEqualsValueClause(this); } } - export class CaseSwitchClauseSyntax extends SyntaxNode implements ISwitchClauseSyntax { + export class CaseSwitchClauseSyntax implements ISyntaxNode, ISwitchClauseSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public caseKeyword: ISyntaxToken; public expression: IExpressionSyntax; public colonToken: ISyntaxToken; public statements: IStatementSyntax[]; public _switchClauseBrand: any; constructor(data: number, caseKeyword: ISyntaxToken, expression: IExpressionSyntax, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { - super(data); + if (data) { this.__data = data; } this.caseKeyword = caseKeyword, this.expression = expression, this.colonToken = colonToken, @@ -2960,13 +3037,14 @@ module TypeScript { return visitor.visitCaseSwitchClause(this); } } - export class DefaultSwitchClauseSyntax extends SyntaxNode implements ISwitchClauseSyntax { + export class DefaultSwitchClauseSyntax implements ISyntaxNode, ISwitchClauseSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public defaultKeyword: ISyntaxToken; public colonToken: ISyntaxToken; public statements: IStatementSyntax[]; public _switchClauseBrand: any; constructor(data: number, defaultKeyword: ISyntaxToken, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { - super(data); + if (data) { this.__data = data; } this.defaultKeyword = defaultKeyword, this.colonToken = colonToken, this.statements = statements, @@ -2996,11 +3074,12 @@ module TypeScript { return visitor.visitDefaultSwitchClause(this); } } - export class ElseClauseSyntax extends SyntaxNode { + export class ElseClauseSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public elseKeyword: ISyntaxToken; public statement: IStatementSyntax; constructor(data: number, elseKeyword: ISyntaxToken, statement: IStatementSyntax) { - super(data); + if (data) { this.__data = data; } this.elseKeyword = elseKeyword, this.statement = statement, elseKeyword.parent = this, @@ -3027,7 +3106,8 @@ module TypeScript { return visitor.visitElseClause(this); } } - export class CatchClauseSyntax extends SyntaxNode { + export class CatchClauseSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public catchKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public identifier: ISyntaxToken; @@ -3035,7 +3115,7 @@ module TypeScript { public closeParenToken: ISyntaxToken; public block: BlockSyntax; constructor(data: number, catchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, identifier: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, closeParenToken: ISyntaxToken, block: BlockSyntax) { - super(data); + if (data) { this.__data = data; } this.catchKeyword = catchKeyword, this.openParenToken = openParenToken, this.identifier = identifier, @@ -3074,11 +3154,12 @@ module TypeScript { return visitor.visitCatchClause(this); } } - export class FinallyClauseSyntax extends SyntaxNode { + export class FinallyClauseSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public finallyKeyword: ISyntaxToken; public block: BlockSyntax; constructor(data: number, finallyKeyword: ISyntaxToken, block: BlockSyntax) { - super(data); + if (data) { this.__data = data; } this.finallyKeyword = finallyKeyword, this.block = block, finallyKeyword.parent = this, @@ -3105,11 +3186,12 @@ module TypeScript { return visitor.visitFinallyClause(this); } } - export class TemplateClauseSyntax extends SyntaxNode { + export class TemplateClauseSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public expression: IExpressionSyntax; public templateMiddleOrEndToken: ISyntaxToken; constructor(data: number, expression: IExpressionSyntax, templateMiddleOrEndToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.expression = expression, this.templateMiddleOrEndToken = templateMiddleOrEndToken, expression.parent = this, @@ -3136,11 +3218,12 @@ module TypeScript { return visitor.visitTemplateClause(this); } } - export class TypeParameterSyntax extends SyntaxNode { + export class TypeParameterSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public identifier: ISyntaxToken; public constraint: ConstraintSyntax; constructor(data: number, identifier: ISyntaxToken, constraint: ConstraintSyntax) { - super(data); + if (data) { this.__data = data; } this.identifier = identifier, this.constraint = constraint, identifier.parent = this, @@ -3167,11 +3250,12 @@ module TypeScript { return visitor.visitTypeParameter(this); } } - export class ConstraintSyntax extends SyntaxNode { + export class ConstraintSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public extendsKeyword: ISyntaxToken; public typeOrExpression: ISyntaxNodeOrToken; constructor(data: number, extendsKeyword: ISyntaxToken, typeOrExpression: ISyntaxNodeOrToken) { - super(data); + if (data) { this.__data = data; } this.extendsKeyword = extendsKeyword, this.typeOrExpression = typeOrExpression, extendsKeyword.parent = this, @@ -3198,13 +3282,14 @@ module TypeScript { return visitor.visitConstraint(this); } } - export class SimplePropertyAssignmentSyntax extends SyntaxNode implements IPropertyAssignmentSyntax { + export class SimplePropertyAssignmentSyntax implements ISyntaxNode, IPropertyAssignmentSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public propertyName: ISyntaxToken; public colonToken: ISyntaxToken; public expression: IExpressionSyntax; public _propertyAssignmentBrand: any; constructor(data: number, propertyName: ISyntaxToken, colonToken: ISyntaxToken, expression: IExpressionSyntax) { - super(data); + if (data) { this.__data = data; } this.propertyName = propertyName, this.colonToken = colonToken, this.expression = expression, @@ -3234,13 +3319,14 @@ module TypeScript { return visitor.visitSimplePropertyAssignment(this); } } - export class FunctionPropertyAssignmentSyntax extends SyntaxNode implements IPropertyAssignmentSyntax { + export class FunctionPropertyAssignmentSyntax implements ISyntaxNode, IPropertyAssignmentSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public propertyName: ISyntaxToken; public callSignature: CallSignatureSyntax; public block: BlockSyntax; public _propertyAssignmentBrand: any; constructor(data: number, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax) { - super(data); + if (data) { this.__data = data; } this.propertyName = propertyName, this.callSignature = callSignature, this.block = block, @@ -3270,7 +3356,8 @@ module TypeScript { return visitor.visitFunctionPropertyAssignment(this); } } - export class ParameterSyntax extends SyntaxNode { + export class ParameterSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public dotDotDotToken: ISyntaxToken; public modifiers: ISyntaxToken[]; public identifier: ISyntaxToken; @@ -3278,7 +3365,7 @@ module TypeScript { public typeAnnotation: TypeAnnotationSyntax; public equalsValueClause: EqualsValueClauseSyntax; constructor(data: number, dotDotDotToken: ISyntaxToken, modifiers: ISyntaxToken[], identifier: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { - super(data); + if (data) { this.__data = data; } this.dotDotDotToken = dotDotDotToken, this.modifiers = modifiers, this.identifier = identifier, @@ -3317,11 +3404,12 @@ module TypeScript { return visitor.visitParameter(this); } } - export class EnumElementSyntax extends SyntaxNode { + export class EnumElementSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public propertyName: ISyntaxToken; public equalsValueClause: EqualsValueClauseSyntax; constructor(data: number, propertyName: ISyntaxToken, equalsValueClause: EqualsValueClauseSyntax) { - super(data); + if (data) { this.__data = data; } this.propertyName = propertyName, this.equalsValueClause = equalsValueClause, propertyName.parent = this, @@ -3348,11 +3436,12 @@ module TypeScript { return visitor.visitEnumElement(this); } } - export class TypeAnnotationSyntax extends SyntaxNode { + export class TypeAnnotationSyntax implements ISyntaxNode { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public colonToken: ISyntaxToken; public type: ITypeSyntax; constructor(data: number, colonToken: ISyntaxToken, type: ITypeSyntax) { - super(data); + if (data) { this.__data = data; } this.colonToken = colonToken, this.type = type, colonToken.parent = this, @@ -3379,14 +3468,15 @@ module TypeScript { return visitor.visitTypeAnnotation(this); } } - export class ExternalModuleReferenceSyntax extends SyntaxNode implements IModuleReferenceSyntax { + export class ExternalModuleReferenceSyntax implements ISyntaxNode, IModuleReferenceSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public requireKeyword: ISyntaxToken; public openParenToken: ISyntaxToken; public stringLiteral: ISyntaxToken; public closeParenToken: ISyntaxToken; public _moduleReferenceBrand: any; constructor(data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, stringLiteral: ISyntaxToken, closeParenToken: ISyntaxToken) { - super(data); + if (data) { this.__data = data; } this.requireKeyword = requireKeyword, this.openParenToken = openParenToken, this.stringLiteral = stringLiteral, @@ -3419,11 +3509,12 @@ module TypeScript { return visitor.visitExternalModuleReference(this); } } - export class ModuleNameModuleReferenceSyntax extends SyntaxNode implements IModuleReferenceSyntax { + export class ModuleNameModuleReferenceSyntax implements ISyntaxNode, IModuleReferenceSyntax { + public __data: number; public __cachedTokens: ISyntaxToken[]; public parent: ISyntaxElement; public moduleName: INameSyntax; public _moduleReferenceBrand: any; constructor(data: number, moduleName: INameSyntax) { - super(data); + if (data) { this.__data = data; } this.moduleName = moduleName, moduleName.parent = this; }