diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5cd71544272..6d913f7360c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1012,7 +1012,7 @@ module ts { var symbol = resolveName(enclosingDeclaration, (firstIdentifier).text, meaning, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined); // Verify if the symbol is accessible - return hasVisibleDeclarations(symbol) || { + return (symbol && hasVisibleDeclarations(symbol)) || { accessibility: SymbolAccessibility.NotAccessible, errorSymbolName: getTextOfNode(firstIdentifier), errorNode: firstIdentifier @@ -1307,6 +1307,17 @@ module ts { buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, SymbolFlags.Value); } + function getIndexerParameterName(type: ObjectType, indexKind: IndexKind, fallbackName: string): string { + var declaration = getIndexDeclarationOfSymbol(type.symbol, indexKind); + if (!declaration) { + // declaration might not be found if indexer was added from the contextual type. + // in this case use fallback name + return fallbackName; + } + Debug.assert(declaration.parameters.length !== 0); + return declarationNameToString(declaration.parameters[0].name); + } + function writeLiteralType(type: ObjectType, flags: TypeFormatFlags) { var resolved = resolveObjectOrUnionTypeMembers(type); if (!resolved.properties.length && !resolved.stringIndexType && !resolved.numberIndexType) { @@ -1359,7 +1370,7 @@ module ts { if (resolved.stringIndexType) { // [x: string]: writePunctuation(writer, SyntaxKind.OpenBracketToken); - writer.writeParameter("x"); + writer.writeParameter(getIndexerParameterName(resolved, IndexKind.String, /*fallbackName*/"x")); writePunctuation(writer, SyntaxKind.ColonToken); writeSpace(writer); writeKeyword(writer, SyntaxKind.StringKeyword); @@ -1373,7 +1384,7 @@ module ts { if (resolved.numberIndexType) { // [x: number]: writePunctuation(writer, SyntaxKind.OpenBracketToken); - writer.writeParameter("x"); + writer.writeParameter(getIndexerParameterName(resolved, IndexKind.Number, /*fallbackName*/"x")); writePunctuation(writer, SyntaxKind.ColonToken); writeSpace(writer); writeKeyword(writer, SyntaxKind.NumberKeyword); diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 03951f08b4c..6dc9b31322c 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2,6 +2,7 @@ /// /// /// +/// module ts { interface EmitTextWriter { diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 8d0ae33dc32..deb2eb17fc8 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1338,15 +1338,17 @@ module ts { return token === SyntaxKind.CloseBraceToken || token === SyntaxKind.EndOfFileToken || scanner.hasPrecedingLineBreak(); } - function parseSemicolon(diagnosticMessage?: DiagnosticMessage): void { + function parseSemicolon(diagnosticMessage?: DiagnosticMessage): boolean { if (canParseSemicolon()) { if (token === SyntaxKind.SemicolonToken) { // consume the semicolon if it was explicitly provided. nextToken(); } + + return true; } else { - parseExpected(SyntaxKind.SemicolonToken, diagnosticMessage); + return parseExpected(SyntaxKind.SemicolonToken, diagnosticMessage); } } @@ -2052,13 +2054,27 @@ module ts { return requireCompleteParameterList ? undefined : createMissingList(); } + function parseTypeMemberSemicolon() { + // Try to parse out an explicit or implicit (ASI) semicolon for a type member. If we + // don't have one, then an appropriate error will be reported. + if (parseSemicolon()) { + return; + } + + // If we don't have a semicolon, then the user may have written a comma instead + // accidently (pretty easy to do since commas are so prevalent as list separators). So + // just consume the comma and keep going. Note: we'll have already reported the error + // about the missing semicolon above. + parseOptional(SyntaxKind.CommaToken); + } + function parseSignatureMember(kind: SyntaxKind): SignatureDeclaration { var node = createNode(kind); if (kind === SyntaxKind.ConstructSignature) { parseExpected(SyntaxKind.NewKeyword); } fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ false, /*requireCompleteParameterList:*/ false, node); - parseSemicolon(); + parseTypeMemberSemicolon(); return finishNode(node); } @@ -2130,11 +2146,11 @@ module ts { setModifiers(node, modifiers); node.parameters = parseBracketedList(ParsingContext.Parameters, parseParameter, SyntaxKind.OpenBracketToken, SyntaxKind.CloseBracketToken); node.type = parseTypeAnnotation(); - parseSemicolon(); + parseTypeMemberSemicolon(); return finishNode(node) } - function parsePropertyOrMethod(): Declaration { + function parsePropertyOrMethodSignature(): Declaration { var fullStart = scanner.getStartPos(); var name = parsePropertyName(); var questionToken = parseOptionalToken(SyntaxKind.QuestionToken); @@ -2147,8 +2163,7 @@ module ts { // Method signatues don't exist in expression contexts. So they have neither // [Yield] nor [GeneratorParameter] fillSignature(SyntaxKind.ColonToken, /*yieldAndGeneratorParameterContext:*/ false, /*requireCompleteParameterList:*/ false, method); - - parseSemicolon(); + parseTypeMemberSemicolon(); return finishNode(method); } else { @@ -2156,7 +2171,7 @@ module ts { property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); - parseSemicolon(); + parseTypeMemberSemicolon(); return finishNode(property); } } @@ -2188,7 +2203,7 @@ module ts { return parseSignatureMember(SyntaxKind.CallSignature); case SyntaxKind.OpenBracketToken: // Indexer or computed property - return isIndexSignature() ? parseIndexSignatureDeclaration(scanner.getStartPos(), /*modifiers:*/ undefined) : parsePropertyOrMethod(); + return isIndexSignature() ? parseIndexSignatureDeclaration(scanner.getStartPos(), /*modifiers:*/ undefined) : parsePropertyOrMethodSignature(); case SyntaxKind.NewKeyword: if (lookAhead(isStartOfConstructSignature)) { return parseSignatureMember(SyntaxKind.ConstructSignature); @@ -2196,10 +2211,10 @@ module ts { // fall through. case SyntaxKind.StringLiteral: case SyntaxKind.NumericLiteral: - return parsePropertyOrMethod(); + return parsePropertyOrMethodSignature(); default: if (isIdentifierOrKeyword()) { - return parsePropertyOrMethod(); + return parsePropertyOrMethodSignature(); } } } diff --git a/src/harness/test262Runner.ts b/src/harness/test262Runner.ts index 756ff82ef97..1602379902a 100644 --- a/src/harness/test262Runner.ts +++ b/src/harness/test262Runner.ts @@ -21,15 +21,50 @@ class Test262BaselineRunner extends RunnerBase { return Test262BaselineRunner.basePath + "/" + filename; } + private static checkInvariants(node: ts.Node, parent: ts.Node): void { + if (node) { + if (node.pos < 0) { + throw new Error("node.pos < 0"); + } + if (node.end < 0) { + throw new Error("node.end < 0"); + } + if (node.end < node.pos) { + throw new Error("node.end < node.pos"); + } + if (node.parent !== parent) { + throw new Error("node.parent !== parent"); + } + ts.forEachChild(node, child => { + Test262BaselineRunner.checkInvariants(child, node); + }); + + var childNodesAndArrays: any[] = []; + ts.forEachChild(node, child => { childNodesAndArrays.push(child) }, array => { childNodesAndArrays.push(array) }); + + for (var childName in node) { + var child = (node)[childName]; + if (Test262BaselineRunner.isNodeOrArray(child)) { + if (childNodesAndArrays.indexOf(child) < 0) { + throw new Error("Child when forEach'ing over node. " + (ts).SyntaxKind[node.kind] + "-" + childName); + } + } + } + } + } + private static serializeSourceFile(file: ts.SourceFile): string { function getKindName(k: number): string { return (ts).SyntaxKind[k] } function getFlagName(flags: any, f: number): any { - if (f === 0) return 0; + if (f === 0) { + return 0; + } + var result = ""; - ts.forEach(Object.getOwnPropertyNames(flags),(v: any) => { + ts.forEach(Object.getOwnPropertyNames(flags), (v: any) => { if (isFinite(v)) { v = +v; if (f === +v) { @@ -51,49 +86,64 @@ class Test262BaselineRunner extends RunnerBase { function getParserContextFlagName(f: number) { return getFlagName((ts).ParserContextFlags, f); } function serializeNode(n: ts.Node): any { - var o = { kind: getKindName(n.kind) }; - ts.forEach(Object.getOwnPropertyNames(n), i => { - switch (i) { + var o: any = { kind: getKindName(n.kind) }; + + ts.forEach(Object.getOwnPropertyNames(n), propertyName => { + switch (propertyName) { case "parent": case "symbol": case "locals": case "localSymbol": case "kind": case "semanticDiagnostics": - case "parseDiagnostics": - case "grammarDiagnostics": - return undefined; + case "id": + case "nodeCount": + case "symbolCount": + case "identifierCount": + // Blacklist of items we never put in the baseline file. + break; case "flags": - (o)[i] = getNodeFlagName(n.flags); - return undefined; + // Print out flags with their enum names. + o[propertyName] = getNodeFlagName(n.flags); + break; case "parserContextFlags": - (o)[i] = getParserContextFlagName(n.parserContextFlags); - return undefined; + o[propertyName] = getParserContextFlagName(n.parserContextFlags); + break; case "nextContainer": if (n.nextContainer) { - (o)[i] = { kind: n.nextContainer.kind, pos: n.nextContainer.pos, end: n.nextContainer.end }; - return undefined; + o[propertyName] = { kind: n.nextContainer.kind, pos: n.nextContainer.pos, end: n.nextContainer.end }; } + break; case "text": - if (n.kind === ts.SyntaxKind.SourceFile) return undefined; + // Include 'text' field for identifiers/literals, but not for source files. + if (n.kind !== ts.SyntaxKind.SourceFile) { + o[propertyName] = (n)[propertyName]; + } + break; default: - (o)[i] = ((n)[i]); + o[propertyName] = (n)[propertyName]; } + return undefined; }); + return o; } - return JSON.stringify(file,(k, v) => { - return (v && typeof v.pos === "number") ? serializeNode(v) : v; + return JSON.stringify(file, (k, v) => { + return Test262BaselineRunner.isNodeOrArray(v) ? serializeNode(v) : v; }, " "); } + private static isNodeOrArray(a: any): boolean { + return a !== undefined && typeof a.pos === "number"; + } + private runTest(filePath: string) { describe('test262 test for ' + filePath, () => { // Mocha holds onto the closure environment of the describe callback even after the test is done. @@ -150,6 +200,11 @@ class Test262BaselineRunner extends RunnerBase { }, false, Test262BaselineRunner.baselineOptions); }); + it('satisfies invariants', () => { + var sourceFile = testState.checker.getProgram().getSourceFile(Test262BaselineRunner.getTestFilePath(testState.filename)); + Test262BaselineRunner.checkInvariants(sourceFile, /*parent:*/ undefined); + }); + it('has the expected AST',() => { Harness.Baseline.runBaseline('has the expected AST', testState.filename + '.AST.txt',() => { var sourceFile = testState.checker.getProgram().getSourceFile(Test262BaselineRunner.getTestFilePath(testState.filename)); diff --git a/src/services/resources/diagnosticCode.generated.ts b/src/services/resources/diagnosticCode.generated.ts index d8533c0a6ee..03c4efea480 100644 --- a/src/services/resources/diagnosticCode.generated.ts +++ b/src/services/resources/diagnosticCode.generated.ts @@ -104,6 +104,7 @@ module TypeScript { A_generator_declaration_cannot_have_the_async_modifier: "A generator declaration cannot have the 'async' modifier.", async_modifier_cannot_appear_here: "'async' modifier cannot appear here.", comma_expression_cannot_appear_in_a_computed_property_name: "'comma' expression cannot appear in a computed property name.", + String_literal_expected: "String literal expected.", Duplicate_identifier_0: "Duplicate identifier '{0}'.", The_name_0_does_not_exist_in_the_current_scope: "The name '{0}' does not exist in the current scope.", The_name_0_does_not_refer_to_a_value: "The name '{0}' does not refer to a value.", diff --git a/src/services/resources/diagnosticInformationMap.generated.ts b/src/services/resources/diagnosticInformationMap.generated.ts index 5bbe9b43dbb..73e819572d8 100644 --- a/src/services/resources/diagnosticInformationMap.generated.ts +++ b/src/services/resources/diagnosticInformationMap.generated.ts @@ -106,6 +106,7 @@ module TypeScript { "A generator declaration cannot have the 'async' modifier.": { "code": 1118, "category": DiagnosticCategory.Error }, "'async' modifier cannot appear here.": { "code": 1119, "category": DiagnosticCategory.Error }, "'comma' expression cannot appear in a computed property name.": { "code": 1120, "category": DiagnosticCategory.Error }, + "String literal expected.": { "code": 1121, "category": DiagnosticCategory.Error }, "Duplicate identifier '{0}'.": { "code": 2000, "category": DiagnosticCategory.Error }, "The name '{0}' does not exist in the current scope.": { "code": 2001, "category": DiagnosticCategory.Error }, "The name '{0}' does not refer to a value.": { "code": 2002, "category": DiagnosticCategory.Error }, diff --git a/src/services/resources/diagnosticMessages.json b/src/services/resources/diagnosticMessages.json index b8e3cb26a00..54ecbb75370 100644 --- a/src/services/resources/diagnosticMessages.json +++ b/src/services/resources/diagnosticMessages.json @@ -411,6 +411,10 @@ "category": "Error", "code": 1120 }, + "String literal expected.": { + "category": "Error", + "code": 1121 + }, "Duplicate identifier '{0}'.": { "category": "Error", "code": 2000 diff --git a/src/services/services.ts b/src/services/services.ts index f74410d007e..980b7ecda3d 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1291,6 +1291,7 @@ module ts { public static interfaceName = "interface name"; public static moduleName = "module name"; public static typeParameterName = "type parameter name"; + public static typeAlias = "type alias name"; } enum MatchKind { @@ -4946,6 +4947,9 @@ module ts { else if (flags & SymbolFlags.Enum) { return ClassificationTypeNames.enumName; } + else if (flags & SymbolFlags.TypeAlias) { + return ClassificationTypeNames.typeAlias; + } else if (meaningAtPosition & SemanticMeaning.Type) { if (flags & SymbolFlags.Interface) { return ClassificationTypeNames.interfaceName; diff --git a/src/services/syntax/SyntaxGenerator.js b/src/services/syntax/SyntaxGenerator.js index 95625eff1a2..2576aab73d7 100644 --- a/src/services/syntax/SyntaxGenerator.js +++ b/src/services/syntax/SyntaxGenerator.js @@ -1964,17 +1964,23 @@ function generateConstructorFunction(definition) { } result += ") {\r\n"; result += " if (data) { this.__data = data; }\r\n"; + result += " this.parent = undefined"; if (definition.children.length) { result += " "; for (var i = 0; i < definition.children.length; i++) { +<<<<<<< HEAD if (i) { result += ", "; } +======= + result += ",\r\n"; +>>>>>>> 691a8a7... Remove restriction that you cannot reuse nodes/tokens during incremental parsing while doing speculatively operations. var child = definition.children[i]; result += "this." + child.name + " = " + getSafeName(child); } result += ";\r\n"; } +<<<<<<< HEAD if (definition.children.length > 0) { result += " "; for (var i = 0; i < definition.children.length; i++) { @@ -1991,6 +1997,9 @@ function generateConstructorFunction(definition) { } result += ";\r\n"; } +======= + result += ";\r\n"; +>>>>>>> 691a8a7... Remove restriction that you cannot reuse nodes/tokens during incremental parsing while doing speculatively operations. result += " };\r\n"; result += " " + definition.name + ".prototype.kind = SyntaxKind." + getNameWithoutSuffix(definition) + ";\r\n"; result += " " + definition.name + ".prototype.childCount = " + definition.children.length + ";\r\n"; diff --git a/src/services/syntax/SyntaxGenerator.js.map b/src/services/syntax/SyntaxGenerator.js.map index 42c45030562..cc670d0eeba 100644 --- a/src/services/syntax/SyntaxGenerator.js.map +++ b/src/services/syntax/SyntaxGenerator.js.map @@ -24,6 +24,7 @@ <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< Updated upstream {"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.fileChanged","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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"} ======= @@ -107,3 +108,6 @@ ======= {"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getWScriptSystem.write","getWScriptSystem.resolvePath","getWScriptSystem.fileExists","getWScriptSystem.directoryExists","getWScriptSystem.createDirectory","getWScriptSystem.getExecutingFilePath","getWScriptSystem.getCurrentDirectory","getWScriptSystem.exit","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.write","getNodeSystem.close","getNodeSystem.fileChanged","getNodeSystem.fileExists","getNodeSystem.directoryExists","getNodeSystem.createDirectory","getNodeSystem.getExecutingFilePath","getNodeSystem.getCurrentDirectory","getNodeSystem.getMemoryUsage","getNodeSystem.exit","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"AA4BA,IAAI,GAAG,GAAW,CAAC;IAEf,SAAS,gBAAgB;QAErBA,IAAIA,GAAGA,GAAGA,IAAIA,aAAaA,CAACA,4BAA4BA,CAACA,CAACA;QAE1DA,IAAIA,UAAUA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACnDA,UAAUA,CAACA,IAAIA,GAAGA,CAACA,CAAUA;QAE7BA,IAAIA,YAAYA,GAAGA,IAAIA,aAAaA,CAACA,cAAcA,CAACA,CAACA;QACrDA,YAAYA,CAACA,IAAIA,GAAGA,CAACA,CAAYA;QAEjCA,IAAIA,IAAIA,GAAaA,EAAEA,CAACA;QACxBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YAChDA,IAAIA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;QACxCA,CAACA;QAEDA,SAASA,QAAQA,CAACA,QAAgBA,EAAEA,QAAiBA;YACjDC,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,IAAAA,CAACA;gBACGA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBAEFA,UAAUA,CAACA,OAAOA,GAAGA,QAAQA,CAACA;oBAC9BA,UAAUA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;oBAClCA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA;oBAEvCA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAExBA,UAAUA,CAACA,OAAOA,GAAGA,GAAGA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,IAAIA,GAAGA,CAACA,UAAUA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,SAASA,GAAGA,OAAOA,CAACA;gBACzLA,CAACA;gBAEDA,MAAMA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA;YACjCA,CACAA;YAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACPA,MAAMA,CAACA,CAACA;YACZA,CAACA;oBACDA,CAACA;gBACGA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDD,SAASA,SAASA,CAACA,QAAgBA,EAAEA,IAAYA,EAAEA,kBAA4BA;YAC3EE,UAAUA,CAACA,IAAIA,EAAEA,CAACA;YAClBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;YACpBA,IAAAA,CAACA;gBAEGA,UAAUA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAC7BA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBAG3BA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACrBA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,QAAQA,GAAGA,CAACA,CAACA;gBAC5BA,CAACA;gBACDA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAChCA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,CAACA,CAAeA,CAACA;YACvDA,CAACA;oBACDA,CAACA;gBACGA,YAAYA,CAACA,KAAKA,EAAEA,CAACA;gBACrBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,YAACA,CAASA;gBACXG,OAAOA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;YAC5BA,CAACA;YACDH,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,YAACA,IAAYA;gBACpBI,MAAMA,CAACA,GAAGA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,CAACA;YACzCA,CAACA;YACDJ,UAAUA,YAACA,IAAYA;gBACnBK,MAAMA,CAACA,GAAGA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAChCA,CAACA;YACDL,eAAeA,YAACA,IAAYA;gBACxBM,MAAMA,CAACA,GAAGA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YAClCA,CAACA;YACDN,eAAeA,YAACA,aAAqBA;gBACjCO,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA;oBACvCA,GAAGA,CAACA,YAAYA,CAACA,aAAaA,CAACA,CAACA;gBACpCA,CAACA;YACLA,CAACA;YACDP,oBAAoBA;gBAChBQ,MAAMA,CAACA,OAAOA,CAACA,cAAcA,CAACA;YAClCA,CAACA;YACDR,mBAAmBA;gBACfS,MAAMA,CAACA,IAAIA,aAAaA,CAACA,eAAeA,CAACA,CAACA,gBAAgBA,CAACA;YAC/DA,CAACA;YACDT,IAAIA,YAACA,QAAiBA;gBAClBU,IAAAA,CAACA;oBACGA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAC3BA,CACAA;gBAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACXA,CAACA;YACLA,CAACA;SACJV,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBW,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,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"} >>>>>>> 44381ba... Use callbacks for speculative parsing. +======= +{"version":3,"file":"SyntaxGenerator.js","sourceRoot":"","sources":["file:///C:/VSPro_1/src/typescript/public_cyrusn/src/compiler/sys.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/errors.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/arrayUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/core/stringUtilities.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxKind.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/syntaxFacts.ts","file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.ts"],"names":["getWScriptSystem","getWScriptSystem.readFile","getWScriptSystem.writeFile","getWScriptSystem.write","getWScriptSystem.resolvePath","getWScriptSystem.fileExists","getWScriptSystem.directoryExists","getWScriptSystem.createDirectory","getWScriptSystem.getExecutingFilePath","getWScriptSystem.getCurrentDirectory","getWScriptSystem.exit","getNodeSystem","getNodeSystem.readFile","getNodeSystem.writeFile","getNodeSystem.write","getNodeSystem.close","getNodeSystem.fileChanged","getNodeSystem.fileExists","getNodeSystem.directoryExists","getNodeSystem.createDirectory","getNodeSystem.getExecutingFilePath","getNodeSystem.getCurrentDirectory","getNodeSystem.getMemoryUsage","getNodeSystem.exit","TypeScript","TypeScript.Errors","TypeScript.Errors.constructor","TypeScript.Errors.argument","TypeScript.Errors.argumentOutOfRange","TypeScript.Errors.argumentNull","TypeScript.Errors.abstract","TypeScript.Errors.notYetImplemented","TypeScript.Errors.invalidOperation","TypeScript.ArrayUtilities","TypeScript.ArrayUtilities.constructor","TypeScript.ArrayUtilities.sequenceEquals","TypeScript.ArrayUtilities.contains","TypeScript.ArrayUtilities.distinct","TypeScript.ArrayUtilities.last","TypeScript.ArrayUtilities.lastOrDefault","TypeScript.ArrayUtilities.firstOrDefault","TypeScript.ArrayUtilities.first","TypeScript.ArrayUtilities.sum","TypeScript.ArrayUtilities.select","TypeScript.ArrayUtilities.where","TypeScript.ArrayUtilities.any","TypeScript.ArrayUtilities.all","TypeScript.ArrayUtilities.binarySearch","TypeScript.ArrayUtilities.createArray","TypeScript.ArrayUtilities.grow","TypeScript.ArrayUtilities.copy","TypeScript.ArrayUtilities.indexOf","TypeScript.StringUtilities","TypeScript.StringUtilities.constructor","TypeScript.StringUtilities.isString","TypeScript.StringUtilities.endsWith","TypeScript.StringUtilities.startsWith","TypeScript.StringUtilities.repeat","TypeScript.SyntaxKind","TypeScript.SyntaxFacts","TypeScript.SyntaxFacts.getTokenKind","TypeScript.SyntaxFacts.getText","TypeScript.SyntaxFacts.isAnyKeyword","TypeScript.SyntaxFacts.isAnyPunctuation","TypeScript.SyntaxFacts.isPrefixUnaryExpressionOperatorToken","TypeScript.SyntaxFacts.isBinaryExpressionOperatorToken","TypeScript.SyntaxFacts.isAssignmentOperatorToken","TypeScript.SyntaxFacts.isType","getSyntaxKindEnum","firstKind","getStringWithoutSuffix","getNameWithoutSuffix","getType","camelCase","getSafeName","generateConstructorFunction","generateSyntaxInterfaces","generateSyntaxInterface","generateNodes","isInterface","generateWalker","firstEnumName","groupBy","generateKeywordCondition","min","max","generateUtilities","generateScannerUtilities","syntaxKindName","generateVisitor"],"mappings":"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KAAKA,EAAEA,CAACA;YACvBA,CAACA;QACLA,CAACA;QAEDF,MAAMA,CAACA;YACHA,IAAIA,MAAAA;YACJA,OAAOA,EAAEA,MAAMA;YACfA,yBAAyBA,EAAEA,KAAKA;YAChCA,KAAKA,YAACA,CAASA;gBACXG,OAAOA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;YAC5BA,CAACA;YACDH,QAAQA,UAAAA;YACRA,SAASA,WAAAA;YACTA,WAAWA,YAACA,IAAYA;gBACpBI,MAAMA,CAACA,GAAGA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,CAACA;YACzCA,CAACA;YACDJ,UAAUA,YAACA,IAAYA;gBACnBK,MAAMA,CAACA,GAAGA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;YAChCA,CAACA;YACDL,eAAeA,YAACA,IAAYA;gBACxBM,MAAMA,CAACA,GAAGA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YAClCA,CAACA;YACDN,eAAeA,YAACA,aAAqBA;gBACjCO,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA;oBACvCA,GAAGA,CAACA,YAAYA,CAACA,aAAaA,CAACA,CAACA;gBACpCA,CAACA;YACLA,CAACA;YACDP,oBAAoBA;gBAChBQ,MAAMA,CAACA,OAAOA,CAACA,cAAcA,CAACA;YAClCA,CAACA;YACDR,mBAAmBA;gBACfS,MAAMA,CAACA,IAAIA,aAAaA,CAACA,eAAeA,CAACA,CAACA,gBAAgBA,CAACA;YAC/DA,CAACA;YACDT,IAAIA,YAACA,QAAiBA;gBAClBU,IAAAA,CAACA;oBACGA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAC3BA,CACAA;gBAAAA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACXA,CAACA;YACLA,CAACA;SACJV,CAACA;IACNA,CAACA;IACD,SAAS,aAAa;QAClBW,IAAIA,GAAGA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,CAACA;QACxBA,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"} +>>>>>>> 691a8a7... Remove restriction that you cannot reuse nodes/tokens during incremental parsing while doing speculatively operations. diff --git a/src/services/syntax/incrementalParser.ts b/src/services/syntax/incrementalParser.ts index 4ecd75b0001..0147cb8e32a 100644 --- a/src/services/syntax/incrementalParser.ts +++ b/src/services/syntax/incrementalParser.ts @@ -25,17 +25,15 @@ module TypeScript.IncrementalParser { // // This parser source also keeps track of the absolute position in the text that we're in, // and any token diagnostics produced. That way we dont' have to track that ourselves. - var _scannerParserSource = Scanner.createParserSource(oldSyntaxTree.fileName(), text, oldSyntaxTree.languageVersion()); + var scannerParserSource = Scanner.createParserSource(oldSyntaxTree.fileName(), text, oldSyntaxTree.languageVersion()); // The cursor we use to navigate through and retrieve nodes and tokens from the old tree. var oldSourceUnit = oldSyntaxTree.sourceUnit(); - var _isSpeculativelyParsing = false; - // Start the cursor pointing at the first element in the source unit (if it exists). - var _oldSourceUnitCursor = getSyntaxCursor(); + var oldSourceUnitCursor = getSyntaxCursor(); if (oldSourceUnit.moduleElements.length > 0) { - _oldSourceUnitCursor.pushElement(childAt(oldSourceUnit.moduleElements, 0), /*indexInParent:*/ 0); + oldSourceUnitCursor.pushElement(childAt(oldSourceUnit.moduleElements, 0), /*indexInParent:*/ 0); } // In general supporting multiple individual edits is just not that important. So we @@ -43,18 +41,16 @@ module TypeScript.IncrementalParser { // time this could be problematic would be if the user made a ton of discontinuous edits. // For example, doing a column select on a *large* section of a code. If this is a // problem, we can always update this code to handle multiple changes. - var _changeRange = extendToAffectedRange(textChangeRange, oldSourceUnit); - - // Cached value of _changeRange.newSpan(). Cached for performance. - var _changeRangeNewSpan = _changeRange.newSpan(); + var changeRange = extendToAffectedRange(textChangeRange, oldSourceUnit); // The old tree's length, plus whatever length change was caused by the edit // Had better equal the new text's length! if (Debug.shouldAssert(AssertionLevel.Aggressive)) { - Debug.assert((fullWidth(oldSourceUnit) - _changeRange.span().length() + _changeRange.newLength()) === text.length()); + Debug.assert((fullWidth(oldSourceUnit) - changeRange.span().length() + changeRange.newLength()) === text.length()); } - var delta = _changeRange.newSpan().length() - _changeRange.span().length(); + var delta = changeRange.newSpan().length() - changeRange.span().length(); + // If we added or removed characters during the edit, then we need to go and adjust all // the nodes after the edit. Those nodes may move forward down (if we inserted chars) // or they may move backward (if we deleted chars). @@ -70,7 +66,7 @@ module TypeScript.IncrementalParser { // Also, mark any syntax elements that intersect the changed span. We know, up front, // that we cannot reuse these elements. updateTokenPositionsAndMarkElements(oldSourceUnit, - _changeRange.span().start(), _changeRange.span().end(), delta, /*fullStart:*/ 0); + changeRange.span().start(), changeRange.span().end(), delta, /*fullStart:*/ 0); function extendToAffectedRange(changeRange: TextChangeRange, sourceUnit: SourceUnitSyntax): TextChangeRange { // Consider the following code: @@ -104,35 +100,27 @@ module TypeScript.IncrementalParser { } function absolutePosition() { - return _scannerParserSource.absolutePosition(); + return scannerParserSource.absolutePosition(); } - function tokenDiagnostics(): Diagnostic[] { - return _scannerParserSource.tokenDiagnostics(); + function diagnostics(): Diagnostic[] { + return scannerParserSource.diagnostics(); } function tryParse(callback: () => T): T { // Clone our cursor. That way we can restore to that point if the parser needs to rewind. - var savedOldSourceUnitCursor = cloneSyntaxCursor(_oldSourceUnitCursor); - var savedIsSpeculativelyParsing = _isSpeculativelyParsing; - - // Mark that we're speculative parsing. During speculative parsing we cannot ruse - // nodes from the parse tree. See the comment in trySynchronizeCursorToPosition for - // the reasons why. - _isSpeculativelyParsing = true; + var savedOldSourceUnitCursor = cloneSyntaxCursor(oldSourceUnitCursor); // Now defer to our underlying scanner source to actually invoke the callback. That // way, if the parser decides to rewind, both the scanner source and this incremental // source will rewind appropriately. - var result = _scannerParserSource.tryParse(callback); - - _isSpeculativelyParsing = savedIsSpeculativelyParsing; + var result = scannerParserSource.tryParse(callback); if (!result) { // We're rewinding. Reset the cursor to what it was when we got the rewind point. // Make sure to return our existing cursor to the pool so it can be reused. - returnSyntaxCursor(_oldSourceUnitCursor); - _oldSourceUnitCursor = savedOldSourceUnitCursor; + returnSyntaxCursor(oldSourceUnitCursor); + oldSourceUnitCursor = savedOldSourceUnitCursor; } else { // We're not rewinding. Return the cloned original cursor back to the pool. @@ -143,36 +131,15 @@ module TypeScript.IncrementalParser { } function trySynchronizeCursorToPosition() { - // If we're currently pinned, then do not want to touch the cursor. Here's why. First, - // recall that we're 'pinned' when we're speculatively parsing. So say we were to allow - // returning old nodes/tokens while speculatively parsing. Then, the parser might start - // mutating the nodes and tokens we returned (i.e. by setting their parents). Then, - // when we rewound, those nodes and tokens would still have those updated parents. - // Parents which we just decided we did *not* want to parse (hence why we rewound). For - // Example, say we have something like: - // - // var v = fe; // note: this is not generic. - // - // When incrementally parsing, we will need to speculatively parse to determine if the - // above is generic. This will cause us to reuse the "a, b, c" tokens, and set their - // parent to a new type argument list. A type argument list we will then throw away once - // we decide that it isn't actually generic. We will have now 'broken' the original tree. - // - // As such, the rule is simple. We only return nodes/tokens from teh original tree if - // we know the parser will accept and consume them and never rewind back before them. - if (_isSpeculativelyParsing) { - return false; - } - var absolutePos = absolutePosition(); while (true) { - if (_oldSourceUnitCursor.isFinished()) { + if (oldSourceUnitCursor.isFinished()) { // Can't synchronize the cursor to the current position if the cursor is finished. return false; } // Start with the current node or token the cursor is pointing at. - var currentNodeOrToken = _oldSourceUnitCursor.currentNodeOrToken(); + var currentNodeOrToken = oldSourceUnitCursor.currentNodeOrToken(); // Node, move the cursor past any nodes or tokens that intersect the change range // 1) they are never reusable. @@ -182,10 +149,10 @@ module TypeScript.IncrementalParser { // of the incremental algorithm. if ((currentNodeOrToken).intersectsChange) { if (isNode(currentNodeOrToken)) { - _oldSourceUnitCursor.moveToFirstChild(); + oldSourceUnitCursor.moveToFirstChild(); } else { - _oldSourceUnitCursor.moveToNextSibling(); + oldSourceUnitCursor.moveToNextSibling(); } continue; } @@ -213,13 +180,13 @@ module TypeScript.IncrementalParser { // able to break up that token any further and we should just move to the next // token. if (currentNodeOrTokenFullEnd <= absolutePos || isToken(currentNodeOrToken)) { - _oldSourceUnitCursor.moveToNextSibling(); + oldSourceUnitCursor.moveToNextSibling(); } else { // We have a node, and it started before our absolute pos, and ended after our // pos. Try to crumble this node to see if we'll be able to skip the first node // or token contained within. - _oldSourceUnitCursor.moveToFirstChild(); + oldSourceUnitCursor.moveToFirstChild(); } } } @@ -248,12 +215,12 @@ module TypeScript.IncrementalParser { // Either we couldn't read from the old source unit, or we weren't able to successfully // get a token from it. In this case we need to read a token from the underlying text. - return _scannerParserSource.currentToken(); + return scannerParserSource.currentToken(); } function currentContextualToken(): ISyntaxToken { // Just delegate to the underlying source to handle - return _scannerParserSource.currentContextualToken(); + return scannerParserSource.currentContextualToken(); } function tryGetNodeFromOldSourceUnit(): ISyntaxNode { @@ -264,7 +231,7 @@ module TypeScript.IncrementalParser { // c) it does not have a regex token in it. // d) we are still in the same strict or non-strict state that the node was originally parsed in. while (true) { - var node = _oldSourceUnitCursor.currentNode(); + var node = oldSourceUnitCursor.currentNode(); if (node === undefined) { // Couldn't even read a node, nothing to return. return undefined; @@ -279,7 +246,7 @@ module TypeScript.IncrementalParser { // We couldn't use currentNode. Try to move to its first child (in case that's a // node). If it is we can try using that. Otherwise we'll just bail out in the // next iteration of the loop. - _oldSourceUnitCursor.moveToFirstChild(); + oldSourceUnitCursor.moveToFirstChild(); } } @@ -309,7 +276,7 @@ module TypeScript.IncrementalParser { function tryGetTokenFromOldSourceUnit(): ISyntaxToken { // get the current token that the cursor is pointing at. - var token = _oldSourceUnitCursor.currentToken(); + var token = oldSourceUnitCursor.currentToken(); return canReuseTokenFromOldSourceUnit(token) ? token : undefined; } @@ -323,44 +290,44 @@ module TypeScript.IncrementalParser { } // Couldn't peek this far in the old tree. Get the token from the new text. - return _scannerParserSource.peekToken(n); + return scannerParserSource.peekToken(n); } function tryPeekTokenFromOldSourceUnit(n: number): ISyntaxToken { // clone the existing cursor so we can move it forward and then restore ourselves back // to where we started from. - var cursorClone = cloneSyntaxCursor(_oldSourceUnitCursor); + var cursorClone = cloneSyntaxCursor(oldSourceUnitCursor); var token = tryPeekTokenFromOldSourceUnitWorker(n); - returnSyntaxCursor(_oldSourceUnitCursor); - _oldSourceUnitCursor = cursorClone; + returnSyntaxCursor(oldSourceUnitCursor); + oldSourceUnitCursor = cursorClone; return token; } function tryPeekTokenFromOldSourceUnitWorker(n: number): ISyntaxToken { // First, make sure the cursor is pointing at a token. - _oldSourceUnitCursor.moveToFirstToken(); + oldSourceUnitCursor.moveToFirstToken(); // Now, keep walking forward to successive tokens. for (var i = 0; i < n; i++) { - var interimToken = _oldSourceUnitCursor.currentToken(); + var interimToken = oldSourceUnitCursor.currentToken(); if (!canReuseTokenFromOldSourceUnit(interimToken)) { return undefined; } - _oldSourceUnitCursor.moveToNextSibling(); + oldSourceUnitCursor.moveToNextSibling(); } - var token = _oldSourceUnitCursor.currentToken(); + var token = oldSourceUnitCursor.currentToken(); return canReuseTokenFromOldSourceUnit(token) ? token : undefined; } function consumeNodeOrToken(nodeOrToken: ISyntaxNodeOrToken): void { - _scannerParserSource.consumeNodeOrToken(nodeOrToken); + scannerParserSource.consumeNodeOrToken(nodeOrToken); } return { @@ -372,15 +339,15 @@ module TypeScript.IncrementalParser { currentToken: currentToken, currentContextualToken: currentContextualToken, peekToken: peekToken, - consumeNodeOrToken: consumeNodeOrToken, + consumeNodeOrToken: scannerParserSource.consumeNodeOrToken, tryParse: tryParse, - tokenDiagnostics: tokenDiagnostics, + diagnostics: diagnostics }; } function updateTokenPositionsAndMarkElements(element: ISyntaxElement, changeStart: number, changeRangeOldEnd: number, delta: number, fullStart: number): void { - // First, try to skip past any elements that we dont' need to move. We don't need to - // move any elements that don't start after the end of the change range. + // First, try to skip past any elements that we dont' need to move. We don't need to + // move any elements that don't start after the end of the change range. if (fullStart > changeRangeOldEnd) { // Note, we only move elements that are truly after the end of the change range. // We consider elements that are touching the end of the change range to be unusable. @@ -444,8 +411,7 @@ module TypeScript.IncrementalParser { forceUpdateTokenPosition(nodeOrToken, delta); } else { - var node = nodeOrToken; - var tokens = getTokens(node); + var tokens = getTokens(nodeOrToken); for (var i = 0, n = tokens.length; i < n; i++) { forceUpdateTokenPosition(tokens[i], delta); } diff --git a/src/services/syntax/parser.ts b/src/services/syntax/parser.ts index be2ab436456..537ebd66f06 100644 --- a/src/services/syntax/parser.ts +++ b/src/services/syntax/parser.ts @@ -59,24 +59,34 @@ module TypeScript.Parser { // The current token reinterpretted contextually based on where the parser is. If the // source is on a / or /= token, then it can be reinterpretted as a regex token. If the - // source is on a > token, it may be reinterpretted to: >> >>> >= >>= >>>= + // source is on a > token, it may be reinterpretted to: >> >>> >= >>= >>>=. If the + // source is on a }, it will be reinterpretted as a template middle/end token. currentContextualToken(): ISyntaxToken; + // Called to move the source to the next node or token once the parser has consumed the + // current one. + consumeNodeOrToken(node: ISyntaxNodeOrToken): void; + // Peek any number of tokens ahead from the current location in source. peekToken(0) is // equivalent to 'currentToken', peekToken(1) is the next token, peekToken(2) the token // after that, etc. If the caller peeks past the end of the text, then EndOfFile tokens // will be returned. peekToken(n: number): ISyntaxToken; + // Used by the parser to tell the source that it is currently speculatively parsing. The + // source will save its current state and then invoke the passed in callback. If the call + // back returned 'undefined', then the source will rollback to the exact state it was in + // prior to calling the callback. If the callback returns an actual node then the source + // will stay in its current state and then return that node back out of this function. + tryParse(callback: () => T): T; + // Called to move the source to the next node or token once the parser has consumed the // current one. consumeNodeOrToken(node: ISyntaxNodeOrToken): void; - tryParse(callback: () => T): T; - // Retrieves the diagnostics generated while the source was producing nodes or tokens. // Should generally only be called after the document has been completely parsed. - tokenDiagnostics(): Diagnostic[]; + diagnostics(): Diagnostic[]; } // Contains the actual logic to parse typescript/javascript. This is the code that generally @@ -130,8 +140,8 @@ module TypeScript.Parser { // [~GeneratorParameter]BindingIdentifier[?Yield]Initializer[In, ?Yield]opt // // Here this is saying that if the GeneratorParameter context flag is set, that we should - // explicitly set the 'yield' context flag to false before calling into the BindingIdentifier - // and we should explicitly unset the 'yield' context flag before calling into the Initializer. + // explicitly set the 'yield' context flag to true before calling into the 'BindingIdentifier' + // and we should explicitly unset the 'yield' context flag before calling into the 'Initializer'. // production. Conversely, if the GeneratorParameter context flag is not set, then we // should leave the 'yield' context flag alone. // @@ -202,7 +212,7 @@ module TypeScript.Parser { function inAsyncContext() { return (contextFlags & ParserContextFlags.Async) !== 0; } - + function allowInAnd(func: () => T): T { if (inDisallowInContext()) { setDisallowInContext(false); @@ -292,13 +302,42 @@ module TypeScript.Parser { function parseSyntaxTreeWorker(isDeclaration: boolean): SyntaxTree { var sourceUnit = parseSourceUnit(); + setupParentsForSyntaxNodeOrToken(sourceUnit); - var allDiagnostics = source.tokenDiagnostics().concat(diagnostics); + var allDiagnostics = source.diagnostics().concat(diagnostics); allDiagnostics.sort((a: Diagnostic, b: Diagnostic) => a.start() - b.start()); return new SyntaxTree(sourceUnit, isDeclaration, allDiagnostics, source.fileName, source.text, source.languageVersion); } + function setupParentsForElement(element: ISyntaxElement, parent: ISyntaxElement) { + if (element) { + if (element.parent === parent) { + return; + } + element.parent = parent; + + if (isList(element)) { + setupParentsForList(element); + } + else { + setupParentsForSyntaxNodeOrToken(element); + } + } + } + + function setupParentsForList(list: ISyntaxNodeOrToken[]) { + for (var i = 0, n = list.length; i < n; i++) { + setupParentsForElement(list[i], list); + } + } + + function setupParentsForSyntaxNodeOrToken(nodeOrToken: ISyntaxNodeOrToken) { + for (var i = 0, n = nodeOrToken.childCount; i < n; i++) { + setupParentsForElement(nodeOrToken.childAt(i), nodeOrToken); + } + } + function tryParse(callback: () => T): T { // See the comments in IParserRewindPoint for the explanation on why we need to store // this data, and what it is used for. @@ -315,33 +354,6 @@ module TypeScript.Parser { return result; } - function currentNode(): ISyntaxNode { - // If we have any outstanding tokens, then don't reuse a node. - // TODO(cyrusn): This may be too conservative. Perhaps we could reuse hte node and - // attach the skipped tokens in front? For now though, being conservative is nice and - // safe, and likely won't ever affect perf. - if (!skippedTokens) { - var node = source.currentNode(); - - // We can only reuse a node if it was parsed under the same strict mode that we're - // currently in. i.e. if we originally parsed a node in non-strict mode, but then - // the user added 'using strict' at the top of the file, then we can't use that node - // again as the presense of strict mode may cause us to parse the tokens in the file - // differetly. - // - // Note: we *can* reuse tokens when the strict mode changes. That's because tokens - // are unaffected by strict mode. It's just the parser will decide what to do with it - // differently depending on what mode it is in. - if (node && - parserContextFlags(node) === contextFlags) { - - return node; - } - } - - return undefined; - } - function currentToken(): ISyntaxToken { return source.currentToken(); } @@ -427,9 +439,10 @@ module TypeScript.Parser { } } - function consumeNode(node: ISyntaxNode): void { + function consumeNode(node: ISyntaxNode): ISyntaxNode { Debug.assert(skippedTokens === undefined); source.consumeNodeOrToken(node); + return node; } //this method is called very frequently @@ -644,11 +657,11 @@ module TypeScript.Parser { function getBinaryExpressionPrecedence(tokenKind: SyntaxKind): BinaryExpressionPrecedence { switch (tokenKind) { - case SyntaxKind.BarBarToken: return BinaryExpressionPrecedence.LogicalOrExpressionPrecedence; - case SyntaxKind.AmpersandAmpersandToken: return BinaryExpressionPrecedence.LogicalAndExpressionPrecedence; - case SyntaxKind.BarToken: return BinaryExpressionPrecedence.BitwiseOrExpressionPrecedence; - case SyntaxKind.CaretToken: return BinaryExpressionPrecedence.BitwiseExclusiveOrExpressionPrecedence; - case SyntaxKind.AmpersandToken: return BinaryExpressionPrecedence.BitwiseAndExpressionPrecedence; + case SyntaxKind.BarBarToken: return BinaryExpressionPrecedence.LogicalOrExpressionPrecedence; + case SyntaxKind.AmpersandAmpersandToken: return BinaryExpressionPrecedence.LogicalAndExpressionPrecedence; + case SyntaxKind.BarToken: return BinaryExpressionPrecedence.BitwiseOrExpressionPrecedence; + case SyntaxKind.CaretToken: return BinaryExpressionPrecedence.BitwiseExclusiveOrExpressionPrecedence; + case SyntaxKind.AmpersandToken: return BinaryExpressionPrecedence.BitwiseAndExpressionPrecedence; case SyntaxKind.EqualsEqualsToken: case SyntaxKind.ExclamationEqualsToken: case SyntaxKind.EqualsEqualsEqualsToken: @@ -666,7 +679,7 @@ module TypeScript.Parser { case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: return BinaryExpressionPrecedence.ShiftExpressionPrecdence; case SyntaxKind.PlusToken: - case SyntaxKind.MinusToken: + case SyntaxKind.MinusToken: return BinaryExpressionPrecedence.AdditiveExpressionPrecedence; case SyntaxKind.AsteriskToken: case SyntaxKind.SlashToken: @@ -686,9 +699,9 @@ module TypeScript.Parser { // Note: any skipped tokens produced after the end of all the module elements will be // added as skipped trivia to the start of the EOF token. var moduleElements = parseSyntaxList(ListParsingState.SourceUnit_ModuleElements, updateStrictModeState); - + setStrictModeContext(savedIsInStrictMode); - + var sourceUnit = new SourceUnitSyntax(contextFlags, moduleElements, consumeToken(currentToken())); if (Debug.shouldAssert(AssertionLevel.Aggressive)) { @@ -721,22 +734,12 @@ module TypeScript.Parser { } function isModuleElement(inErrorRecovery: boolean): boolean { - if (SyntaxUtilities.isModuleElement(currentNode())) { - return true; - } - var _modifierCount = modifierCount(); return isInterfaceEnumClassModuleImportExportOrTypeAlias(_modifierCount) || - isStatement(_modifierCount, inErrorRecovery); + isStatement(_modifierCount, inErrorRecovery); } function tryParseModuleElement(inErrorRecovery: boolean): IModuleElementSyntax { - var node = currentNode(); - if (SyntaxUtilities.isModuleElement(node)) { - consumeNode(node); - return node; - } - var _currentToken = currentToken(); var _modifierCount = modifierCount(); @@ -836,12 +839,15 @@ module TypeScript.Parser { function isExternalModuleReference(): boolean { return currentToken().kind === SyntaxKind.RequireKeyword && - peekToken(1).kind === SyntaxKind.OpenParenToken; + peekToken(1).kind === SyntaxKind.OpenParenToken; } function parseExternalModuleReference(): ExternalModuleReferenceSyntax { return new ExternalModuleReferenceSyntax(contextFlags, - eatToken(SyntaxKind.RequireKeyword), eatToken(SyntaxKind.OpenParenToken), eatToken(SyntaxKind.StringLiteral), eatToken(SyntaxKind.CloseParenToken)); + eatToken(SyntaxKind.RequireKeyword), + eatToken(SyntaxKind.OpenParenToken), + parseExpression(), + eatToken(SyntaxKind.CloseParenToken)); } function parseModuleNameModuleReference(): ModuleNameModuleReferenceSyntax { @@ -912,35 +918,24 @@ module TypeScript.Parser { function parseEnumDeclaration(): EnumDeclarationSyntax { var openBraceToken: ISyntaxToken; - return new EnumDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.EnumKeyword), - eatIdentifierToken(), + return new EnumDeclarationSyntax(contextFlags, + parseModifiers(), + eatToken(SyntaxKind.EnumKeyword), + eatIdentifierToken(), openBraceToken = eatToken(SyntaxKind.OpenBraceToken), openBraceToken.fullWidth() > 0 ? parseSeparatedSyntaxList(ListParsingState.EnumDeclaration_EnumElements) : [], eatToken(SyntaxKind.CloseBraceToken)); } function isEnumElement(inErrorRecovery: boolean): boolean { - var node = currentNode(); - if (node && node.kind === SyntaxKind.EnumElement) { - return true; - } - return isPropertyName(/*peekToken:*/ 0, inErrorRecovery); } - + function tryParseEnumElementEqualsValueClause(): EqualsValueClauseSyntax { return isEqualsValueClause(/*inParameter*/ false) ? allowInAnd(parseEqualsValueClause) : undefined; } function tryParseEnumElement(inErrorRecovery: boolean): EnumElementSyntax { - var node = currentNode(); - if (node && node.kind === SyntaxKind.EnumElement) { - consumeNode(node); - return node; - } - if (!isPropertyName(/*peekToken:*/ 0, inErrorRecovery)) { return undefined; } @@ -1072,12 +1067,12 @@ module TypeScript.Parser { function parseClassDeclaration(): ClassDeclarationSyntax { var openBraceToken: ISyntaxToken; return new ClassDeclarationSyntax(contextFlags, - parseModifiers(), - eatToken(SyntaxKind.ClassKeyword), - eatIdentifierToken(), - tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), - parseHeritageClauses(/*isClassHeritageClauses:*/ true), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), + parseModifiers(), + eatToken(SyntaxKind.ClassKeyword), + eatIdentifierToken(), + tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), + parseHeritageClauses(/*isClassHeritageClauses:*/ true), + openBraceToken = eatToken(SyntaxKind.OpenBraceToken), openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.ClassDeclaration_ClassElements) : [], eatToken(SyntaxKind.CloseBraceToken)); } @@ -1140,15 +1135,11 @@ module TypeScript.Parser { } function isClassElement(inErrorRecovery: boolean): boolean { - if (SyntaxUtilities.isClassElement(currentNode())) { - return true; - } - return isAtModifier() || - isConstructorDeclaration() || - isAccessor(inErrorRecovery) || - isIndexMemberDeclaration() || - isMemberVariableOrFunctionDeclaration(inErrorRecovery); + isConstructorDeclaration() || + isAccessor(inErrorRecovery) || + isIndexMemberDeclaration() || + isMemberVariableOrFunctionDeclaration(inErrorRecovery); } function isMemberVariableOrFunctionDeclaration(inErrorRecovery: boolean) { @@ -1207,12 +1198,6 @@ module TypeScript.Parser { } function tryParseClassElement(inErrorRecovery: boolean): IClassElementSyntax { - var node = currentNode(); - if (SyntaxUtilities.isClassElement(node)) { - consumeNode(node); - return node; - } - // Have to check for indexers before anything else. That way if we see "[foo:" we // parse it out as an indexer and not a member function or variable. var modifiers = parseModifiers(); @@ -1257,9 +1242,9 @@ module TypeScript.Parser { // Note: if we see an arrow after the close paren, then try to parse out a function // block anyways. It's likely the user just though '=> expr' was legal anywhere a // block was legal. - return new ConstructorDeclarationSyntax(contextFlags, - modifiers, - eatToken(SyntaxKind.ConstructorKeyword), + return new ConstructorDeclarationSyntax(contextFlags, + modifiers, + eatToken(SyntaxKind.ConstructorKeyword), parseCallSignatureWithoutSemicolonOrComma(/*requireCompleteTypeParameterList:*/ false, /*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), parseFunctionBody(/*isGenerator:*/ false, /*asyncContext:*/ false)); } @@ -1287,12 +1272,12 @@ module TypeScript.Parser { return false; } - + function parsePropertyDeclaration(modifiers: ISyntaxToken[], propertyName: IPropertyNameSyntax): PropertyDeclarationSyntax { return new PropertyDeclarationSyntax(contextFlags, modifiers, new VariableDeclaratorSyntax(contextFlags, propertyName, - parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), + parseOptionalTypeAnnotation(/*allowStringLiteral:*/ false), isEqualsValueClause(/*inParameter*/ false) ? allowInAnd(parseEqualsValueClause) : undefined), eatExplicitOrAutomaticSemicolon()); } @@ -1344,8 +1329,8 @@ module TypeScript.Parser { return new ModuleDeclarationSyntax(contextFlags, parseModifiers(), eatToken(SyntaxKind.ModuleKeyword), - parseModuleName(), - openBraceToken = eatToken(SyntaxKind.OpenBraceToken), + parseModuleName(), + openBraceToken = eatToken(SyntaxKind.OpenBraceToken), openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.ModuleDeclaration_ModuleElements) : [], eatToken(SyntaxKind.CloseBraceToken)); } @@ -1372,7 +1357,7 @@ module TypeScript.Parser { function parseObjectType(): ObjectTypeSyntax { var openBraceToken: ISyntaxToken; - + return new ObjectTypeSyntax(contextFlags, openBraceToken = eatToken(SyntaxKind.OpenBraceToken), openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.ObjectType_TypeMembers) : [], @@ -1387,14 +1372,10 @@ module TypeScript.Parser { } function isTypeMember(inErrorRecovery: boolean): boolean { - if (SyntaxUtilities.isTypeMember(currentNode())) { - return true; - } - return isCallSignature(/*tokenIndex:*/ 0) || - isConstructSignature() || - isIndexSignature(/*tokenIndex:*/ 0) || - isMethodOrPropertySignature(inErrorRecovery); + isConstructSignature() || + isIndexSignature(/*tokenIndex:*/ 0) || + isMethodOrPropertySignature(inErrorRecovery); } function isMethodOrPropertySignature(inErrorRecovery: boolean): boolean { @@ -1426,12 +1407,6 @@ module TypeScript.Parser { } function tryParseTypeMember(inErrorRecovery: boolean): ITypeMemberSyntax { - var node = currentNode(); - if (SyntaxUtilities.isTypeMember(node)) { - consumeNode(node); - return node; - } - if (isCallSignature(/*tokenIndex:*/ 0)) { // A call signature for a type member can both use 'yield' as a parameter name, and // does not have parameter initializers. So we can pass 'false' for both [Yield] @@ -1445,7 +1420,7 @@ module TypeScript.Parser { return parseConstructSignature(); } else if (isIndexSignature(/*tokenIndex:*/ 0)) { - return parseIndexSignature(/*modifiers:*/ []); + return parseIndexSignature(/*modifiers:*/[]); } else if (isMethodOrPropertySignature(inErrorRecovery)) { var propertyName = parsePropertyName(); @@ -1563,7 +1538,7 @@ module TypeScript.Parser { // "implements foo" is not considered a type name. return !isNotHeritageClauseTypeName(); } - + return false; } @@ -1583,11 +1558,11 @@ module TypeScript.Parser { if (modifierCount) { // Any of these keywords following a modifier is definitely a TS construct. switch (peekToken(modifierCount).kind) { - case SyntaxKind.ImportKeyword: - case SyntaxKind.ModuleKeyword: - case SyntaxKind.InterfaceKeyword: - case SyntaxKind.ClassKeyword: - case SyntaxKind.EnumKeyword: + case SyntaxKind.ImportKeyword: + case SyntaxKind.ModuleKeyword: + case SyntaxKind.InterfaceKeyword: + case SyntaxKind.ClassKeyword: + case SyntaxKind.EnumKeyword: case SyntaxKind.ExportKeyword: case SyntaxKind.TypeKeyword: return true; @@ -1633,24 +1608,24 @@ module TypeScript.Parser { case SyntaxKind.ProtectedKeyword: case SyntaxKind.StaticKeyword: - //if (isModifierKind(currentTokenKind)) { - // ERROR RECOVERY - // None of the modifiers are actually keywords. And they might show up in a real - // statement (i.e. "public();"). However, if we see 'public ' then - // that can't possibly be a statement (and instead will be a class element), - // and we should not parse it out here. Note: if there is a newline between the - // elements, then we should not do this. That's because asi might take effect. i.e.: - // - // public - // foo - // - // Are two legal statements in JS. - // - // Also: 'async a' can start an statement, so we want to check for that as well. - var token1 = peekToken(1); - if (!token1.hasLeadingNewLine() && SyntaxFacts.isIdentifierNameOrAnyKeyword(token1)) { - return true; - } + //if (isModifierKind(currentTokenKind)) { + // ERROR RECOVERY + // None of the modifiers are actually keywords. And they might show up in a real + // statement (i.e. "public();"). However, if we see 'public ' then + // that can't possibly be a statement (and instead will be a class element), + // and we should not parse it out here. Note: if there is a newline between the + // elements, then we should not do this. That's because asi might take effect. i.e.: + // + // public + // foo + // + // Are two legal statements in JS. + // + // Also: 'async a' can start an statement, so we want to check for that as well. + var token1 = peekToken(1); + if (!token1.hasLeadingNewLine() && SyntaxFacts.isIdentifierNameOrAnyKeyword(token1)) { + return true; + } } // Check for common things that might appear where we expect a statement, but which we @@ -1666,10 +1641,6 @@ module TypeScript.Parser { } function isStatement(modifierCount: number, inErrorRecovery: boolean): boolean { - if (SyntaxUtilities.isStatement(currentNode())) { - return true; - } - if (isDefinitelyNotStatement()) { return false; } @@ -1708,12 +1679,6 @@ module TypeScript.Parser { } function tryParseStatement(inErrorRecovery: boolean): IStatementSyntax { - var node = currentNode(); - if (SyntaxUtilities.isStatement(node)) { - consumeNode(node); - return node; - } - var _currentToken = currentToken(); var currentTokenKind = _currentToken.kind; return tryParseStatementWorker(_currentToken, currentTokenKind, modifierCount(), inErrorRecovery); @@ -1739,7 +1704,7 @@ module TypeScript.Parser { case SyntaxKind.TryKeyword: return parseTryStatement(_currentToken); case SyntaxKind.DebuggerKeyword: return parseDebuggerStatement(_currentToken); } - + if (isVariableStatement(modifierCount)) { return parseVariableStatement(); } @@ -1902,8 +1867,8 @@ module TypeScript.Parser { var initializer = tokenKind === SyntaxKind.SemicolonToken ? undefined : isVariableDeclaration(tokenKind) - ? disallowInAnd(parseVariableDeclaration) - : disallowInAnd(parseExpression) + ? disallowInAnd(parseVariableDeclaration) + : disallowInAnd(parseExpression) // In order to be a 'for-in' statement, we had to have an initializer of some sort, and // we had to actually get an 'in' keyword. @@ -1997,43 +1962,30 @@ module TypeScript.Parser { var openBraceToken: ISyntaxToken; return new SwitchStatementSyntax(contextFlags, - consumeToken(switchKeyword), + consumeToken(switchKeyword), openParenToken = eatToken(SyntaxKind.OpenParenToken), parseSwitchExpression(openParenToken), - eatToken(SyntaxKind.CloseParenToken), + eatToken(SyntaxKind.CloseParenToken), openBraceToken = eatToken(SyntaxKind.OpenBraceToken), openBraceToken.fullWidth() > 0 ? parseSyntaxList(ListParsingState.SwitchStatement_SwitchClauses) : [], eatToken(SyntaxKind.CloseBraceToken)); } function isSwitchClause(): boolean { - if (SyntaxUtilities.isSwitchClause(currentNode())) { - return true; - } - var currentTokenKind = currentToken().kind; return currentTokenKind === SyntaxKind.CaseKeyword || currentTokenKind === SyntaxKind.DefaultKeyword; } function tryParseSwitchClause(): ISwitchClauseSyntax { - // Debug.assert(isSwitchClause()); - var node = currentNode(); - if (SyntaxUtilities.isSwitchClause(node)) { - consumeNode(node); - return node; + var _currentToken = currentToken(); + switch (_currentToken.kind) { + case SyntaxKind.CaseKeyword: + return parseCaseSwitchClause(_currentToken); + case SyntaxKind.DefaultKeyword: + return parseDefaultSwitchClause(_currentToken); } - var _currentToken = currentToken(); - var kind = _currentToken.kind; - if (kind === SyntaxKind.CaseKeyword) { - return parseCaseSwitchClause(_currentToken); - } - else if (kind === SyntaxKind.DefaultKeyword) { - return parseDefaultSwitchClause(_currentToken); - } - else { - return undefined; - } + return undefined; } function parseCaseSwitchClause(caseKeyword: ISyntaxToken): CaseSwitchClauseSyntax { @@ -2044,15 +1996,15 @@ module TypeScript.Parser { return new CaseSwitchClauseSyntax(contextFlags, consumeToken(caseKeyword), allowInAnd(parseExpression), - eatToken(SyntaxKind.ColonToken), + eatToken(SyntaxKind.ColonToken), parseSyntaxList(ListParsingState.SwitchClause_Statements)); } function parseDefaultSwitchClause(defaultKeyword: ISyntaxToken): DefaultSwitchClauseSyntax { // Debug.assert(isDefaultSwitchClause()); - return new DefaultSwitchClauseSyntax(contextFlags, - consumeToken(defaultKeyword), + return new DefaultSwitchClauseSyntax(contextFlags, + consumeToken(defaultKeyword), eatToken(SyntaxKind.ColonToken), parseSyntaxList(ListParsingState.SwitchClause_Statements)); } @@ -2125,7 +2077,7 @@ module TypeScript.Parser { case SyntaxKind.NoSubstitutionTemplateToken: case SyntaxKind.TemplateStartToken: - // For array literals. + // For array literals. case SyntaxKind.OpenBracketToken: // For parenthesized expressions @@ -2153,9 +2105,9 @@ module TypeScript.Parser { case SyntaxKind.SlashToken: case SyntaxKind.SlashEqualsToken: - // Note: if we see a / or /= token then we always consider this an expression. - // The / or /= will actually be the start of a regex that we will contextually - // rescan. + // Note: if we see a / or /= token then we always consider this an expression. + // The / or /= will actually be the start of a regex that we will contextually + // rescan. // Simple epxressions. case SyntaxKind.SuperKeyword: @@ -2270,44 +2222,10 @@ module TypeScript.Parser { } function isVariableDeclarator(): boolean { - var node = currentNode(); - if (node && node.kind === SyntaxKind.VariableDeclarator) { - return true; - } - return isIdentifier(currentToken()); } - function canReuseVariableDeclaratorNode(node: ISyntaxNode) { - if (!node || node.kind !== SyntaxKind.VariableDeclarator) { - return false; - } - - // Very subtle incremental parsing bug. Consider the following code: - // - // var v = new List < A, B - // - // This is actually legal code. It's a list of variable declarators "v = new List() - // - // then we have a problem. "v = new Listnode; - return variableDeclarator.equalsValueClause === undefined; - } - function tryParseVariableDeclarator(): VariableDeclaratorSyntax { - var node = currentNode(); - if (canReuseVariableDeclaratorNode(node)) { - consumeNode(node); - return node; - } - if (!isIdentifier(currentToken())) { return undefined; } @@ -2387,7 +2305,7 @@ module TypeScript.Parser { leftOperand = new BinaryExpressionSyntax(contextFlags, leftOperand, - consumeToken(_currentToken), + consumeToken(_currentToken), parseAssignmentExpressionOrHigher()); } @@ -2442,7 +2360,7 @@ module TypeScript.Parser { if (SyntaxFacts.isAssignmentOperatorToken(operatorToken.kind)) { return new BinaryExpressionSyntax(contextFlags, leftOperand, - consumeToken(operatorToken), + consumeToken(operatorToken), parseAssignmentExpressionOrHigher()); } } @@ -2457,20 +2375,6 @@ module TypeScript.Parser { return parseAwaitExpression(awaitKeyword); } - // We're in a context where 'await expr' is not allowed. However, if we can - // definitely tell that the user was trying to parse a 'await expr' and not - // just a normal expr that start with a 'await' identifier, then parse out - // an 'await expr'. We can then report an error later that they are only - // allowed in async contexts. - // - // for example, if we see 'await(foo)', then we'll have to treat that as an - // invocation expression of something called 'await'. However, if we have - // 'await foo' then that is not legal as a normal expression, so we can - // definitely recognize this as a await expression. - // - // for now we just check if the next token is an identifier. More heuristics - // can be added here later as necessary. We just need to make sure that we - // don't accidently consume something legal. if (isUnambiguouslyYieldOrAwaitExpression()) { return parseAwaitExpression(awaitKeyword); } @@ -2686,7 +2590,7 @@ module TypeScript.Parser { // Precedence is okay, so we'll "take" this operator. // Now skip the operator token we're on. - leftOperand = new BinaryExpressionSyntax(contextFlags, leftOperand, consumeToken(operatorToken), + leftOperand = new BinaryExpressionSyntax(contextFlags, leftOperand, consumeToken(operatorToken), parseBinaryExpressionOrHigher(currentToken(), newPrecedence)); } @@ -2758,7 +2662,7 @@ module TypeScript.Parser { // Because CallExpression and MemberExpression are left recursive, we need to bottom out // of the recursion immediately. So we parse out a primary expression to start with. var expression = parsePrimaryExpression(_currentToken); - return parseMemberExpressionRest(expression); + return parseMemberExpressionRest(expression); } function parseMemberExpressionRest(expression: ILeftHandSideExpressionSyntax): ILeftHandSideExpressionSyntax { @@ -2994,7 +2898,7 @@ module TypeScript.Parser { Debug.assert(openParenToken.kind === SyntaxKind.OpenParenToken && openParenToken.fullWidth() > 0); return new ArgumentListSyntax(contextFlags, - typeArgumentList, + typeArgumentList, consumeToken(openParenToken), parseSeparatedSyntaxList(ListParsingState.ArgumentList_AssignmentExpressions), eatToken(SyntaxKind.CloseParenToken)); @@ -3012,7 +2916,7 @@ module TypeScript.Parser { // cause a missing identiifer to be created), so that we will then consume the // comma and the following list items). var force = currentToken().kind === SyntaxKind.CommaToken; - return (force || isExpression(currentToken())) ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined; + return (force || isExpression(currentToken())) ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined; } function parseElementAccessArgumentExpression(openBracketToken: ISyntaxToken) { @@ -3159,7 +3063,7 @@ module TypeScript.Parser { if (startToken.kind === SyntaxKind.NoSubstitutionTemplateToken) { return startToken; } - + var templateClauses: TemplateClauseSyntax[] = []; do { @@ -3168,7 +3072,7 @@ module TypeScript.Parser { templateClauses.push(parseTemplateClause()); } while (templateClauses[templateClauses.length - 1].templateMiddleOrEndToken.kind === SyntaxKind.TemplateMiddleToken); - + return new TemplateExpressionSyntax(contextFlags, startToken, Syntax.list(templateClauses)); } @@ -3320,14 +3224,14 @@ module TypeScript.Parser { } return isIdentifier(_currentToken) && - peekToken(1).kind === SyntaxKind.EqualsGreaterThanToken; + peekToken(1).kind === SyntaxKind.EqualsGreaterThanToken; } function parseSimpleArrowFunctionExpression(): SimpleArrowFunctionExpressionSyntax { var asyncKeyword: ISyntaxToken; return new SimpleArrowFunctionExpressionSyntax(contextFlags, asyncKeyword = tryEatToken(SyntaxKind.AsyncKeyword), - asyncKeyword ? doInsideAsyncContext(eatSimpleParameter) : doOutsideAsyncContext(eatSimpleParameter), + asyncKeyword ? doInsideAsyncContext(eatSimpleParameter) : doOutsideAsyncContext(eatSimpleParameter), eatToken(SyntaxKind.EqualsGreaterThanToken), parseArrowFunctionBody(/*asyncContext:*/ !!asyncKeyword)); } @@ -3376,8 +3280,8 @@ module TypeScript.Parser { token2 = peekToken(peekIndex + 2); var token2Kind = token2.kind; return token2Kind === SyntaxKind.ColonToken || - token2Kind === SyntaxKind.EqualsGreaterThanToken || - token2Kind === SyntaxKind.OpenBraceToken; + token2Kind === SyntaxKind.EqualsGreaterThanToken || + token2Kind === SyntaxKind.OpenBraceToken; } if (token1Kind === SyntaxKind.DotDotDotToken) { @@ -3386,7 +3290,7 @@ module TypeScript.Parser { return true; } - token2 = peekToken(peekIndex + 2); + token2 = peekToken(peekIndex + 2); token2Kind = token2.kind; if (SyntaxFacts.isAccessibilityModifier(token1Kind)) { @@ -3523,7 +3427,7 @@ module TypeScript.Parser { function parseObjectLiteralExpression(openBraceToken: ISyntaxToken): ObjectLiteralExpressionSyntax { // Debug.assert(currentToken().kind === SyntaxKind.OpenBraceToken); return new ObjectLiteralExpressionSyntax(contextFlags, - consumeToken(openBraceToken), + consumeToken(openBraceToken), parseSeparatedSyntaxList(ListParsingState.ObjectLiteralExpression_PropertyAssignments), eatToken(SyntaxKind.CloseBraceToken)); } @@ -3599,9 +3503,9 @@ module TypeScript.Parser { function isPropertyAssignment(inErrorRecovery: boolean): boolean { return isAtModifier() || - isAccessor(inErrorRecovery) || - currentToken().kind === SyntaxKind.AsteriskToken || - isPropertyName(/*peekIndex:*/ 0, inErrorRecovery); + isAccessor(inErrorRecovery) || + currentToken().kind === SyntaxKind.AsteriskToken || + isPropertyName(/*peekIndex:*/ 0, inErrorRecovery); } function isPropertyName(peekIndex: number, inErrorRecovery: boolean): boolean { @@ -3684,7 +3588,7 @@ module TypeScript.Parser { function parseArrayLiteralExpression(openBracketToken: ISyntaxToken): ArrayLiteralExpressionSyntax { // Debug.assert(currentToken().kind === SyntaxKind.OpenBracketToken); return new ArrayLiteralExpressionSyntax(contextFlags, - consumeToken(openBracketToken), + consumeToken(openBracketToken), parseSeparatedSyntaxList(ListParsingState.ArrayLiteralExpression_AssignmentExpressions), eatToken(SyntaxKind.CloseBracketToken)); } @@ -3958,7 +3862,7 @@ module TypeScript.Parser { var barToken: ISyntaxToken; while ((barToken = currentToken()).kind === SyntaxKind.BarToken) { type = new UnionTypeSyntax(contextFlags, type, consumeToken(barToken), parsePrimaryType()); - } + } } return type; @@ -3967,7 +3871,7 @@ module TypeScript.Parser { function parsePrimaryType(): ITypeSyntax { return tryParsePrimaryType() || eatIdentifierToken(DiagnosticCode.Type_expected); } - + function tryParsePrimaryType(): ITypeSyntax { // First consume any underlying element type. var type = tryParseNonArrayType(); @@ -4009,10 +3913,10 @@ module TypeScript.Parser { } return consumeToken(_currentToken); - case SyntaxKind.VoidKeyword: return consumeToken(_currentToken); - case SyntaxKind.OpenParenToken: return parseParenthesizedType(_currentToken); - case SyntaxKind.OpenBraceToken: return parseObjectType(); - case SyntaxKind.TypeOfKeyword: return parseTypeQuery(_currentToken); + case SyntaxKind.VoidKeyword: return consumeToken(_currentToken); + case SyntaxKind.OpenParenToken: return parseParenthesizedType(_currentToken); + case SyntaxKind.OpenBraceToken: return parseObjectType(); + case SyntaxKind.TypeOfKeyword: return parseTypeQuery(_currentToken); case SyntaxKind.OpenBracketToken: return parseTupleType(_currentToken); } @@ -4116,7 +4020,7 @@ module TypeScript.Parser { // Function types only exist in the type space and not the expression space. So they // aren't in the [Yield] or [GeneratorParameter] context. return new FunctionTypeSyntax(contextFlags, - tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), + tryParseTypeParameterList(/*requireCompleteTypeParameterList:*/ false), parseParameterList(/*yieldAndGeneratorParameterContext:*/ false, /*asyncContext:*/ false), eatToken(SyntaxKind.EqualsGreaterThanToken), parseType()); } @@ -4132,33 +4036,23 @@ module TypeScript.Parser { } function isParameter(): boolean { - if (currentNode() && currentNode().kind === SyntaxKind.Parameter) { - return true; - } - return isParameterHelper(currentToken()); } function isParameterHelper(token: ISyntaxToken): boolean { var tokenKind = token.kind; return tokenKind === SyntaxKind.DotDotDotToken || - isModifierKind(tokenKind) || - isIdentifier(token); + isModifierKind(tokenKind) || + isIdentifier(token); } function eatSimpleParameter() { return new ParameterSyntax(contextFlags, - /*dotDotDotToken:*/ undefined, /*modifiers:*/ [], eatIdentifierToken(), + /*dotDotDotToken:*/ undefined, /*modifiers:*/[], eatIdentifierToken(), /*questionToken:*/ undefined, /*typeAnnotation:*/ undefined, /*equalsValueClause:*/ undefined); } function tryParseParameter(): ParameterSyntax { - var node = currentNode(); - if (node && node.kind === SyntaxKind.Parameter) { - consumeNode(node); - return node; - } - var dotDotDotToken = tryEatToken(SyntaxKind.DotDotDotToken); var modifiers = parseModifiers(); @@ -4192,8 +4086,8 @@ module TypeScript.Parser { var equalsValueClause: EqualsValueClauseSyntax = undefined; if (isEqualsValueClause(/*inParameter*/ true)) { equalsValueClause = inGeneratorParameterContext() - ? doOutsideYieldContext(parseEqualsValueClause) - : parseEqualsValueClause(); + ? doOutsideYieldContext(parseEqualsValueClause) + : parseEqualsValueClause(); } return new ParameterSyntax(contextFlags, dotDotDotToken, modifiers, identifier, questionToken, typeAnnotation, equalsValueClause); @@ -4249,10 +4143,10 @@ module TypeScript.Parser { } function tryParseExpectedListItem( - currentListType: ListParsingState, - inErrorRecovery: boolean, - items: T[], - processItems: (items: ISyntaxNodeOrToken[]) => void): void { + currentListType: ListParsingState, + inErrorRecovery: boolean, + items: T[], + processItems: (items: ISyntaxNodeOrToken[]) => void): void { var item = tryParseExpectedListItemWorker(currentListType, inErrorRecovery); if (item !== undefined) { @@ -4268,10 +4162,10 @@ module TypeScript.Parser { function listIsTerminated(currentListType: ListParsingState): boolean { return isExpectedListTerminator(currentListType) || - currentToken().kind === SyntaxKind.EndOfFileToken; + currentToken().kind === SyntaxKind.EndOfFileToken; } - function parseSyntaxListWorker(currentListType: ListParsingState, processItems: (items: ISyntaxNodeOrToken[]) => void ): T[] { + function parseSyntaxListWorker(currentListType: ListParsingState, processItems: (items: ISyntaxNodeOrToken[]) => void): T[] { var items: T[] = []; while (true) { @@ -4406,27 +4300,27 @@ module TypeScript.Parser { function isExpectedListTerminator(currentListType: ListParsingState): boolean { switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return isExpectedSourceUnit_ModuleElementsTerminator(); - case ListParsingState.ClassDeclaration_ClassElements: return isExpectedClassDeclaration_ClassElementsTerminator(); - case ListParsingState.ModuleDeclaration_ModuleElements: return isExpectedModuleDeclaration_ModuleElementsTerminator(); - case ListParsingState.SwitchStatement_SwitchClauses: return isExpectedSwitchStatement_SwitchClausesTerminator(); - case ListParsingState.SwitchClause_Statements: return isExpectedSwitchClause_StatementsTerminator(); - case ListParsingState.Block_Statements: return isExpectedBlock_StatementsTerminator(); - case ListParsingState.TryBlock_Statements: return isExpectedTryBlock_StatementsTerminator(); - case ListParsingState.CatchBlock_Statements: return isExpectedCatchBlock_StatementsTerminator(); - case ListParsingState.EnumDeclaration_EnumElements: return isExpectedEnumDeclaration_EnumElementsTerminator(); - case ListParsingState.ObjectType_TypeMembers: return isExpectedObjectType_TypeMembersTerminator(); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return isExpectedClassOrInterfaceDeclaration_HeritageClausesTerminator(); - case ListParsingState.HeritageClause_TypeNameList: return isExpectedHeritageClause_TypeNameListTerminator(); - case ListParsingState.VariableDeclaration_VariableDeclarators: return isExpectedVariableDeclaration_VariableDeclaratorsTerminator(); - case ListParsingState.ArgumentList_AssignmentExpressions: return isExpectedArgumentList_AssignmentExpressionsTerminator(); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return isExpectedObjectLiteralExpression_PropertyAssignmentsTerminator(); - case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return isExpectedLiteralExpression_AssignmentExpressionsTerminator(); - case ListParsingState.ParameterList_Parameters: return isExpectedParameterList_ParametersTerminator(); - case ListParsingState.IndexSignature_Parameters: return isExpectedIndexSignature_ParametersTerminator(); - case ListParsingState.TypeArgumentList_Types: return isExpectedTypeArgumentList_TypesTerminator(); - case ListParsingState.TypeParameterList_TypeParameters: return isExpectedTypeParameterList_TypeParametersTerminator(); - case ListParsingState.TupleType_Types: return isExpectedTupleType_TypesTerminator(); + case ListParsingState.SourceUnit_ModuleElements: return isExpectedSourceUnit_ModuleElementsTerminator(); + case ListParsingState.ClassDeclaration_ClassElements: return isExpectedClassDeclaration_ClassElementsTerminator(); + case ListParsingState.ModuleDeclaration_ModuleElements: return isExpectedModuleDeclaration_ModuleElementsTerminator(); + case ListParsingState.SwitchStatement_SwitchClauses: return isExpectedSwitchStatement_SwitchClausesTerminator(); + case ListParsingState.SwitchClause_Statements: return isExpectedSwitchClause_StatementsTerminator(); + case ListParsingState.Block_Statements: return isExpectedBlock_StatementsTerminator(); + case ListParsingState.TryBlock_Statements: return isExpectedTryBlock_StatementsTerminator(); + case ListParsingState.CatchBlock_Statements: return isExpectedCatchBlock_StatementsTerminator(); + case ListParsingState.EnumDeclaration_EnumElements: return isExpectedEnumDeclaration_EnumElementsTerminator(); + case ListParsingState.ObjectType_TypeMembers: return isExpectedObjectType_TypeMembersTerminator(); + case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return isExpectedClassOrInterfaceDeclaration_HeritageClausesTerminator(); + case ListParsingState.HeritageClause_TypeNameList: return isExpectedHeritageClause_TypeNameListTerminator(); + case ListParsingState.VariableDeclaration_VariableDeclarators: return isExpectedVariableDeclaration_VariableDeclaratorsTerminator(); + case ListParsingState.ArgumentList_AssignmentExpressions: return isExpectedArgumentList_AssignmentExpressionsTerminator(); + case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return isExpectedObjectLiteralExpression_PropertyAssignmentsTerminator(); + case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return isExpectedLiteralExpression_AssignmentExpressionsTerminator(); + case ListParsingState.ParameterList_Parameters: return isExpectedParameterList_ParametersTerminator(); + case ListParsingState.IndexSignature_Parameters: return isExpectedIndexSignature_ParametersTerminator(); + case ListParsingState.TypeArgumentList_Types: return isExpectedTypeArgumentList_TypesTerminator(); + case ListParsingState.TypeParameterList_TypeParameters: return isExpectedTypeParameterList_TypeParametersTerminator(); + case ListParsingState.TupleType_Types: return isExpectedTupleType_TypesTerminator(); default: throw Errors.invalidOperation(); } @@ -4596,7 +4490,7 @@ module TypeScript.Parser { var token0 = currentToken(); var tokenKind = token0.kind; return tokenKind === SyntaxKind.CloseParenToken || - tokenKind === SyntaxKind.SemicolonToken; + tokenKind === SyntaxKind.SemicolonToken; } function isExpectedClassDeclaration_ClassElementsTerminator(): boolean { @@ -4609,7 +4503,7 @@ module TypeScript.Parser { function isExpectedSwitchClause_StatementsTerminator(): boolean { return currentToken().kind === SyntaxKind.CloseBraceToken || - isSwitchClause(); + isSwitchClause(); } function isExpectedBlock_StatementsTerminator(): boolean { @@ -4619,21 +4513,28 @@ module TypeScript.Parser { function isExpectedTryBlock_StatementsTerminator(): boolean { var tokenKind = currentToken().kind; return tokenKind === SyntaxKind.CatchKeyword || - tokenKind === SyntaxKind.FinallyKeyword; + tokenKind === SyntaxKind.FinallyKeyword; } function isExpectedCatchBlock_StatementsTerminator(): boolean { return currentToken().kind === SyntaxKind.FinallyKeyword; } - function isExpectedListItem(currentListType: ListParsingState, inErrorRecovery: boolean): any { + function isExpectedListItem(currentListType: ListParsingState, inErrorRecovery: boolean): boolean { + // If we're able to parse out a node for the current list type from the old parse tree, + // then definitely have an expected list item. + var node = currentNode(currentListType); + if (node) { + return true; + } + switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return isModuleElement(inErrorRecovery); - case ListParsingState.ClassDeclaration_ClassElements: return isClassElement(inErrorRecovery); - case ListParsingState.ModuleDeclaration_ModuleElements: return isModuleElement(inErrorRecovery); - case ListParsingState.SwitchStatement_SwitchClauses: return isSwitchClause(); - case ListParsingState.SwitchClause_Statements: return isStatement(modifierCount(), inErrorRecovery); - case ListParsingState.Block_Statements: return isStatement(modifierCount(), inErrorRecovery); + case ListParsingState.SourceUnit_ModuleElements: return isModuleElement(inErrorRecovery); + case ListParsingState.ClassDeclaration_ClassElements: return isClassElement(inErrorRecovery); + case ListParsingState.ModuleDeclaration_ModuleElements: return isModuleElement(inErrorRecovery); + case ListParsingState.SwitchStatement_SwitchClauses: return isSwitchClause(); + case ListParsingState.SwitchClause_Statements: return isStatement(modifierCount(), inErrorRecovery); + case ListParsingState.Block_Statements: return isStatement(modifierCount(), inErrorRecovery); // These two are special. They're just augmentations of "Block_Statements" // used so we can abort out of the try block if we see a 'catch' or 'finally' // keyword. There are no additional list items that they add, so we just @@ -4674,54 +4575,204 @@ module TypeScript.Parser { } function tryParseExpectedListItemWorker(currentListType: ListParsingState, inErrorRecovery: boolean): ISyntaxNodeOrToken { + var node = currentNode(currentListType); + if (node) { + return node; + } + switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return tryParseModuleElement(inErrorRecovery); - case ListParsingState.ClassDeclaration_ClassElements: return tryParseClassElement(inErrorRecovery); - case ListParsingState.ModuleDeclaration_ModuleElements: return tryParseModuleElement(inErrorRecovery); - case ListParsingState.SwitchStatement_SwitchClauses: return tryParseSwitchClause(); - case ListParsingState.SwitchClause_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.Block_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.TryBlock_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.CatchBlock_Statements: return tryParseStatement(inErrorRecovery); - case ListParsingState.EnumDeclaration_EnumElements: return tryParseEnumElement(inErrorRecovery); - case ListParsingState.ObjectType_TypeMembers: return tryParseTypeMember(inErrorRecovery); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return tryParseHeritageClause(); - case ListParsingState.HeritageClause_TypeNameList: return tryParseHeritageClauseTypeName(); - case ListParsingState.VariableDeclaration_VariableDeclarators: return tryParseVariableDeclarator(); - case ListParsingState.ArgumentList_AssignmentExpressions: return tryParseArgumentListExpression(); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return tryParsePropertyAssignment(inErrorRecovery); + case ListParsingState.SourceUnit_ModuleElements: return tryParseModuleElement(inErrorRecovery); + case ListParsingState.ClassDeclaration_ClassElements: return tryParseClassElement(inErrorRecovery); + case ListParsingState.ModuleDeclaration_ModuleElements: return tryParseModuleElement(inErrorRecovery); + case ListParsingState.SwitchStatement_SwitchClauses: return tryParseSwitchClause(); + case ListParsingState.SwitchClause_Statements: return tryParseStatement(inErrorRecovery); + case ListParsingState.Block_Statements: return tryParseStatement(inErrorRecovery); + case ListParsingState.TryBlock_Statements: return tryParseStatement(inErrorRecovery); + case ListParsingState.CatchBlock_Statements: return tryParseStatement(inErrorRecovery); + case ListParsingState.EnumDeclaration_EnumElements: return tryParseEnumElement(inErrorRecovery); + case ListParsingState.ObjectType_TypeMembers: return tryParseTypeMember(inErrorRecovery); + case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return tryParseHeritageClause(); + case ListParsingState.HeritageClause_TypeNameList: return tryParseHeritageClauseTypeName(); + case ListParsingState.VariableDeclaration_VariableDeclarators: return tryParseVariableDeclarator(); + case ListParsingState.ArgumentList_AssignmentExpressions: return tryParseArgumentListExpression(); + case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return tryParsePropertyAssignment(inErrorRecovery); case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return tryParseAssignmentOrOmittedExpression(); - case ListParsingState.ParameterList_Parameters: return tryParseParameter(); - case ListParsingState.IndexSignature_Parameters: return tryParseParameter(); - case ListParsingState.TypeArgumentList_Types: return tryParseType(); - case ListParsingState.TypeParameterList_TypeParameters: return tryParseTypeParameter(); - case ListParsingState.TupleType_Types: return tryParseType(); + case ListParsingState.ParameterList_Parameters: return tryParseParameter(); + case ListParsingState.IndexSignature_Parameters: return tryParseParameter(); + case ListParsingState.TypeArgumentList_Types: return tryParseType(); + case ListParsingState.TypeParameterList_TypeParameters: return tryParseTypeParameter(); + case ListParsingState.TupleType_Types: return tryParseType(); default: throw Errors.invalidOperation(); } } + function currentNode(currentListType: ListParsingState): ISyntaxNode { + // If we have any outstanding tokens, then don't reuse a node. + // TODO(cyrusn): This may be too conservative. Perhaps we could reuse hte node and + // attach the skipped tokens in front? For now though, being conservative is nice and + // safe, and likely won't ever affect perf. + if (skippedTokens) { + return undefined; + } + + var node = source.currentNode(); + if (!node) { + return undefined; + } + + // We can only reuse a node if it was parsed under the same strict mode that we're + // currently in. i.e. if we originally parsed a node in non-strict mode, but then + // the user added 'using strict' at the top of the file, then we can't use that node + // again as the presense of strict mode may cause us to parse the tokens in the file + // differetly. + // + // Note: we *can* reuse tokens when the strict mode changes. That's because tokens + // are unaffected by strict mode. It's just the parser will decide what to do with it + // differently depending on what mode it is in. + // + // This also applies to all our other context flags as well. + if (parserContextFlags(node) !== contextFlags) { + return undefined; + } + + // Ok, we have a node that looks like it could be reused. Now verify that it is valid + // in the currest list parsing context that we're currently at. + if (!canReuseNode(node, currentListType)) { + return undefined; + } + + // It was valid. Let teh source know we're consuming this node, and pass to the list + // parser. + return consumeNode(node); + } + + function canReuseNode(node: ISyntaxNode, listParsingState: ListParsingState): boolean { + switch (listParsingState) { + case ListParsingState.SourceUnit_ModuleElements: + return SyntaxUtilities.isModuleElement(node); + + case ListParsingState.ClassDeclaration_ClassElements: + return SyntaxUtilities.isClassElement(node); + + case ListParsingState.ModuleDeclaration_ModuleElements: + return SyntaxUtilities.isModuleElement(node); + + case ListParsingState.SwitchStatement_SwitchClauses: + return SyntaxUtilities.isSwitchClause(node); + + case ListParsingState.SwitchClause_Statements: + case ListParsingState.Block_Statements: + case ListParsingState.TryBlock_Statements: + case ListParsingState.CatchBlock_Statements: + return SyntaxUtilities.isStatement(node); + + case ListParsingState.EnumDeclaration_EnumElements: + return node.kind === SyntaxKind.EnumElement; + + case ListParsingState.ObjectType_TypeMembers: + return SyntaxUtilities.isTypeMember(node); + + case ListParsingState.VariableDeclaration_VariableDeclarators: + return canReuseVariableDeclaratorNode(node); + + case ListParsingState.ParameterList_Parameters: + return node.kind === SyntaxKind.Parameter; + + case ListParsingState.IndexSignature_Parameters: + return node.kind === SyntaxKind.Parameter; + + // Any other lists we do not care about reusing nodes in. But feel free to add if + // you can do so safely. Danger areas involve nodes that may involve speculative + // parsing. If speculative parsing is involved with the node, then the range the + // parser reached while looking ahead might be in the edited range (see the example + // in canReuseVariableDeclaratorNode for a good case of this). + case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: + // This would probably be safe to reuse. There is no speculative parsing with + // heritage clauses. + + case ListParsingState.HeritageClause_TypeNameList: + // This would probably be safe to reuse. There is no speculative parsing with + // type names in a heritage clause. There can be generic names in the type + // name list. But because it is a type context, we never use speculative + // parsing on the type argument list. + + case ListParsingState.TypeParameterList_TypeParameters: + // This would probably be safe to reuse. There is no speculative parsing with + // type parameters. Note that that's because type *parameters* only occur in + // unambiguous *type* contexts. While type *arguments* occur in very ambiguous + // *expression* contexts. + + case ListParsingState.TupleType_Types: + // This would probably be safe to reuse. There is no speculative parsing with + // tuple types. + + // Technically, type argument list types are probably safe to reuse. While + // speculative parsing is involved with them (since type argument lists are only + // produced from speculative parsing a < as a type argument list), we only have + // the types because speculative parsing succeeded. Thus, the lookahead never + // went past the end of the list and rewound. + case ListParsingState.TypeArgumentList_Types: + + // Note: these are almost certainly not safe to ever reuse. Expressions commonly + // need a large amount of lookahead, and we should not reuse them as they may + // have actually intersected the edit. + case ListParsingState.ArgumentList_AssignmentExpressions: + case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: + + // This is not safe to reuse for the same reason as the 'AssignmentExpression' + // cases. i.e. a property assignment may end with an expression, and thus might + // have lookahead far beyond it's old node. + case ListParsingState.ObjectLiteralExpression_PropertyAssignments: + } + + return false; + } + + function canReuseVariableDeclaratorNode(node: ISyntaxNode) { + if (!node || node.kind !== SyntaxKind.VariableDeclarator) { + return false; + } + + // Very subtle incremental parsing bug. Consider the following code: + // + // var v = new List < A, B + // + // This is actually legal code. It's a list of variable declarators "v = new List() + // + // then we have a problem. "v = new Listnode; + return variableDeclarator.equalsValueClause === undefined; + } + function getExpectedListElementType(currentListType: ListParsingState): string { switch (currentListType) { - case ListParsingState.SourceUnit_ModuleElements: return getLocalizedText(DiagnosticCode.module_class_interface_enum_import_or_statement, undefined); - case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return '{'; - case ListParsingState.ClassDeclaration_ClassElements: return getLocalizedText(DiagnosticCode.constructor_function_accessor_or_variable, undefined); - case ListParsingState.ModuleDeclaration_ModuleElements: return getLocalizedText(DiagnosticCode.module_class_interface_enum_import_or_statement, undefined); - case ListParsingState.SwitchStatement_SwitchClauses: return getLocalizedText(DiagnosticCode.case_or_default_clause, undefined); - case ListParsingState.SwitchClause_Statements: return getLocalizedText(DiagnosticCode.statement, undefined); - case ListParsingState.Block_Statements: return getLocalizedText(DiagnosticCode.statement, undefined); - case ListParsingState.VariableDeclaration_VariableDeclarators: return getLocalizedText(DiagnosticCode.identifier, undefined); - case ListParsingState.EnumDeclaration_EnumElements: return getLocalizedText(DiagnosticCode.identifier, undefined); - case ListParsingState.ObjectType_TypeMembers: return getLocalizedText(DiagnosticCode.call_construct_index_property_or_function_signature, undefined); - case ListParsingState.ArgumentList_AssignmentExpressions: return getLocalizedText(DiagnosticCode.expression, undefined); - case ListParsingState.HeritageClause_TypeNameList: return getLocalizedText(DiagnosticCode.type_name, undefined); - case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return getLocalizedText(DiagnosticCode.property_or_accessor, undefined); - case ListParsingState.ParameterList_Parameters: return getLocalizedText(DiagnosticCode.parameter, undefined); - case ListParsingState.IndexSignature_Parameters: return getLocalizedText(DiagnosticCode.parameter, undefined); - case ListParsingState.TypeArgumentList_Types: return getLocalizedText(DiagnosticCode.type, undefined); - case ListParsingState.TypeParameterList_TypeParameters: return getLocalizedText(DiagnosticCode.type_parameter, undefined); - case ListParsingState.TupleType_Types: return getLocalizedText(DiagnosticCode.type, undefined); + case ListParsingState.SourceUnit_ModuleElements: return getLocalizedText(DiagnosticCode.module_class_interface_enum_import_or_statement, undefined); + case ListParsingState.ClassOrInterfaceDeclaration_HeritageClauses: return '{'; + case ListParsingState.ClassDeclaration_ClassElements: return getLocalizedText(DiagnosticCode.constructor_function_accessor_or_variable, undefined); + case ListParsingState.ModuleDeclaration_ModuleElements: return getLocalizedText(DiagnosticCode.module_class_interface_enum_import_or_statement, undefined); + case ListParsingState.SwitchStatement_SwitchClauses: return getLocalizedText(DiagnosticCode.case_or_default_clause, undefined); + case ListParsingState.SwitchClause_Statements: return getLocalizedText(DiagnosticCode.statement, undefined); + case ListParsingState.Block_Statements: return getLocalizedText(DiagnosticCode.statement, undefined); + case ListParsingState.VariableDeclaration_VariableDeclarators: return getLocalizedText(DiagnosticCode.identifier, undefined); + case ListParsingState.EnumDeclaration_EnumElements: return getLocalizedText(DiagnosticCode.identifier, undefined); + case ListParsingState.ObjectType_TypeMembers: return getLocalizedText(DiagnosticCode.call_construct_index_property_or_function_signature, undefined); + case ListParsingState.ArgumentList_AssignmentExpressions: return getLocalizedText(DiagnosticCode.expression, undefined); + case ListParsingState.HeritageClause_TypeNameList: return getLocalizedText(DiagnosticCode.type_name, undefined); + case ListParsingState.ObjectLiteralExpression_PropertyAssignments: return getLocalizedText(DiagnosticCode.property_or_accessor, undefined); + case ListParsingState.ParameterList_Parameters: return getLocalizedText(DiagnosticCode.parameter, undefined); + case ListParsingState.IndexSignature_Parameters: return getLocalizedText(DiagnosticCode.parameter, undefined); + case ListParsingState.TypeArgumentList_Types: return getLocalizedText(DiagnosticCode.type, undefined); + case ListParsingState.TypeParameterList_TypeParameters: return getLocalizedText(DiagnosticCode.type_parameter, undefined); + case ListParsingState.TupleType_Types: return getLocalizedText(DiagnosticCode.type, undefined); case ListParsingState.ArrayLiteralExpression_AssignmentExpressions: return getLocalizedText(DiagnosticCode.expression, undefined); - default: throw Errors.invalidOperation(); + default: throw Errors.invalidOperation(); } } @@ -4769,7 +4820,7 @@ module TypeScript.Parser { // // The code to do this uses the above logic. It will see an operator with the same precedence, // and so it won't consume it. - enum BinaryExpressionPrecedence { + const enum BinaryExpressionPrecedence { Lowest = 1, // Intuitively, logical || have the lowest precedence. "a || b && c" is "a || (b && c)", not diff --git a/src/services/syntax/scanner.ts b/src/services/syntax/scanner.ts index ff19831e891..6adcf16f75f 100644 --- a/src/services/syntax/scanner.ts +++ b/src/services/syntax/scanner.ts @@ -60,15 +60,15 @@ module TypeScript.Scanner { // This gives us 23bit for width (or 8MB of width which should be enough for any codebase). enum ScannerConstants { - LargeTokenFullWidthShift = 3, + LargeTokenFullWidthShift = 3, - WhitespaceTrivia = 0x01, // 00000001 - NewlineTrivia = 0x02, // 00000010 - CommentTrivia = 0x04, // 00000100 - TriviaMask = 0x07, // 00000111 + WhitespaceTrivia = 0x01, // 00000001 + NewlineTrivia = 0x02, // 00000010 + CommentTrivia = 0x04, // 00000100 + TriviaMask = 0x07, // 00000111 - KindMask = 0x7F, // 01111111 - IsVariableWidthMask = 0x80, // 10000000 + KindMask = 0x7F, // 01111111 + IsVariableWidthMask = 0x80, // 10000000 } function largeTokenPackData(fullWidth: number, leadingTriviaInfo: number) { @@ -154,7 +154,7 @@ module TypeScript.Scanner { var lastTokenInfo = { leadingTriviaWidth: -1 }; var lastTokenInfoTokenID: number = -1; - var triviaScanner = createScannerInternal(ts.ScriptTarget.Latest, SimpleText.fromString(""), () => { }); + var triviaScanner = createScannerInternal(ts.ScriptTarget.Latest, SimpleText.fromString(""),() => { }); interface IScannerToken extends ISyntaxToken { } @@ -208,7 +208,7 @@ module TypeScript.Scanner { public setFullStart(fullStart: number): void { this._fullStart = fullStart; } - + public childAt(index: number): ISyntaxElement { throw Errors.invalidOperation() } public isIncrementallyUnusable(): boolean { return false; } @@ -1425,7 +1425,7 @@ module TypeScript.Scanner { export function isValidIdentifier(text: ISimpleText, languageVersion: ts.ScriptTarget): boolean { var hadError = false; - var scanner = createScanner(languageVersion, text, () => hadError = true); + var scanner = createScanner(languageVersion, text,() => hadError = true); var token = scanner.scan(/*allowContextualToken:*/ false); @@ -1467,7 +1467,7 @@ module TypeScript.Scanner { return _absolutePosition; } - function tokenDiagnostics(): Diagnostic[] { + function diagnostics(): Diagnostic[] { return _tokenDiagnostics; } @@ -1598,8 +1598,8 @@ module TypeScript.Scanner { peekToken: peekToken, consumeNodeOrToken: consumeNodeOrToken, tryParse: tryParse, - tokenDiagnostics: tokenDiagnostics, - absolutePosition: absolutePosition, + diagnostics: diagnostics, + absolutePosition: absolutePosition }; } diff --git a/src/services/syntax/syntaxGenerator.ts b/src/services/syntax/syntaxGenerator.ts index 884ef063e6c..fff5cbe109e 100644 --- a/src/services/syntax/syntaxGenerator.ts +++ b/src/services/syntax/syntaxGenerator.ts @@ -41,7 +41,7 @@ var interfaces: any = { IPrimaryExpressionSyntax: 'IMemberExpressionSyntax', }; -var definitions:ITypeDefinition[] = [ +var definitions: ITypeDefinition[] = [ { name: 'SourceUnitSyntax', baseType: 'ISyntaxNode', @@ -55,10 +55,10 @@ var definitions:ITypeDefinition[] = [ baseType: 'ISyntaxNode', interfaces: ['IModuleReferenceSyntax'], children: [ - { name: 'requireKeyword', isToken: true, excludeFromAST: true }, - { name: 'openParenToken', isToken: true, excludeFromAST: true }, - { name: 'stringLiteral', isToken: true }, - { name: 'closeParenToken', isToken: true, excludeFromAST: true } + { name: 'requireKeyword', isToken: true }, + { name: 'openParenToken', isToken: true }, + { name: 'expression', type: 'IExpressionSyntax' }, + { name: 'closeParenToken', isToken: true } ], isTypeScriptSpecific: true }, @@ -665,7 +665,7 @@ var definitions:ITypeDefinition[] = [ { name: 'modifiers', isList: true, elementType: 'ISyntaxToken' }, { name: 'constructorKeyword', isToken: true }, { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } + { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } ], isTypeScriptSpecific: true }, @@ -678,20 +678,20 @@ var definitions:ITypeDefinition[] = [ { name: 'asterixToken', isToken: true, isOptional: true }, { name: 'propertyName', type: 'IPropertyNameSyntax' }, { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } + { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } ], isTypeScriptSpecific: true }, { name: 'GetAccessorSyntax', baseType: 'ISyntaxNode', - interfaces: ['IAccessorSyntax' ], + interfaces: ['IAccessorSyntax'], children: [ { name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true }, { name: 'getKeyword', isToken: true, excludeFromAST: true }, { name: 'propertyName', type: 'IPropertyNameSyntax' }, { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } + { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } ] }, { @@ -703,7 +703,7 @@ var definitions:ITypeDefinition[] = [ { name: 'setKeyword', isToken: true, excludeFromAST: true }, { name: 'propertyName', type: 'IPropertyNameSyntax' }, { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } + { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true } ], isTypeScriptSpecific: true }, @@ -769,7 +769,7 @@ var definitions:ITypeDefinition[] = [ children: [ { name: 'caseKeyword', isToken: true, excludeFromAST: true }, { name: 'expression', type: 'IExpressionSyntax' }, - { name: 'colonToken', isToken: true, excludeFromAST: true}, + { name: 'colonToken', isToken: true, excludeFromAST: true }, { name: 'statements', isList: true, elementType: 'IStatementSyntax' } ] }, @@ -931,7 +931,7 @@ var definitions:ITypeDefinition[] = [ { name: 'asterixToken', isToken: true, isOptional: true }, { name: 'identifier', isToken: true, isOptional: true }, { name: 'callSignature', type: 'CallSignatureSyntax' }, - { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true }] + { name: 'body', type: 'BlockSyntax | ExpressionBody | ISyntaxToken', isOptional: true }] }, { name: 'EmptyStatementSyntax', @@ -1104,41 +1104,19 @@ function generateConstructorFunction(definition: ITypeDefinition) { result += ") {\r\n"; result += " if (data) { this.__data = data; }\r\n"; - + result += " this.parent = undefined"; if (definition.children.length) { - result += " "; - for (var i = 0; i < definition.children.length; i++) { - if (i) { - result += ", "; - } + //if (i) { + result += ",\r\n"; + //} var child = definition.children[i]; - result += "this." + child.name + " = " + getSafeName(child); + result += " this." + child.name + " = " + getSafeName(child); } - - result += ";\r\n"; } - if (definition.children.length > 0) { - result += " "; - - for (var i = 0; i < definition.children.length; i++) { - if (i) { - result += ", "; - } - - var child = definition.children[i]; - - if (child.isOptional) { - result += getSafeName(child) + " && (" + getSafeName(child) + ".parent = this)"; - } - else { - result += getSafeName(child) + ".parent = this"; - } - } - result += ";\r\n"; - } + result += ";\r\n"; result += " };\r\n"; result += " " + definition.name + ".prototype.kind = SyntaxKind." + getNameWithoutSuffix(definition) + ";\r\n"; @@ -1202,7 +1180,7 @@ function generateSyntaxInterface(definition: ITypeDefinition): string { result += " }\r\n"; result += " export interface " + getNameWithoutSuffix(definition) + "Constructor {"; result += " new (data: number"; - + for (var i = 0; i < definition.children.length; i++) { var child = definition.children[i]; result += ", "; @@ -1338,7 +1316,7 @@ function generateKeywordCondition(keywords: { text: string; kind: TypeScript.Syn if (keywords.length === 1) { var keyword = keywords[0]; - + if (currentCharacter === length) { return " return SyntaxKind." + firstEnumName(getSyntaxKindEnum(), keyword.kind) + ";\r\n"; } diff --git a/src/services/syntax/syntaxInterfaces.generated.ts b/src/services/syntax/syntaxInterfaces.generated.ts index 06236bcc477..637cec2ad6a 100644 --- a/src/services/syntax/syntaxInterfaces.generated.ts +++ b/src/services/syntax/syntaxInterfaces.generated.ts @@ -702,10 +702,10 @@ module TypeScript { export interface ExternalModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax { requireKeyword: ISyntaxToken; openParenToken: ISyntaxToken; - stringLiteral: ISyntaxToken; + expression: IExpressionSyntax; closeParenToken: ISyntaxToken; } - export interface ExternalModuleReferenceConstructor { new (data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, stringLiteral: ISyntaxToken, closeParenToken: ISyntaxToken): ExternalModuleReferenceSyntax } + export interface ExternalModuleReferenceConstructor { new (data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken): ExternalModuleReferenceSyntax } export interface ModuleNameModuleReferenceSyntax extends ISyntaxNode, IModuleReferenceSyntax { moduleName: INameSyntax; diff --git a/src/services/syntax/syntaxList.ts b/src/services/syntax/syntaxList.ts index aa6d8112952..79d3260e082 100644 --- a/src/services/syntax/syntaxList.ts +++ b/src/services/syntax/syntaxList.ts @@ -48,22 +48,10 @@ module TypeScript.Syntax { addArrayPrototypeValue("kind", SyntaxKind.List); export function list(nodes: T[]): T[] { - if (nodes !== undefined) { - for (var i = 0, n = nodes.length; i < n; i++) { - nodes[i].parent = nodes; - } - } - return nodes; } export function separatedList(nodesAndTokens: ISyntaxNodeOrToken[]): ISeparatedSyntaxList { - if (nodesAndTokens !== undefined) { - for (var i = 0, n = nodesAndTokens.length; i < n; i++) { - nodesAndTokens[i].parent = nodesAndTokens; - } - } - return >nodesAndTokens; } } \ 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 ef005f5b206..5cb5bdb2f51 100644 --- a/src/services/syntax/syntaxNodes.concrete.generated.ts +++ b/src/services/syntax/syntaxNodes.concrete.generated.ts @@ -1,34 +1,29 @@ /// module TypeScript { - export var SourceUnitSyntax: SourceUnitConstructor = function(data: number, moduleElements: IModuleElementSyntax[], endOfFileToken: ISyntaxToken) { + export var SourceUnitSyntax: SourceUnitConstructor = function (data: number, moduleElements: IModuleElementSyntax[], endOfFileToken: ISyntaxToken) { if (data) { this.__data = data; } this.moduleElements = moduleElements, - this.endOfFileToken = endOfFileToken, - moduleElements.parent = this, - endOfFileToken.parent = this; + this.endOfFileToken = endOfFileToken; }; SourceUnitSyntax.prototype.kind = SyntaxKind.SourceUnit; SourceUnitSyntax.prototype.childCount = 2; - SourceUnitSyntax.prototype.childAt = function(index: number): ISyntaxElement { + SourceUnitSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.moduleElements; case 1: return this.endOfFileToken; } } - export var QualifiedNameSyntax: QualifiedNameConstructor = function(data: number, left: INameSyntax, dotToken: ISyntaxToken, right: ISyntaxToken) { + export var QualifiedNameSyntax: QualifiedNameConstructor = function (data: number, left: INameSyntax, dotToken: ISyntaxToken, right: ISyntaxToken) { if (data) { this.__data = data; } this.left = left, this.dotToken = dotToken, - this.right = right, - left.parent = this, - dotToken.parent = this, - right.parent = this; + this.right = right; }; QualifiedNameSyntax.prototype.kind = SyntaxKind.QualifiedName; QualifiedNameSyntax.prototype.childCount = 3; - QualifiedNameSyntax.prototype.childAt = function(index: number): ISyntaxElement { + QualifiedNameSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.left; case 1: return this.dotToken; @@ -36,18 +31,15 @@ module TypeScript { } } - export var ObjectTypeSyntax: ObjectTypeConstructor = function(data: number, openBraceToken: ISyntaxToken, typeMembers: ITypeMemberSyntax[], closeBraceToken: ISyntaxToken) { + export var ObjectTypeSyntax: ObjectTypeConstructor = function (data: number, openBraceToken: ISyntaxToken, typeMembers: ITypeMemberSyntax[], closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.openBraceToken = openBraceToken, this.typeMembers = typeMembers, - this.closeBraceToken = closeBraceToken, - openBraceToken.parent = this, - typeMembers.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; ObjectTypeSyntax.prototype.kind = SyntaxKind.ObjectType; ObjectTypeSyntax.prototype.childCount = 3; - ObjectTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ObjectTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openBraceToken; case 1: return this.typeMembers; @@ -55,20 +47,16 @@ module TypeScript { } } - export var FunctionTypeSyntax: FunctionTypeConstructor = function(data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { + export var FunctionTypeSyntax: FunctionTypeConstructor = function (data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { if (data) { this.__data = data; } this.typeParameterList = typeParameterList, this.parameterList = parameterList, this.equalsGreaterThanToken = equalsGreaterThanToken, - this.type = type, - typeParameterList && (typeParameterList.parent = this), - parameterList.parent = this, - equalsGreaterThanToken.parent = this, - type.parent = this; + this.type = type; }; FunctionTypeSyntax.prototype.kind = SyntaxKind.FunctionType; FunctionTypeSyntax.prototype.childCount = 4; - FunctionTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + FunctionTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.typeParameterList; case 1: return this.parameterList; @@ -77,18 +65,15 @@ module TypeScript { } } - export var ArrayTypeSyntax: ArrayTypeConstructor = function(data: number, type: ITypeSyntax, openBracketToken: ISyntaxToken, closeBracketToken: ISyntaxToken) { + export var ArrayTypeSyntax: ArrayTypeConstructor = function (data: number, type: ITypeSyntax, openBracketToken: ISyntaxToken, closeBracketToken: ISyntaxToken) { if (data) { this.__data = data; } this.type = type, this.openBracketToken = openBracketToken, - this.closeBracketToken = closeBracketToken, - type.parent = this, - openBracketToken.parent = this, - closeBracketToken.parent = this; + this.closeBracketToken = closeBracketToken; }; ArrayTypeSyntax.prototype.kind = SyntaxKind.ArrayType; ArrayTypeSyntax.prototype.childCount = 3; - ArrayTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ArrayTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.type; case 1: return this.openBracketToken; @@ -96,22 +81,17 @@ module TypeScript { } } - export var ConstructorTypeSyntax: ConstructorTypeConstructor = function(data: number, newKeyword: ISyntaxToken, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { + export var ConstructorTypeSyntax: ConstructorTypeConstructor = function (data: number, newKeyword: ISyntaxToken, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, equalsGreaterThanToken: ISyntaxToken, type: ITypeSyntax) { if (data) { this.__data = data; } this.newKeyword = newKeyword, this.typeParameterList = typeParameterList, this.parameterList = parameterList, this.equalsGreaterThanToken = equalsGreaterThanToken, - this.type = type, - newKeyword.parent = this, - typeParameterList && (typeParameterList.parent = this), - parameterList.parent = this, - equalsGreaterThanToken.parent = this, - type.parent = this; + this.type = type; }; ConstructorTypeSyntax.prototype.kind = SyntaxKind.ConstructorType; ConstructorTypeSyntax.prototype.childCount = 5; - ConstructorTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ConstructorTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.newKeyword; case 1: return this.typeParameterList; @@ -121,50 +101,43 @@ module TypeScript { } } - export var GenericTypeSyntax: GenericTypeConstructor = function(data: number, name: INameSyntax, typeArgumentList: TypeArgumentListSyntax) { + export var GenericTypeSyntax: GenericTypeConstructor = function (data: number, name: INameSyntax, typeArgumentList: TypeArgumentListSyntax) { if (data) { this.__data = data; } this.name = name, - this.typeArgumentList = typeArgumentList, - name.parent = this, - typeArgumentList.parent = this; + this.typeArgumentList = typeArgumentList; }; GenericTypeSyntax.prototype.kind = SyntaxKind.GenericType; GenericTypeSyntax.prototype.childCount = 2; - GenericTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + GenericTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.name; case 1: return this.typeArgumentList; } } - export var TypeQuerySyntax: TypeQueryConstructor = function(data: number, typeOfKeyword: ISyntaxToken, name: INameSyntax) { + export var TypeQuerySyntax: TypeQueryConstructor = function (data: number, typeOfKeyword: ISyntaxToken, name: INameSyntax) { if (data) { this.__data = data; } this.typeOfKeyword = typeOfKeyword, - this.name = name, - typeOfKeyword.parent = this, - name.parent = this; + this.name = name; }; TypeQuerySyntax.prototype.kind = SyntaxKind.TypeQuery; TypeQuerySyntax.prototype.childCount = 2; - TypeQuerySyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeQuerySyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.typeOfKeyword; case 1: return this.name; } } - export var TupleTypeSyntax: TupleTypeConstructor = function(data: number, openBracketToken: ISyntaxToken, types: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { + export var TupleTypeSyntax: TupleTypeConstructor = function (data: number, openBracketToken: ISyntaxToken, types: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { if (data) { this.__data = data; } this.openBracketToken = openBracketToken, this.types = types, - this.closeBracketToken = closeBracketToken, - openBracketToken.parent = this, - types.parent = this, - closeBracketToken.parent = this; + this.closeBracketToken = closeBracketToken; }; TupleTypeSyntax.prototype.kind = SyntaxKind.TupleType; TupleTypeSyntax.prototype.childCount = 3; - TupleTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TupleTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openBracketToken; case 1: return this.types; @@ -172,18 +145,15 @@ module TypeScript { } } - export var UnionTypeSyntax: UnionTypeConstructor = function(data: number, left: ITypeSyntax, barToken: ISyntaxToken, right: ITypeSyntax) { + export var UnionTypeSyntax: UnionTypeConstructor = function (data: number, left: ITypeSyntax, barToken: ISyntaxToken, right: ITypeSyntax) { if (data) { this.__data = data; } this.left = left, this.barToken = barToken, - this.right = right, - left.parent = this, - barToken.parent = this, - right.parent = this; + this.right = right; }; UnionTypeSyntax.prototype.kind = SyntaxKind.UnionType; UnionTypeSyntax.prototype.childCount = 3; - UnionTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + UnionTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.left; case 1: return this.barToken; @@ -191,18 +161,15 @@ module TypeScript { } } - export var ParenthesizedTypeSyntax: ParenthesizedTypeConstructor = function(data: number, openParenToken: ISyntaxToken, type: ITypeSyntax, closeParenToken: ISyntaxToken) { + export var ParenthesizedTypeSyntax: ParenthesizedTypeConstructor = function (data: number, openParenToken: ISyntaxToken, type: ITypeSyntax, closeParenToken: ISyntaxToken) { if (data) { this.__data = data; } this.openParenToken = openParenToken, this.type = type, - this.closeParenToken = closeParenToken, - openParenToken.parent = this, - type.parent = this, - closeParenToken.parent = this; + this.closeParenToken = closeParenToken; }; ParenthesizedTypeSyntax.prototype.kind = SyntaxKind.ParenthesizedType; ParenthesizedTypeSyntax.prototype.childCount = 3; - ParenthesizedTypeSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ParenthesizedTypeSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openParenToken; case 1: return this.type; @@ -210,24 +177,18 @@ module TypeScript { } } - export var InterfaceDeclarationSyntax: InterfaceDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], interfaceKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], body: ObjectTypeSyntax) { + export var InterfaceDeclarationSyntax: InterfaceDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], interfaceKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], body: ObjectTypeSyntax) { if (data) { this.__data = data; } this.modifiers = modifiers, this.interfaceKeyword = interfaceKeyword, this.identifier = identifier, this.typeParameterList = typeParameterList, this.heritageClauses = heritageClauses, - this.body = body, - modifiers.parent = this, - interfaceKeyword.parent = this, - identifier.parent = this, - typeParameterList && (typeParameterList.parent = this), - heritageClauses.parent = this, - body.parent = this; + this.body = body; }; InterfaceDeclarationSyntax.prototype.kind = SyntaxKind.InterfaceDeclaration; InterfaceDeclarationSyntax.prototype.childCount = 6; - InterfaceDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + InterfaceDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.interfaceKeyword; @@ -238,24 +199,18 @@ module TypeScript { } } - export var FunctionDeclarationSyntax: FunctionDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { + export var FunctionDeclarationSyntax: FunctionDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.functionKeyword = functionKeyword, this.asterixToken = asterixToken, this.identifier = identifier, this.callSignature = callSignature, - this.body = body, - modifiers.parent = this, - functionKeyword.parent = this, - asterixToken && (asterixToken.parent = this), - identifier.parent = this, - callSignature.parent = this, - body && (body.parent = this); + this.body = body; }; FunctionDeclarationSyntax.prototype.kind = SyntaxKind.FunctionDeclaration; FunctionDeclarationSyntax.prototype.childCount = 6; - FunctionDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + FunctionDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.functionKeyword; @@ -266,24 +221,18 @@ module TypeScript { } } - export var ModuleDeclarationSyntax: ModuleDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], moduleKeyword: ISyntaxToken, name: INameSyntax, openBraceToken: ISyntaxToken, moduleElements: IModuleElementSyntax[], closeBraceToken: ISyntaxToken) { + export var ModuleDeclarationSyntax: ModuleDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], moduleKeyword: ISyntaxToken, name: INameSyntax, openBraceToken: ISyntaxToken, moduleElements: IModuleElementSyntax[], closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.moduleKeyword = moduleKeyword, this.name = name, this.openBraceToken = openBraceToken, this.moduleElements = moduleElements, - this.closeBraceToken = closeBraceToken, - modifiers.parent = this, - moduleKeyword.parent = this, - name.parent = this, - openBraceToken.parent = this, - moduleElements.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; ModuleDeclarationSyntax.prototype.kind = SyntaxKind.ModuleDeclaration; ModuleDeclarationSyntax.prototype.childCount = 6; - ModuleDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ModuleDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.moduleKeyword; @@ -294,7 +243,7 @@ module TypeScript { } } - export var ClassDeclarationSyntax: ClassDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], classKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], openBraceToken: ISyntaxToken, classElements: IClassElementSyntax[], closeBraceToken: ISyntaxToken) { + export var ClassDeclarationSyntax: ClassDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], classKeyword: ISyntaxToken, identifier: ISyntaxToken, typeParameterList: TypeParameterListSyntax, heritageClauses: HeritageClauseSyntax[], openBraceToken: ISyntaxToken, classElements: IClassElementSyntax[], closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.classKeyword = classKeyword, @@ -303,19 +252,11 @@ module TypeScript { this.heritageClauses = heritageClauses, this.openBraceToken = openBraceToken, this.classElements = classElements, - this.closeBraceToken = closeBraceToken, - modifiers.parent = this, - classKeyword.parent = this, - identifier.parent = this, - typeParameterList && (typeParameterList.parent = this), - heritageClauses.parent = this, - openBraceToken.parent = this, - classElements.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; ClassDeclarationSyntax.prototype.kind = SyntaxKind.ClassDeclaration; ClassDeclarationSyntax.prototype.childCount = 8; - ClassDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ClassDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.classKeyword; @@ -328,24 +269,18 @@ module TypeScript { } } - export var EnumDeclarationSyntax: EnumDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], enumKeyword: ISyntaxToken, identifier: ISyntaxToken, openBraceToken: ISyntaxToken, enumElements: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { + export var EnumDeclarationSyntax: EnumDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], enumKeyword: ISyntaxToken, identifier: ISyntaxToken, openBraceToken: ISyntaxToken, enumElements: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.enumKeyword = enumKeyword, this.identifier = identifier, this.openBraceToken = openBraceToken, this.enumElements = enumElements, - this.closeBraceToken = closeBraceToken, - modifiers.parent = this, - enumKeyword.parent = this, - identifier.parent = this, - openBraceToken.parent = this, - enumElements.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; EnumDeclarationSyntax.prototype.kind = SyntaxKind.EnumDeclaration; EnumDeclarationSyntax.prototype.childCount = 6; - EnumDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + EnumDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.enumKeyword; @@ -356,24 +291,18 @@ module TypeScript { } } - export var ImportDeclarationSyntax: ImportDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], importKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, moduleReference: IModuleReferenceSyntax, semicolonToken: ISyntaxToken) { + export var ImportDeclarationSyntax: ImportDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], importKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, moduleReference: IModuleReferenceSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.importKeyword = importKeyword, this.identifier = identifier, this.equalsToken = equalsToken, this.moduleReference = moduleReference, - this.semicolonToken = semicolonToken, - modifiers.parent = this, - importKeyword.parent = this, - identifier.parent = this, - equalsToken.parent = this, - moduleReference.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; ImportDeclarationSyntax.prototype.kind = SyntaxKind.ImportDeclaration; ImportDeclarationSyntax.prototype.childCount = 6; - ImportDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ImportDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.importKeyword; @@ -384,22 +313,17 @@ module TypeScript { } } - export var ExportAssignmentSyntax: ExportAssignmentConstructor = function(data: number, modifiers: ISyntaxToken[], exportKeyword: ISyntaxToken, equalsToken: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { + export var ExportAssignmentSyntax: ExportAssignmentConstructor = function (data: number, modifiers: ISyntaxToken[], exportKeyword: ISyntaxToken, equalsToken: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.exportKeyword = exportKeyword, this.equalsToken = equalsToken, this.identifier = identifier, - this.semicolonToken = semicolonToken, - modifiers.parent = this, - exportKeyword.parent = this, - equalsToken.parent = this, - identifier.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; ExportAssignmentSyntax.prototype.kind = SyntaxKind.ExportAssignment; ExportAssignmentSyntax.prototype.childCount = 5; - ExportAssignmentSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ExportAssignmentSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.exportKeyword; @@ -409,22 +333,17 @@ module TypeScript { } } - export var MethodDeclarationSyntax: MethodDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], asterixToken: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { + export var MethodDeclarationSyntax: MethodDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], asterixToken: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.asterixToken = asterixToken, this.propertyName = propertyName, this.callSignature = callSignature, - this.body = body, - modifiers.parent = this, - asterixToken && (asterixToken.parent = this), - propertyName.parent = this, - callSignature.parent = this, - body && (body.parent = this); + this.body = body; }; MethodDeclarationSyntax.prototype.kind = SyntaxKind.MethodDeclaration; MethodDeclarationSyntax.prototype.childCount = 5; - MethodDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + MethodDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.asterixToken; @@ -434,18 +353,15 @@ module TypeScript { } } - export var PropertyDeclarationSyntax: PropertyDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], variableDeclarator: VariableDeclaratorSyntax, semicolonToken: ISyntaxToken) { + export var PropertyDeclarationSyntax: PropertyDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], variableDeclarator: VariableDeclaratorSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.variableDeclarator = variableDeclarator, - this.semicolonToken = semicolonToken, - modifiers.parent = this, - variableDeclarator.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; PropertyDeclarationSyntax.prototype.kind = SyntaxKind.PropertyDeclaration; PropertyDeclarationSyntax.prototype.childCount = 3; - PropertyDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + PropertyDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.variableDeclarator; @@ -453,20 +369,16 @@ module TypeScript { } } - export var ConstructorDeclarationSyntax: ConstructorDeclarationConstructor = function(data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { + export var ConstructorDeclarationSyntax: ConstructorDeclarationConstructor = function (data: number, modifiers: ISyntaxToken[], constructorKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.constructorKeyword = constructorKeyword, this.callSignature = callSignature, - this.body = body, - modifiers.parent = this, - constructorKeyword.parent = this, - callSignature.parent = this, - body && (body.parent = this); + this.body = body; }; ConstructorDeclarationSyntax.prototype.kind = SyntaxKind.ConstructorDeclaration; ConstructorDeclarationSyntax.prototype.childCount = 4; - ConstructorDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ConstructorDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.constructorKeyword; @@ -475,22 +387,17 @@ module TypeScript { } } - export var GetAccessorSyntax: GetAccessorConstructor = function(data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { + export var GetAccessorSyntax: GetAccessorConstructor = function (data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.getKeyword = getKeyword, this.propertyName = propertyName, this.callSignature = callSignature, - this.body = body, - modifiers.parent = this, - getKeyword.parent = this, - propertyName.parent = this, - callSignature.parent = this, - body && (body.parent = this); + this.body = body; }; GetAccessorSyntax.prototype.kind = SyntaxKind.GetAccessor; GetAccessorSyntax.prototype.childCount = 5; - GetAccessorSyntax.prototype.childAt = function(index: number): ISyntaxElement { + GetAccessorSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.getKeyword; @@ -500,22 +407,17 @@ module TypeScript { } } - export var SetAccessorSyntax: SetAccessorConstructor = function(data: number, modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { + export var SetAccessorSyntax: SetAccessorConstructor = function (data: number, modifiers: ISyntaxToken[], setKeyword: ISyntaxToken, propertyName: IPropertyNameSyntax, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.setKeyword = setKeyword, this.propertyName = propertyName, this.callSignature = callSignature, - this.body = body, - modifiers.parent = this, - setKeyword.parent = this, - propertyName.parent = this, - callSignature.parent = this, - body && (body.parent = this); + this.body = body; }; SetAccessorSyntax.prototype.kind = SyntaxKind.SetAccessor; SetAccessorSyntax.prototype.childCount = 5; - SetAccessorSyntax.prototype.childAt = function(index: number): ISyntaxElement { + SetAccessorSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.setKeyword; @@ -525,20 +427,16 @@ module TypeScript { } } - export var PropertySignatureSyntax: PropertySignatureConstructor = function(data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { + export var PropertySignatureSyntax: PropertySignatureConstructor = function (data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { if (data) { this.__data = data; } this.propertyName = propertyName, this.questionToken = questionToken, this.typeAnnotation = typeAnnotation, - this.semicolonOrCommaToken = semicolonOrCommaToken, - propertyName.parent = this, - questionToken && (questionToken.parent = this), - typeAnnotation && (typeAnnotation.parent = this), - semicolonOrCommaToken && (semicolonOrCommaToken.parent = this); + this.semicolonOrCommaToken = semicolonOrCommaToken; }; PropertySignatureSyntax.prototype.kind = SyntaxKind.PropertySignature; PropertySignatureSyntax.prototype.childCount = 4; - PropertySignatureSyntax.prototype.childAt = function(index: number): ISyntaxElement { + PropertySignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.propertyName; case 1: return this.questionToken; @@ -547,20 +445,16 @@ module TypeScript { } } - export var CallSignatureSyntax: CallSignatureConstructor = function(data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { + export var CallSignatureSyntax: CallSignatureConstructor = function (data: number, typeParameterList: TypeParameterListSyntax, parameterList: ParameterListSyntax, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { if (data) { this.__data = data; } this.typeParameterList = typeParameterList, this.parameterList = parameterList, this.typeAnnotation = typeAnnotation, - this.semicolonOrCommaToken = semicolonOrCommaToken, - typeParameterList && (typeParameterList.parent = this), - parameterList.parent = this, - typeAnnotation && (typeAnnotation.parent = this), - semicolonOrCommaToken && (semicolonOrCommaToken.parent = this); + this.semicolonOrCommaToken = semicolonOrCommaToken; }; CallSignatureSyntax.prototype.kind = SyntaxKind.CallSignature; CallSignatureSyntax.prototype.childCount = 4; - CallSignatureSyntax.prototype.childAt = function(index: number): ISyntaxElement { + CallSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.typeParameterList; case 1: return this.parameterList; @@ -569,40 +463,32 @@ module TypeScript { } } - export var ConstructSignatureSyntax: ConstructSignatureConstructor = function(data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax) { + export var ConstructSignatureSyntax: ConstructSignatureConstructor = function (data: number, newKeyword: ISyntaxToken, callSignature: CallSignatureSyntax) { if (data) { this.__data = data; } this.newKeyword = newKeyword, - this.callSignature = callSignature, - newKeyword.parent = this, - callSignature.parent = this; + this.callSignature = callSignature; }; ConstructSignatureSyntax.prototype.kind = SyntaxKind.ConstructSignature; ConstructSignatureSyntax.prototype.childCount = 2; - ConstructSignatureSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ConstructSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.newKeyword; case 1: return this.callSignature; } } - export var IndexSignatureSyntax: IndexSignatureConstructor = function(data: number, modifiers: ISyntaxToken[], openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { + export var IndexSignatureSyntax: IndexSignatureConstructor = function (data: number, modifiers: ISyntaxToken[], openBracketToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, semicolonOrCommaToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.openBracketToken = openBracketToken, this.parameters = parameters, this.closeBracketToken = closeBracketToken, this.typeAnnotation = typeAnnotation, - this.semicolonOrCommaToken = semicolonOrCommaToken, - modifiers.parent = this, - openBracketToken.parent = this, - parameters.parent = this, - closeBracketToken.parent = this, - typeAnnotation && (typeAnnotation.parent = this), - semicolonOrCommaToken && (semicolonOrCommaToken.parent = this); + this.semicolonOrCommaToken = semicolonOrCommaToken; }; IndexSignatureSyntax.prototype.kind = SyntaxKind.IndexSignature; IndexSignatureSyntax.prototype.childCount = 6; - IndexSignatureSyntax.prototype.childAt = function(index: number): ISyntaxElement { + IndexSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.openBracketToken; @@ -613,18 +499,15 @@ module TypeScript { } } - export var MethodSignatureSyntax: MethodSignatureConstructor = function(data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, callSignature: CallSignatureSyntax) { + export var MethodSignatureSyntax: MethodSignatureConstructor = function (data: number, propertyName: IPropertyNameSyntax, questionToken: ISyntaxToken, callSignature: CallSignatureSyntax) { if (data) { this.__data = data; } this.propertyName = propertyName, this.questionToken = questionToken, - this.callSignature = callSignature, - propertyName.parent = this, - questionToken && (questionToken.parent = this), - callSignature.parent = this; + this.callSignature = callSignature; }; MethodSignatureSyntax.prototype.kind = SyntaxKind.MethodSignature; MethodSignatureSyntax.prototype.childCount = 3; - MethodSignatureSyntax.prototype.childAt = function(index: number): ISyntaxElement { + MethodSignatureSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.propertyName; case 1: return this.questionToken; @@ -632,20 +515,16 @@ module TypeScript { } } - export var BlockSyntax: BlockConstructor = function(data: number, equalsGreaterThanToken: ISyntaxToken, openBraceToken: ISyntaxToken, statements: IStatementSyntax[], closeBraceToken: ISyntaxToken) { + export var BlockSyntax: BlockConstructor = function (data: number, equalsGreaterThanToken: ISyntaxToken, openBraceToken: ISyntaxToken, statements: IStatementSyntax[], closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.equalsGreaterThanToken = equalsGreaterThanToken, this.openBraceToken = openBraceToken, this.statements = statements, - this.closeBraceToken = closeBraceToken, - equalsGreaterThanToken && (equalsGreaterThanToken.parent = this), - openBraceToken.parent = this, - statements.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; BlockSyntax.prototype.kind = SyntaxKind.Block; BlockSyntax.prototype.childCount = 4; - BlockSyntax.prototype.childAt = function(index: number): ISyntaxElement { + BlockSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.equalsGreaterThanToken; case 1: return this.openBraceToken; @@ -654,24 +533,18 @@ module TypeScript { } } - export var IfStatementSyntax: IfStatementConstructor = function(data: number, ifKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax, elseClause: ElseClauseSyntax) { + export var IfStatementSyntax: IfStatementConstructor = function (data: number, ifKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax, elseClause: ElseClauseSyntax) { if (data) { this.__data = data; } this.ifKeyword = ifKeyword, this.openParenToken = openParenToken, this.condition = condition, this.closeParenToken = closeParenToken, this.statement = statement, - this.elseClause = elseClause, - ifKeyword.parent = this, - openParenToken.parent = this, - condition.parent = this, - closeParenToken.parent = this, - statement.parent = this, - elseClause && (elseClause.parent = this); + this.elseClause = elseClause; }; IfStatementSyntax.prototype.kind = SyntaxKind.IfStatement; IfStatementSyntax.prototype.childCount = 6; - IfStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + IfStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.ifKeyword; case 1: return this.openParenToken; @@ -682,18 +555,15 @@ module TypeScript { } } - export var VariableStatementSyntax: VariableStatementConstructor = function(data: number, modifiers: ISyntaxToken[], variableDeclaration: VariableDeclarationSyntax, semicolonToken: ISyntaxToken) { + export var VariableStatementSyntax: VariableStatementConstructor = function (data: number, modifiers: ISyntaxToken[], variableDeclaration: VariableDeclarationSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.variableDeclaration = variableDeclaration, - this.semicolonToken = semicolonToken, - modifiers.parent = this, - variableDeclaration.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; VariableStatementSyntax.prototype.kind = SyntaxKind.VariableStatement; VariableStatementSyntax.prototype.childCount = 3; - VariableStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + VariableStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.variableDeclaration; @@ -701,34 +571,29 @@ module TypeScript { } } - export var ExpressionStatementSyntax: ExpressionStatementConstructor = function(data: number, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { + export var ExpressionStatementSyntax: ExpressionStatementConstructor = function (data: number, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.expression = expression, - this.semicolonToken = semicolonToken, - expression.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; ExpressionStatementSyntax.prototype.kind = SyntaxKind.ExpressionStatement; ExpressionStatementSyntax.prototype.childCount = 2; - ExpressionStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ExpressionStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.expression; case 1: return this.semicolonToken; } } - export var ReturnStatementSyntax: ReturnStatementConstructor = function(data: number, returnKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { + export var ReturnStatementSyntax: ReturnStatementConstructor = function (data: number, returnKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.returnKeyword = returnKeyword, this.expression = expression, - this.semicolonToken = semicolonToken, - returnKeyword.parent = this, - expression && (expression.parent = this), - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; ReturnStatementSyntax.prototype.kind = SyntaxKind.ReturnStatement; ReturnStatementSyntax.prototype.childCount = 3; - ReturnStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ReturnStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.returnKeyword; case 1: return this.expression; @@ -736,7 +601,7 @@ module TypeScript { } } - export var SwitchStatementSyntax: SwitchStatementConstructor = function(data: number, switchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, openBraceToken: ISyntaxToken, switchClauses: ISwitchClauseSyntax[], closeBraceToken: ISyntaxToken) { + export var SwitchStatementSyntax: SwitchStatementConstructor = function (data: number, switchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken, openBraceToken: ISyntaxToken, switchClauses: ISwitchClauseSyntax[], closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.switchKeyword = switchKeyword, this.openParenToken = openParenToken, @@ -744,18 +609,11 @@ module TypeScript { this.closeParenToken = closeParenToken, this.openBraceToken = openBraceToken, this.switchClauses = switchClauses, - this.closeBraceToken = closeBraceToken, - switchKeyword.parent = this, - openParenToken.parent = this, - expression.parent = this, - closeParenToken.parent = this, - openBraceToken.parent = this, - switchClauses.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; SwitchStatementSyntax.prototype.kind = SyntaxKind.SwitchStatement; SwitchStatementSyntax.prototype.childCount = 7; - SwitchStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + SwitchStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.switchKeyword; case 1: return this.openParenToken; @@ -767,18 +625,15 @@ module TypeScript { } } - export var BreakStatementSyntax: BreakStatementConstructor = function(data: number, breakKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { + export var BreakStatementSyntax: BreakStatementConstructor = function (data: number, breakKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.breakKeyword = breakKeyword, this.identifier = identifier, - this.semicolonToken = semicolonToken, - breakKeyword.parent = this, - identifier && (identifier.parent = this), - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; BreakStatementSyntax.prototype.kind = SyntaxKind.BreakStatement; BreakStatementSyntax.prototype.childCount = 3; - BreakStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + BreakStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.breakKeyword; case 1: return this.identifier; @@ -786,18 +641,15 @@ module TypeScript { } } - export var ContinueStatementSyntax: ContinueStatementConstructor = function(data: number, continueKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { + export var ContinueStatementSyntax: ContinueStatementConstructor = function (data: number, continueKeyword: ISyntaxToken, identifier: ISyntaxToken, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.continueKeyword = continueKeyword, this.identifier = identifier, - this.semicolonToken = semicolonToken, - continueKeyword.parent = this, - identifier && (identifier.parent = this), - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; ContinueStatementSyntax.prototype.kind = SyntaxKind.ContinueStatement; ContinueStatementSyntax.prototype.childCount = 3; - ContinueStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ContinueStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.continueKeyword; case 1: return this.identifier; @@ -805,7 +657,7 @@ module TypeScript { } } - export var ForStatementSyntax: ForStatementConstructor = function(data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, initializer: VariableDeclarationSyntax | IExpressionSyntax, firstSemicolonToken: ISyntaxToken, condition: IExpressionSyntax, secondSemicolonToken: ISyntaxToken, incrementor: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { + export var ForStatementSyntax: ForStatementConstructor = function (data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, initializer: VariableDeclarationSyntax | IExpressionSyntax, firstSemicolonToken: ISyntaxToken, condition: IExpressionSyntax, secondSemicolonToken: ISyntaxToken, incrementor: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { if (data) { this.__data = data; } this.forKeyword = forKeyword, this.openParenToken = openParenToken, @@ -815,20 +667,11 @@ module TypeScript { this.secondSemicolonToken = secondSemicolonToken, this.incrementor = incrementor, this.closeParenToken = closeParenToken, - this.statement = statement, - forKeyword.parent = this, - openParenToken.parent = this, - initializer && (initializer.parent = this), - firstSemicolonToken.parent = this, - condition && (condition.parent = this), - secondSemicolonToken.parent = this, - incrementor && (incrementor.parent = this), - closeParenToken.parent = this, - statement.parent = this; + this.statement = statement; }; ForStatementSyntax.prototype.kind = SyntaxKind.ForStatement; ForStatementSyntax.prototype.childCount = 9; - ForStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ForStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.forKeyword; case 1: return this.openParenToken; @@ -842,7 +685,7 @@ module TypeScript { } } - export var ForInStatementSyntax: ForInStatementConstructor = function(data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, left: VariableDeclarationSyntax | IExpressionSyntax, inKeyword: ISyntaxToken, right: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { + export var ForInStatementSyntax: ForInStatementConstructor = function (data: number, forKeyword: ISyntaxToken, openParenToken: ISyntaxToken, left: VariableDeclarationSyntax | IExpressionSyntax, inKeyword: ISyntaxToken, right: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { if (data) { this.__data = data; } this.forKeyword = forKeyword, this.openParenToken = openParenToken, @@ -850,18 +693,11 @@ module TypeScript { this.inKeyword = inKeyword, this.right = right, this.closeParenToken = closeParenToken, - this.statement = statement, - forKeyword.parent = this, - openParenToken.parent = this, - left.parent = this, - inKeyword.parent = this, - right.parent = this, - closeParenToken.parent = this, - statement.parent = this; + this.statement = statement; }; ForInStatementSyntax.prototype.kind = SyntaxKind.ForInStatement; ForInStatementSyntax.prototype.childCount = 7; - ForInStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ForInStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.forKeyword; case 1: return this.openParenToken; @@ -873,31 +709,27 @@ module TypeScript { } } - export var EmptyStatementSyntax: EmptyStatementConstructor = function(data: number, semicolonToken: ISyntaxToken) { + export var EmptyStatementSyntax: EmptyStatementConstructor = function (data: number, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } - this.semicolonToken = semicolonToken, - semicolonToken.parent = this; + this.semicolonToken = semicolonToken; }; EmptyStatementSyntax.prototype.kind = SyntaxKind.EmptyStatement; EmptyStatementSyntax.prototype.childCount = 1; - EmptyStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + EmptyStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.semicolonToken; } } - export var ThrowStatementSyntax: ThrowStatementConstructor = function(data: number, throwKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { + export var ThrowStatementSyntax: ThrowStatementConstructor = function (data: number, throwKeyword: ISyntaxToken, expression: IExpressionSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.throwKeyword = throwKeyword, this.expression = expression, - this.semicolonToken = semicolonToken, - throwKeyword.parent = this, - expression && (expression.parent = this), - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; ThrowStatementSyntax.prototype.kind = SyntaxKind.ThrowStatement; ThrowStatementSyntax.prototype.childCount = 3; - ThrowStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ThrowStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.throwKeyword; case 1: return this.expression; @@ -905,22 +737,17 @@ module TypeScript { } } - export var WhileStatementSyntax: WhileStatementConstructor = function(data: number, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { + export var WhileStatementSyntax: WhileStatementConstructor = function (data: number, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { if (data) { this.__data = data; } this.whileKeyword = whileKeyword, this.openParenToken = openParenToken, this.condition = condition, this.closeParenToken = closeParenToken, - this.statement = statement, - whileKeyword.parent = this, - openParenToken.parent = this, - condition.parent = this, - closeParenToken.parent = this, - statement.parent = this; + this.statement = statement; }; WhileStatementSyntax.prototype.kind = SyntaxKind.WhileStatement; WhileStatementSyntax.prototype.childCount = 5; - WhileStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + WhileStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.whileKeyword; case 1: return this.openParenToken; @@ -930,20 +757,16 @@ module TypeScript { } } - export var TryStatementSyntax: TryStatementConstructor = function(data: number, tryKeyword: ISyntaxToken, block: BlockSyntax, catchClause: CatchClauseSyntax, finallyClause: FinallyClauseSyntax) { + export var TryStatementSyntax: TryStatementConstructor = function (data: number, tryKeyword: ISyntaxToken, block: BlockSyntax, catchClause: CatchClauseSyntax, finallyClause: FinallyClauseSyntax) { if (data) { this.__data = data; } this.tryKeyword = tryKeyword, this.block = block, this.catchClause = catchClause, - this.finallyClause = finallyClause, - tryKeyword.parent = this, - block.parent = this, - catchClause && (catchClause.parent = this), - finallyClause && (finallyClause.parent = this); + this.finallyClause = finallyClause; }; TryStatementSyntax.prototype.kind = SyntaxKind.TryStatement; TryStatementSyntax.prototype.childCount = 4; - TryStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TryStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.tryKeyword; case 1: return this.block; @@ -952,18 +775,15 @@ module TypeScript { } } - export var LabeledStatementSyntax: LabeledStatementConstructor = function(data: number, identifier: ISyntaxToken, colonToken: ISyntaxToken, statement: IStatementSyntax) { + export var LabeledStatementSyntax: LabeledStatementConstructor = function (data: number, identifier: ISyntaxToken, colonToken: ISyntaxToken, statement: IStatementSyntax) { if (data) { this.__data = data; } this.identifier = identifier, this.colonToken = colonToken, - this.statement = statement, - identifier.parent = this, - colonToken.parent = this, - statement.parent = this; + this.statement = statement; }; LabeledStatementSyntax.prototype.kind = SyntaxKind.LabeledStatement; LabeledStatementSyntax.prototype.childCount = 3; - LabeledStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + LabeledStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.identifier; case 1: return this.colonToken; @@ -971,7 +791,7 @@ module TypeScript { } } - export var DoStatementSyntax: DoStatementConstructor = function(data: number, doKeyword: ISyntaxToken, statement: IStatementSyntax, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, semicolonToken: ISyntaxToken) { + export var DoStatementSyntax: DoStatementConstructor = function (data: number, doKeyword: ISyntaxToken, statement: IStatementSyntax, whileKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.doKeyword = doKeyword, this.statement = statement, @@ -979,18 +799,11 @@ module TypeScript { this.openParenToken = openParenToken, this.condition = condition, this.closeParenToken = closeParenToken, - this.semicolonToken = semicolonToken, - doKeyword.parent = this, - statement.parent = this, - whileKeyword.parent = this, - openParenToken.parent = this, - condition.parent = this, - closeParenToken.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; DoStatementSyntax.prototype.kind = SyntaxKind.DoStatement; DoStatementSyntax.prototype.childCount = 7; - DoStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + DoStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.doKeyword; case 1: return this.statement; @@ -1002,38 +815,31 @@ module TypeScript { } } - export var DebuggerStatementSyntax: DebuggerStatementConstructor = function(data: number, debuggerKeyword: ISyntaxToken, semicolonToken: ISyntaxToken) { + export var DebuggerStatementSyntax: DebuggerStatementConstructor = function (data: number, debuggerKeyword: ISyntaxToken, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.debuggerKeyword = debuggerKeyword, - this.semicolonToken = semicolonToken, - debuggerKeyword.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; DebuggerStatementSyntax.prototype.kind = SyntaxKind.DebuggerStatement; DebuggerStatementSyntax.prototype.childCount = 2; - DebuggerStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + DebuggerStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.debuggerKeyword; case 1: return this.semicolonToken; } } - export var WithStatementSyntax: WithStatementConstructor = function(data: number, withKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { + export var WithStatementSyntax: WithStatementConstructor = function (data: number, withKeyword: ISyntaxToken, openParenToken: ISyntaxToken, condition: IExpressionSyntax, closeParenToken: ISyntaxToken, statement: IStatementSyntax) { if (data) { this.__data = data; } this.withKeyword = withKeyword, this.openParenToken = openParenToken, this.condition = condition, this.closeParenToken = closeParenToken, - this.statement = statement, - withKeyword.parent = this, - openParenToken.parent = this, - condition.parent = this, - closeParenToken.parent = this, - statement.parent = this; + this.statement = statement; }; WithStatementSyntax.prototype.kind = SyntaxKind.WithStatement; WithStatementSyntax.prototype.childCount = 5; - WithStatementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + WithStatementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.withKeyword; case 1: return this.openParenToken; @@ -1043,86 +849,73 @@ module TypeScript { } } - export var PrefixUnaryExpressionSyntax: PrefixUnaryExpressionConstructor = function(data: number, operatorToken: ISyntaxToken, operand: IUnaryExpressionSyntax) { + export var PrefixUnaryExpressionSyntax: PrefixUnaryExpressionConstructor = function (data: number, operatorToken: ISyntaxToken, operand: IUnaryExpressionSyntax) { if (data) { this.__data = data; } this.operatorToken = operatorToken, - this.operand = operand, - operatorToken.parent = this, - operand.parent = this; + this.operand = operand; }; PrefixUnaryExpressionSyntax.prototype.kind = SyntaxKind.PrefixUnaryExpression; PrefixUnaryExpressionSyntax.prototype.childCount = 2; - PrefixUnaryExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + PrefixUnaryExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.operatorToken; case 1: return this.operand; } } - export var DeleteExpressionSyntax: DeleteExpressionConstructor = function(data: number, deleteKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { + export var DeleteExpressionSyntax: DeleteExpressionConstructor = function (data: number, deleteKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { if (data) { this.__data = data; } this.deleteKeyword = deleteKeyword, - this.expression = expression, - deleteKeyword.parent = this, - expression.parent = this; + this.expression = expression; }; DeleteExpressionSyntax.prototype.kind = SyntaxKind.DeleteExpression; DeleteExpressionSyntax.prototype.childCount = 2; - DeleteExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + DeleteExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.deleteKeyword; case 1: return this.expression; } } - export var TypeOfExpressionSyntax: TypeOfExpressionConstructor = function(data: number, typeOfKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { + export var TypeOfExpressionSyntax: TypeOfExpressionConstructor = function (data: number, typeOfKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { if (data) { this.__data = data; } this.typeOfKeyword = typeOfKeyword, - this.expression = expression, - typeOfKeyword.parent = this, - expression.parent = this; + this.expression = expression; }; TypeOfExpressionSyntax.prototype.kind = SyntaxKind.TypeOfExpression; TypeOfExpressionSyntax.prototype.childCount = 2; - TypeOfExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeOfExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.typeOfKeyword; case 1: return this.expression; } } - export var VoidExpressionSyntax: VoidExpressionConstructor = function(data: number, voidKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { + export var VoidExpressionSyntax: VoidExpressionConstructor = function (data: number, voidKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { if (data) { this.__data = data; } this.voidKeyword = voidKeyword, - this.expression = expression, - voidKeyword.parent = this, - expression.parent = this; + this.expression = expression; }; VoidExpressionSyntax.prototype.kind = SyntaxKind.VoidExpression; VoidExpressionSyntax.prototype.childCount = 2; - VoidExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + VoidExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.voidKeyword; case 1: return this.expression; } } - export var ConditionalExpressionSyntax: ConditionalExpressionConstructor = function(data: number, condition: IExpressionSyntax, questionToken: ISyntaxToken, whenTrue: IExpressionSyntax, colonToken: ISyntaxToken, whenFalse: IExpressionSyntax) { + export var ConditionalExpressionSyntax: ConditionalExpressionConstructor = function (data: number, condition: IExpressionSyntax, questionToken: ISyntaxToken, whenTrue: IExpressionSyntax, colonToken: ISyntaxToken, whenFalse: IExpressionSyntax) { if (data) { this.__data = data; } this.condition = condition, this.questionToken = questionToken, this.whenTrue = whenTrue, this.colonToken = colonToken, - this.whenFalse = whenFalse, - condition.parent = this, - questionToken.parent = this, - whenTrue.parent = this, - colonToken.parent = this, - whenFalse.parent = this; + this.whenFalse = whenFalse; }; ConditionalExpressionSyntax.prototype.kind = SyntaxKind.ConditionalExpression; ConditionalExpressionSyntax.prototype.childCount = 5; - ConditionalExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ConditionalExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.condition; case 1: return this.questionToken; @@ -1132,18 +925,15 @@ module TypeScript { } } - export var BinaryExpressionSyntax: BinaryExpressionConstructor = function(data: number, left: IExpressionSyntax, operatorToken: ISyntaxToken, right: IExpressionSyntax) { + export var BinaryExpressionSyntax: BinaryExpressionConstructor = function (data: number, left: IExpressionSyntax, operatorToken: ISyntaxToken, right: IExpressionSyntax) { if (data) { this.__data = data; } this.left = left, this.operatorToken = operatorToken, - this.right = right, - left.parent = this, - operatorToken.parent = this, - right.parent = this; + this.right = right; }; BinaryExpressionSyntax.prototype.kind = SyntaxKind.BinaryExpression; BinaryExpressionSyntax.prototype.childCount = 3; - BinaryExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + BinaryExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.left; case 1: return this.operatorToken; @@ -1151,34 +941,29 @@ module TypeScript { } } - export var PostfixUnaryExpressionSyntax: PostfixUnaryExpressionConstructor = function(data: number, operand: ILeftHandSideExpressionSyntax, operatorToken: ISyntaxToken) { + export var PostfixUnaryExpressionSyntax: PostfixUnaryExpressionConstructor = function (data: number, operand: ILeftHandSideExpressionSyntax, operatorToken: ISyntaxToken) { if (data) { this.__data = data; } this.operand = operand, - this.operatorToken = operatorToken, - operand.parent = this, - operatorToken.parent = this; + this.operatorToken = operatorToken; }; PostfixUnaryExpressionSyntax.prototype.kind = SyntaxKind.PostfixUnaryExpression; PostfixUnaryExpressionSyntax.prototype.childCount = 2; - PostfixUnaryExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + PostfixUnaryExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.operand; case 1: return this.operatorToken; } } - export var PropertyAccessExpressionSyntax: PropertyAccessExpressionConstructor = function(data: number, expression: ILeftHandSideExpressionSyntax, dotToken: ISyntaxToken, name: ISyntaxToken) { + export var PropertyAccessExpressionSyntax: PropertyAccessExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, dotToken: ISyntaxToken, name: ISyntaxToken) { if (data) { this.__data = data; } this.expression = expression, this.dotToken = dotToken, - this.name = name, - expression.parent = this, - dotToken.parent = this, - name.parent = this; + this.name = name; }; PropertyAccessExpressionSyntax.prototype.kind = SyntaxKind.PropertyAccessExpression; PropertyAccessExpressionSyntax.prototype.childCount = 3; - PropertyAccessExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + PropertyAccessExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.expression; case 1: return this.dotToken; @@ -1186,34 +971,29 @@ module TypeScript { } } - export var InvocationExpressionSyntax: InvocationExpressionConstructor = function(data: number, expression: ILeftHandSideExpressionSyntax, argumentList: ArgumentListSyntax) { + export var InvocationExpressionSyntax: InvocationExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, argumentList: ArgumentListSyntax) { if (data) { this.__data = data; } this.expression = expression, - this.argumentList = argumentList, - expression.parent = this, - argumentList.parent = this; + this.argumentList = argumentList; }; InvocationExpressionSyntax.prototype.kind = SyntaxKind.InvocationExpression; InvocationExpressionSyntax.prototype.childCount = 2; - InvocationExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + InvocationExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.expression; case 1: return this.argumentList; } } - export var ArrayLiteralExpressionSyntax: ArrayLiteralExpressionConstructor = function(data: number, openBracketToken: ISyntaxToken, expressions: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { + export var ArrayLiteralExpressionSyntax: ArrayLiteralExpressionConstructor = function (data: number, openBracketToken: ISyntaxToken, expressions: ISeparatedSyntaxList, closeBracketToken: ISyntaxToken) { if (data) { this.__data = data; } this.openBracketToken = openBracketToken, this.expressions = expressions, - this.closeBracketToken = closeBracketToken, - openBracketToken.parent = this, - expressions.parent = this, - closeBracketToken.parent = this; + this.closeBracketToken = closeBracketToken; }; ArrayLiteralExpressionSyntax.prototype.kind = SyntaxKind.ArrayLiteralExpression; ArrayLiteralExpressionSyntax.prototype.childCount = 3; - ArrayLiteralExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ArrayLiteralExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openBracketToken; case 1: return this.expressions; @@ -1221,18 +1001,15 @@ module TypeScript { } } - export var ObjectLiteralExpressionSyntax: ObjectLiteralExpressionConstructor = function(data: number, openBraceToken: ISyntaxToken, propertyAssignments: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { + export var ObjectLiteralExpressionSyntax: ObjectLiteralExpressionConstructor = function (data: number, openBraceToken: ISyntaxToken, propertyAssignments: ISeparatedSyntaxList, closeBraceToken: ISyntaxToken) { if (data) { this.__data = data; } this.openBraceToken = openBraceToken, this.propertyAssignments = propertyAssignments, - this.closeBraceToken = closeBraceToken, - openBraceToken.parent = this, - propertyAssignments.parent = this, - closeBraceToken.parent = this; + this.closeBraceToken = closeBraceToken; }; ObjectLiteralExpressionSyntax.prototype.kind = SyntaxKind.ObjectLiteralExpression; ObjectLiteralExpressionSyntax.prototype.childCount = 3; - ObjectLiteralExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ObjectLiteralExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openBraceToken; case 1: return this.propertyAssignments; @@ -1240,18 +1017,15 @@ module TypeScript { } } - export var ObjectCreationExpressionSyntax: ObjectCreationExpressionConstructor = function(data: number, newKeyword: ISyntaxToken, expression: IMemberExpressionSyntax, argumentList: ArgumentListSyntax) { + export var ObjectCreationExpressionSyntax: ObjectCreationExpressionConstructor = function (data: number, newKeyword: ISyntaxToken, expression: IMemberExpressionSyntax, argumentList: ArgumentListSyntax) { if (data) { this.__data = data; } this.newKeyword = newKeyword, this.expression = expression, - this.argumentList = argumentList, - newKeyword.parent = this, - expression.parent = this, - argumentList && (argumentList.parent = this); + this.argumentList = argumentList; }; ObjectCreationExpressionSyntax.prototype.kind = SyntaxKind.ObjectCreationExpression; ObjectCreationExpressionSyntax.prototype.childCount = 3; - ObjectCreationExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ObjectCreationExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.newKeyword; case 1: return this.expression; @@ -1259,18 +1033,15 @@ module TypeScript { } } - export var ParenthesizedExpressionSyntax: ParenthesizedExpressionConstructor = function(data: number, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken) { + export var ParenthesizedExpressionSyntax: ParenthesizedExpressionConstructor = function (data: number, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken) { if (data) { this.__data = data; } this.openParenToken = openParenToken, this.expression = expression, - this.closeParenToken = closeParenToken, - openParenToken.parent = this, - expression.parent = this, - closeParenToken.parent = this; + this.closeParenToken = closeParenToken; }; ParenthesizedExpressionSyntax.prototype.kind = SyntaxKind.ParenthesizedExpression; ParenthesizedExpressionSyntax.prototype.childCount = 3; - ParenthesizedExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ParenthesizedExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openParenToken; case 1: return this.expression; @@ -1278,20 +1049,16 @@ module TypeScript { } } - export var ParenthesizedArrowFunctionExpressionSyntax: ParenthesizedArrowFunctionExpressionConstructor = function(data: number, asyncKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax) { + export var ParenthesizedArrowFunctionExpressionSyntax: ParenthesizedArrowFunctionExpressionConstructor = function (data: number, asyncKeyword: ISyntaxToken, callSignature: CallSignatureSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax) { if (data) { this.__data = data; } this.asyncKeyword = asyncKeyword, this.callSignature = callSignature, this.equalsGreaterThanToken = equalsGreaterThanToken, - this.body = body, - asyncKeyword && (asyncKeyword.parent = this), - callSignature.parent = this, - equalsGreaterThanToken && (equalsGreaterThanToken.parent = this), - body.parent = this; + this.body = body; }; ParenthesizedArrowFunctionExpressionSyntax.prototype.kind = SyntaxKind.ParenthesizedArrowFunctionExpression; ParenthesizedArrowFunctionExpressionSyntax.prototype.childCount = 4; - ParenthesizedArrowFunctionExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ParenthesizedArrowFunctionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.asyncKeyword; case 1: return this.callSignature; @@ -1300,20 +1067,16 @@ module TypeScript { } } - export var SimpleArrowFunctionExpressionSyntax: SimpleArrowFunctionExpressionConstructor = function(data: number, asyncKeyword: ISyntaxToken, parameter: ParameterSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax) { + export var SimpleArrowFunctionExpressionSyntax: SimpleArrowFunctionExpressionConstructor = function (data: number, asyncKeyword: ISyntaxToken, parameter: ParameterSyntax, equalsGreaterThanToken: ISyntaxToken, body: BlockSyntax | IExpressionSyntax) { if (data) { this.__data = data; } this.asyncKeyword = asyncKeyword, this.parameter = parameter, this.equalsGreaterThanToken = equalsGreaterThanToken, - this.body = body, - asyncKeyword && (asyncKeyword.parent = this), - parameter.parent = this, - equalsGreaterThanToken.parent = this, - body.parent = this; + this.body = body; }; SimpleArrowFunctionExpressionSyntax.prototype.kind = SyntaxKind.SimpleArrowFunctionExpression; SimpleArrowFunctionExpressionSyntax.prototype.childCount = 4; - SimpleArrowFunctionExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + SimpleArrowFunctionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.asyncKeyword; case 1: return this.parameter; @@ -1322,20 +1085,16 @@ module TypeScript { } } - export var TypeAssertionExpressionSyntax: TypeAssertionExpressionConstructor = function(data: number, lessThanToken: ISyntaxToken, type: ITypeSyntax, greaterThanToken: ISyntaxToken, expression: IUnaryExpressionSyntax) { + export var TypeAssertionExpressionSyntax: TypeAssertionExpressionConstructor = function (data: number, lessThanToken: ISyntaxToken, type: ITypeSyntax, greaterThanToken: ISyntaxToken, expression: IUnaryExpressionSyntax) { if (data) { this.__data = data; } this.lessThanToken = lessThanToken, this.type = type, this.greaterThanToken = greaterThanToken, - this.expression = expression, - lessThanToken.parent = this, - type.parent = this, - greaterThanToken.parent = this, - expression.parent = this; + this.expression = expression; }; TypeAssertionExpressionSyntax.prototype.kind = SyntaxKind.TypeAssertionExpression; TypeAssertionExpressionSyntax.prototype.childCount = 4; - TypeAssertionExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeAssertionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.lessThanToken; case 1: return this.type; @@ -1344,20 +1103,16 @@ module TypeScript { } } - export var ElementAccessExpressionSyntax: ElementAccessExpressionConstructor = function(data: number, expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, argumentExpression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { + export var ElementAccessExpressionSyntax: ElementAccessExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, openBracketToken: ISyntaxToken, argumentExpression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { if (data) { this.__data = data; } this.expression = expression, this.openBracketToken = openBracketToken, this.argumentExpression = argumentExpression, - this.closeBracketToken = closeBracketToken, - expression.parent = this, - openBracketToken.parent = this, - argumentExpression && (argumentExpression.parent = this), - closeBracketToken.parent = this; + this.closeBracketToken = closeBracketToken; }; ElementAccessExpressionSyntax.prototype.kind = SyntaxKind.ElementAccessExpression; ElementAccessExpressionSyntax.prototype.childCount = 4; - ElementAccessExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ElementAccessExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.expression; case 1: return this.openBracketToken; @@ -1366,24 +1121,18 @@ module TypeScript { } } - export var FunctionExpressionSyntax: FunctionExpressionConstructor = function(data: number, asyncKeyword: ISyntaxToken, functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { + export var FunctionExpressionSyntax: FunctionExpressionConstructor = function (data: number, asyncKeyword: ISyntaxToken, functionKeyword: ISyntaxToken, asterixToken: ISyntaxToken, identifier: ISyntaxToken, callSignature: CallSignatureSyntax, body: BlockSyntax | ExpressionBody | ISyntaxToken) { if (data) { this.__data = data; } this.asyncKeyword = asyncKeyword, this.functionKeyword = functionKeyword, this.asterixToken = asterixToken, this.identifier = identifier, this.callSignature = callSignature, - this.body = body, - asyncKeyword && (asyncKeyword.parent = this), - functionKeyword.parent = this, - asterixToken && (asterixToken.parent = this), - identifier && (identifier.parent = this), - callSignature.parent = this, - body && (body.parent = this); + this.body = body; }; FunctionExpressionSyntax.prototype.kind = SyntaxKind.FunctionExpression; FunctionExpressionSyntax.prototype.childCount = 6; - FunctionExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + FunctionExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.asyncKeyword; case 1: return this.functionKeyword; @@ -1394,59 +1143,52 @@ module TypeScript { } } - export var OmittedExpressionSyntax: OmittedExpressionConstructor = function(data: number) { + export var OmittedExpressionSyntax: OmittedExpressionConstructor = function (data: number) { if (data) { this.__data = data; } }; OmittedExpressionSyntax.prototype.kind = SyntaxKind.OmittedExpression; OmittedExpressionSyntax.prototype.childCount = 0; - OmittedExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + OmittedExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { throw Errors.invalidOperation(); } - export var TemplateExpressionSyntax: TemplateExpressionConstructor = function(data: number, templateStartToken: ISyntaxToken, templateClauses: TemplateClauseSyntax[]) { + export var TemplateExpressionSyntax: TemplateExpressionConstructor = function (data: number, templateStartToken: ISyntaxToken, templateClauses: TemplateClauseSyntax[]) { if (data) { this.__data = data; } this.templateStartToken = templateStartToken, - this.templateClauses = templateClauses, - templateStartToken.parent = this, - templateClauses.parent = this; + this.templateClauses = templateClauses; }; TemplateExpressionSyntax.prototype.kind = SyntaxKind.TemplateExpression; TemplateExpressionSyntax.prototype.childCount = 2; - TemplateExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TemplateExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.templateStartToken; case 1: return this.templateClauses; } } - export var TemplateAccessExpressionSyntax: TemplateAccessExpressionConstructor = function(data: number, expression: ILeftHandSideExpressionSyntax, templateExpression: IPrimaryExpressionSyntax) { + export var TemplateAccessExpressionSyntax: TemplateAccessExpressionConstructor = function (data: number, expression: ILeftHandSideExpressionSyntax, templateExpression: IPrimaryExpressionSyntax) { if (data) { this.__data = data; } this.expression = expression, - this.templateExpression = templateExpression, - expression.parent = this, - templateExpression.parent = this; + this.templateExpression = templateExpression; }; TemplateAccessExpressionSyntax.prototype.kind = SyntaxKind.TemplateAccessExpression; TemplateAccessExpressionSyntax.prototype.childCount = 2; - TemplateAccessExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TemplateAccessExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.expression; case 1: return this.templateExpression; } } - export var YieldExpressionSyntax: YieldExpressionConstructor = function(data: number, yieldKeyword: ISyntaxToken, asterixToken: ISyntaxToken, expression: IExpressionSyntax) { + export var YieldExpressionSyntax: YieldExpressionConstructor = function (data: number, yieldKeyword: ISyntaxToken, asterixToken: ISyntaxToken, expression: IExpressionSyntax) { if (data) { this.__data = data; } this.yieldKeyword = yieldKeyword, this.asterixToken = asterixToken, - this.expression = expression, - yieldKeyword.parent = this, - asterixToken && (asterixToken.parent = this), - expression && (expression.parent = this); + this.expression = expression; }; YieldExpressionSyntax.prototype.kind = SyntaxKind.YieldExpression; YieldExpressionSyntax.prototype.childCount = 3; - YieldExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + YieldExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.yieldKeyword; case 1: return this.asterixToken; @@ -1454,50 +1196,43 @@ module TypeScript { } } - export var AwaitExpressionSyntax: AwaitExpressionConstructor = function(data: number, awaitKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { + export var AwaitExpressionSyntax: AwaitExpressionConstructor = function (data: number, awaitKeyword: ISyntaxToken, expression: IUnaryExpressionSyntax) { if (data) { this.__data = data; } this.awaitKeyword = awaitKeyword, - this.expression = expression, - awaitKeyword.parent = this, - expression && (expression.parent = this); + this.expression = expression; }; AwaitExpressionSyntax.prototype.kind = SyntaxKind.AwaitExpression; AwaitExpressionSyntax.prototype.childCount = 2; - AwaitExpressionSyntax.prototype.childAt = function(index: number): ISyntaxElement { + AwaitExpressionSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.awaitKeyword; case 1: return this.expression; } } - export var VariableDeclarationSyntax: VariableDeclarationConstructor = function(data: number, varConstOrLetKeyword: ISyntaxToken, variableDeclarators: ISeparatedSyntaxList) { + export var VariableDeclarationSyntax: VariableDeclarationConstructor = function (data: number, varConstOrLetKeyword: ISyntaxToken, variableDeclarators: ISeparatedSyntaxList) { if (data) { this.__data = data; } this.varConstOrLetKeyword = varConstOrLetKeyword, - this.variableDeclarators = variableDeclarators, - varConstOrLetKeyword.parent = this, - variableDeclarators.parent = this; + this.variableDeclarators = variableDeclarators; }; VariableDeclarationSyntax.prototype.kind = SyntaxKind.VariableDeclaration; VariableDeclarationSyntax.prototype.childCount = 2; - VariableDeclarationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + VariableDeclarationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.varConstOrLetKeyword; case 1: return this.variableDeclarators; } } - export var VariableDeclaratorSyntax: VariableDeclaratorConstructor = function(data: number, propertyName: IPropertyNameSyntax, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { + export var VariableDeclaratorSyntax: VariableDeclaratorConstructor = function (data: number, propertyName: IPropertyNameSyntax, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { if (data) { this.__data = data; } this.propertyName = propertyName, this.typeAnnotation = typeAnnotation, - this.equalsValueClause = equalsValueClause, - propertyName.parent = this, - typeAnnotation && (typeAnnotation.parent = this), - equalsValueClause && (equalsValueClause.parent = this); + this.equalsValueClause = equalsValueClause; }; VariableDeclaratorSyntax.prototype.kind = SyntaxKind.VariableDeclarator; VariableDeclaratorSyntax.prototype.childCount = 3; - VariableDeclaratorSyntax.prototype.childAt = function(index: number): ISyntaxElement { + VariableDeclaratorSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.propertyName; case 1: return this.typeAnnotation; @@ -1505,20 +1240,16 @@ module TypeScript { } } - export var ArgumentListSyntax: ArgumentListConstructor = function(data: number, typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken, _arguments: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { + export var ArgumentListSyntax: ArgumentListConstructor = function (data: number, typeArgumentList: TypeArgumentListSyntax, openParenToken: ISyntaxToken, _arguments: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { if (data) { this.__data = data; } this.typeArgumentList = typeArgumentList, this.openParenToken = openParenToken, this.arguments = _arguments, - this.closeParenToken = closeParenToken, - typeArgumentList && (typeArgumentList.parent = this), - openParenToken.parent = this, - _arguments.parent = this, - closeParenToken.parent = this; + this.closeParenToken = closeParenToken; }; ArgumentListSyntax.prototype.kind = SyntaxKind.ArgumentList; ArgumentListSyntax.prototype.childCount = 4; - ArgumentListSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ArgumentListSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.typeArgumentList; case 1: return this.openParenToken; @@ -1527,18 +1258,15 @@ module TypeScript { } } - export var ParameterListSyntax: ParameterListConstructor = function(data: number, openParenToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { + export var ParameterListSyntax: ParameterListConstructor = function (data: number, openParenToken: ISyntaxToken, parameters: ISeparatedSyntaxList, closeParenToken: ISyntaxToken) { if (data) { this.__data = data; } this.openParenToken = openParenToken, this.parameters = parameters, - this.closeParenToken = closeParenToken, - openParenToken.parent = this, - parameters.parent = this, - closeParenToken.parent = this; + this.closeParenToken = closeParenToken; }; ParameterListSyntax.prototype.kind = SyntaxKind.ParameterList; ParameterListSyntax.prototype.childCount = 3; - ParameterListSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ParameterListSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openParenToken; case 1: return this.parameters; @@ -1546,18 +1274,15 @@ module TypeScript { } } - export var TypeArgumentListSyntax: TypeArgumentListConstructor = function(data: number, lessThanToken: ISyntaxToken, typeArguments: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { + export var TypeArgumentListSyntax: TypeArgumentListConstructor = function (data: number, lessThanToken: ISyntaxToken, typeArguments: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { if (data) { this.__data = data; } this.lessThanToken = lessThanToken, this.typeArguments = typeArguments, - this.greaterThanToken = greaterThanToken, - lessThanToken.parent = this, - typeArguments.parent = this, - greaterThanToken.parent = this; + this.greaterThanToken = greaterThanToken; }; TypeArgumentListSyntax.prototype.kind = SyntaxKind.TypeArgumentList; TypeArgumentListSyntax.prototype.childCount = 3; - TypeArgumentListSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeArgumentListSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.lessThanToken; case 1: return this.typeArguments; @@ -1565,18 +1290,15 @@ module TypeScript { } } - export var TypeParameterListSyntax: TypeParameterListConstructor = function(data: number, lessThanToken: ISyntaxToken, typeParameters: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { + export var TypeParameterListSyntax: TypeParameterListConstructor = function (data: number, lessThanToken: ISyntaxToken, typeParameters: ISeparatedSyntaxList, greaterThanToken: ISyntaxToken) { if (data) { this.__data = data; } this.lessThanToken = lessThanToken, this.typeParameters = typeParameters, - this.greaterThanToken = greaterThanToken, - lessThanToken.parent = this, - typeParameters.parent = this, - greaterThanToken.parent = this; + this.greaterThanToken = greaterThanToken; }; TypeParameterListSyntax.prototype.kind = SyntaxKind.TypeParameterList; TypeParameterListSyntax.prototype.childCount = 3; - TypeParameterListSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeParameterListSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.lessThanToken; case 1: return this.typeParameters; @@ -1584,52 +1306,44 @@ module TypeScript { } } - export var HeritageClauseSyntax: HeritageClauseConstructor = function(data: number, extendsOrImplementsKeyword: ISyntaxToken, typeNames: ISeparatedSyntaxList) { + export var HeritageClauseSyntax: HeritageClauseConstructor = function (data: number, extendsOrImplementsKeyword: ISyntaxToken, typeNames: ISeparatedSyntaxList) { if (data) { this.__data = data; } this.extendsOrImplementsKeyword = extendsOrImplementsKeyword, - this.typeNames = typeNames, - extendsOrImplementsKeyword.parent = this, - typeNames.parent = this; + this.typeNames = typeNames; }; HeritageClauseSyntax.prototype.kind = SyntaxKind.HeritageClause; HeritageClauseSyntax.prototype.childCount = 2; - HeritageClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + HeritageClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.extendsOrImplementsKeyword; case 1: return this.typeNames; } } - export var EqualsValueClauseSyntax: EqualsValueClauseConstructor = function(data: number, equalsToken: ISyntaxToken, value: IExpressionSyntax) { + export var EqualsValueClauseSyntax: EqualsValueClauseConstructor = function (data: number, equalsToken: ISyntaxToken, value: IExpressionSyntax) { if (data) { this.__data = data; } this.equalsToken = equalsToken, - this.value = value, - equalsToken.parent = this, - value.parent = this; + this.value = value; }; EqualsValueClauseSyntax.prototype.kind = SyntaxKind.EqualsValueClause; EqualsValueClauseSyntax.prototype.childCount = 2; - EqualsValueClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + EqualsValueClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.equalsToken; case 1: return this.value; } } - export var CaseSwitchClauseSyntax: CaseSwitchClauseConstructor = function(data: number, caseKeyword: ISyntaxToken, expression: IExpressionSyntax, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { + export var CaseSwitchClauseSyntax: CaseSwitchClauseConstructor = function (data: number, caseKeyword: ISyntaxToken, expression: IExpressionSyntax, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { if (data) { this.__data = data; } this.caseKeyword = caseKeyword, this.expression = expression, this.colonToken = colonToken, - this.statements = statements, - caseKeyword.parent = this, - expression.parent = this, - colonToken.parent = this, - statements.parent = this; + this.statements = statements; }; CaseSwitchClauseSyntax.prototype.kind = SyntaxKind.CaseSwitchClause; CaseSwitchClauseSyntax.prototype.childCount = 4; - CaseSwitchClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + CaseSwitchClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.caseKeyword; case 1: return this.expression; @@ -1638,18 +1352,15 @@ module TypeScript { } } - export var DefaultSwitchClauseSyntax: DefaultSwitchClauseConstructor = function(data: number, defaultKeyword: ISyntaxToken, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { + export var DefaultSwitchClauseSyntax: DefaultSwitchClauseConstructor = function (data: number, defaultKeyword: ISyntaxToken, colonToken: ISyntaxToken, statements: IStatementSyntax[]) { if (data) { this.__data = data; } this.defaultKeyword = defaultKeyword, this.colonToken = colonToken, - this.statements = statements, - defaultKeyword.parent = this, - colonToken.parent = this, - statements.parent = this; + this.statements = statements; }; DefaultSwitchClauseSyntax.prototype.kind = SyntaxKind.DefaultSwitchClause; DefaultSwitchClauseSyntax.prototype.childCount = 3; - DefaultSwitchClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + DefaultSwitchClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.defaultKeyword; case 1: return this.colonToken; @@ -1657,40 +1368,32 @@ module TypeScript { } } - export var ElseClauseSyntax: ElseClauseConstructor = function(data: number, elseKeyword: ISyntaxToken, statement: IStatementSyntax) { + export var ElseClauseSyntax: ElseClauseConstructor = function (data: number, elseKeyword: ISyntaxToken, statement: IStatementSyntax) { if (data) { this.__data = data; } this.elseKeyword = elseKeyword, - this.statement = statement, - elseKeyword.parent = this, - statement.parent = this; + this.statement = statement; }; ElseClauseSyntax.prototype.kind = SyntaxKind.ElseClause; ElseClauseSyntax.prototype.childCount = 2; - ElseClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ElseClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.elseKeyword; case 1: return this.statement; } } - export var CatchClauseSyntax: CatchClauseConstructor = function(data: number, catchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, identifier: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, closeParenToken: ISyntaxToken, block: BlockSyntax) { + export var CatchClauseSyntax: CatchClauseConstructor = function (data: number, catchKeyword: ISyntaxToken, openParenToken: ISyntaxToken, identifier: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, closeParenToken: ISyntaxToken, block: BlockSyntax) { if (data) { this.__data = data; } this.catchKeyword = catchKeyword, this.openParenToken = openParenToken, this.identifier = identifier, this.typeAnnotation = typeAnnotation, this.closeParenToken = closeParenToken, - this.block = block, - catchKeyword.parent = this, - openParenToken.parent = this, - identifier.parent = this, - typeAnnotation && (typeAnnotation.parent = this), - closeParenToken.parent = this, - block.parent = this; + this.block = block; }; CatchClauseSyntax.prototype.kind = SyntaxKind.CatchClause; CatchClauseSyntax.prototype.childCount = 6; - CatchClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + CatchClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.catchKeyword; case 1: return this.openParenToken; @@ -1701,88 +1404,74 @@ module TypeScript { } } - export var FinallyClauseSyntax: FinallyClauseConstructor = function(data: number, finallyKeyword: ISyntaxToken, block: BlockSyntax) { + export var FinallyClauseSyntax: FinallyClauseConstructor = function (data: number, finallyKeyword: ISyntaxToken, block: BlockSyntax) { if (data) { this.__data = data; } this.finallyKeyword = finallyKeyword, - this.block = block, - finallyKeyword.parent = this, - block.parent = this; + this.block = block; }; FinallyClauseSyntax.prototype.kind = SyntaxKind.FinallyClause; FinallyClauseSyntax.prototype.childCount = 2; - FinallyClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + FinallyClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.finallyKeyword; case 1: return this.block; } } - export var TemplateClauseSyntax: TemplateClauseConstructor = function(data: number, expression: IExpressionSyntax, templateMiddleOrEndToken: ISyntaxToken) { + export var TemplateClauseSyntax: TemplateClauseConstructor = function (data: number, expression: IExpressionSyntax, templateMiddleOrEndToken: ISyntaxToken) { if (data) { this.__data = data; } this.expression = expression, - this.templateMiddleOrEndToken = templateMiddleOrEndToken, - expression.parent = this, - templateMiddleOrEndToken.parent = this; + this.templateMiddleOrEndToken = templateMiddleOrEndToken; }; TemplateClauseSyntax.prototype.kind = SyntaxKind.TemplateClause; TemplateClauseSyntax.prototype.childCount = 2; - TemplateClauseSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TemplateClauseSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.expression; case 1: return this.templateMiddleOrEndToken; } } - export var TypeParameterSyntax: TypeParameterConstructor = function(data: number, identifier: ISyntaxToken, constraint: ConstraintSyntax) { + export var TypeParameterSyntax: TypeParameterConstructor = function (data: number, identifier: ISyntaxToken, constraint: ConstraintSyntax) { if (data) { this.__data = data; } this.identifier = identifier, - this.constraint = constraint, - identifier.parent = this, - constraint && (constraint.parent = this); + this.constraint = constraint; }; TypeParameterSyntax.prototype.kind = SyntaxKind.TypeParameter; TypeParameterSyntax.prototype.childCount = 2; - TypeParameterSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeParameterSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.identifier; case 1: return this.constraint; } } - export var ConstraintSyntax: ConstraintConstructor = function(data: number, extendsKeyword: ISyntaxToken, typeOrExpression: ISyntaxNodeOrToken) { + export var ConstraintSyntax: ConstraintConstructor = function (data: number, extendsKeyword: ISyntaxToken, typeOrExpression: ISyntaxNodeOrToken) { if (data) { this.__data = data; } this.extendsKeyword = extendsKeyword, - this.typeOrExpression = typeOrExpression, - extendsKeyword.parent = this, - typeOrExpression.parent = this; + this.typeOrExpression = typeOrExpression; }; ConstraintSyntax.prototype.kind = SyntaxKind.Constraint; ConstraintSyntax.prototype.childCount = 2; - ConstraintSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ConstraintSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.extendsKeyword; case 1: return this.typeOrExpression; } } - export var ParameterSyntax: ParameterConstructor = function(data: number, dotDotDotToken: ISyntaxToken, modifiers: ISyntaxToken[], identifier: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { + export var ParameterSyntax: ParameterConstructor = function (data: number, dotDotDotToken: ISyntaxToken, modifiers: ISyntaxToken[], identifier: ISyntaxToken, questionToken: ISyntaxToken, typeAnnotation: TypeAnnotationSyntax, equalsValueClause: EqualsValueClauseSyntax) { if (data) { this.__data = data; } this.dotDotDotToken = dotDotDotToken, this.modifiers = modifiers, this.identifier = identifier, this.questionToken = questionToken, this.typeAnnotation = typeAnnotation, - this.equalsValueClause = equalsValueClause, - dotDotDotToken && (dotDotDotToken.parent = this), - modifiers.parent = this, - identifier.parent = this, - questionToken && (questionToken.parent = this), - typeAnnotation && (typeAnnotation.parent = this), - equalsValueClause && (equalsValueClause.parent = this); + this.equalsValueClause = equalsValueClause; }; ParameterSyntax.prototype.kind = SyntaxKind.Parameter; ParameterSyntax.prototype.childCount = 6; - ParameterSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ParameterSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.dotDotDotToken; case 1: return this.modifiers; @@ -1793,66 +1482,57 @@ module TypeScript { } } - export var EnumElementSyntax: EnumElementConstructor = function(data: number, propertyName: IPropertyNameSyntax, equalsValueClause: EqualsValueClauseSyntax) { + export var EnumElementSyntax: EnumElementConstructor = function (data: number, propertyName: IPropertyNameSyntax, equalsValueClause: EqualsValueClauseSyntax) { if (data) { this.__data = data; } this.propertyName = propertyName, - this.equalsValueClause = equalsValueClause, - propertyName.parent = this, - equalsValueClause && (equalsValueClause.parent = this); + this.equalsValueClause = equalsValueClause; }; EnumElementSyntax.prototype.kind = SyntaxKind.EnumElement; EnumElementSyntax.prototype.childCount = 2; - EnumElementSyntax.prototype.childAt = function(index: number): ISyntaxElement { + EnumElementSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.propertyName; case 1: return this.equalsValueClause; } } - export var TypeAnnotationSyntax: TypeAnnotationConstructor = function(data: number, colonToken: ISyntaxToken, type: ITypeSyntax) { + export var TypeAnnotationSyntax: TypeAnnotationConstructor = function (data: number, colonToken: ISyntaxToken, type: ITypeSyntax) { if (data) { this.__data = data; } this.colonToken = colonToken, - this.type = type, - colonToken.parent = this, - type.parent = this; + this.type = type; }; TypeAnnotationSyntax.prototype.kind = SyntaxKind.TypeAnnotation; TypeAnnotationSyntax.prototype.childCount = 2; - TypeAnnotationSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeAnnotationSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.colonToken; case 1: return this.type; } } - export var ExpressionBody: ExpressionBodyConstructor = function(data: number, equalsGreaterThanToken: ISyntaxToken, expression: IExpressionSyntax) { + export var ExpressionBody: ExpressionBodyConstructor = function (data: number, equalsGreaterThanToken: ISyntaxToken, expression: IExpressionSyntax) { if (data) { this.__data = data; } this.equalsGreaterThanToken = equalsGreaterThanToken, - this.expression = expression, - equalsGreaterThanToken.parent = this, - expression.parent = this; + this.expression = expression; }; ExpressionBody.prototype.kind = SyntaxKind.ExpressionBody; ExpressionBody.prototype.childCount = 2; - ExpressionBody.prototype.childAt = function(index: number): ISyntaxElement { + ExpressionBody.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.equalsGreaterThanToken; case 1: return this.expression; } } - export var ComputedPropertyNameSyntax: ComputedPropertyNameConstructor = function(data: number, openBracketToken: ISyntaxToken, expression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { + export var ComputedPropertyNameSyntax: ComputedPropertyNameConstructor = function (data: number, openBracketToken: ISyntaxToken, expression: IExpressionSyntax, closeBracketToken: ISyntaxToken) { if (data) { this.__data = data; } this.openBracketToken = openBracketToken, this.expression = expression, - this.closeBracketToken = closeBracketToken, - openBracketToken.parent = this, - expression.parent = this, - closeBracketToken.parent = this; + this.closeBracketToken = closeBracketToken; }; ComputedPropertyNameSyntax.prototype.kind = SyntaxKind.ComputedPropertyName; ComputedPropertyNameSyntax.prototype.childCount = 3; - ComputedPropertyNameSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ComputedPropertyNameSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.openBracketToken; case 1: return this.expression; @@ -1860,18 +1540,15 @@ module TypeScript { } } - export var PropertyAssignmentSyntax: PropertyAssignmentConstructor = function(data: number, propertyName: IPropertyNameSyntax, colonToken: ISyntaxToken, expression: IExpressionSyntax) { + export var PropertyAssignmentSyntax: PropertyAssignmentConstructor = function (data: number, propertyName: IPropertyNameSyntax, colonToken: ISyntaxToken, expression: IExpressionSyntax) { if (data) { this.__data = data; } this.propertyName = propertyName, this.colonToken = colonToken, - this.expression = expression, - propertyName.parent = this, - colonToken.parent = this, - expression.parent = this; + this.expression = expression; }; PropertyAssignmentSyntax.prototype.kind = SyntaxKind.PropertyAssignment; PropertyAssignmentSyntax.prototype.childCount = 3; - PropertyAssignmentSyntax.prototype.childAt = function(index: number): ISyntaxElement { + PropertyAssignmentSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.propertyName; case 1: return this.colonToken; @@ -1879,24 +1556,18 @@ module TypeScript { } } - export var TypeAliasSyntax: TypeAliasConstructor = function(data: number, modifiers: ISyntaxToken[], typeKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, type: ITypeSyntax, semicolonToken: ISyntaxToken) { + export var TypeAliasSyntax: TypeAliasConstructor = function (data: number, modifiers: ISyntaxToken[], typeKeyword: ISyntaxToken, identifier: ISyntaxToken, equalsToken: ISyntaxToken, type: ITypeSyntax, semicolonToken: ISyntaxToken) { if (data) { this.__data = data; } this.modifiers = modifiers, this.typeKeyword = typeKeyword, this.identifier = identifier, this.equalsToken = equalsToken, this.type = type, - this.semicolonToken = semicolonToken, - modifiers.parent = this, - typeKeyword.parent = this, - identifier.parent = this, - equalsToken.parent = this, - type.parent = this, - semicolonToken && (semicolonToken.parent = this); + this.semicolonToken = semicolonToken; }; TypeAliasSyntax.prototype.kind = SyntaxKind.TypeAlias; TypeAliasSyntax.prototype.childCount = 6; - TypeAliasSyntax.prototype.childAt = function(index: number): ISyntaxElement { + TypeAliasSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.modifiers; case 1: return this.typeKeyword; @@ -1907,36 +1578,31 @@ module TypeScript { } } - export var ExternalModuleReferenceSyntax: ExternalModuleReferenceConstructor = function(data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, stringLiteral: ISyntaxToken, closeParenToken: ISyntaxToken) { + export var ExternalModuleReferenceSyntax: ExternalModuleReferenceConstructor = function (data: number, requireKeyword: ISyntaxToken, openParenToken: ISyntaxToken, expression: IExpressionSyntax, closeParenToken: ISyntaxToken) { if (data) { this.__data = data; } this.requireKeyword = requireKeyword, this.openParenToken = openParenToken, - this.stringLiteral = stringLiteral, - this.closeParenToken = closeParenToken, - requireKeyword.parent = this, - openParenToken.parent = this, - stringLiteral.parent = this, - closeParenToken.parent = this; + this.expression = expression, + this.closeParenToken = closeParenToken; }; ExternalModuleReferenceSyntax.prototype.kind = SyntaxKind.ExternalModuleReference; ExternalModuleReferenceSyntax.prototype.childCount = 4; - ExternalModuleReferenceSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ExternalModuleReferenceSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.requireKeyword; case 1: return this.openParenToken; - case 2: return this.stringLiteral; + case 2: return this.expression; case 3: return this.closeParenToken; } } - export var ModuleNameModuleReferenceSyntax: ModuleNameModuleReferenceConstructor = function(data: number, moduleName: INameSyntax) { + export var ModuleNameModuleReferenceSyntax: ModuleNameModuleReferenceConstructor = function (data: number, moduleName: INameSyntax) { if (data) { this.__data = data; } - this.moduleName = moduleName, - moduleName.parent = this; + this.moduleName = moduleName; }; ModuleNameModuleReferenceSyntax.prototype.kind = SyntaxKind.ModuleNameModuleReference; ModuleNameModuleReferenceSyntax.prototype.childCount = 1; - ModuleNameModuleReferenceSyntax.prototype.childAt = function(index: number): ISyntaxElement { + ModuleNameModuleReferenceSyntax.prototype.childAt = function (index: number): ISyntaxElement { switch (index) { case 0: return this.moduleName; } diff --git a/src/services/syntax/syntaxTree.ts b/src/services/syntax/syntaxTree.ts index b2b7739982d..59462f5f670 100644 --- a/src/services/syntax/syntaxTree.ts +++ b/src/services/syntax/syntaxTree.ts @@ -74,55 +74,11 @@ module TypeScript { return this._languageVersion; } - private cacheSyntaxTreeInfo(): void { - // If we're not keeping around the syntax tree, store the diagnostics and line - // map so they don't have to be recomputed. - var firstToken = firstSyntaxTreeToken(this); - var leadingTrivia = firstToken.leadingTrivia(this.text); - - this._isExternalModule = !!externalModuleIndicatorSpanWorker(this, firstToken); - - var amdDependencies: string[] = []; - for (var i = 0, n = leadingTrivia.count(); i < n; i++) { - var trivia = leadingTrivia.syntaxTriviaAt(i); - if (trivia.isComment()) { - var amdDependency = this.getAmdDependency(trivia.fullText()); - if (amdDependency) { - amdDependencies.push(amdDependency); - } - } - } - - this._amdDependencies = amdDependencies; - } - private getAmdDependency(comment: string): string { var amdDependencyRegEx = /^\/\/\/\s*moduleElement; - if (importDecl.moduleReference.kind === SyntaxKind.ExternalModuleReference) { - var literal = (importDecl.moduleReference).stringLiteral; - return new TextSpan(start(literal), width(literal)); - } - } - } - - return undefined; - } } \ No newline at end of file diff --git a/src/services/syntax/syntaxWalker.generated.ts b/src/services/syntax/syntaxWalker.generated.ts index 12ece39e8c8..bd6f20299ea 100644 --- a/src/services/syntax/syntaxWalker.generated.ts +++ b/src/services/syntax/syntaxWalker.generated.ts @@ -627,7 +627,7 @@ module TypeScript { public visitExternalModuleReference(node: ExternalModuleReferenceSyntax): void { this.visitToken(node.requireKeyword); this.visitToken(node.openParenToken); - this.visitToken(node.stringLiteral); + visitNodeOrToken(this, node.expression); this.visitToken(node.closeParenToken); } diff --git a/tests/baselines/reference/arrayLiteralContextualType.types b/tests/baselines/reference/arrayLiteralContextualType.types index 5797999b7df..b6d8377d012 100644 --- a/tests/baselines/reference/arrayLiteralContextualType.types +++ b/tests/baselines/reference/arrayLiteralContextualType.types @@ -32,8 +32,8 @@ function foo(animals: IAnimal[]) { } >IAnimal : IAnimal function bar(animals: { [n: number]: IAnimal }) { } ->bar : (animals: { [x: number]: IAnimal; }) => void ->animals : { [x: number]: IAnimal; } +>bar : (animals: { [n: number]: IAnimal; }) => void +>animals : { [n: number]: IAnimal; } >n : number >IAnimal : IAnimal @@ -53,7 +53,7 @@ foo([ ]); // Legal because of the contextual type IAnimal provided by the parameter bar([ >bar([ new Giraffe(), new Elephant()]) : void ->bar : (animals: { [x: number]: IAnimal; }) => void +>bar : (animals: { [n: number]: IAnimal; }) => void >[ new Giraffe(), new Elephant()] : (Giraffe | Elephant)[] new Giraffe(), @@ -81,6 +81,6 @@ foo(arr); // ok because arr is Array not {}[] bar(arr); // ok because arr is Array not {}[] >bar(arr) : void ->bar : (animals: { [x: number]: IAnimal; }) => void +>bar : (animals: { [n: number]: IAnimal; }) => void >arr : (Giraffe | Elephant)[] diff --git a/tests/baselines/reference/arrayLiterals.types b/tests/baselines/reference/arrayLiterals.types index 62475fa2b4a..b22543d3edf 100644 --- a/tests/baselines/reference/arrayLiterals.types +++ b/tests/baselines/reference/arrayLiterals.types @@ -61,7 +61,7 @@ var classTypeArray: Array; // Should OK, not be a parse error // Contextual type C with numeric index signature makes array literal of EveryType E of type BCT(E,C)[] var context1: { [n: number]: { a: string; b: number; }; } = [{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }]; ->context1 : { [x: number]: { a: string; b: number; }; } +>context1 : { [n: number]: { a: string; b: number; }; } >n : number >a : string >b : number diff --git a/tests/baselines/reference/assignmentCompat1.errors.txt b/tests/baselines/reference/assignmentCompat1.errors.txt index 57ce797f5b2..6734e6fc964 100644 --- a/tests/baselines/reference/assignmentCompat1.errors.txt +++ b/tests/baselines/reference/assignmentCompat1.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/assignmentCompat1.ts(4,1): error TS2322: Type '{ [x: string]: any; }' is not assignable to type '{ one: number; }'. - Property 'one' is missing in type '{ [x: string]: any; }'. -tests/cases/compiler/assignmentCompat1.ts(5,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: any; }'. +tests/cases/compiler/assignmentCompat1.ts(4,1): error TS2322: Type '{ [index: string]: any; }' is not assignable to type '{ one: number; }'. + Property 'one' is missing in type '{ [index: string]: any; }'. +tests/cases/compiler/assignmentCompat1.ts(5,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: any; }'. Index signature is missing in type '{ one: number; }'. @@ -10,9 +10,9 @@ tests/cases/compiler/assignmentCompat1.ts(5,1): error TS2322: Type '{ one: numbe x = y; ~ -!!! error TS2322: Type '{ [x: string]: any; }' is not assignable to type '{ one: number; }'. -!!! error TS2322: Property 'one' is missing in type '{ [x: string]: any; }'. +!!! error TS2322: Type '{ [index: string]: any; }' is not assignable to type '{ one: number; }'. +!!! error TS2322: Property 'one' is missing in type '{ [index: string]: any; }'. y = x; ~ -!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: any; }'. +!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: any; }'. !!! error TS2322: Index signature is missing in type '{ one: number; }'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability35.errors.txt b/tests/baselines/reference/assignmentCompatability35.errors.txt index faad78c10fc..2073b861f52 100644 --- a/tests/baselines/reference/assignmentCompatability35.errors.txt +++ b/tests/baselines/reference/assignmentCompatability35.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/assignmentCompatability35.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: number]: number; }'. +tests/cases/compiler/assignmentCompatability35.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: number]: number; }'. Index signature is missing in type 'interfaceWithPublicAndOptional'. @@ -13,5 +13,5 @@ tests/cases/compiler/assignmentCompatability35.ts(9,1): error TS2322: Type 'inte } __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: number]: number; }'. +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: number]: number; }'. !!! error TS2322: Index signature is missing in type 'interfaceWithPublicAndOptional'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability36.errors.txt b/tests/baselines/reference/assignmentCompatability36.errors.txt index d8c43a3f363..591dc072fab 100644 --- a/tests/baselines/reference/assignmentCompatability36.errors.txt +++ b/tests/baselines/reference/assignmentCompatability36.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/assignmentCompatability36.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: string]: any; }'. +tests/cases/compiler/assignmentCompatability36.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: string]: any; }'. Index signature is missing in type 'interfaceWithPublicAndOptional'. @@ -13,5 +13,5 @@ tests/cases/compiler/assignmentCompatability36.ts(9,1): error TS2322: Type 'inte } __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: string]: any; }'. +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: string]: any; }'. !!! error TS2322: Index signature is missing in type 'interfaceWithPublicAndOptional'. \ No newline at end of file diff --git a/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt b/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt index a951a2b1a66..eb5020e97f9 100644 --- a/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt +++ b/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt @@ -1,6 +1,6 @@ -tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(15,5): error TS2322: Type '{}' is not assignable to type '{ [x: number]: Foo; }'. +tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(15,5): error TS2322: Type '{}' is not assignable to type '{ [n: number]: Foo; }'. Index signature is missing in type '{}'. -tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(19,5): error TS2322: Type '() => void' is not assignable to type '{ [x: number]: Bar; }'. +tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(19,5): error TS2322: Type '() => void' is not assignable to type '{ [n: number]: Bar; }'. Index signature is missing in type '() => void'. @@ -21,14 +21,14 @@ tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignatur var v1: { ~~ -!!! error TS2322: Type '{}' is not assignable to type '{ [x: number]: Foo; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ [n: number]: Foo; }'. !!! error TS2322: Index signature is missing in type '{}'. [n: number]: Foo } = o; // Should be allowed var v2: { ~~ -!!! error TS2322: Type '() => void' is not assignable to type '{ [x: number]: Bar; }'. +!!! error TS2322: Type '() => void' is not assignable to type '{ [n: number]: Bar; }'. !!! error TS2322: Index signature is missing in type '() => void'. [n: number]: Bar } = f; // Should be allowed \ No newline at end of file diff --git a/tests/baselines/reference/badOverloadError.types b/tests/baselines/reference/badOverloadError.types index ba9d6e76c1c..b8ae583a73c 100644 --- a/tests/baselines/reference/badOverloadError.types +++ b/tests/baselines/reference/badOverloadError.types @@ -3,8 +3,8 @@ function method() { >method : () => void var dictionary = <{ [index: string]: string; }>{}; ->dictionary : { [x: string]: string; } -><{ [index: string]: string; }>{} : { [x: string]: string; } +>dictionary : { [index: string]: string; } +><{ [index: string]: string; }>{} : { [index: string]: string; } >index : string >{} : { [x: string]: undefined; } } diff --git a/tests/baselines/reference/bestCommonTypeWithContextualTyping.types b/tests/baselines/reference/bestCommonTypeWithContextualTyping.types index 937339d8cbf..606cbae9231 100644 --- a/tests/baselines/reference/bestCommonTypeWithContextualTyping.types +++ b/tests/baselines/reference/bestCommonTypeWithContextualTyping.types @@ -33,7 +33,7 @@ var arr: Contextual[] = [e]; // Ellement[] >e : Ellement var obj: { [s: string]: Contextual } = { s: e }; // { s: Ellement; [s: string]: Ellement } ->obj : { [x: string]: Contextual; } +>obj : { [s: string]: Contextual; } >s : string >Contextual : Contextual >{ s: e } : { [x: string]: Ellement; s: Ellement; } diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt index 5bb7772e75f..fe608b14379 100644 --- a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt @@ -1,67 +1,67 @@ -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(26,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(27,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(28,12): error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(29,12): error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(31,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(32,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(33,12): error TS2365: Operator '<' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(34,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(37,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(38,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(39,12): error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(40,12): error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(42,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(43,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(44,12): error TS2365: Operator '>' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(45,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(48,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(49,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(50,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(51,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(53,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(54,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(55,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(56,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(59,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(60,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(61,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(62,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(64,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(65,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(66,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(67,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(70,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(71,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(72,12): error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(73,12): error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(75,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(76,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(77,12): error TS2365: Operator '==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(78,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(81,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(82,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(83,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(84,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(86,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(87,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(88,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(89,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(92,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(93,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(94,12): error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(95,12): error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(97,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(98,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(99,12): error TS2365: Operator '===' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(100,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(103,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(104,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(105,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(106,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(108,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(109,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(110,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(111,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(26,12): error TS2365: Operator '<' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(27,12): error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(28,12): error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(29,12): error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(31,12): error TS2365: Operator '<' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(32,12): error TS2365: Operator '<' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(33,12): error TS2365: Operator '<' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(34,12): error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(37,12): error TS2365: Operator '>' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(38,12): error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(39,12): error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(40,12): error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(42,12): error TS2365: Operator '>' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(43,12): error TS2365: Operator '>' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(44,12): error TS2365: Operator '>' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(45,12): error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(48,12): error TS2365: Operator '<=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(49,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(50,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(51,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(53,12): error TS2365: Operator '<=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(54,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(55,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(56,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(59,12): error TS2365: Operator '>=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(60,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(61,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(62,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(64,12): error TS2365: Operator '>=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(65,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(66,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(67,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(70,12): error TS2365: Operator '==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(71,12): error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(72,12): error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(73,12): error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(75,12): error TS2365: Operator '==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(76,12): error TS2365: Operator '==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(77,12): error TS2365: Operator '==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(78,12): error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(81,12): error TS2365: Operator '!=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(82,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(83,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(84,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(86,12): error TS2365: Operator '!=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(87,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(88,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(89,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(92,12): error TS2365: Operator '===' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(93,12): error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(94,12): error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(95,12): error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(97,12): error TS2365: Operator '===' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(98,12): error TS2365: Operator '===' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(99,12): error TS2365: Operator '===' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(100,12): error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(103,12): error TS2365: Operator '!==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(104,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(105,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(106,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(108,12): error TS2365: Operator '!==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(109,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(110,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(111,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. ==== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts (64 errors) ==== @@ -92,215 +92,215 @@ tests/cases/conformance/expressions/binaryOperators/comparisonOperator/compariso // operator < var r1a1 = a1 < b1; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r1a2 = a2 < b2; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r1a3 = a3 < b3; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r1a4 = a4 < b4; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r1b1 = b1 < a1; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r1b2 = b2 < a2; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r1b3 = b3 < a3; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r1b4 = b4 < a4; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator > var r2a1 = a1 > b1; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r2a2 = a2 > b2; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r2a3 = a3 > b3; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r2a4 = a4 > b4; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r2b1 = b1 > a1; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r2b2 = b2 > a2; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r2b3 = b3 > a3; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r2b4 = b4 > a4; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator <= var r3a1 = a1 <= b1; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r3a2 = a2 <= b2; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r3a3 = a3 <= b3; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r3a4 = a4 <= b4; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r3b1 = b1 <= a1; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r3b2 = b2 <= a2; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r3b3 = b3 <= a3; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r3b4 = b4 <= a4; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator >= var r4a1 = a1 >= b1; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r4a2 = a2 >= b2; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r4a3 = a3 >= b3; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r4a4 = a4 >= b4; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r4b1 = b1 >= a1; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r4b2 = b2 >= a2; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r4b3 = b3 >= a3; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r4b4 = b4 >= a4; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator == var r5a1 = a1 == b1; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r5a2 = a2 == b2; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r5a3 = a3 == b3; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r5a4 = a4 == b4; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r5b1 = b1 == a1; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r5b2 = b2 == a2; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r5b3 = b3 == a3; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r5b4 = b4 == a4; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator != var r6a1 = a1 != b1; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r6a2 = a2 != b2; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r6a3 = a3 != b3; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r6a4 = a4 != b4; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r6b1 = b1 != a1; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r6b2 = b2 != a2; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r6b3 = b3 != a3; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r6b4 = b4 != a4; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator === var r7a1 = a1 === b1; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r7a2 = a2 === b2; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r7a3 = a3 === b3; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r7a4 = a4 === b4; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r7b1 = b1 === a1; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r7b2 = b2 === a2; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r7b3 = b3 === a3; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r7b4 = b4 === a4; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator !== var r8a1 = a1 !== b1; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r8a2 = a2 !== b2; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r8a3 = a3 !== b3; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r8a4 = a4 !== b4; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r8b1 = b1 !== a1; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r8b2 = b2 !== a2; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r8b3 = b3 !== a3; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r8b4 = b4 !== a4; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. \ No newline at end of file +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. \ No newline at end of file diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types index 755df0be1dc..657fdccbda0 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types @@ -15,38 +15,38 @@ class Derived extends Base { } var a1: { [a: string]: string }; ->a1 : { [x: string]: string; } +>a1 : { [a: string]: string; } >a : string var b1: { [b: string]: string }; ->b1 : { [x: string]: string; } +>b1 : { [b: string]: string; } >b : string var a2: { [index: string]: Base }; ->a2 : { [x: string]: Base; } +>a2 : { [index: string]: Base; } >index : string >Base : Base var b2: { [index: string]: Derived }; ->b2 : { [x: string]: Derived; } +>b2 : { [index: string]: Derived; } >index : string >Derived : Derived var a3: { [index: number]: string }; ->a3 : { [x: number]: string; } +>a3 : { [index: number]: string; } >index : number var b3: { [index: number]: string }; ->b3 : { [x: number]: string; } +>b3 : { [index: number]: string; } >index : number var a4: { [index: number]: Base }; ->a4 : { [x: number]: Base; } +>a4 : { [index: number]: Base; } >index : number >Base : Base var b4: { [index: string]: Derived }; ->b4 : { [x: string]: Derived; } +>b4 : { [index: string]: Derived; } >index : string >Derived : Derived @@ -54,391 +54,391 @@ var b4: { [index: string]: Derived }; var r1a1 = a1 < b1; >r1a1 : boolean >a1 < b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r1a1 = a2 < b2; >r1a1 : boolean >a2 < b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r1a1 = a3 < b3; >r1a1 : boolean >a3 < b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r1a1 = a4 < b4; >r1a1 : boolean >a4 < b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r1b1 = b1 < a1; >r1b1 : boolean >b1 < a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r1b1 = b2 < a2; >r1b1 : boolean >b2 < a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r1b1 = b3 < a3; >r1b1 : boolean >b3 < a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r1b1 = b4 < a4; >r1b1 : boolean >b4 < a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator > var r2a1 = a1 > b1; >r2a1 : boolean >a1 > b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r2a1 = a2 > b2; >r2a1 : boolean >a2 > b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r2a1 = a3 > b3; >r2a1 : boolean >a3 > b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r2a1 = a4 > b4; >r2a1 : boolean >a4 > b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r2b1 = b1 > a1; >r2b1 : boolean >b1 > a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r2b1 = b2 > a2; >r2b1 : boolean >b2 > a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r2b1 = b3 > a3; >r2b1 : boolean >b3 > a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r2b1 = b4 > a4; >r2b1 : boolean >b4 > a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator <= var r3a1 = a1 <= b1; >r3a1 : boolean >a1 <= b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r3a1 = a2 <= b2; >r3a1 : boolean >a2 <= b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r3a1 = a3 <= b3; >r3a1 : boolean >a3 <= b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r3a1 = a4 <= b4; >r3a1 : boolean >a4 <= b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r3b1 = b1 <= a1; >r3b1 : boolean >b1 <= a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r3b1 = b2 <= a2; >r3b1 : boolean >b2 <= a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r3b1 = b3 <= a3; >r3b1 : boolean >b3 <= a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r3b1 = b4 <= a4; >r3b1 : boolean >b4 <= a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator >= var r4a1 = a1 >= b1; >r4a1 : boolean >a1 >= b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r4a1 = a2 >= b2; >r4a1 : boolean >a2 >= b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r4a1 = a3 >= b3; >r4a1 : boolean >a3 >= b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r4a1 = a4 >= b4; >r4a1 : boolean >a4 >= b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r4b1 = b1 >= a1; >r4b1 : boolean >b1 >= a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r4b1 = b2 >= a2; >r4b1 : boolean >b2 >= a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r4b1 = b3 >= a3; >r4b1 : boolean >b3 >= a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r4b1 = b4 >= a4; >r4b1 : boolean >b4 >= a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator == var r5a1 = a1 == b1; >r5a1 : boolean >a1 == b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r5a1 = a2 == b2; >r5a1 : boolean >a2 == b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r5a1 = a3 == b3; >r5a1 : boolean >a3 == b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r5a1 = a4 == b4; >r5a1 : boolean >a4 == b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r5b1 = b1 == a1; >r5b1 : boolean >b1 == a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r5b1 = b2 == a2; >r5b1 : boolean >b2 == a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r5b1 = b3 == a3; >r5b1 : boolean >b3 == a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r5b1 = b4 == a4; >r5b1 : boolean >b4 == a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator != var r6a1 = a1 != b1; >r6a1 : boolean >a1 != b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r6a1 = a2 != b2; >r6a1 : boolean >a2 != b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r6a1 = a3 != b3; >r6a1 : boolean >a3 != b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r6a1 = a4 != b4; >r6a1 : boolean >a4 != b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r6b1 = b1 != a1; >r6b1 : boolean >b1 != a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r6b1 = b2 != a2; >r6b1 : boolean >b2 != a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r6b1 = b3 != a3; >r6b1 : boolean >b3 != a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r6b1 = b4 != a4; >r6b1 : boolean >b4 != a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator === var r7a1 = a1 === b1; >r7a1 : boolean >a1 === b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r7a1 = a2 === b2; >r7a1 : boolean >a2 === b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r7a1 = a3 === b3; >r7a1 : boolean >a3 === b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r7a1 = a4 === b4; >r7a1 : boolean >a4 === b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r7b1 = b1 === a1; >r7b1 : boolean >b1 === a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r7b1 = b2 === a2; >r7b1 : boolean >b2 === a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r7b1 = b3 === a3; >r7b1 : boolean >b3 === a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r7b1 = b4 === a4; >r7b1 : boolean >b4 === a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator !== var r8a1 = a1 !== b1; >r8a1 : boolean >a1 !== b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r8a1 = a2 !== b2; >r8a1 : boolean >a2 !== b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r8a1 = a3 !== b3; >r8a1 : boolean >a3 !== b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r8a1 = a4 !== b4; >r8a1 : boolean >a4 !== b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r8b1 = b1 !== a1; >r8b1 : boolean >b1 !== a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r8b1 = b2 !== a2; >r8b1 : boolean >b2 !== a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r8b1 = b3 !== a3; >r8b1 : boolean >b3 !== a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r8b1 = b4 !== a4; >r8b1 : boolean >b4 !== a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } diff --git a/tests/baselines/reference/contextualTypeAny.types b/tests/baselines/reference/contextualTypeAny.types index c95bfd70ecf..b21c3748eda 100644 --- a/tests/baselines/reference/contextualTypeAny.types +++ b/tests/baselines/reference/contextualTypeAny.types @@ -3,7 +3,7 @@ var x: any; >x : any var obj: { [s: string]: number } = { p: "", q: x }; ->obj : { [x: string]: number; } +>obj : { [s: string]: number; } >s : string >{ p: "", q: x } : { [x: string]: any; p: string; q: any; } >p : string diff --git a/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt b/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt index b388d1b0e4a..5d41b312f72 100644 --- a/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt +++ b/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/contextualTypingOfObjectLiterals.ts(4,1): error TS2322: Type '{ x: string; }' is not assignable to type '{ [x: string]: string; }'. Index signature is missing in type '{ x: string; }'. -tests/cases/compiler/contextualTypingOfObjectLiterals.ts(10,3): error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [x: string]: string; }'. +tests/cases/compiler/contextualTypingOfObjectLiterals.ts(10,3): error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [s: string]: string; }'. ==== tests/cases/compiler/contextualTypingOfObjectLiterals.ts (2 errors) ==== @@ -18,4 +18,4 @@ tests/cases/compiler/contextualTypingOfObjectLiterals.ts(10,3): error TS2345: Ar f(obj1); // Ok f(obj2); // Error - indexer doesn't match ~~~~ -!!! error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [x: string]: string; }'. \ No newline at end of file +!!! error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [s: string]: string; }'. \ No newline at end of file diff --git a/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types b/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types index 432ee1506fa..30d14b77286 100644 --- a/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types +++ b/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types @@ -17,7 +17,7 @@ module m { // Object literal with everything var x: { ->x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [x: string]: c; [x: number]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; } +>x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: string]: c; [n: number]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; } // Call signatures (a: number): c; diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index 991d324e822..6525f201f5b 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -22,7 +22,7 @@ var moduleATyped: IHasVisualizationModel = moduleA; >moduleA : typeof moduleA var moduleMap: { [key: string]: IHasVisualizationModel } = { ->moduleMap : { [x: string]: IHasVisualizationModel; } +>moduleMap : { [key: string]: IHasVisualizationModel; } >key : string >IHasVisualizationModel : IHasVisualizationModel >{ "moduleA": moduleA, "moduleB": moduleB} : { [x: string]: typeof moduleA; "moduleA": typeof moduleA; "moduleB": typeof moduleB; } @@ -42,7 +42,7 @@ var visModel = new moduleMap[moduleName].VisualizationModel(); >new moduleMap[moduleName].VisualizationModel() : Backbone.Model >moduleMap[moduleName].VisualizationModel : typeof Backbone.Model >moduleMap[moduleName] : IHasVisualizationModel ->moduleMap : { [x: string]: IHasVisualizationModel; } +>moduleMap : { [key: string]: IHasVisualizationModel; } >moduleName : string >VisualizationModel : typeof Backbone.Model diff --git a/tests/baselines/reference/generatedContextualTyping.types b/tests/baselines/reference/generatedContextualTyping.types index 79787f6d994..423c5d6653b 100644 --- a/tests/baselines/reference/generatedContextualTyping.types +++ b/tests/baselines/reference/generatedContextualTyping.types @@ -97,7 +97,7 @@ var x8: Array = [d1, d2]; >d2 : Derived2 var x9: { [n: number]: Base; } = [d1, d2]; ->x9 : { [x: number]: Base; } +>x9 : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -210,7 +210,7 @@ class x20 { member: Array = [d1, d2] } class x21 { member: { [n: number]: Base; } = [d1, d2] } >x21 : x21 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -326,7 +326,7 @@ class x32 { private member: Array = [d1, d2] } class x33 { private member: { [n: number]: Base; } = [d1, d2] } >x33 : x33 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -442,7 +442,7 @@ class x44 { public member: Array = [d1, d2] } class x45 { public member: { [n: number]: Base; } = [d1, d2] } >x45 : x45 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -558,7 +558,7 @@ class x56 { static member: Array = [d1, d2] } class x57 { static member: { [n: number]: Base; } = [d1, d2] } >x57 : x57 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -674,7 +674,7 @@ class x68 { private static member: Array = [d1, d2] } class x69 { private static member: { [n: number]: Base; } = [d1, d2] } >x69 : x69 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -790,7 +790,7 @@ class x80 { public static member: Array = [d1, d2] } class x81 { public static member: { [n: number]: Base; } = [d1, d2] } >x81 : x81 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -906,7 +906,7 @@ class x92 { constructor(parm: Array = [d1, d2]) { } } class x93 { constructor(parm: { [n: number]: Base; } = [d1, d2]) { } } >x93 : x93 ->parm : { [x: number]: Base; } +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1022,7 +1022,7 @@ class x104 { constructor(public parm: Array = [d1, d2]) { } } class x105 { constructor(public parm: { [n: number]: Base; } = [d1, d2]) { } } >x105 : x105 ->parm : { [x: number]: Base; } +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1138,7 +1138,7 @@ class x116 { constructor(private parm: Array = [d1, d2]) { } } class x117 { constructor(private parm: { [n: number]: Base; } = [d1, d2]) { } } >x117 : x117 ->parm : { [x: number]: Base; } +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1253,8 +1253,8 @@ function x128(parm: Array = [d1, d2]) { } >d2 : Derived2 function x129(parm: { [n: number]: Base; } = [d1, d2]) { } ->x129 : (parm?: { [x: number]: Base; }) => void ->parm : { [x: number]: Base; } +>x129 : (parm?: { [n: number]: Base; }) => void +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1361,7 +1361,7 @@ function x140(): Array { return [d1, d2]; } >d2 : Derived2 function x141(): { [n: number]: Base; } { return [d1, d2]; } ->x141 : () => { [x: number]: Base; } +>x141 : () => { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1497,7 +1497,7 @@ function x152(): Array { return [d1, d2]; return [d1, d2]; } >d2 : Derived2 function x153(): { [n: number]: Base; } { return [d1, d2]; return [d1, d2]; } ->x153 : () => { [x: number]: Base; } +>x153 : () => { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1628,7 +1628,7 @@ var x164: () => Array = () => { return [d1, d2]; }; >d2 : Derived2 var x165: () => { [n: number]: Base; } = () => { return [d1, d2]; }; ->x165 : () => { [x: number]: Base; } +>x165 : () => { [n: number]: Base; } >n : number >Base : Base >() => { return [d1, d2]; } : () => (Derived1 | Derived2)[] @@ -1744,7 +1744,7 @@ var x176: () => Array = function() { return [d1, d2]; }; >d2 : Derived2 var x177: () => { [n: number]: Base; } = function() { return [d1, d2]; }; ->x177 : () => { [x: number]: Base; } +>x177 : () => { [n: number]: Base; } >n : number >Base : Base >function() { return [d1, d2]; } : () => (Derived1 | Derived2)[] @@ -1861,7 +1861,7 @@ module x188 { var t: Array = [d1, d2]; } module x189 { var t: { [n: number]: Base; } = [d1, d2]; } >x189 : typeof x189 ->t : { [x: number]: Base; } +>t : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1977,7 +1977,7 @@ module x200 { export var t: Array = [d1, d2]; } module x201 { export var t: { [n: number]: Base; } = [d1, d2]; } >x201 : typeof x201 ->t : { [x: number]: Base; } +>t : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -2074,8 +2074,8 @@ var x212 = >[d1, d2]; >d2 : Derived2 var x213 = <{ [n: number]: Base; }>[d1, d2]; ->x213 : { [x: number]: Base; } -><{ [n: number]: Base; }>[d1, d2] : { [x: number]: Base; } +>x213 : { [n: number]: Base; } +><{ [n: number]: Base; }>[d1, d2] : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -2180,10 +2180,10 @@ var x222 = (>undefined) || [d1, d2]; >d2 : Derived2 var x223 = (<{ [n: number]: Base; }>undefined) || [d1, d2]; ->x223 : { [x: number]: Base; } ->(<{ [n: number]: Base; }>undefined) || [d1, d2] : { [x: number]: Base; } ->(<{ [n: number]: Base; }>undefined) : { [x: number]: Base; } -><{ [n: number]: Base; }>undefined : { [x: number]: Base; } +>x223 : { [n: number]: Base; } +>(<{ [n: number]: Base; }>undefined) || [d1, d2] : { [n: number]: Base; } +>(<{ [n: number]: Base; }>undefined) : { [n: number]: Base; } +><{ [n: number]: Base; }>undefined : { [n: number]: Base; } >n : number >Base : Base >undefined : undefined @@ -2287,11 +2287,11 @@ var x232: Array; x232 = [d1, d2]; >d2 : Derived2 var x233: { [n: number]: Base; }; x233 = [d1, d2]; ->x233 : { [x: number]: Base; } +>x233 : { [n: number]: Base; } >n : number >Base : Base >x233 = [d1, d2] : (Derived1 | Derived2)[] ->x233 : { [x: number]: Base; } +>x233 : { [n: number]: Base; } >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -2423,8 +2423,8 @@ var x244: { n: Array; } = { n: [d1, d2] }; >d2 : Derived2 var x245: { n: { [n: number]: Base; }; } = { n: [d1, d2] }; ->x245 : { n: { [x: number]: Base; }; } ->n : { [x: number]: Base; } +>x245 : { n: { [n: number]: Base; }; } +>n : { [n: number]: Base; } >n : number >Base : Base >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } @@ -2519,7 +2519,7 @@ var x256: Array[] = [[d1, d2]]; >d2 : Derived2 var x257: { [n: number]: Base; }[] = [[d1, d2]]; ->x257 : { [x: number]: Base; }[] +>x257 : { [n: number]: Base; }[] >n : number >Base : Base >[[d1, d2]] : (Derived1 | Derived2)[][] @@ -2613,7 +2613,7 @@ var x266: Array = [d1, d2] || undefined; >undefined : undefined var x267: { [n: number]: Base; } = [d1, d2] || undefined; ->x267 : { [x: number]: Base; } +>x267 : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] || undefined : (Derived1 | Derived2)[] @@ -2696,7 +2696,7 @@ var x274: Array = undefined || [d1, d2]; >d2 : Derived2 var x275: { [n: number]: Base; } = undefined || [d1, d2]; ->x275 : { [x: number]: Base; } +>x275 : { [n: number]: Base; } >n : number >Base : Base >undefined || [d1, d2] : (Derived1 | Derived2)[] @@ -2797,7 +2797,7 @@ var x282: Array = [d1, d2] || [d1, d2]; >d2 : Derived2 var x283: { [n: number]: Base; } = [d1, d2] || [d1, d2]; ->x283 : { [x: number]: Base; } +>x283 : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] || [d1, d2] : (Derived1 | Derived2)[] @@ -2930,7 +2930,7 @@ var x292: Array = true ? [d1, d2] : [d1, d2]; >d2 : Derived2 var x293: { [n: number]: Base; } = true ? [d1, d2] : [d1, d2]; ->x293 : { [x: number]: Base; } +>x293 : { [n: number]: Base; } >n : number >Base : Base >true ? [d1, d2] : [d1, d2] : (Derived1 | Derived2)[] @@ -3073,7 +3073,7 @@ var x304: Array = true ? undefined : [d1, d2]; >d2 : Derived2 var x305: { [n: number]: Base; } = true ? undefined : [d1, d2]; ->x305 : { [x: number]: Base; } +>x305 : { [n: number]: Base; } >n : number >Base : Base >true ? undefined : [d1, d2] : (Derived1 | Derived2)[] @@ -3201,7 +3201,7 @@ var x316: Array = true ? [d1, d2] : undefined; >undefined : undefined var x317: { [n: number]: Base; } = true ? [d1, d2] : undefined; ->x317 : { [x: number]: Base; } +>x317 : { [n: number]: Base; } >n : number >Base : Base >true ? [d1, d2] : undefined : (Derived1 | Derived2)[] @@ -3337,12 +3337,12 @@ function x328(n: Array) { }; x328([d1, d2]); >d2 : Derived2 function x329(n: { [n: number]: Base; }) { }; x329([d1, d2]); ->x329 : (n: { [x: number]: Base; }) => void ->n : { [x: number]: Base; } +>x329 : (n: { [n: number]: Base; }) => void +>n : { [n: number]: Base; } >n : number >Base : Base >x329([d1, d2]) : void ->x329 : (n: { [x: number]: Base; }) => void +>x329 : (n: { [n: number]: Base; }) => void >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3493,14 +3493,14 @@ var x340 = (n: Array) => n; x340([d1, d2]); >d2 : Derived2 var x341 = (n: { [n: number]: Base; }) => n; x341([d1, d2]); ->x341 : (n: { [x: number]: Base; }) => { [x: number]: Base; } ->(n: { [n: number]: Base; }) => n : (n: { [x: number]: Base; }) => { [x: number]: Base; } ->n : { [x: number]: Base; } +>x341 : (n: { [n: number]: Base; }) => { [n: number]: Base; } +>(n: { [n: number]: Base; }) => n : (n: { [n: number]: Base; }) => { [n: number]: Base; } +>n : { [n: number]: Base; } >n : number >Base : Base ->n : { [x: number]: Base; } ->x341([d1, d2]) : { [x: number]: Base; } ->x341 : (n: { [x: number]: Base; }) => { [x: number]: Base; } +>n : { [n: number]: Base; } +>x341([d1, d2]) : { [n: number]: Base; } +>x341 : (n: { [n: number]: Base; }) => { [n: number]: Base; } >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3649,13 +3649,13 @@ var x352 = function(n: Array) { }; x352([d1, d2]); >d2 : Derived2 var x353 = function(n: { [n: number]: Base; }) { }; x353([d1, d2]); ->x353 : (n: { [x: number]: Base; }) => void ->function(n: { [n: number]: Base; }) { } : (n: { [x: number]: Base; }) => void ->n : { [x: number]: Base; } +>x353 : (n: { [n: number]: Base; }) => void +>function(n: { [n: number]: Base; }) { } : (n: { [n: number]: Base; }) => void +>n : { [n: number]: Base; } >n : number >Base : Base >x353([d1, d2]) : void ->x353 : (n: { [x: number]: Base; }) => void +>x353 : (n: { [n: number]: Base; }) => void >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index 9caa45b8b8f..2ade6437fe7 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -8,16 +8,16 @@ class BaseCollection2 { >CollectionItem2 : CollectionItem2 _itemsByKey: { [key: string]: TItem; }; ->_itemsByKey : { [x: string]: TItem; } +>_itemsByKey : { [key: string]: TItem; } >key : string >TItem : TItem constructor() { this._itemsByKey = {}; >this._itemsByKey = {} : { [x: string]: undefined; } ->this._itemsByKey : { [x: string]: TItem; } +>this._itemsByKey : { [key: string]: TItem; } >this : BaseCollection2 ->_itemsByKey : { [x: string]: TItem; } +>_itemsByKey : { [key: string]: TItem; } >{} : { [x: string]: undefined; } } } @@ -35,9 +35,9 @@ class DataView2 extends BaseCollection2 { this._itemsByKey['dummy'] = item; >this._itemsByKey['dummy'] = item : CollectionItem2 >this._itemsByKey['dummy'] : CollectionItem2 ->this._itemsByKey : { [x: string]: CollectionItem2; } +>this._itemsByKey : { [key: string]: CollectionItem2; } >this : DataView2 ->_itemsByKey : { [x: string]: CollectionItem2; } +>_itemsByKey : { [key: string]: CollectionItem2; } >item : CollectionItem2 } } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types index f0cab6e7467..ef42c1c6029 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types @@ -4,19 +4,19 @@ class LazyArray { >T : T private objects = <{ [objectId: string]: T; }>{}; ->objects : { [x: string]: T; } -><{ [objectId: string]: T; }>{} : { [x: string]: T; } +>objects : { [objectId: string]: T; } +><{ [objectId: string]: T; }>{} : { [objectId: string]: T; } >objectId : string >T : T >{} : { [x: string]: undefined; } array() { ->array : () => { [x: string]: T; } +>array : () => { [objectId: string]: T; } return this.objects; ->this.objects : { [x: string]: T; } +>this.objects : { [objectId: string]: T; } >this : LazyArray ->objects : { [x: string]: T; } +>objects : { [objectId: string]: T; } } } var lazyArray = new LazyArray(); @@ -27,8 +27,8 @@ var lazyArray = new LazyArray(); var value: string = lazyArray.array()["test"]; // used to be an error >value : string >lazyArray.array()["test"] : string ->lazyArray.array() : { [x: string]: string; } ->lazyArray.array : () => { [x: string]: string; } +>lazyArray.array() : { [objectId: string]: string; } +>lazyArray.array : () => { [objectId: string]: string; } >lazyArray : LazyArray ->array : () => { [x: string]: string; } +>array : () => { [objectId: string]: string; } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types index 1de9b6d2aa8..e1cdfa85f13 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types @@ -5,7 +5,7 @@ export class Collection { >CollectionItem : CollectionItem _itemsByKey: { [key: string]: TItem; }; ->_itemsByKey : { [x: string]: TItem; } +>_itemsByKey : { [key: string]: TItem; } >key : string >TItem : TItem } diff --git a/tests/baselines/reference/indexSignaturesInferentialTyping.types b/tests/baselines/reference/indexSignaturesInferentialTyping.types index 4054ccca227..9ea5a390498 100644 --- a/tests/baselines/reference/indexSignaturesInferentialTyping.types +++ b/tests/baselines/reference/indexSignaturesInferentialTyping.types @@ -1,17 +1,17 @@ === tests/cases/compiler/indexSignaturesInferentialTyping.ts === function foo(items: { [index: number]: T }): T { return undefined; } ->foo : (items: { [x: number]: T; }) => T +>foo : (items: { [index: number]: T; }) => T >T : T ->items : { [x: number]: T; } +>items : { [index: number]: T; } >index : number >T : T >T : T >undefined : undefined function bar(items: { [index: string]: T }): T { return undefined; } ->bar : (items: { [x: string]: T; }) => T +>bar : (items: { [index: string]: T; }) => T >T : T ->items : { [x: string]: T; } +>items : { [index: string]: T; } >index : string >T : T >T : T @@ -20,13 +20,13 @@ function bar(items: { [index: string]: T }): T { return undefined; } var x1 = foo({ 0: 0, 1: 1 }); // type should be number >x1 : number >foo({ 0: 0, 1: 1 }) : number ->foo : (items: { [x: number]: T; }) => T +>foo : (items: { [index: number]: T; }) => T >{ 0: 0, 1: 1 } : { [x: number]: number; 0: number; 1: number; } var x2 = foo({ zero: 0, one: 1 }); >x2 : any >foo({ zero: 0, one: 1 }) : any ->foo : (items: { [x: number]: T; }) => T +>foo : (items: { [index: number]: T; }) => T >{ zero: 0, one: 1 } : { [x: number]: undefined; zero: number; one: number; } >zero : number >one : number @@ -34,13 +34,13 @@ var x2 = foo({ zero: 0, one: 1 }); var x3 = bar({ 0: 0, 1: 1 }); >x3 : number >bar({ 0: 0, 1: 1 }) : number ->bar : (items: { [x: string]: T; }) => T +>bar : (items: { [index: string]: T; }) => T >{ 0: 0, 1: 1 } : { [x: string]: number; 0: number; 1: number; } var x4 = bar({ zero: 0, one: 1 }); // type should be number >x4 : number >bar({ zero: 0, one: 1 }) : number ->bar : (items: { [x: string]: T; }) => T +>bar : (items: { [index: string]: T; }) => T >{ zero: 0, one: 1 } : { [x: string]: number; zero: number; one: number; } >zero : number >one : number diff --git a/tests/baselines/reference/indexerAssignability.errors.txt b/tests/baselines/reference/indexerAssignability.errors.txt index 9f28fc1e9e0..44c2184517e 100644 --- a/tests/baselines/reference/indexerAssignability.errors.txt +++ b/tests/baselines/reference/indexerAssignability.errors.txt @@ -1,8 +1,8 @@ -tests/cases/compiler/indexerAssignability.ts(5,1): error TS2322: Type '{ [x: number]: string; }' is not assignable to type '{ [x: string]: string; }'. - Index signature is missing in type '{ [x: number]: string; }'. -tests/cases/compiler/indexerAssignability.ts(6,1): error TS2322: Type '{}' is not assignable to type '{ [x: string]: string; }'. +tests/cases/compiler/indexerAssignability.ts(5,1): error TS2322: Type '{ [n: number]: string; }' is not assignable to type '{ [s: string]: string; }'. + Index signature is missing in type '{ [n: number]: string; }'. +tests/cases/compiler/indexerAssignability.ts(6,1): error TS2322: Type '{}' is not assignable to type '{ [s: string]: string; }'. Index signature is missing in type '{}'. -tests/cases/compiler/indexerAssignability.ts(8,1): error TS2322: Type '{}' is not assignable to type '{ [x: number]: string; }'. +tests/cases/compiler/indexerAssignability.ts(8,1): error TS2322: Type '{}' is not assignable to type '{ [n: number]: string; }'. Index signature is missing in type '{}'. @@ -13,16 +13,16 @@ tests/cases/compiler/indexerAssignability.ts(8,1): error TS2322: Type '{}' is no a = b; ~ -!!! error TS2322: Type '{ [x: number]: string; }' is not assignable to type '{ [x: string]: string; }'. -!!! error TS2322: Index signature is missing in type '{ [x: number]: string; }'. +!!! error TS2322: Type '{ [n: number]: string; }' is not assignable to type '{ [s: string]: string; }'. +!!! error TS2322: Index signature is missing in type '{ [n: number]: string; }'. a = c; ~ -!!! error TS2322: Type '{}' is not assignable to type '{ [x: string]: string; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ [s: string]: string; }'. !!! error TS2322: Index signature is missing in type '{}'. b = a; b = c; ~ -!!! error TS2322: Type '{}' is not assignable to type '{ [x: number]: string; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ [n: number]: string; }'. !!! error TS2322: Index signature is missing in type '{}'. c = a; c = b; \ No newline at end of file diff --git a/tests/baselines/reference/indexerReturningTypeParameter1.types b/tests/baselines/reference/indexerReturningTypeParameter1.types index 55155323c84..a0a70f95331 100644 --- a/tests/baselines/reference/indexerReturningTypeParameter1.types +++ b/tests/baselines/reference/indexerReturningTypeParameter1.types @@ -3,7 +3,7 @@ interface f { >f : f groupBy(): { [key: string]: T[]; }; ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } >T : T >key : string >T : T @@ -13,17 +13,17 @@ var a: f; >f : f var r = a.groupBy(); ->r : { [x: string]: {}[]; } ->a.groupBy() : { [x: string]: {}[]; } ->a.groupBy : () => { [x: string]: T[]; } +>r : { [key: string]: {}[]; } +>a.groupBy() : { [key: string]: {}[]; } +>a.groupBy : () => { [key: string]: T[]; } >a : f ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } class c { >c : c groupBy(): { [key: string]: T[]; } { ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } >T : T >key : string >T : T @@ -36,9 +36,9 @@ var a2: c; >c : c var r2 = a2.groupBy(); ->r2 : { [x: string]: {}[]; } ->a2.groupBy() : { [x: string]: {}[]; } ->a2.groupBy : () => { [x: string]: T[]; } +>r2 : { [key: string]: {}[]; } +>a2.groupBy() : { [key: string]: {}[]; } +>a2.groupBy : () => { [key: string]: T[]; } >a2 : c ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } diff --git a/tests/baselines/reference/nestedIndexer.types b/tests/baselines/reference/nestedIndexer.types index 612f6a260b7..ade8dbbcb66 100644 --- a/tests/baselines/reference/nestedIndexer.types +++ b/tests/baselines/reference/nestedIndexer.types @@ -4,7 +4,7 @@ function then(x) { >x : any var match: { [index: number]: string; } ->match : { [x: number]: string; } +>match : { [index: number]: string; } >index : number } diff --git a/tests/baselines/reference/numericIndexerConstraint2.errors.txt b/tests/baselines/reference/numericIndexerConstraint2.errors.txt index 4260f60becf..385efbcead2 100644 --- a/tests/baselines/reference/numericIndexerConstraint2.errors.txt +++ b/tests/baselines/reference/numericIndexerConstraint2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/numericIndexerConstraint2.ts(4,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: Foo; }'. +tests/cases/compiler/numericIndexerConstraint2.ts(4,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: Foo; }'. Index signature is missing in type '{ one: number; }'. @@ -8,5 +8,5 @@ tests/cases/compiler/numericIndexerConstraint2.ts(4,1): error TS2322: Type '{ on var a: { one: number; }; x = a; ~ -!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: Foo; }'. +!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: Foo; }'. !!! error TS2322: Index signature is missing in type '{ one: number; }'. \ No newline at end of file diff --git a/tests/baselines/reference/numericIndexerConstraint4.types b/tests/baselines/reference/numericIndexerConstraint4.types index 78b57d4179e..97e72b5088d 100644 --- a/tests/baselines/reference/numericIndexerConstraint4.types +++ b/tests/baselines/reference/numericIndexerConstraint4.types @@ -15,7 +15,7 @@ class B extends A { } var x: { ->x : { [x: number]: A; } +>x : { [idx: number]: A; } [idx: number]: A; >idx : number diff --git a/tests/baselines/reference/numericIndexerConstraint5.errors.txt b/tests/baselines/reference/numericIndexerConstraint5.errors.txt index 445fc771218..98acc65eeb7 100644 --- a/tests/baselines/reference/numericIndexerConstraint5.errors.txt +++ b/tests/baselines/reference/numericIndexerConstraint5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [x: number]: string; }'. +tests/cases/compiler/numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. Index signature is missing in type '{ 0: Date; name: string; }'. @@ -6,5 +6,5 @@ tests/cases/compiler/numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: var x = { name: "x", 0: new Date() }; var z: { [name: number]: string } = x; ~ -!!! error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [x: number]: string; }'. +!!! error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. !!! error TS2322: Index signature is missing in type '{ 0: Date; name: string; }'. \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt b/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt index ef084477f6d..c35e49f02a3 100644 --- a/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt +++ b/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/objectLiteralIndexerErrors.ts(13,5): error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [x: string]: A; [x: number]: B; }'. +tests/cases/compiler/objectLiteralIndexerErrors.ts(13,5): error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [s: string]: A; [n: number]: B; }'. Index signatures are incompatible. Type 'A' is not assignable to type 'B'. @@ -18,7 +18,7 @@ tests/cases/compiler/objectLiteralIndexerErrors.ts(13,5): error TS2322: Type '{ var o1: { [s: string]: A;[n: number]: B; } = { x: b, 0: a }; // both indexers are A ~~ -!!! error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [x: string]: A; [x: number]: B; }'. +!!! error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [s: string]: A; [n: number]: B; }'. !!! error TS2322: Index signatures are incompatible. !!! error TS2322: Type 'A' is not assignable to type 'B'. o1 = { x: c, 0: a }; // string indexer is any, number indexer is A \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralIndexers.types b/tests/baselines/reference/objectLiteralIndexers.types index 1dce9b94ada..d5add00ebaf 100644 --- a/tests/baselines/reference/objectLiteralIndexers.types +++ b/tests/baselines/reference/objectLiteralIndexers.types @@ -26,7 +26,7 @@ var c: any; >c : any var o1: { [s: string]: A;[n: number]: B; } = { x: a, 0: b }; // string indexer is A, number indexer is B ->o1 : { [x: string]: A; [x: number]: B; } +>o1 : { [s: string]: A; [n: number]: B; } >s : string >A : A >n : number @@ -38,7 +38,7 @@ var o1: { [s: string]: A;[n: number]: B; } = { x: a, 0: b }; // string indexer i o1 = { x: b, 0: c }; // both indexers are any >o1 = { x: b, 0: c } : { [x: string]: any; [x: number]: any; 0: any; x: B; } ->o1 : { [x: string]: A; [x: number]: B; } +>o1 : { [s: string]: A; [n: number]: B; } >{ x: b, 0: c } : { [x: string]: any; [x: number]: any; 0: any; x: B; } >x : B >b : B @@ -46,7 +46,7 @@ o1 = { x: b, 0: c }; // both indexers are any o1 = { x: c, 0: b }; // string indexer is any, number indexer is B >o1 = { x: c, 0: b } : { [x: string]: any; [x: number]: B; 0: B; x: any; } ->o1 : { [x: string]: A; [x: number]: B; } +>o1 : { [s: string]: A; [n: number]: B; } >{ x: c, 0: b } : { [x: string]: any; [x: number]: B; 0: B; x: any; } >x : any >c : any diff --git a/tests/baselines/reference/parseShortform.types b/tests/baselines/reference/parseShortform.types index 21aff67ead4..e9e3f68b559 100644 --- a/tests/baselines/reference/parseShortform.types +++ b/tests/baselines/reference/parseShortform.types @@ -3,7 +3,7 @@ interface I { >I : I w: { ->w : { (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; } +>w : { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; } z: I; >z : I diff --git a/tests/baselines/reference/parserCommaInTypeMemberList2.errors.txt b/tests/baselines/reference/parserCommaInTypeMemberList2.errors.txt index bc6f3dc0644..fb563542961 100644 --- a/tests/baselines/reference/parserCommaInTypeMemberList2.errors.txt +++ b/tests/baselines/reference/parserCommaInTypeMemberList2.errors.txt @@ -1,29 +1,11 @@ -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,38): error TS1134: Variable declaration expected. -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,60): error TS1005: ';' expected. -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,70): error TS1109: Expression expected. +tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,53): error TS1005: ';' expected. tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,9): error TS2304: Cannot find name '$'. -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,31): error TS2304: Cannot find name 'any'. -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,50): error TS2304: Cannot find name 'any'. -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,55): error TS2304: Cannot find name 'width'. -tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,62): error TS2304: Cannot find name 'string'. -==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts (8 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts (2 errors) ==== var s = $.extend< { workItem: any }, { workItem: any, width: string }>({ workItem: this._workItem }, {}); - ~ -!!! error TS1134: Variable declaration expected. - ~ + ~ !!! error TS1005: ';' expected. - ~ -!!! error TS1109: Expression expected. ~ !!! error TS2304: Cannot find name '$'. - ~~~ -!!! error TS2304: Cannot find name 'any'. - ~~~ -!!! error TS2304: Cannot find name 'any'. - ~~~~~ -!!! error TS2304: Cannot find name 'width'. - ~~~~~~ -!!! error TS2304: Cannot find name 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/privatePropertyUsingObjectType.types b/tests/baselines/reference/privatePropertyUsingObjectType.types index 678418b1ddf..4c6b6820fc0 100644 --- a/tests/baselines/reference/privatePropertyUsingObjectType.types +++ b/tests/baselines/reference/privatePropertyUsingObjectType.types @@ -8,7 +8,7 @@ export class FilterManager { >IFilterProvider : IFilterProvider private _filterProviders2: { [index: number]: IFilterProvider; }; ->_filterProviders2 : { [x: number]: IFilterProvider; } +>_filterProviders2 : { [index: number]: IFilterProvider; } >index : number >IFilterProvider : IFilterProvider diff --git a/tests/baselines/reference/recursiveTypesWithTypeof.types b/tests/baselines/reference/recursiveTypesWithTypeof.types index f75bae79c5b..14ff5a6d5b9 100644 --- a/tests/baselines/reference/recursiveTypesWithTypeof.types +++ b/tests/baselines/reference/recursiveTypesWithTypeof.types @@ -135,21 +135,21 @@ var j2 = new j2(j2); // Indexers var k: { [n: number]: typeof k;[s: string]: typeof k }; ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } >n : number ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } >s : string ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } var k = k[0]; ->k : { [x: string]: any; [x: number]: any; } ->k[0] : { [x: string]: any; [x: number]: any; } ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } +>k[0] : { [s: string]: any; [n: number]: any; } +>k : { [s: string]: any; [n: number]: any; } var k = k['']; ->k : { [x: string]: any; [x: number]: any; } ->k[''] : { [x: string]: any; [x: number]: any; } ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } +>k[''] : { [s: string]: any; [n: number]: any; } +>k : { [s: string]: any; [n: number]: any; } // Hybrid - contains type literals as well as type arguments // These two are recursive diff --git a/tests/baselines/reference/stringIndexerAssignments1.errors.txt b/tests/baselines/reference/stringIndexerAssignments1.errors.txt index 3939ceba1bb..908371bc7dd 100644 --- a/tests/baselines/reference/stringIndexerAssignments1.errors.txt +++ b/tests/baselines/reference/stringIndexerAssignments1.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/stringIndexerAssignments1.ts(4,1): error TS2322: Type '{ one: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +tests/cases/compiler/stringIndexerAssignments1.ts(4,1): error TS2322: Type '{ one: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. Index signature is missing in type '{ one: string; }'. -tests/cases/compiler/stringIndexerAssignments1.ts(5,1): error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +tests/cases/compiler/stringIndexerAssignments1.ts(5,1): error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. Types of property 'one' are incompatible. Type 'number' is not assignable to type 'string'. @@ -11,11 +11,11 @@ tests/cases/compiler/stringIndexerAssignments1.ts(5,1): error TS2322: Type '{ on var b: { one: number; two: string; }; x = a; ~ -!!! error TS2322: Type '{ one: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +!!! error TS2322: Type '{ one: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. !!! error TS2322: Index signature is missing in type '{ one: string; }'. x = b; // error ~ -!!! error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +!!! error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. !!! error TS2322: Types of property 'one' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/typeName1.errors.txt b/tests/baselines/reference/typeName1.errors.txt index 64a32663875..84c8be360bd 100644 --- a/tests/baselines/reference/typeName1.errors.txt +++ b/tests/baselines/reference/typeName1.errors.txt @@ -10,7 +10,7 @@ tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assi tests/cases/compiler/typeName1.ts(14,5): error TS2322: Type 'number' is not assignable to type '{ z: number; f: { (n: number): string; (s: string): number; }; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(15,5): error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. -tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }'. +tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(16,10): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. tests/cases/compiler/typeName1.ts(17,5): error TS2322: Type 'number' is not assignable to type 'I'. @@ -19,7 +19,7 @@ tests/cases/compiler/typeName1.ts(18,5): error TS2322: Type 'number' is not assi Property 'length' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(19,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; }[][]'. Property 'length' is missing in type 'Number'. -tests/cases/compiler/typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }; }[][]'. +tests/cases/compiler/typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. Property 'length' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(20,50): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. tests/cases/compiler/typeName1.ts(21,5): error TS2322: Type 'number' is not assignable to type '{ (): {}; new (): number; new (n: number): number; x: string; w: { y: number; }; }'. @@ -66,7 +66,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as !!! error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. var x8:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; }=3; ~~ -!!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }'. +!!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. !!! error TS2322: Property 'z' is missing in type 'Number'. ~~~~ !!! error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. @@ -84,7 +84,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as !!! error TS2322: Property 'length' is missing in type 'Number'. var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; ~~~ -!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }; }[][]'. +!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. !!! error TS2322: Property 'length' is missing in type 'Number'. ~~~~ !!! error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. diff --git a/tests/baselines/reference/unionTypeIndexSignature.types b/tests/baselines/reference/unionTypeIndexSignature.types index 96453cffcb4..4502a3ddfc3 100644 --- a/tests/baselines/reference/unionTypeIndexSignature.types +++ b/tests/baselines/reference/unionTypeIndexSignature.types @@ -10,7 +10,7 @@ var anyVar: number; // U has a string index signature of a union type of the types of the string index signatures from each type in U. var unionOfDifferentReturnType: { [a: string]: number; } | { [a: string]: Date; }; ->unionOfDifferentReturnType : { [x: string]: number; } | { [x: string]: Date; } +>unionOfDifferentReturnType : { [a: string]: number; } | { [a: string]: Date; } >a : string >a : string >Date : Date @@ -19,34 +19,34 @@ numOrDate = unionOfDifferentReturnType["hello"]; // number | Date >numOrDate = unionOfDifferentReturnType["hello"] : number | Date >numOrDate : number | Date >unionOfDifferentReturnType["hello"] : number | Date ->unionOfDifferentReturnType : { [x: string]: number; } | { [x: string]: Date; } +>unionOfDifferentReturnType : { [a: string]: number; } | { [a: string]: Date; } numOrDate = unionOfDifferentReturnType[10]; // number | Date >numOrDate = unionOfDifferentReturnType[10] : number | Date >numOrDate : number | Date >unionOfDifferentReturnType[10] : number | Date ->unionOfDifferentReturnType : { [x: string]: number; } | { [x: string]: Date; } +>unionOfDifferentReturnType : { [a: string]: number; } | { [a: string]: Date; } var unionOfTypesWithAndWithoutStringSignature: { [a: string]: number; } | boolean; ->unionOfTypesWithAndWithoutStringSignature : boolean | { [x: string]: number; } +>unionOfTypesWithAndWithoutStringSignature : boolean | { [a: string]: number; } >a : string anyVar = unionOfTypesWithAndWithoutStringSignature["hello"]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature["hello"] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature["hello"] : any ->unionOfTypesWithAndWithoutStringSignature : boolean | { [x: string]: number; } +>unionOfTypesWithAndWithoutStringSignature : boolean | { [a: string]: number; } anyVar = unionOfTypesWithAndWithoutStringSignature[10]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature[10] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature[10] : any ->unionOfTypesWithAndWithoutStringSignature : boolean | { [x: string]: number; } +>unionOfTypesWithAndWithoutStringSignature : boolean | { [a: string]: number; } // If each type in U has a numeric index signature, // U has a numeric index signature of a union type of the types of the numeric index signatures from each type in U. var unionOfDifferentReturnType1: { [a: number]: number; } | { [a: number]: Date; }; ->unionOfDifferentReturnType1 : { [x: number]: number; } | { [x: number]: Date; } +>unionOfDifferentReturnType1 : { [a: number]: number; } | { [a: number]: Date; } >a : number >a : number >Date : Date @@ -55,27 +55,27 @@ numOrDate = unionOfDifferentReturnType1["hello"]; // any >numOrDate = unionOfDifferentReturnType1["hello"] : any >numOrDate : number | Date >unionOfDifferentReturnType1["hello"] : any ->unionOfDifferentReturnType1 : { [x: number]: number; } | { [x: number]: Date; } +>unionOfDifferentReturnType1 : { [a: number]: number; } | { [a: number]: Date; } numOrDate = unionOfDifferentReturnType1[10]; // number | Date >numOrDate = unionOfDifferentReturnType1[10] : number | Date >numOrDate : number | Date >unionOfDifferentReturnType1[10] : number | Date ->unionOfDifferentReturnType1 : { [x: number]: number; } | { [x: number]: Date; } +>unionOfDifferentReturnType1 : { [a: number]: number; } | { [a: number]: Date; } var unionOfTypesWithAndWithoutStringSignature1: { [a: number]: number; } | boolean; ->unionOfTypesWithAndWithoutStringSignature1 : boolean | { [x: number]: number; } +>unionOfTypesWithAndWithoutStringSignature1 : boolean | { [a: number]: number; } >a : number anyVar = unionOfTypesWithAndWithoutStringSignature1["hello"]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature1["hello"] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature1["hello"] : any ->unionOfTypesWithAndWithoutStringSignature1 : boolean | { [x: number]: number; } +>unionOfTypesWithAndWithoutStringSignature1 : boolean | { [a: number]: number; } anyVar = unionOfTypesWithAndWithoutStringSignature1[10]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature1[10] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature1[10] : any ->unionOfTypesWithAndWithoutStringSignature1 : boolean | { [x: number]: number; } +>unionOfTypesWithAndWithoutStringSignature1 : boolean | { [a: number]: number; } diff --git a/tests/baselines/reference/vardecl.types b/tests/baselines/reference/vardecl.types index 25257e57d78..d6847dc3be7 100644 --- a/tests/baselines/reference/vardecl.types +++ b/tests/baselines/reference/vardecl.types @@ -52,7 +52,7 @@ complicatedArrayVar.push({ x: 30, y : 'hello world' }); >y : string var n1: { [s: string]: number; }; ->n1 : { [x: string]: number; } +>n1 : { [s: string]: number; } >s : string var c : { diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 62da4c0d62d..85197dd3ccb 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -639,6 +639,10 @@ module FourSlashInterface { return getClassification("typeParameterName", text, position); } + export function typeAlias(text: string, position?: number): { classificationType: string; text: string; textSpan?: TextSpan } { + return getClassification("typeAlias", text, position); + } + function getClassification(type: string, text: string, position?: number) { return { classificationType: type, diff --git a/tests/cases/fourslash/semanticClassificatonTypeAlias.ts b/tests/cases/fourslash/semanticClassificatonTypeAlias.ts new file mode 100644 index 00000000000..726588a2c9e --- /dev/null +++ b/tests/cases/fourslash/semanticClassificatonTypeAlias.ts @@ -0,0 +1,15 @@ +/// + +////type /*0*/Alias = number +////var x: /*1*/Alias; +////var y = {}; +////function f(x: /*3*/Alias): /*4*/Alias { return undefined; } + +var c = classification; +verify.semanticClassificationsAre( + c.typeAlias("Alias", test.marker("0").position), + c.typeAlias("Alias", test.marker("1").position), + c.typeAlias("Alias", test.marker("2").position), + c.typeAlias("Alias", test.marker("3").position), + c.typeAlias("Alias", test.marker("4").position) + ); \ No newline at end of file