From 4cdc97094f972e3868493eaed0b72ec5e9348508 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Fri, 3 Apr 2015 16:17:05 -0700 Subject: [PATCH 01/64] Produce a map of named declarations instead of a flat list. Produce a map of named declarations instead of a flat list. --- src/services/navigateTo.ts | 69 ++++++--------- src/services/services.ts | 84 ++++++++++++++----- .../baselines/reference/APISample_compile.js | 1 - .../reference/APISample_compile.types | 4 - tests/baselines/reference/APISample_linter.js | 1 - .../reference/APISample_linter.types | 4 - .../reference/APISample_linter.types.pull | 4 - .../reference/APISample_transform.js | 1 - .../reference/APISample_transform.types | 4 - .../baselines/reference/APISample_watcher.js | 1 - .../reference/APISample_watcher.types | 4 - .../fourslash/navigationItemsOverloads2.ts | 2 +- .../navigationItemsOverloadsBroken1.ts | 10 +-- 13 files changed, 97 insertions(+), 92 deletions(-) diff --git a/src/services/navigateTo.ts b/src/services/navigateTo.ts index 54f87d8e50b..cc81031fc04 100644 --- a/src/services/navigateTo.ts +++ b/src/services/navigateTo.ts @@ -9,11 +9,10 @@ module ts.NavigateTo { forEach(program.getSourceFiles(), sourceFile => { cancellationToken.throwIfCancellationRequested(); - let declarations = sourceFile.getNamedDeclarations(); - for (let declaration of declarations) { - var name = getDeclarationName(declaration); - if (name !== undefined) { - + let nameToDeclarations = sourceFile.getNamedDeclarations(); + for (let name in nameToDeclarations) { + let declarations = getProperty(nameToDeclarations, name); + if (declarations) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. let matches = patternMatcher.getMatchesForLastSegmentOfPattern(name); @@ -22,24 +21,26 @@ module ts.NavigateTo { continue; } - // It was a match! If the pattern has dots in it, then also see if the - // declaration container matches as well. - if (patternMatcher.patternContainsDots) { - let containers = getContainers(declaration); - if (!containers) { - return undefined; + for (let declaration of declarations) { + // It was a match! If the pattern has dots in it, then also see if the + // declaration container matches as well. + if (patternMatcher.patternContainsDots) { + let containers = getContainers(declaration); + if (!containers) { + return undefined; + } + + matches = patternMatcher.getMatches(containers, name); + + if (!matches) { + continue; + } } - matches = patternMatcher.getMatches(containers, name); - - if (!matches) { - continue; - } + let fileName = sourceFile.fileName; + let matchKind = bestMatchKind(matches); + rawItems.push({ name, fileName, matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration }); } - - let fileName = sourceFile.fileName; - let matchKind = bestMatchKind(matches); - rawItems.push({ name, fileName, matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration }); } } }); @@ -66,30 +67,14 @@ module ts.NavigateTo { return true; } - function getDeclarationName(declaration: Declaration): string { - let result = getTextOfIdentifierOrLiteral(declaration.name); - if (result !== undefined) { - return result; - } - - if (declaration.name.kind === SyntaxKind.ComputedPropertyName) { - let expr = (declaration.name).expression; - if (expr.kind === SyntaxKind.PropertyAccessExpression) { - return (expr).name.text; - } - - return getTextOfIdentifierOrLiteral(expr); - } - - return undefined; - } - function getTextOfIdentifierOrLiteral(node: Node) { - if (node.kind === SyntaxKind.Identifier || - node.kind === SyntaxKind.StringLiteral || - node.kind === SyntaxKind.NumericLiteral) { + if (node) { + if (node.kind === SyntaxKind.Identifier || + node.kind === SyntaxKind.StringLiteral || + node.kind === SyntaxKind.NumericLiteral) { - return (node).text; + return (node).text; + } } return undefined; diff --git a/src/services/services.ts b/src/services/services.ts index 12ea84eafc1..67d799f62f0 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -63,7 +63,8 @@ module ts { /* @internal */ scriptSnapshot: IScriptSnapshot; /* @internal */ nameTable: Map; - getNamedDeclarations(): Declaration[]; + /* @internal */ getNamedDeclarations(): Map; + getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; getPositionOfLineAndCharacter(line: number, character: number): number; @@ -749,7 +750,7 @@ module ts { public identifiers: Map; public nameTable: Map; - private namedDeclarations: Declaration[]; + private namedDeclarations: Map; public update(newText: string, textChangeRange: TextChangeRange): SourceFile { return updateSourceFile(this, newText, textChangeRange); @@ -767,7 +768,7 @@ module ts { return ts.getPositionOfLineAndCharacter(this, line, character); } - public getNamedDeclarations() { + public getNamedDeclarations(): Map { if (!this.namedDeclarations) { this.namedDeclarations = this.computeNamedDeclarations(); } @@ -775,12 +776,57 @@ module ts { return this.namedDeclarations; } - private computeNamedDeclarations() { - let namedDeclarations: Declaration[] = []; + private computeNamedDeclarations(): Map { + let result: Map = {}; forEachChild(this, visit); - return namedDeclarations; + return result; + + function addDeclaration(declaration: Declaration) { + let name = getDeclarationName(declaration); + if (name) { + let declarations = getDeclarations(name); + declarations.push(declaration); + } + } + + function getDeclarations(name: string) { + return getProperty(result, name) || (result[name] = []); + } + + function getDeclarationName(declaration: Declaration) { + if (declaration.name) { + let result = getTextOfIdentifierOrLiteral(declaration.name); + if (result !== undefined) { + return result; + } + + if (declaration.name.kind === SyntaxKind.ComputedPropertyName) { + let expr = (declaration.name).expression; + if (expr.kind === SyntaxKind.PropertyAccessExpression) { + return (expr).name.text; + } + + return getTextOfIdentifierOrLiteral(expr); + } + } + + return undefined; + } + + function getTextOfIdentifierOrLiteral(node: Node) { + if (node) { + if (node.kind === SyntaxKind.Identifier || + node.kind === SyntaxKind.StringLiteral || + node.kind === SyntaxKind.NumericLiteral) { + + return (node).text; + } + } + + return undefined; + } function visit(node: Node): void { switch (node.kind) { @@ -788,22 +834,22 @@ module ts { case SyntaxKind.MethodDeclaration: case SyntaxKind.MethodSignature: let functionDeclaration = node; + let declarationName = getDeclarationName(functionDeclaration); - if (functionDeclaration.name && functionDeclaration.name.getFullWidth() > 0) { - let lastDeclaration = namedDeclarations.length > 0 ? - namedDeclarations[namedDeclarations.length - 1] : - undefined; + if (declarationName) { + let declarations = getDeclarations(declarationName); + let lastDeclaration = lastOrUndefined(declarations); // Check whether this declaration belongs to an "overload group". - if (lastDeclaration && functionDeclaration.symbol === lastDeclaration.symbol) { + if (lastDeclaration && functionDeclaration.parent === lastDeclaration.parent && functionDeclaration.symbol === lastDeclaration.symbol) { // Overwrite the last declaration if it was an overload // and this one is an implementation. if (functionDeclaration.body && !(lastDeclaration).body) { - namedDeclarations[namedDeclarations.length - 1] = functionDeclaration; + declarations[declarations.length - 1] = functionDeclaration; } } else { - namedDeclarations.push(functionDeclaration); + declarations.push(functionDeclaration); } forEachChild(node, visit); @@ -824,10 +870,8 @@ module ts { case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: case SyntaxKind.TypeLiteral: - if ((node).name) { - namedDeclarations.push(node); - } - // fall through + addDeclaration(node); + // fall through case SyntaxKind.Constructor: case SyntaxKind.VariableStatement: case SyntaxKind.VariableDeclarationList: @@ -858,7 +902,7 @@ module ts { case SyntaxKind.EnumMember: case SyntaxKind.PropertyDeclaration: case SyntaxKind.PropertySignature: - namedDeclarations.push(node); + addDeclaration(node); break; case SyntaxKind.ExportDeclaration: @@ -875,7 +919,7 @@ module ts { // Handle default import case e.g.: // import d from "mod"; if (importClause.name) { - namedDeclarations.push(importClause); + addDeclaration(importClause); } // Handle named bindings in imports e.g.: @@ -883,7 +927,7 @@ module ts { // import {a, b as B} from "mod"; if (importClause.namedBindings) { if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) { - namedDeclarations.push(importClause.namedBindings); + addDeclaration(importClause.namedBindings); } else { forEach((importClause.namedBindings).elements, visit); diff --git a/tests/baselines/reference/APISample_compile.js b/tests/baselines/reference/APISample_compile.js index 6c28c96a6d8..b604b5f950b 100644 --- a/tests/baselines/reference/APISample_compile.js +++ b/tests/baselines/reference/APISample_compile.js @@ -1562,7 +1562,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; getPositionOfLineAndCharacter(line: number, character: number): number; diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types index 635aff75628..3b66a5bfe29 100644 --- a/tests/baselines/reference/APISample_compile.types +++ b/tests/baselines/reference/APISample_compile.types @@ -5018,10 +5018,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - getNamedDeclarations(): Declaration[]; ->getNamedDeclarations : () => Declaration[] ->Declaration : Declaration - getLineAndCharacterOfPosition(pos: number): LineAndCharacter; >getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter >pos : number diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index f59fa91da14..5c2627041f0 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -1593,7 +1593,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; getPositionOfLineAndCharacter(line: number, character: number): number; diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types index 12f4ac12fdc..048eb9b5604 100644 --- a/tests/baselines/reference/APISample_linter.types +++ b/tests/baselines/reference/APISample_linter.types @@ -5164,10 +5164,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - getNamedDeclarations(): Declaration[]; ->getNamedDeclarations : () => Declaration[] ->Declaration : Declaration - getLineAndCharacterOfPosition(pos: number): LineAndCharacter; >getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter >pos : number diff --git a/tests/baselines/reference/APISample_linter.types.pull b/tests/baselines/reference/APISample_linter.types.pull index 0a2a7ea948a..e262cf3954b 100644 --- a/tests/baselines/reference/APISample_linter.types.pull +++ b/tests/baselines/reference/APISample_linter.types.pull @@ -5164,10 +5164,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - getNamedDeclarations(): Declaration[]; ->getNamedDeclarations : () => Declaration[] ->Declaration : Declaration - getLineAndCharacterOfPosition(pos: number): LineAndCharacter; >getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter >pos : number diff --git a/tests/baselines/reference/APISample_transform.js b/tests/baselines/reference/APISample_transform.js index 6bdf755ae12..b160719f947 100644 --- a/tests/baselines/reference/APISample_transform.js +++ b/tests/baselines/reference/APISample_transform.js @@ -1594,7 +1594,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; getPositionOfLineAndCharacter(line: number, character: number): number; diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types index 4bd248d70c7..4ac4e6da456 100644 --- a/tests/baselines/reference/APISample_transform.types +++ b/tests/baselines/reference/APISample_transform.types @@ -5114,10 +5114,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - getNamedDeclarations(): Declaration[]; ->getNamedDeclarations : () => Declaration[] ->Declaration : Declaration - getLineAndCharacterOfPosition(pos: number): LineAndCharacter; >getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter >pos : number diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index 3c11e27f0e1..a5ec8a9a8ab 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -1631,7 +1631,6 @@ declare module "typescript" { getDocumentationComment(): SymbolDisplayPart[]; } interface SourceFile { - getNamedDeclarations(): Declaration[]; getLineAndCharacterOfPosition(pos: number): LineAndCharacter; getLineStarts(): number[]; getPositionOfLineAndCharacter(line: number, character: number): number; diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types index f38cdc9b1af..8166244a838 100644 --- a/tests/baselines/reference/APISample_watcher.types +++ b/tests/baselines/reference/APISample_watcher.types @@ -5287,10 +5287,6 @@ declare module "typescript" { interface SourceFile { >SourceFile : SourceFile - getNamedDeclarations(): Declaration[]; ->getNamedDeclarations : () => Declaration[] ->Declaration : Declaration - getLineAndCharacterOfPosition(pos: number): LineAndCharacter; >getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter >pos : number diff --git a/tests/cases/fourslash/navigationItemsOverloads2.ts b/tests/cases/fourslash/navigationItemsOverloads2.ts index 2c33ef65f0d..98908c84e98 100644 --- a/tests/cases/fourslash/navigationItemsOverloads2.ts +++ b/tests/cases/fourslash/navigationItemsOverloads2.ts @@ -8,5 +8,5 @@ ////interface I { //// interfaceMethodSignature(b: boolean): boolean; ////} - +debugger; verify.navigationItemsListCount(2, "interfaceMethodSignature", "exact"); diff --git a/tests/cases/fourslash/navigationItemsOverloadsBroken1.ts b/tests/cases/fourslash/navigationItemsOverloadsBroken1.ts index d2a9ec8e25f..21b7d33dd41 100644 --- a/tests/cases/fourslash/navigationItemsOverloadsBroken1.ts +++ b/tests/cases/fourslash/navigationItemsOverloadsBroken1.ts @@ -4,7 +4,7 @@ ////function overload1(b: boolean): boolean; ////function overload1(b: number): boolean; //// -////var heyImNotInterruptingAnythingAmI = '?'; +////var x= '?'; //// ////function overload1(f: typeof overload): boolean; ////function overload1(x: any, b = (function overload() { return false })): boolean { @@ -15,7 +15,7 @@ ////function overload2(b: boolean): boolean; ////function overload2(b: number): boolean; //// -////function iJustRuinEverything(x: any, b = (function overload() { return false })): boolean { +////function y(x: any, b = (function overload() { return false })): boolean { //// throw overload; ////} //// @@ -24,6 +24,6 @@ //// throw overload; ////} -verify.navigationItemsListCount(2, "overload1", "exact"); -verify.navigationItemsListCount(2, "overload2", "exact"); -verify.navigationItemsListCount(4, "overload", "prefix"); \ No newline at end of file +verify.navigationItemsListCount(1, "overload1", "exact"); +verify.navigationItemsListCount(1, "overload2", "exact"); +verify.navigationItemsListCount(2, "overload", "prefix"); \ No newline at end of file From 1178e84a68268728cd1c9703562c5af0aa17e060 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Fri, 3 Apr 2015 16:50:32 -0700 Subject: [PATCH 02/64] Don't cache the typechecker at the LS level. Just get it when needed from the program. --- src/services/services.ts | 111 +++++++++--------- src/services/signatureHelp.ts | 4 +- .../fourslash/definitionNameOnEnumMember.ts | 1 + 3 files changed, 61 insertions(+), 55 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 67d799f62f0..5a200489db6 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2284,8 +2284,6 @@ module ts { let ruleProvider: formatting.RulesProvider; let program: Program; - // this checker is used to answer all LS questions except errors - let typeInfoResolver: TypeChecker; let useCaseSensitivefileNames = false; let cancellationToken = new CancellationTokenObject(host.getCancellationToken && host.getCancellationToken()); @@ -2367,8 +2365,10 @@ module ts { } program = newProgram; - typeInfoResolver = program.getTypeChecker(); + // Make sure all the nodes in the program are both bound, and have their parent + // pointers set property. + program.getTypeChecker(); return; function getOrCreateSourceFile(fileName: string): SourceFile { @@ -2452,15 +2452,8 @@ module ts { return program; } - /** - * Clean up any semantic caches that are not needed. - * The host can call this method if it wants to jettison unused memory. - * We will just dump the typeChecker and recreate a new one. this should have the effect of destroying all the semantic caches. - */ function cleanupSemanticCache(): void { - if (program) { - typeInfoResolver = program.getTypeChecker(); - } + // TODO: Should we jettison the program (or it's type checker) here? } function dispose(): void { @@ -2728,32 +2721,8 @@ module ts { return unescapeIdentifier(displayName); } - function createCompletionEntry(symbol: Symbol, typeChecker: TypeChecker, location: Node): CompletionEntry { - // Try to get a valid display name for this symbol, if we could not find one, then ignore it. - // We would like to only show things that can be added after a dot, so for instance numeric properties can - // not be accessed with a dot (a.1 <- invalid) - let displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true); - if (!displayName) { - return undefined; - } - - // TODO(drosen): Right now we just permit *all* semantic meanings when calling - // 'getSymbolKind' which is permissible given that it is backwards compatible; but - // really we should consider passing the meaning for the node so that we don't report - // that a suggestion for a value is an interface. We COULD also just do what - // 'getSymbolModifiers' does, which is to use the first declaration. - - // Use a 'sortText' of 0' so that all symbol completion entries come before any other - // entries (like JavaScript identifier entries). - return { - name: displayName, - kind: getSymbolKind(symbol, typeChecker, location), - kindModifiers: getSymbolModifiers(symbol), - sortText: "0", - }; - } - function getCompletionData(fileName: string, position: number) { + let typeInfoResolver = program.getTypeChecker(); let syntacticStart = new Date().getTime(); let sourceFile = getValidSourceFile(fileName); @@ -3307,6 +3276,31 @@ module ts { return entries; } + function createCompletionEntry(symbol: Symbol, location: Node): CompletionEntry { + // Try to get a valid display name for this symbol, if we could not find one, then ignore it. + // We would like to only show things that can be added after a dot, so for instance numeric properties can + // not be accessed with a dot (a.1 <- invalid) + let displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true); + if (!displayName) { + return undefined; + } + + // TODO(drosen): Right now we just permit *all* semantic meanings when calling + // 'getSymbolKind' which is permissible given that it is backwards compatible; but + // really we should consider passing the meaning for the node so that we don't report + // that a suggestion for a value is an interface. We COULD also just do what + // 'getSymbolModifiers' does, which is to use the first declaration. + + // Use a 'sortText' of 0' so that all symbol completion entries come before any other + // entries (like JavaScript identifier entries). + return { + name: displayName, + kind: getSymbolKind(symbol, location), + kindModifiers: getSymbolModifiers(symbol), + sortText: "0", + }; + } + function getCompletionEntriesFromSymbols(symbols: Symbol[]): CompletionEntry[] { let start = new Date().getTime(); var entries: CompletionEntry[] = []; @@ -3314,7 +3308,7 @@ module ts { if (symbols) { var nameToSymbol: Map = {}; for (let symbol of symbols) { - let entry = createCompletionEntry(symbol, typeInfoResolver, location); + let entry = createCompletionEntry(symbol, location); if (entry) { let id = escapeIdentifier(entry.name); if (!lookUp(nameToSymbol, id)) { @@ -3346,7 +3340,7 @@ module ts { let symbol = forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks:*/ false) === entryName ? s : undefined); if (symbol) { - let displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, typeInfoResolver, location, SemanticMeaning.All); + let displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, location, SemanticMeaning.All); return { name: entryName, kind: displayPartsDocumentationsAndSymbolKind.symbolKind, @@ -3373,7 +3367,7 @@ module ts { } // TODO(drosen): use contextual SemanticMeaning. - function getSymbolKind(symbol: Symbol, typeResolver: TypeChecker, location: Node): string { + function getSymbolKind(symbol: Symbol, location: Node): string { let flags = symbol.getFlags(); if (flags & SymbolFlags.Class) return ScriptElementKind.classElement; @@ -3382,7 +3376,7 @@ module ts { if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement; if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement; - let result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, typeResolver, location); + let result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags, location); if (result === ScriptElementKind.unknown) { if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement; if (flags & SymbolFlags.EnumMember) return ScriptElementKind.variableElement; @@ -3393,7 +3387,9 @@ module ts { return result; } - function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol: Symbol, flags: SymbolFlags, typeResolver: TypeChecker, location: Node) { + function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol: Symbol, flags: SymbolFlags, location: Node) { + let typeResolver = program.getTypeChecker(); + if (typeResolver.isUndefinedSymbol(symbol)) { return ScriptElementKind.variableElement; } @@ -3421,7 +3417,7 @@ module ts { if (flags & SymbolFlags.Property) { if (flags & SymbolFlags.UnionProperty) { // If union property is result of union of non method (property/accessors/variables), it is labeled as property - let unionPropertyKind = forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => { + let unionPropertyKind = forEach(typeResolver.getRootSymbols(symbol), rootSymbol => { let rootSymbolFlags = rootSymbol.getFlags(); if (rootSymbolFlags & (SymbolFlags.PropertyOrAccessor | SymbolFlags.Variable)) { return ScriptElementKind.memberVariableElement; @@ -3431,7 +3427,7 @@ module ts { if (!unionPropertyKind) { // If this was union of all methods, //make sure it has call signatures before we can label it as method - let typeOfUnionProperty = typeInfoResolver.getTypeOfSymbolAtLocation(symbol, location); + let typeOfUnionProperty = typeResolver.getTypeOfSymbolAtLocation(symbol, location); if (typeOfUnionProperty.getCallSignatures().length) { return ScriptElementKind.memberFunctionElement; } @@ -3464,15 +3460,16 @@ module ts { : ScriptElementKindModifier.none; } + // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol: Symbol, sourceFile: SourceFile, enclosingDeclaration: Node, - typeResolver: TypeChecker, location: Node, - // TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location - semanticMeaning = getMeaningFromLocation(location)) { + location: Node, semanticMeaning = getMeaningFromLocation(location)) { + + let typeResolver = program.getTypeChecker(); let displayParts: SymbolDisplayPart[] = []; let documentation: SymbolDisplayPart[]; let symbolFlags = symbol.flags; - let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, typeResolver, location); + let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, symbolFlags, location); let hasAddedSymbolInfo: boolean; let type: Type; @@ -3738,7 +3735,7 @@ module ts { } } else { - symbolKind = getSymbolKind(symbol, typeResolver, location); + symbolKind = getSymbolKind(symbol, location); } } @@ -3817,6 +3814,7 @@ module ts { return undefined; } + let typeInfoResolver = program.getTypeChecker(); let symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { // Try getting just type at this position and show @@ -3842,7 +3840,7 @@ module ts { return undefined; } - let displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node); + let displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), node); return { kind: displayPartsDocumentationsAndKind.symbolKind, kindModifiers: getSymbolModifiers(symbol), @@ -3898,6 +3896,7 @@ module ts { return undefined; } + let typeInfoResolver = program.getTypeChecker(); let symbol = typeInfoResolver.getSymbolAtLocation(node); // Could not find a symbol e.g. node is string or number keyword, @@ -3929,7 +3928,7 @@ module ts { } let shorthandDeclarations = shorthandSymbol.getDeclarations(); - let shorthandSymbolKind = getSymbolKind(shorthandSymbol, typeInfoResolver, node); + let shorthandSymbolKind = getSymbolKind(shorthandSymbol, node); let shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); let shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); return map(shorthandDeclarations, @@ -3939,7 +3938,7 @@ module ts { let result: DefinitionInfo[] = []; let declarations = symbol.getDeclarations(); let symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol - let symbolKind = getSymbolKind(symbol, typeInfoResolver, node); + let symbolKind = getSymbolKind(symbol, node); let containerSymbol = symbol.parent; let containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : ""; @@ -4609,6 +4608,8 @@ module ts { } function getReferencesForNode(node: Node, sourceFiles: SourceFile[], searchOnlyInCurrentFile: boolean, findInStrings: boolean, findInComments: boolean): ReferencedSymbol[]{ + let typeInfoResolver = program.getTypeChecker(); + // Labels if (isLabelName(node)) { if (isJumpStatementTarget(node)) { @@ -4689,7 +4690,7 @@ module ts { return result; function getDefinition(symbol: Symbol): DefinitionInfo { - let info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), typeInfoResolver, node); + let info = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, node.getSourceFile(), getContainerNode(node), node); let name = map(info.displayParts, p => p.text).join(""); let declarations = symbol.declarations; if (!declarations || declarations.length === 0) { @@ -5615,7 +5616,7 @@ module ts { let sourceFile = getValidSourceFile(fileName); - return SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken); + return SignatureHelp.getSignatureHelpItems(program, sourceFile, position, cancellationToken); } /// Syntactic features @@ -5696,6 +5697,7 @@ module ts { synchronizeHostData(); let sourceFile = getValidSourceFile(fileName); + let typeInfoResolver = program.getTypeChecker(); let result: ClassifiedSpan[] = []; processNode(sourceFile); @@ -6230,6 +6232,7 @@ module ts { synchronizeHostData(); let sourceFile = getValidSourceFile(fileName); + let typeInfoResolver = program.getTypeChecker(); let node = getTouchingWord(sourceFile, position); @@ -6252,7 +6255,7 @@ module ts { } } - let kind = getSymbolKind(symbol, typeInfoResolver, node); + let kind = getSymbolKind(symbol, node); if (kind) { return { canRename: true, diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 419d4819ba6..e7b88e3a2fd 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -178,7 +178,9 @@ module ts.SignatureHelp { argumentCount: number; } - export function getSignatureHelpItems(sourceFile: SourceFile, position: number, typeInfoResolver: TypeChecker, cancellationToken: CancellationTokenObject): SignatureHelpItems { + export function getSignatureHelpItems(program: Program, sourceFile: SourceFile, position: number, cancellationToken: CancellationTokenObject): SignatureHelpItems { + let typeInfoResolver = program.getTypeChecker(); + // Decide whether to show signature help let startingToken = findTokenOnLeftOfPosition(sourceFile, position); if (!startingToken) { diff --git a/tests/cases/fourslash/definitionNameOnEnumMember.ts b/tests/cases/fourslash/definitionNameOnEnumMember.ts index d88e1ef688e..3844d4a46f3 100644 --- a/tests/cases/fourslash/definitionNameOnEnumMember.ts +++ b/tests/cases/fourslash/definitionNameOnEnumMember.ts @@ -7,5 +7,6 @@ ////} ////var enumMember = e./*1*/thirdMember; +debugger; goTo.marker("1"); verify.verifyDefinitionsName("thirdMember", "e"); \ No newline at end of file From 766d34d0dcd6b467b4ac6d7283a3e817924546e9 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Fri, 3 Apr 2015 16:55:54 -0700 Subject: [PATCH 03/64] Rename variables to be consistent. --- src/services/services.ts | 130 +++++++++++++++++----------------- src/services/signatureHelp.ts | 18 ++--- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 5a200489db6..d23c5fa1dfb 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2722,7 +2722,7 @@ module ts { } function getCompletionData(fileName: string, position: number) { - let typeInfoResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); let syntacticStart = new Date().getTime(); let sourceFile = getValidSourceFile(fileName); @@ -2806,29 +2806,29 @@ module ts { isNewIdentifierLocation = false; if (node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName || node.kind === SyntaxKind.PropertyAccessExpression) { - let symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeChecker.getSymbolAtLocation(node); // This is an alias, follow what it aliases if (symbol && symbol.flags & SymbolFlags.Alias) { - symbol = typeInfoResolver.getAliasedSymbol(symbol); + symbol = typeChecker.getAliasedSymbol(symbol); } if (symbol && symbol.flags & SymbolFlags.HasExports) { // Extract module or enum members - let exportedSymbols = typeInfoResolver.getExportsOfModule(symbol); + let exportedSymbols = typeChecker.getExportsOfModule(symbol); forEach(exportedSymbols, symbol => { - if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) { + if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) { symbols.push(symbol); } }); } } - let type = typeInfoResolver.getTypeAtLocation(node); + let type = typeChecker.getTypeAtLocation(node); if (type) { // Filter private properties forEach(type.getApparentProperties(), symbol => { - if (typeInfoResolver.isValidPropertyAccess((node.parent), symbol.name)) { + if (typeChecker.isValidPropertyAccess((node.parent), symbol.name)) { symbols.push(symbol); } }); @@ -2842,12 +2842,12 @@ module ts { isMemberCompletion = true; isNewIdentifierLocation = true; - let contextualType = typeInfoResolver.getContextualType(containingObjectLiteral); + let contextualType = typeChecker.getContextualType(containingObjectLiteral); if (!contextualType) { return false; } - let contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType); + let contextualTypeMembers = typeChecker.getPropertiesOfType(contextualType); if (contextualTypeMembers && contextualTypeMembers.length > 0) { // Add filtered items to the completion list symbols = filterContextualMembersList(contextualTypeMembers, containingObjectLiteral.properties); @@ -2864,9 +2864,9 @@ module ts { let exports: Symbol[]; if (importDeclaration.moduleSpecifier) { - let moduleSpecifierSymbol = typeInfoResolver.getSymbolAtLocation(importDeclaration.moduleSpecifier); + let moduleSpecifierSymbol = typeChecker.getSymbolAtLocation(importDeclaration.moduleSpecifier); if (moduleSpecifierSymbol) { - exports = typeInfoResolver.getExportsOfModule(moduleSpecifierSymbol); + exports = typeChecker.getExportsOfModule(moduleSpecifierSymbol); } } @@ -2915,7 +2915,7 @@ module ts { /// TODO filter meaning based on the current context let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias; - symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings); + symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings); } return true; @@ -3388,12 +3388,12 @@ module ts { } function getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol: Symbol, flags: SymbolFlags, location: Node) { - let typeResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); - if (typeResolver.isUndefinedSymbol(symbol)) { + if (typeChecker.isUndefinedSymbol(symbol)) { return ScriptElementKind.variableElement; } - if (typeResolver.isArgumentsSymbol(symbol)) { + if (typeChecker.isArgumentsSymbol(symbol)) { return ScriptElementKind.localVariableElement; } if (flags & SymbolFlags.Variable) { @@ -3417,7 +3417,7 @@ module ts { if (flags & SymbolFlags.Property) { if (flags & SymbolFlags.UnionProperty) { // If union property is result of union of non method (property/accessors/variables), it is labeled as property - let unionPropertyKind = forEach(typeResolver.getRootSymbols(symbol), rootSymbol => { + let unionPropertyKind = forEach(typeChecker.getRootSymbols(symbol), rootSymbol => { let rootSymbolFlags = rootSymbol.getFlags(); if (rootSymbolFlags & (SymbolFlags.PropertyOrAccessor | SymbolFlags.Variable)) { return ScriptElementKind.memberVariableElement; @@ -3427,7 +3427,7 @@ module ts { if (!unionPropertyKind) { // If this was union of all methods, //make sure it has call signatures before we can label it as method - let typeOfUnionProperty = typeResolver.getTypeOfSymbolAtLocation(symbol, location); + let typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (typeOfUnionProperty.getCallSignatures().length) { return ScriptElementKind.memberFunctionElement; } @@ -3464,7 +3464,7 @@ module ts { function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol: Symbol, sourceFile: SourceFile, enclosingDeclaration: Node, location: Node, semanticMeaning = getMeaningFromLocation(location)) { - let typeResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); let displayParts: SymbolDisplayPart[] = []; let documentation: SymbolDisplayPart[]; @@ -3481,7 +3481,7 @@ module ts { } let signature: Signature; - type = typeResolver.getTypeOfSymbolAtLocation(symbol, location); + type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { if (location.parent && location.parent.kind === SyntaxKind.PropertyAccessExpression) { let right = (location.parent).name; @@ -3502,7 +3502,7 @@ module ts { if (callExpression) { let candidateSignatures: Signature[] = []; - signature = typeResolver.getResolvedSignature(callExpression, candidateSignatures); + signature = typeChecker.getResolvedSignature(callExpression, candidateSignatures); if (!signature && candidateSignatures.length) { // Use the first candidate: signature = candidateSignatures[0]; @@ -3551,7 +3551,7 @@ module ts { displayParts.push(spacePart()); } if (!(type.flags & TypeFlags.Anonymous)) { - displayParts.push.apply(displayParts, symbolToDisplayParts(typeResolver, type.symbol, enclosingDeclaration, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments)); + displayParts.push.apply(displayParts, symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments)); } addSignatureDisplayParts(signature, allSignatures, TypeFormatFlags.WriteArrowStyleSignature); break; @@ -3568,8 +3568,8 @@ module ts { // get the signature from the declaration and write it let functionDeclaration = location.parent; let allSignatures = functionDeclaration.kind === SyntaxKind.Constructor ? type.getConstructSignatures() : type.getCallSignatures(); - if (!typeResolver.isImplementationOfOverload(functionDeclaration)) { - signature = typeResolver.getSignatureFromDeclaration(functionDeclaration); + if (!typeChecker.isImplementationOfOverload(functionDeclaration)) { + signature = typeChecker.getSignatureFromDeclaration(functionDeclaration); } else { signature = allSignatures[0]; @@ -3612,7 +3612,7 @@ module ts { displayParts.push(spacePart()); displayParts.push(operatorPart(SyntaxKind.EqualsToken)); displayParts.push(spacePart()); - displayParts.push.apply(displayParts, typeToDisplayParts(typeResolver, typeResolver.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration)); + displayParts.push.apply(displayParts, typeToDisplayParts(typeChecker, typeChecker.getDeclaredTypeOfSymbol(symbol), enclosingDeclaration)); } if (symbolFlags & SymbolFlags.Enum) { addNewLineIfDisplayPartsExist(); @@ -3648,7 +3648,7 @@ module ts { else { // Method/function type parameter let signatureDeclaration = getDeclarationOfKind(symbol, SyntaxKind.TypeParameter).parent; - let signature = typeResolver.getSignatureFromDeclaration(signatureDeclaration); + let signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration); if (signatureDeclaration.kind === SyntaxKind.ConstructSignature) { displayParts.push(keywordPart(SyntaxKind.NewKeyword)); displayParts.push(spacePart()); @@ -3656,14 +3656,14 @@ module ts { else if (signatureDeclaration.kind !== SyntaxKind.CallSignature && signatureDeclaration.name) { addFullSymbolName(signatureDeclaration.symbol); } - displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, sourceFile, TypeFormatFlags.WriteTypeArgumentsOfSignature)); + displayParts.push.apply(displayParts, signatureToDisplayParts(typeChecker, signature, sourceFile, TypeFormatFlags.WriteTypeArgumentsOfSignature)); } } if (symbolFlags & SymbolFlags.EnumMember) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); let declaration = symbol.declarations[0]; if (declaration.kind === SyntaxKind.EnumMember) { - let constantValue = typeResolver.getConstantValue(declaration); + let constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(spacePart()); displayParts.push(operatorPart(SyntaxKind.EqualsToken)); @@ -3690,7 +3690,7 @@ module ts { displayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); } else { - let internalAliasSymbol = typeResolver.getSymbolAtLocation(importEqualsDeclaration.moduleReference); + let internalAliasSymbol = typeChecker.getSymbolAtLocation(importEqualsDeclaration.moduleReference); if (internalAliasSymbol) { displayParts.push(spacePart()); displayParts.push(operatorPart(SyntaxKind.EqualsToken)); @@ -3715,12 +3715,12 @@ module ts { // If the type is type parameter, format it specially if (type.symbol && type.symbol.flags & SymbolFlags.TypeParameter) { let typeParameterParts = mapToDisplayParts(writer => { - typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration); + typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(type, writer, enclosingDeclaration); }); displayParts.push.apply(displayParts, typeParameterParts); } else { - displayParts.push.apply(displayParts, typeToDisplayParts(typeResolver, type, enclosingDeclaration)); + displayParts.push.apply(displayParts, typeToDisplayParts(typeChecker, type, enclosingDeclaration)); } } else if (symbolFlags & SymbolFlags.Function || @@ -3752,7 +3752,7 @@ module ts { } function addFullSymbolName(symbol: Symbol, enclosingDeclaration?: Node) { - let fullSymbolDisplayParts = symbolToDisplayParts(typeResolver, symbol, enclosingDeclaration || sourceFile, /*meaning*/ undefined, + let fullSymbolDisplayParts = symbolToDisplayParts(typeChecker, symbol, enclosingDeclaration || sourceFile, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments | SymbolFormatFlags.UseOnlyExternalAliasing); displayParts.push.apply(displayParts, fullSymbolDisplayParts); } @@ -3784,7 +3784,7 @@ module ts { } function addSignatureDisplayParts(signature: Signature, allSignatures: Signature[], flags?: TypeFormatFlags) { - displayParts.push.apply(displayParts, signatureToDisplayParts(typeResolver, signature, enclosingDeclaration, flags | TypeFormatFlags.WriteTypeArgumentsOfSignature)); + displayParts.push.apply(displayParts, signatureToDisplayParts(typeChecker, signature, enclosingDeclaration, flags | TypeFormatFlags.WriteTypeArgumentsOfSignature)); if (allSignatures.length > 1) { displayParts.push(spacePart()); displayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); @@ -3799,7 +3799,7 @@ module ts { function writeTypeParametersOfSymbol(symbol: Symbol, enclosingDeclaration: Node) { let typeParameterParts = mapToDisplayParts(writer => { - typeResolver.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration); + typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(symbol, writer, enclosingDeclaration); }); displayParts.push.apply(displayParts, typeParameterParts); } @@ -3814,8 +3814,8 @@ module ts { return undefined; } - let typeInfoResolver = program.getTypeChecker(); - let symbol = typeInfoResolver.getSymbolAtLocation(node); + let typeChecker = program.getTypeChecker(); + let symbol = typeChecker.getSymbolAtLocation(node); if (!symbol) { // Try getting just type at this position and show switch (node.kind) { @@ -3825,13 +3825,13 @@ module ts { case SyntaxKind.ThisKeyword: case SyntaxKind.SuperKeyword: // For the identifiers/this/super etc get the type at position - let type = typeInfoResolver.getTypeAtLocation(node); + let type = typeChecker.getTypeAtLocation(node); if (type) { return { kind: ScriptElementKind.unknown, kindModifiers: ScriptElementKindModifier.none, textSpan: createTextSpan(node.getStart(), node.getWidth()), - displayParts: typeToDisplayParts(typeInfoResolver, type, getContainerNode(node)), + displayParts: typeToDisplayParts(typeChecker, type, getContainerNode(node)), documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined }; } @@ -3896,8 +3896,8 @@ module ts { return undefined; } - let typeInfoResolver = program.getTypeChecker(); - let symbol = typeInfoResolver.getSymbolAtLocation(node); + let typeChecker = program.getTypeChecker(); + let symbol = typeChecker.getSymbolAtLocation(node); // Could not find a symbol e.g. node is string or number keyword, // or the symbol was an internal symbol and does not have a declaration e.g. undefined symbol @@ -3912,7 +3912,7 @@ module ts { if (symbol.flags & SymbolFlags.Alias) { let declaration = symbol.declarations[0]; if (node.kind === SyntaxKind.Identifier && node.parent === declaration) { - symbol = typeInfoResolver.getAliasedSymbol(symbol); + symbol = typeChecker.getAliasedSymbol(symbol); } } @@ -3922,25 +3922,25 @@ module ts { // is performed at the location of property access, we would like to go to definition of the property in the short-hand // assignment. This case and others are handled by the following code. if (node.parent.kind === SyntaxKind.ShorthandPropertyAssignment) { - let shorthandSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); + let shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; } let shorthandDeclarations = shorthandSymbol.getDeclarations(); let shorthandSymbolKind = getSymbolKind(shorthandSymbol, node); - let shorthandSymbolName = typeInfoResolver.symbolToString(shorthandSymbol); - let shorthandContainerName = typeInfoResolver.symbolToString(symbol.parent, node); + let shorthandSymbolName = typeChecker.symbolToString(shorthandSymbol); + let shorthandContainerName = typeChecker.symbolToString(symbol.parent, node); return map(shorthandDeclarations, declaration => createDefinitionInfo(declaration, shorthandSymbolKind, shorthandSymbolName, shorthandContainerName)); } let result: DefinitionInfo[] = []; let declarations = symbol.getDeclarations(); - let symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol + let symbolName = typeChecker.symbolToString(symbol); // Do not get scoped name, just the name of the symbol let symbolKind = getSymbolKind(symbol, node); let containerSymbol = symbol.parent; - let containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : ""; + let containerName = containerSymbol ? typeChecker.symbolToString(containerSymbol, node) : ""; if (!tryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && !tryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { @@ -4608,7 +4608,7 @@ module ts { } function getReferencesForNode(node: Node, sourceFiles: SourceFile[], searchOnlyInCurrentFile: boolean, findInStrings: boolean, findInComments: boolean): ReferencedSymbol[]{ - let typeInfoResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); // Labels if (isLabelName(node)) { @@ -4632,7 +4632,7 @@ module ts { return getReferencesForSuperKeyword(node); } - let symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeChecker.getSymbolAtLocation(node); // Could not find a symbol e.g. unknown identifier if (!symbol) { @@ -4740,7 +4740,7 @@ module ts { return location.getText(); } - name = typeInfoResolver.symbolToString(symbol); + name = typeChecker.symbolToString(symbol); return stripQuotes(name); } @@ -4976,10 +4976,10 @@ module ts { return; } - let referenceSymbol = typeInfoResolver.getSymbolAtLocation(referenceLocation); + let referenceSymbol = typeChecker.getSymbolAtLocation(referenceLocation); if (referenceSymbol) { let referenceSymbolDeclaration = referenceSymbol.valueDeclaration; - let shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration); + let shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(referenceSymbolDeclaration); var relatedSymbol = getRelatedSymbol(searchSymbols, referenceSymbol, referenceLocation); if (relatedSymbol) { @@ -5204,7 +5204,7 @@ module ts { // If the symbol is an alias, add what it alaises to the list if (isImportOrExportSpecifierImportSymbol(symbol)) { - result.push(typeInfoResolver.getAliasedSymbol(symbol)); + result.push(typeChecker.getAliasedSymbol(symbol)); } // If the location is in a context sensitive location (i.e. in an object literal) try @@ -5212,7 +5212,7 @@ module ts { // type to the search set if (isNameOfPropertyAssignment(location)) { forEach(getPropertySymbolsFromContextualType(location), contextualSymbol => { - result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol)); + result.push.apply(result, typeChecker.getRootSymbols(contextualSymbol)); }); /* Because in short-hand property assignment, location has two meaning : property name and as value of the property @@ -5226,7 +5226,7 @@ module ts { * so that when matching with potential reference symbol, both symbols from property declaration and variable declaration * will be included correctly. */ - let shorthandValueSymbol = typeInfoResolver.getShorthandAssignmentValueSymbol(location.parent); + let shorthandValueSymbol = typeChecker.getShorthandAssignmentValueSymbol(location.parent); if (shorthandValueSymbol) { result.push(shorthandValueSymbol); } @@ -5234,7 +5234,7 @@ module ts { // If this is a union property, add all the symbols from all its source symbols in all unioned types. // If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list - forEach(typeInfoResolver.getRootSymbols(symbol), rootSymbol => { + forEach(typeChecker.getRootSymbols(symbol), rootSymbol => { if (rootSymbol !== symbol) { result.push(rootSymbol); } @@ -5264,9 +5264,9 @@ module ts { function getPropertySymbolFromTypeReference(typeReference: HeritageClauseElement) { if (typeReference) { - let type = typeInfoResolver.getTypeAtLocation(typeReference); + let type = typeChecker.getTypeAtLocation(typeReference); if (type) { - let propertySymbol = typeInfoResolver.getPropertyOfType(type, propertyName); + let propertySymbol = typeChecker.getPropertyOfType(type, propertyName); if (propertySymbol) { result.push(propertySymbol); } @@ -5286,7 +5286,7 @@ module ts { // If the reference symbol is an alias, check if what it is aliasing is one of the search // symbols. if (isImportOrExportSpecifierImportSymbol(referenceSymbol)) { - var aliasedSymbol = typeInfoResolver.getAliasedSymbol(referenceSymbol); + var aliasedSymbol = typeChecker.getAliasedSymbol(referenceSymbol); if (searchSymbols.indexOf(aliasedSymbol) >= 0) { return aliasedSymbol; } @@ -5297,13 +5297,13 @@ module ts { // compare to our searchSymbol if (isNameOfPropertyAssignment(referenceLocation)) { return forEach(getPropertySymbolsFromContextualType(referenceLocation), contextualSymbol => { - return forEach(typeInfoResolver.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0 ? s : undefined); + return forEach(typeChecker.getRootSymbols(contextualSymbol), s => searchSymbols.indexOf(s) >= 0 ? s : undefined); }); } // Unwrap symbols to get to the root (e.g. transient symbols as a result of widening) // Or a union property, use its underlying unioned symbols - return forEach(typeInfoResolver.getRootSymbols(referenceSymbol), rootSymbol => { + return forEach(typeChecker.getRootSymbols(referenceSymbol), rootSymbol => { // if it is in the list, then we are done if (searchSymbols.indexOf(rootSymbol) >= 0) { return rootSymbol; @@ -5324,7 +5324,7 @@ module ts { function getPropertySymbolsFromContextualType(node: Node): Symbol[] { if (isNameOfPropertyAssignment(node)) { let objectLiteral = node.parent.parent; - let contextualType = typeInfoResolver.getContextualType(objectLiteral); + let contextualType = typeChecker.getContextualType(objectLiteral); let name = (node).text; if (contextualType) { if (contextualType.flags & TypeFlags.Union) { @@ -5697,7 +5697,7 @@ module ts { synchronizeHostData(); let sourceFile = getValidSourceFile(fileName); - let typeInfoResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); let result: ClassifiedSpan[] = []; processNode(sourceFile); @@ -5750,7 +5750,7 @@ module ts { // Only walk into nodes that intersect the requested span. if (node && textSpanIntersectsWith(span, node.getStart(), node.getWidth())) { if (node.kind === SyntaxKind.Identifier && node.getWidth() > 0) { - let symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeChecker.getSymbolAtLocation(node); if (symbol) { let type = classifySymbol(symbol, getMeaningFromLocation(node)); if (type) { @@ -6232,13 +6232,13 @@ module ts { synchronizeHostData(); let sourceFile = getValidSourceFile(fileName); - let typeInfoResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); let node = getTouchingWord(sourceFile, position); // Can only rename an identifier. if (node && node.kind === SyntaxKind.Identifier) { - let symbol = typeInfoResolver.getSymbolAtLocation(node); + let symbol = typeChecker.getSymbolAtLocation(node); // Only allow a symbol to be renamed if it actually has at least one declaration. if (symbol) { @@ -6261,7 +6261,7 @@ module ts { canRename: true, localizedErrorMessage: undefined, displayName: symbol.name, - fullDisplayName: typeInfoResolver.getFullyQualifiedName(symbol), + fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kind: kind, kindModifiers: getSymbolModifiers(symbol), triggerSpan: createTextSpan(node.getStart(), node.getWidth()) diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index e7b88e3a2fd..93856912dce 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -179,7 +179,7 @@ module ts.SignatureHelp { } export function getSignatureHelpItems(program: Program, sourceFile: SourceFile, position: number, cancellationToken: CancellationTokenObject): SignatureHelpItems { - let typeInfoResolver = program.getTypeChecker(); + let typeChecker = program.getTypeChecker(); // Decide whether to show signature help let startingToken = findTokenOnLeftOfPosition(sourceFile, position); @@ -198,7 +198,7 @@ module ts.SignatureHelp { let call = argumentInfo.invocation; let candidates = []; - let resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates); + let resolvedSignature = typeChecker.getResolvedSignature(call, candidates); cancellationToken.throwIfCancellationRequested(); if (!candidates.length) { @@ -496,8 +496,8 @@ module ts.SignatureHelp { let invocation = argumentListInfo.invocation; let callTarget = getInvokedExpression(invocation) - let callTargetSymbol = typeInfoResolver.getSymbolAtLocation(callTarget); - let callTargetDisplayParts = callTargetSymbol && symbolToDisplayParts(typeInfoResolver, callTargetSymbol, /*enclosingDeclaration*/ undefined, /*meaning*/ undefined); + let callTargetSymbol = typeChecker.getSymbolAtLocation(callTarget); + let callTargetDisplayParts = callTargetSymbol && symbolToDisplayParts(typeChecker, callTargetSymbol, /*enclosingDeclaration*/ undefined, /*meaning*/ undefined); let items: SignatureHelpItem[] = map(candidates, candidateSignature => { let signatureHelpParameters: SignatureHelpParameter[]; let prefixDisplayParts: SymbolDisplayPart[] = []; @@ -513,12 +513,12 @@ module ts.SignatureHelp { signatureHelpParameters = typeParameters && typeParameters.length > 0 ? map(typeParameters, createSignatureHelpParameterForTypeParameter) : emptyArray; suffixDisplayParts.push(punctuationPart(SyntaxKind.GreaterThanToken)); let parameterParts = mapToDisplayParts(writer => - typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation)); + typeChecker.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(candidateSignature.parameters, writer, invocation)); suffixDisplayParts.push.apply(suffixDisplayParts, parameterParts); } else { let typeParameterParts = mapToDisplayParts(writer => - typeInfoResolver.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation)); + typeChecker.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(candidateSignature.typeParameters, writer, invocation)); prefixDisplayParts.push.apply(prefixDisplayParts, typeParameterParts); prefixDisplayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); @@ -528,7 +528,7 @@ module ts.SignatureHelp { } let returnTypeParts = mapToDisplayParts(writer => - typeInfoResolver.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation)); + typeChecker.getSymbolDisplayBuilder().buildReturnTypeDisplay(candidateSignature, writer, invocation)); suffixDisplayParts.push.apply(suffixDisplayParts, returnTypeParts); return { @@ -563,7 +563,7 @@ module ts.SignatureHelp { function createSignatureHelpParameterForParameter(parameter: Symbol): SignatureHelpParameter { let displayParts = mapToDisplayParts(writer => - typeInfoResolver.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation)); + typeChecker.getSymbolDisplayBuilder().buildParameterDisplay(parameter, writer, invocation)); let isOptional = hasQuestionToken(parameter.valueDeclaration); @@ -577,7 +577,7 @@ module ts.SignatureHelp { function createSignatureHelpParameterForTypeParameter(typeParameter: TypeParameter): SignatureHelpParameter { let displayParts = mapToDisplayParts(writer => - typeInfoResolver.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation)); + typeChecker.getSymbolDisplayBuilder().buildTypeParameterDisplay(typeParameter, writer, invocation)); return { name: typeParameter.symbol.name, From 78a79140b3a193af285416d4401b84c0180927d2 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 6 Apr 2015 14:10:04 -0700 Subject: [PATCH 04/64] Get sighelp for arbitrary functions working in .js files. --- src/services/outliningElementsCollector.ts | 1 + src/services/services.ts | 4 -- src/services/signatureHelp.ts | 46 ++++++++++++++++++++++ src/services/utilities.ts | 4 ++ 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts index 4c9dcedc7a4..25e7671bbe4 100644 --- a/src/services/outliningElementsCollector.ts +++ b/src/services/outliningElementsCollector.ts @@ -35,6 +35,7 @@ module ts { return isFunctionBlock(node) && node.parent.kind !== SyntaxKind.ArrowFunction; } + let depth = 0; let maxDepth = 20; function walk(n: Node): void { diff --git a/src/services/services.ts b/src/services/services.ts index d23c5fa1dfb..25ecee61fdd 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2470,10 +2470,6 @@ module ts { return program.getSyntacticDiagnostics(getValidSourceFile(fileName)); } - function isJavaScript(fileName: string) { - return fileExtensionIs(fileName, ".js"); - } - /** * getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors * If '-d' enabled, report both semantic and emitter errors diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 93856912dce..07b963d2461 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -202,11 +202,57 @@ module ts.SignatureHelp { cancellationToken.throwIfCancellationRequested(); if (!candidates.length) { + // We didn't have any sig help items produced by the TS compiler. If this is a JS + // file, then see if we can figure out anything better. + if (isJavaScript(sourceFile.fileName)) { + return createJavaScriptSignatureHelpItems(argumentInfo); + } + return undefined; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); + function createJavaScriptSignatureHelpItems(argumentInfo: ArgumentListInfo): SignatureHelpItems { + if (argumentInfo.invocation.kind !== SyntaxKind.CallExpression) { + return undefined; + } + + // See if we can find some symbol with the call expression name that has call signatures. + let callExpression = argumentInfo.invocation; + let expression = callExpression.expression; + let name = expression.kind === SyntaxKind.Identifier + ? expression + : expression.kind === SyntaxKind.PropertyAccessExpression + ? (expression).name + : undefined; + + if (!name || !name.text) { + return undefined; + } + + let typeChecker = program.getTypeChecker(); + for (let sourceFile of program.getSourceFiles()) { + let nameToDeclarations = sourceFile.getNamedDeclarations(); + let declarations = getProperty(nameToDeclarations, name.text); + + if (declarations) { + for (let declaration of declarations) { + let symbol = declaration.symbol; + if (symbol) { + let type = typeChecker.getTypeOfSymbolAtLocation(symbol, declaration); + if (type) { + let callSignatures = type.getCallSignatures(); + if (callSignatures && callSignatures.length) { + return createSignatureHelpItems(callSignatures, callSignatures[0], argumentInfo); + } + } + } + } + } + } + } + /** * Returns relevant information for the argument list and the current argument if we are * in the argument of an invocation; returns undefined otherwise. diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 719aa658724..5ad392c5a6c 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -650,4 +650,8 @@ module ts { typechecker.getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); }); } + + export function isJavaScript(fileName: string) { + return fileExtensionIs(fileName, ".js"); + } } \ No newline at end of file From 0c95b0db43aeecf58c7874ef6b0eb46f411a4d62 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Fri, 10 Apr 2015 23:00:50 +0900 Subject: [PATCH 05/64] formattingOnChainedCallbacks --- .../fourslash/formattingOnChainedCallbacks.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/cases/fourslash/formattingOnChainedCallbacks.ts diff --git a/tests/cases/fourslash/formattingOnChainedCallbacks.ts b/tests/cases/fourslash/formattingOnChainedCallbacks.ts new file mode 100644 index 00000000000..da660476771 --- /dev/null +++ b/tests/cases/fourslash/formattingOnChainedCallbacks.ts @@ -0,0 +1,34 @@ +////Promise +//// .resolve() +//// .then(() => {/*1*/""/*2*/ +////}).then(() => {/*3*/ +////})/*semi1*//*semi2*/ + +////function foo() { +//// return Promise.resolve() +//// .then(function () { +//// ""/*a*/ +//// })/*b*/ +////} + +goTo.marker('1'); +edit.insertLine(''); +goTo.marker('2'); +verify.currentLineContentIs(' ""'); +goTo.marker('3'); +edit.insertLine(''); +verify.currentLineContentIs(' }).then(() => {'); + +goTo.marker("semi1"); +edit.insert(';'); +verify.currentLineContentIs(' });'); +goTo.marker("semi2"); +edit.insert(';'); +verify.currentLineContentIs(' });;'); + +goTo.marker('a'); +edit.insert(';'); +verify.currentLineContentIs(' "";'); +goTo.marker('b'); +edit.insert(';'); +verify.currentLineContentIs(' });'); \ No newline at end of file From 5543f646a07e8d4cd2d6199f40a123eaf757008b Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 11 Apr 2015 12:11:28 +0900 Subject: [PATCH 06/64] formattingOnChainedCallbacks (passing) --- .../fourslash/formattingOnChainedCallbacks.ts | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tests/cases/fourslash/formattingOnChainedCallbacks.ts b/tests/cases/fourslash/formattingOnChainedCallbacks.ts index da660476771..0d72364d506 100644 --- a/tests/cases/fourslash/formattingOnChainedCallbacks.ts +++ b/tests/cases/fourslash/formattingOnChainedCallbacks.ts @@ -1,8 +1,10 @@ -////Promise +/// + +////Promise //// .resolve() //// .then(() => {/*1*/""/*2*/ -////}).then(() => {/*3*/ -////})/*semi1*//*semi2*/ +////}).then(() => {/*3*//*4*/ +////})/*semi1*/ /*semi2*/ ////function foo() { //// return Promise.resolve() @@ -14,14 +16,17 @@ goTo.marker('1'); edit.insertLine(''); goTo.marker('2'); -verify.currentLineContentIs(' ""'); -goTo.marker('3'); +// Expected, with bug 1888: verify.currentLineContentIs(' ""'); +verify.currentLineContentIs(' ""'); +goTo.marker('4'); edit.insertLine(''); +goTo.marker('3'); verify.currentLineContentIs(' }).then(() => {'); goTo.marker("semi1"); edit.insert(';'); -verify.currentLineContentIs(' });'); +// Expected, with bug 1888: verify.currentLineContentIs(' });'); +verify.currentLineContentIs('}); '); goTo.marker("semi2"); edit.insert(';'); verify.currentLineContentIs(' });;'); @@ -31,4 +36,5 @@ edit.insert(';'); verify.currentLineContentIs(' "";'); goTo.marker('b'); edit.insert(';'); -verify.currentLineContentIs(' });'); \ No newline at end of file +// Expected, with bug 1888: verify.currentLineContentIs(' });'); +verify.currentLineContentIs(' });'); \ No newline at end of file From e8ee5005390b9434f4608c57a9a25f7d338ec848 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sun, 12 Apr 2015 10:35:57 -0700 Subject: [PATCH 07/64] Consistently reduce union types in property access --- src/compiler/checker.ts | 51 +++++++++++-------- src/compiler/types.ts | 1 + ...onEntryForPropertyFromUnionOfModuleType.ts | 2 + .../goToDefinitionUnionTypeProperty2.ts | 4 +- 4 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3c0bf39f1fa..1465f1ab51b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2846,16 +2846,17 @@ module ts { } function getPropertiesOfType(type: Type): Symbol[] { - if (type.flags & TypeFlags.Union) { - return getPropertiesOfUnionType(type); - } - return getPropertiesOfObjectType(getApparentType(type)); + type = getApparentType(type); + return type.flags & TypeFlags.Union ? getPropertiesOfUnionType(type) : getPropertiesOfObjectType(type); } // For a type parameter, return the base constraint of the type parameter. For the string, number, // boolean, and symbol primitive types, return the corresponding object types. Otherwise return the // type itself. Note that the apparent type of a union type is the union type itself. function getApparentType(type: Type): Type { + if (type.flags & TypeFlags.Union) { + type = getReducedTypeOfUnionType(type); + } if (type.flags & TypeFlags.TypeParameter) { do { type = getConstraintOfTypeParameter(type); @@ -2928,27 +2929,25 @@ module ts { // necessary, maps primitive types and type parameters are to their apparent types, and augments with properties from // Object and Function as appropriate. function getPropertyOfType(type: Type, name: string): Symbol { + type = getApparentType(type); + if (type.flags & TypeFlags.ObjectType) { + let resolved = resolveObjectOrUnionTypeMembers(type); + if (hasProperty(resolved.members, name)) { + let symbol = resolved.members[name]; + if (symbolIsValue(symbol)) { + return symbol; + } + } + if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) { + let symbol = getPropertyOfObjectType(globalFunctionType, name); + if (symbol) return symbol; + } + return getPropertyOfObjectType(globalObjectType, name); + } if (type.flags & TypeFlags.Union) { return getPropertyOfUnionType(type, name); } - if (!(type.flags & TypeFlags.ObjectType)) { - type = getApparentType(type); - if (!(type.flags & TypeFlags.ObjectType)) { - return undefined; - } - } - let resolved = resolveObjectOrUnionTypeMembers(type); - if (hasProperty(resolved.members, name)) { - let symbol = resolved.members[name]; - if (symbolIsValue(symbol)) { - return symbol; - } - } - if (resolved === anyFunctionType || resolved.callSignatures.length || resolved.constructSignatures.length) { - let symbol = getPropertyOfObjectType(globalFunctionType, name); - if (symbol) return symbol; - } - return getPropertyOfObjectType(globalObjectType, name); + return undefined; } function getSignaturesOfObjectOrUnionType(type: Type, kind: SignatureKind): Signature[] { @@ -3526,10 +3525,18 @@ module ts { if (!type) { type = unionTypes[id] = createObjectType(TypeFlags.Union | getWideningFlagsOfTypes(sortedTypes)); type.types = sortedTypes; + type.reducedType = noSubtypeReduction ? undefined : type; } return type; } + function getReducedTypeOfUnionType(type: UnionType): Type { + if (!type.reducedType) { + type.reducedType = getUnionType(type.types); + } + return type.reducedType; + } + function getTypeFromUnionTypeNode(node: UnionTypeNode): Type { let links = getNodeLinks(node); if (!links.resolvedType) { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index d24ee45e21e..e5dc3dc3306 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1458,6 +1458,7 @@ module ts { export interface UnionType extends Type { types: Type[]; // Constituent types + reducedType: Type; // Reduced union type (all subtypes removed) resolvedProperties: SymbolTable; // Cache of resolved properties } diff --git a/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts b/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts index 1e072acd1fa..a9205b97f1f 100644 --- a/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts +++ b/tests/cases/fourslash/completionEntryForPropertyFromUnionOfModuleType.ts @@ -2,9 +2,11 @@ ////module E { //// export var n = 1; +//// export var x = 0; ////} ////module F { //// export var n = 1; +//// export var y = 0; ////} ////var q: typeof E | typeof F; ////var j = q./*1*/ diff --git a/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts b/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts index 674d5f4b623..0e18e543ec3 100644 --- a/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts +++ b/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts @@ -19,8 +19,8 @@ goTo.marker("propertyReference"); verify.definitionCountIs(2); goTo.definition(0); -verify.caretAtMarker("propertyDefinition2"); +verify.caretAtMarker("propertyDefinition1"); goTo.marker("propertyReference"); goTo.definition(1); -verify.caretAtMarker("propertyDefinition1"); +verify.caretAtMarker("propertyDefinition2"); From b7408fa0b4357171c874dcb91019a61cb9c4b625 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sun, 12 Apr 2015 10:37:14 -0700 Subject: [PATCH 08/64] Accepting new baselines --- tests/baselines/reference/APISample_compile.js | 1 + tests/baselines/reference/APISample_compile.types | 4 ++++ tests/baselines/reference/APISample_linter.js | 1 + tests/baselines/reference/APISample_linter.types | 4 ++++ tests/baselines/reference/APISample_transform.js | 1 + tests/baselines/reference/APISample_transform.types | 4 ++++ tests/baselines/reference/APISample_watcher.js | 1 + tests/baselines/reference/APISample_watcher.types | 4 ++++ 8 files changed, 20 insertions(+) diff --git a/tests/baselines/reference/APISample_compile.js b/tests/baselines/reference/APISample_compile.js index 3f0ba5f18cd..c5455d26bac 100644 --- a/tests/baselines/reference/APISample_compile.js +++ b/tests/baselines/reference/APISample_compile.js @@ -1149,6 +1149,7 @@ declare module "typescript" { } interface UnionType extends Type { types: Type[]; + reducedType: Type; resolvedProperties: SymbolTable; } interface ResolvedType extends ObjectType, UnionType { diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types index eff47a4cb7b..1df5b188d3a 100644 --- a/tests/baselines/reference/APISample_compile.types +++ b/tests/baselines/reference/APISample_compile.types @@ -3701,6 +3701,10 @@ declare module "typescript" { types: Type[]; >types : Type[] +>Type : Type + + reducedType: Type; +>reducedType : Type >Type : Type resolvedProperties: SymbolTable; diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index ab48f78affc..d9757de48a1 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -1180,6 +1180,7 @@ declare module "typescript" { } interface UnionType extends Type { types: Type[]; + reducedType: Type; resolvedProperties: SymbolTable; } interface ResolvedType extends ObjectType, UnionType { diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types index 600bf5c6adc..99d1405a244 100644 --- a/tests/baselines/reference/APISample_linter.types +++ b/tests/baselines/reference/APISample_linter.types @@ -3847,6 +3847,10 @@ declare module "typescript" { types: Type[]; >types : Type[] +>Type : Type + + reducedType: Type; +>reducedType : Type >Type : Type resolvedProperties: SymbolTable; diff --git a/tests/baselines/reference/APISample_transform.js b/tests/baselines/reference/APISample_transform.js index d40c078a150..019ff29148b 100644 --- a/tests/baselines/reference/APISample_transform.js +++ b/tests/baselines/reference/APISample_transform.js @@ -1181,6 +1181,7 @@ declare module "typescript" { } interface UnionType extends Type { types: Type[]; + reducedType: Type; resolvedProperties: SymbolTable; } interface ResolvedType extends ObjectType, UnionType { diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types index 4ea9c49d758..f977fbcc2be 100644 --- a/tests/baselines/reference/APISample_transform.types +++ b/tests/baselines/reference/APISample_transform.types @@ -3797,6 +3797,10 @@ declare module "typescript" { types: Type[]; >types : Type[] +>Type : Type + + reducedType: Type; +>reducedType : Type >Type : Type resolvedProperties: SymbolTable; diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index c53034c11d7..832ddc25b1f 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -1218,6 +1218,7 @@ declare module "typescript" { } interface UnionType extends Type { types: Type[]; + reducedType: Type; resolvedProperties: SymbolTable; } interface ResolvedType extends ObjectType, UnionType { diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types index 3903e169b4e..8ecc20e860c 100644 --- a/tests/baselines/reference/APISample_watcher.types +++ b/tests/baselines/reference/APISample_watcher.types @@ -3970,6 +3970,10 @@ declare module "typescript" { types: Type[]; >types : Type[] +>Type : Type + + reducedType: Type; +>reducedType : Type >Type : Type resolvedProperties: SymbolTable; From c91e2855caae4e7c4cb5ab77faaa70e1a9be7df3 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sun, 12 Apr 2015 10:52:20 -0700 Subject: [PATCH 09/64] Adding test --- .../baselines/reference/unionTypeReduction.js | 25 +++++++++++ .../reference/unionTypeReduction.types | 42 +++++++++++++++++++ .../types/union/unionTypeReduction.ts | 16 +++++++ 3 files changed, 83 insertions(+) create mode 100644 tests/baselines/reference/unionTypeReduction.js create mode 100644 tests/baselines/reference/unionTypeReduction.types create mode 100644 tests/cases/conformance/types/union/unionTypeReduction.ts diff --git a/tests/baselines/reference/unionTypeReduction.js b/tests/baselines/reference/unionTypeReduction.js new file mode 100644 index 00000000000..1c914489ecc --- /dev/null +++ b/tests/baselines/reference/unionTypeReduction.js @@ -0,0 +1,25 @@ +//// [unionTypeReduction.ts] +interface I2 { + (): number; + (q): boolean; +} + +interface I3 { + (): number; +} + +var i2: I2, i3: I3; + +var e1: I2 | I3; +var e2 = i2 || i3; // Type of e2 immediately reduced to I3 + +var r1 = e1(); // Type of e1 reduced to I3 upon accessing property or signature +var r2 = e2(); + + +//// [unionTypeReduction.js] +var i2, i3; +var e1; +var e2 = i2 || i3; // Type of e2 immediately reduced to I3 +var r1 = e1(); // Type of e1 reduced to I3 upon accessing property or signature +var r2 = e2(); diff --git a/tests/baselines/reference/unionTypeReduction.types b/tests/baselines/reference/unionTypeReduction.types new file mode 100644 index 00000000000..073d690162a --- /dev/null +++ b/tests/baselines/reference/unionTypeReduction.types @@ -0,0 +1,42 @@ +=== tests/cases/conformance/types/union/unionTypeReduction.ts === +interface I2 { +>I2 : I2 + + (): number; + (q): boolean; +>q : any +} + +interface I3 { +>I3 : I3 + + (): number; +} + +var i2: I2, i3: I3; +>i2 : I2 +>I2 : I2 +>i3 : I3 +>I3 : I3 + +var e1: I2 | I3; +>e1 : I2 | I3 +>I2 : I2 +>I3 : I3 + +var e2 = i2 || i3; // Type of e2 immediately reduced to I3 +>e2 : I3 +>i2 || i3 : I3 +>i2 : I2 +>i3 : I3 + +var r1 = e1(); // Type of e1 reduced to I3 upon accessing property or signature +>r1 : number +>e1() : number +>e1 : I2 | I3 + +var r2 = e2(); +>r2 : number +>e2() : number +>e2 : I3 + diff --git a/tests/cases/conformance/types/union/unionTypeReduction.ts b/tests/cases/conformance/types/union/unionTypeReduction.ts new file mode 100644 index 00000000000..8bc3d1cdc8c --- /dev/null +++ b/tests/cases/conformance/types/union/unionTypeReduction.ts @@ -0,0 +1,16 @@ +interface I2 { + (): number; + (q): boolean; +} + +interface I3 { + (): number; +} + +var i2: I2, i3: I3; + +var e1: I2 | I3; +var e2 = i2 || i3; // Type of e2 immediately reduced to I3 + +var r1 = e1(); // Type of e1 reduced to I3 upon accessing property or signature +var r2 = e2(); From 27c1bb8ca55e5e0736c10d354d8e632682b01341 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 12 Apr 2015 12:12:55 -0700 Subject: [PATCH 10/64] Expose getDefaultLibFileName --- src/compiler/core.ts | 4 ---- src/compiler/program.ts | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 61fe2c7209a..80840068332 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -659,10 +659,6 @@ module ts { "\u0085": "\\u0085" // nextLine }; - export function getDefaultLibFileName(options: CompilerOptions): string { - return options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts"; - } - export interface ObjectAllocator { getNodeConstructor(kind: SyntaxKind): new () => Node; getSymbolConstructor(): new (flags: SymbolFlags, name: string) => Symbol; diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 46466478029..63eb3af784c 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -137,6 +137,10 @@ module ts { } } + export function getDefaultLibFileName(options: CompilerOptions): string { + return options.target === ScriptTarget.ES6 ? "lib.es6.d.ts" : "lib.d.ts"; + } + export function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program { let program: Program; let files: SourceFile[] = []; From b6bb4ff67ffe30a783a9ef6a3b644325623427fd Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 12 Apr 2015 12:30:17 -0700 Subject: [PATCH 11/64] expose text span helpers --- src/compiler/utilities.ts | 430 +++++++++++++++++++------------------- 1 file changed, 214 insertions(+), 216 deletions(-) diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index b0c50fc7f66..533a8b25e4f 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -271,7 +271,6 @@ module ts { }; } - /* @internal */ export function getSpanOfTokenAtPosition(sourceFile: SourceFile, pos: number): TextSpan { let scanner = createScanner(sourceFile.languageVersion, /*skipTrivia*/ true, sourceFile.text); scanner.setTextPos(pos); @@ -408,7 +407,6 @@ module ts { export let fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/ - // Warning: This has the same semantics as the forEach family of functions, // in that traversal terminates in the event that 'visitor' supplies a truthy value. export function forEachReturnStatement(body: Block, visitor: (stmt: ReturnStatement) => T): T { @@ -439,7 +437,6 @@ module ts { } } - /* @internal */ export function isVariableLike(node: Node): boolean { if (node) { switch (node.kind) { @@ -1151,218 +1148,7 @@ module ts { } return false; } - - export function textSpanEnd(span: TextSpan) { - return span.start + span.length - } - - export function textSpanIsEmpty(span: TextSpan) { - return span.length === 0 - } - - export function textSpanContainsPosition(span: TextSpan, position: number) { - return position >= span.start && position < textSpanEnd(span); - } - - // Returns true if 'span' contains 'other'. - export function textSpanContainsTextSpan(span: TextSpan, other: TextSpan) { - return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); - } - - export function textSpanOverlapsWith(span: TextSpan, other: TextSpan) { - let overlapStart = Math.max(span.start, other.start); - let overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); - return overlapStart < overlapEnd; - } - - export function textSpanOverlap(span1: TextSpan, span2: TextSpan) { - let overlapStart = Math.max(span1.start, span2.start); - let overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (overlapStart < overlapEnd) { - return createTextSpanFromBounds(overlapStart, overlapEnd); - } - return undefined; - } - - export function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan) { - return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start - } - - export function textSpanIntersectsWith(span: TextSpan, start: number, length: number) { - let end = start + length; - return start <= textSpanEnd(span) && end >= span.start; - } - - export function textSpanIntersectsWithPosition(span: TextSpan, position: number) { - return position <= textSpanEnd(span) && position >= span.start; - } - - export function textSpanIntersection(span1: TextSpan, span2: TextSpan) { - let intersectStart = Math.max(span1.start, span2.start); - let intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (intersectStart <= intersectEnd) { - return createTextSpanFromBounds(intersectStart, intersectEnd); - } - return undefined; - } - - export function createTextSpan(start: number, length: number): TextSpan { - if (start < 0) { - throw new Error("start < 0"); - } - if (length < 0) { - throw new Error("length < 0"); - } - - return { start, length }; - } - - export function createTextSpanFromBounds(start: number, end: number) { - return createTextSpan(start, end - start); - } - - export function textChangeRangeNewSpan(range: TextChangeRange) { - return createTextSpan(range.span.start, range.newLength); - } - - export function textChangeRangeIsUnchanged(range: TextChangeRange) { - return textSpanIsEmpty(range.span) && range.newLength === 0; - } - - export function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange { - if (newLength < 0) { - throw new Error("newLength < 0"); - } - - return { span, newLength }; - } - - export let unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); - - /** - * Called to merge all the changes that occurred across several versions of a script snapshot - * into a single change. i.e. if a user keeps making successive edits to a script we will - * have a text change from V1 to V2, V2 to V3, ..., Vn. - * - * This function will then merge those changes into a single change range valid between V1 and - * Vn. - */ - export function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange { - if (changes.length === 0) { - return unchangedTextChangeRange; - } - - if (changes.length === 1) { - return changes[0]; - } - - // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } - // as it makes things much easier to reason about. - let change0 = changes[0]; - - let oldStartN = change0.span.start; - let oldEndN = textSpanEnd(change0.span); - let newEndN = oldStartN + change0.newLength; - - for (let i = 1; i < changes.length; i++) { - let nextChange = changes[i]; - - // Consider the following case: - // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting - // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. - // i.e. the span starting at 30 with length 30 is increased to length 40. - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------------------------------------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------------------------------------------------- - // | \ - // | \ - // T2 | \ - // | \ - // | \ - // ------------------------------------------------------------------------------------------------------- - // - // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial - // it's just the min of the old and new starts. i.e.: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------*------------------------------------------ - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ----------------------------------------$-------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // (Note the dots represent the newly inferrred start. - // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the - // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see - // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that - // means: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // --------------------------------------------------------------------------------*---------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // In other words (in this case), we're recognizing that the second edit happened after where the first edit - // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started - // that's the same as if we started at char 80 instead of 60. - // - // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter - // than pusing the first edit forward to match the second, we'll push the second edit forward to match the - // first. - // - // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange - // semantics: { { start: 10, length: 70 }, newLength: 60 } - // - // The math then works out as follows. - // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the - // final result like so: - // - // { - // oldStart3: Min(oldStart1, oldStart2), - // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), - // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) - // } - - let oldStart1 = oldStartN; - let oldEnd1 = oldEndN; - let newEnd1 = newEndN; - - let oldStart2 = nextChange.span.start; - let oldEnd2 = textSpanEnd(nextChange.span); - let newEnd2 = oldStart2 + nextChange.newLength; - - oldStartN = Math.min(oldStart1, oldStart2); - oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); - newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); - } - - return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), /*newLength:*/ newEndN - oldStartN); - } - + export function nodeStartsNewLexicalEnvironment(n: Node): boolean { return isFunctionLike(n) || n.kind === SyntaxKind.ModuleDeclaration || n.kind === SyntaxKind.SourceFile; } @@ -1379,7 +1165,6 @@ module ts { return node; } - /* @internal */ export function createDiagnosticCollection(): DiagnosticCollection { let nonFileDiagnostics: Diagnostic[] = []; let fileDiagnostics: Map = {}; @@ -1854,3 +1639,216 @@ module ts { return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & NodeFlags.Default) ? symbol.valueDeclaration.localSymbol : undefined; } } + +module ts { + export function textSpanEnd(span: TextSpan) { + return span.start + span.length + } + + export function textSpanIsEmpty(span: TextSpan) { + return span.length === 0 + } + + export function textSpanContainsPosition(span: TextSpan, position: number) { + return position >= span.start && position < textSpanEnd(span); + } + + // Returns true if 'span' contains 'other'. + export function textSpanContainsTextSpan(span: TextSpan, other: TextSpan) { + return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); + } + + export function textSpanOverlapsWith(span: TextSpan, other: TextSpan) { + let overlapStart = Math.max(span.start, other.start); + let overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + return overlapStart < overlapEnd; + } + + export function textSpanOverlap(span1: TextSpan, span2: TextSpan) { + let overlapStart = Math.max(span1.start, span2.start); + let overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (overlapStart < overlapEnd) { + return createTextSpanFromBounds(overlapStart, overlapEnd); + } + return undefined; + } + + export function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan) { + return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start + } + + export function textSpanIntersectsWith(span: TextSpan, start: number, length: number) { + let end = start + length; + return start <= textSpanEnd(span) && end >= span.start; + } + + export function textSpanIntersectsWithPosition(span: TextSpan, position: number) { + return position <= textSpanEnd(span) && position >= span.start; + } + + export function textSpanIntersection(span1: TextSpan, span2: TextSpan) { + let intersectStart = Math.max(span1.start, span2.start); + let intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (intersectStart <= intersectEnd) { + return createTextSpanFromBounds(intersectStart, intersectEnd); + } + return undefined; + } + + export function createTextSpan(start: number, length: number): TextSpan { + if (start < 0) { + throw new Error("start < 0"); + } + if (length < 0) { + throw new Error("length < 0"); + } + + return { start, length }; + } + + export function createTextSpanFromBounds(start: number, end: number) { + return createTextSpan(start, end - start); + } + + export function textChangeRangeNewSpan(range: TextChangeRange) { + return createTextSpan(range.span.start, range.newLength); + } + + export function textChangeRangeIsUnchanged(range: TextChangeRange) { + return textSpanIsEmpty(range.span) && range.newLength === 0; + } + + export function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange { + if (newLength < 0) { + throw new Error("newLength < 0"); + } + + return { span, newLength }; + } + + export let unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + + /** + * Called to merge all the changes that occurred across several versions of a script snapshot + * into a single change. i.e. if a user keeps making successive edits to a script we will + * have a text change from V1 to V2, V2 to V3, ..., Vn. + * + * This function will then merge those changes into a single change range valid between V1 and + * Vn. + */ + export function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange { + if (changes.length === 0) { + return unchangedTextChangeRange; + } + + if (changes.length === 1) { + return changes[0]; + } + + // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } + // as it makes things much easier to reason about. + let change0 = changes[0]; + + let oldStartN = change0.span.start; + let oldEndN = textSpanEnd(change0.span); + let newEndN = oldStartN + change0.newLength; + + for (let i = 1; i < changes.length; i++) { + let nextChange = changes[i]; + + // Consider the following case: + // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting + // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. + // i.e. the span starting at 30 with length 30 is increased to length 40. + // + // 0 10 20 30 40 50 60 70 80 90 100 + // ------------------------------------------------------------------------------------------------------- + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ------------------------------------------------------------------------------------------------------- + // | \ + // | \ + // T2 | \ + // | \ + // | \ + // ------------------------------------------------------------------------------------------------------- + // + // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial + // it's just the min of the old and new starts. i.e.: + // + // 0 10 20 30 40 50 60 70 80 90 100 + // ------------------------------------------------------------*------------------------------------------ + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ----------------------------------------$-------------------$------------------------------------------ + // . | \ + // . | \ + // T2 . | \ + // . | \ + // . | \ + // ----------------------------------------------------------------------*-------------------------------- + // + // (Note the dots represent the newly inferrred start. + // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the + // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see + // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that + // means: + // + // 0 10 20 30 40 50 60 70 80 90 100 + // --------------------------------------------------------------------------------*---------------------- + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ------------------------------------------------------------$------------------------------------------ + // . | \ + // . | \ + // T2 . | \ + // . | \ + // . | \ + // ----------------------------------------------------------------------*-------------------------------- + // + // In other words (in this case), we're recognizing that the second edit happened after where the first edit + // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started + // that's the same as if we started at char 80 instead of 60. + // + // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter + // than pusing the first edit forward to match the second, we'll push the second edit forward to match the + // first. + // + // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange + // semantics: { { start: 10, length: 70 }, newLength: 60 } + // + // The math then works out as follows. + // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the + // final result like so: + // + // { + // oldStart3: Min(oldStart1, oldStart2), + // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), + // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) + // } + + let oldStart1 = oldStartN; + let oldEnd1 = oldEndN; + let newEnd1 = newEndN; + + let oldStart2 = nextChange.span.start; + let oldEnd2 = textSpanEnd(nextChange.span); + let newEnd2 = oldStart2 + nextChange.newLength; + + oldStartN = Math.min(oldStart1, oldStart2); + oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); + newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); + } + + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), /*newLength:*/ newEndN - oldStartN); + } +} \ No newline at end of file From 095d11b2a9bfa2e8d5c06945571ab0d1175bb654 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Sun, 12 Apr 2015 12:31:49 -0700 Subject: [PATCH 12/64] Update LKG --- bin/tsc.js | 478 +++++++++++++++-------- bin/tsserver.js | 512 ++++++++++++++++--------- bin/typescript.d.ts | 29 ++ bin/typescript.js | 741 +++++++++++++++++++++++------------- bin/typescriptServices.d.ts | 29 ++ bin/typescriptServices.js | 741 +++++++++++++++++++++++------------- 6 files changed, 1643 insertions(+), 887 deletions(-) diff --git a/bin/tsc.js b/bin/tsc.js index 52ffd2b3b1b..83be107f8d1 100644 --- a/bin/tsc.js +++ b/bin/tsc.js @@ -600,10 +600,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" }; - function getDefaultLibFileName(options) { - return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; - } - ts.getDefaultLibFileName = getDefaultLibFileName; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -1076,6 +1072,12 @@ var ts; Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." }, A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, @@ -3383,7 +3385,7 @@ var ts; scanner.setTextPos(pos); scanner.scan(); var start = scanner.getTokenPos(); - return createTextSpanFromBounds(start, scanner.getTextPos()); + return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; function getErrorSpanForNode(sourceFile, node) { @@ -3392,7 +3394,7 @@ var ts; case 227: var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { - return createTextSpan(0, 0); + return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); case 198: @@ -3414,7 +3416,7 @@ var ts; var pos = nodeIsMissing(errorNode) ? errorNode.pos : ts.skipTrivia(sourceFile.text, errorNode.pos); - return createTextSpanFromBounds(pos, errorNode.end); + return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -4136,115 +4138,6 @@ var ts; return false; } ts.isModifier = isModifier; - function textSpanEnd(span) { - return span.start + span.length; - } - ts.textSpanEnd = textSpanEnd; - function textSpanIsEmpty(span) { - return span.length === 0; - } - ts.textSpanIsEmpty = textSpanIsEmpty; - function textSpanContainsPosition(span, position) { - return position >= span.start && position < textSpanEnd(span); - } - ts.textSpanContainsPosition = textSpanContainsPosition; - function textSpanContainsTextSpan(span, other) { - return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); - } - ts.textSpanContainsTextSpan = textSpanContainsTextSpan; - function textSpanOverlapsWith(span, other) { - var overlapStart = Math.max(span.start, other.start); - var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); - return overlapStart < overlapEnd; - } - ts.textSpanOverlapsWith = textSpanOverlapsWith; - function textSpanOverlap(span1, span2) { - var overlapStart = Math.max(span1.start, span2.start); - var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (overlapStart < overlapEnd) { - return createTextSpanFromBounds(overlapStart, overlapEnd); - } - return undefined; - } - ts.textSpanOverlap = textSpanOverlap; - function textSpanIntersectsWithTextSpan(span, other) { - return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; - } - ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; - function textSpanIntersectsWith(span, start, length) { - var end = start + length; - return start <= textSpanEnd(span) && end >= span.start; - } - ts.textSpanIntersectsWith = textSpanIntersectsWith; - function textSpanIntersectsWithPosition(span, position) { - return position <= textSpanEnd(span) && position >= span.start; - } - ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; - function textSpanIntersection(span1, span2) { - var intersectStart = Math.max(span1.start, span2.start); - var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (intersectStart <= intersectEnd) { - return createTextSpanFromBounds(intersectStart, intersectEnd); - } - return undefined; - } - ts.textSpanIntersection = textSpanIntersection; - function createTextSpan(start, length) { - if (start < 0) { - throw new Error("start < 0"); - } - if (length < 0) { - throw new Error("length < 0"); - } - return { start: start, length: length }; - } - ts.createTextSpan = createTextSpan; - function createTextSpanFromBounds(start, end) { - return createTextSpan(start, end - start); - } - ts.createTextSpanFromBounds = createTextSpanFromBounds; - function textChangeRangeNewSpan(range) { - return createTextSpan(range.span.start, range.newLength); - } - ts.textChangeRangeNewSpan = textChangeRangeNewSpan; - function textChangeRangeIsUnchanged(range) { - return textSpanIsEmpty(range.span) && range.newLength === 0; - } - ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; - function createTextChangeRange(span, newLength) { - if (newLength < 0) { - throw new Error("newLength < 0"); - } - return { span: span, newLength: newLength }; - } - ts.createTextChangeRange = createTextChangeRange; - ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); - function collapseTextChangeRangesAcrossMultipleVersions(changes) { - if (changes.length === 0) { - return ts.unchangedTextChangeRange; - } - if (changes.length === 1) { - return changes[0]; - } - var change0 = changes[0]; - var oldStartN = change0.span.start; - var oldEndN = textSpanEnd(change0.span); - var newEndN = oldStartN + change0.newLength; - for (var i = 1; i < changes.length; i++) { - var nextChange = changes[i]; - var oldStart1 = oldStartN; - var oldEnd1 = oldEndN; - var newEnd1 = newEndN; - var oldStart2 = nextChange.span.start; - var oldEnd2 = textSpanEnd(nextChange.span); - var newEnd2 = oldStart2 + nextChange.newLength; - oldStartN = Math.min(oldStart1, oldStart2); - oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); - newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); - } - return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); - } - ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function nodeStartsNewLexicalEnvironment(n) { return isFunctionLike(n) || n.kind === 205 || n.kind === 227; } @@ -4641,6 +4534,118 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +var ts; +(function (ts) { + function textSpanEnd(span) { + return span.start + span.length; + } + ts.textSpanEnd = textSpanEnd; + function textSpanIsEmpty(span) { + return span.length === 0; + } + ts.textSpanIsEmpty = textSpanIsEmpty; + function textSpanContainsPosition(span, position) { + return position >= span.start && position < textSpanEnd(span); + } + ts.textSpanContainsPosition = textSpanContainsPosition; + function textSpanContainsTextSpan(span, other) { + return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); + } + ts.textSpanContainsTextSpan = textSpanContainsTextSpan; + function textSpanOverlapsWith(span, other) { + var overlapStart = Math.max(span.start, other.start); + var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + return overlapStart < overlapEnd; + } + ts.textSpanOverlapsWith = textSpanOverlapsWith; + function textSpanOverlap(span1, span2) { + var overlapStart = Math.max(span1.start, span2.start); + var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (overlapStart < overlapEnd) { + return createTextSpanFromBounds(overlapStart, overlapEnd); + } + return undefined; + } + ts.textSpanOverlap = textSpanOverlap; + function textSpanIntersectsWithTextSpan(span, other) { + return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; + } + ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; + function textSpanIntersectsWith(span, start, length) { + var end = start + length; + return start <= textSpanEnd(span) && end >= span.start; + } + ts.textSpanIntersectsWith = textSpanIntersectsWith; + function textSpanIntersectsWithPosition(span, position) { + return position <= textSpanEnd(span) && position >= span.start; + } + ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; + function textSpanIntersection(span1, span2) { + var intersectStart = Math.max(span1.start, span2.start); + var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (intersectStart <= intersectEnd) { + return createTextSpanFromBounds(intersectStart, intersectEnd); + } + return undefined; + } + ts.textSpanIntersection = textSpanIntersection; + function createTextSpan(start, length) { + if (start < 0) { + throw new Error("start < 0"); + } + if (length < 0) { + throw new Error("length < 0"); + } + return { start: start, length: length }; + } + ts.createTextSpan = createTextSpan; + function createTextSpanFromBounds(start, end) { + return createTextSpan(start, end - start); + } + ts.createTextSpanFromBounds = createTextSpanFromBounds; + function textChangeRangeNewSpan(range) { + return createTextSpan(range.span.start, range.newLength); + } + ts.textChangeRangeNewSpan = textChangeRangeNewSpan; + function textChangeRangeIsUnchanged(range) { + return textSpanIsEmpty(range.span) && range.newLength === 0; + } + ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; + function createTextChangeRange(span, newLength) { + if (newLength < 0) { + throw new Error("newLength < 0"); + } + return { span: span, newLength: newLength }; + } + ts.createTextChangeRange = createTextChangeRange; + ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + function collapseTextChangeRangesAcrossMultipleVersions(changes) { + if (changes.length === 0) { + return ts.unchangedTextChangeRange; + } + if (changes.length === 1) { + return changes[0]; + } + var change0 = changes[0]; + var oldStartN = change0.span.start; + var oldEndN = textSpanEnd(change0.span); + var newEndN = oldStartN + change0.newLength; + for (var i = 1; i < changes.length; i++) { + var nextChange = changes[i]; + var oldStart1 = oldStartN; + var oldEnd1 = oldEndN; + var newEnd1 = newEndN; + var oldStart2 = nextChange.span.start; + var oldEnd2 = textSpanEnd(nextChange.span); + var newEnd2 = oldStart2 + nextChange.newLength; + oldStartN = Math.min(oldStart1, oldStart2); + oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); + newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); + } + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); + } + ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; +})(ts || (ts = {})); /// /// var ts; @@ -5492,7 +5497,7 @@ var ts; if (token === 111 && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 111 : token > 101; + return token > 101; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -5586,6 +5591,9 @@ var ts; identifierCount++; if (isIdentifier) { var node = createNode(65); + if (token !== 65) { + node.originalKeywordKind = token; + } node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); @@ -7716,6 +7724,17 @@ var ts; node.body = parseFunctionBlockOrSemicolon(false); return finishNode(node); } + function isClassMemberModifier(idToken) { + switch (idToken) { + case 109: + case 107: + case 108: + case 110: + return true; + default: + return false; + } + } function isClassMemberStart() { var idToken; if (token === 52) { @@ -7723,6 +7742,9 @@ var ts; } while (ts.isModifier(token)) { idToken = token; + if (isClassMemberModifier(idToken)) { + return true; + } nextToken(); } if (token === 35) { @@ -14170,7 +14192,7 @@ var ts; } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); - var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); + var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node); if (!hasGrammarError && node.kind === 162) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } @@ -14207,7 +14229,7 @@ var ts; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); - if (node.type) { + if (node.type && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { @@ -14678,6 +14700,7 @@ var ts; return type; } function checkExpression(node, contextualMapper) { + checkGrammarIdentifierInStrictMode(node); return checkExpressionOrQualifiedName(node, contextualMapper); } function checkExpressionOrQualifiedName(node, contextualMapper) { @@ -14772,6 +14795,7 @@ var ts; return unknownType; } function checkTypeParameter(node) { + checkGrammarDeclarationNameInStrictMode(node); if (node.expression) { grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); } @@ -14974,9 +14998,11 @@ var ts; checkDecorators(node); } function checkTypeReferenceNode(node) { + checkGrammarTypeReferenceInStrictMode(node.typeName); return checkTypeReferenceOrHeritageClauseElement(node); } function checkHeritageClauseElement(node) { + checkGrammarHeritageClauseElementInStrictMode(node.expression); return checkTypeReferenceOrHeritageClauseElement(node); } function checkTypeReferenceOrHeritageClauseElement(node) { @@ -15379,6 +15405,7 @@ var ts; } } function checkFunctionLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSignatureDeclaration(node); if (node.name && node.name.kind === 127) { @@ -15398,7 +15425,7 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind)) { + if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) { @@ -15564,6 +15591,7 @@ var ts; } } function checkVariableLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSourceElement(node.type); if (node.name.kind === 127) { @@ -16087,6 +16115,7 @@ var ts; return unknownType; } function checkClassDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); if (node.parent.kind !== 206 && node.parent.kind !== 227) { grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); } @@ -16275,7 +16304,7 @@ var ts; return ok; } function checkInterfaceDeclaration(node) { - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); @@ -16461,7 +16490,7 @@ var ts; if (!produceDiagnostics) { return; } - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); @@ -16514,7 +16543,7 @@ var ts; } function checkModuleDeclaration(node) { if (produceDiagnostics) { - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { + if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -16603,7 +16632,7 @@ var ts; checkAliasSymbol(node); } function checkImportDeclaration(node) { - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -16624,7 +16653,7 @@ var ts; } } function checkImportEqualsDeclaration(node) { - checkGrammarDecorators(node) || checkGrammarModifiers(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node); if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (node.flags & 1) { @@ -16925,6 +16954,8 @@ var ts; if (!(links.flags & 1)) { checkGrammarSourceFile(node); emitExtends = false; + emitDecorate = false; + emitParam = false; potentialThisCollisions.length = 0; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); @@ -17732,6 +17763,105 @@ var ts; } anyArrayType = createArrayType(anyType); } + function isReservedwordInStrictMode(node) { + return (node.parserContextFlags & 1) && + (node.originalKeywordKind >= 103 && node.originalKeywordKind <= 111); + } + function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) { + if (ts.getAncestor(identifier, 201) || ts.getAncestor(identifier, 174)) { + return grammarErrorOnNode(identifier, message, arg0); + } + return false; + } + function checkGrammarImportDeclarationNameInStrictMode(node) { + if (node.importClause) { + var impotClause = node.importClause; + if (impotClause.namedBindings) { + var nameBindings = impotClause.namedBindings; + if (nameBindings.kind === 211) { + var name_11 = nameBindings.name; + if (name_11.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_11); + return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + else if (nameBindings.kind === 212) { + var reportError = false; + for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) { + var element = _a[_i]; + var name_12 = element.name; + if (name_12.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_12); + reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return reportError; + } + } + } + return false; + } + function checkGrammarDeclarationNameInStrictMode(node) { + var name = node.name; + if (name && name.kind === 65 && isReservedwordInStrictMode(name)) { + var nameText = ts.declarationNameToString(name); + switch (node.kind) { + case 129: + case 198: + case 200: + case 128: + case 152: + case 202: + case 203: + case 204: + return checkGrammarIdentifierInStrictMode(name); + case 201: + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText); + case 205: + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + case 208: + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return false; + } + function checkGrammarTypeReferenceInStrictMode(typeName) { + if (typeName.kind === 65) { + checkGrammarTypeNameInStrictMode(typeName); + } + else if (typeName.kind === 126) { + checkGrammarTypeNameInStrictMode(typeName.right); + checkGrammarTypeReferenceInStrictMode(typeName.left); + } + } + function checkGrammarHeritageClauseElementInStrictMode(expression) { + if (expression && expression.kind === 65) { + return checkGrammarIdentifierInStrictMode(expression); + } + else if (expression && expression.kind === 155) { + checkGrammarHeritageClauseElementInStrictMode(expression.expression); + } + } + function checkGrammarIdentifierInStrictMode(node, nameText) { + if (node && node.kind === 65 && isReservedwordInStrictMode(node)) { + if (!nameText) { + nameText = ts.declarationNameToString(node); + } + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } + function checkGrammarTypeNameInStrictMode(node) { + if (node && node.kind === 65 && isReservedwordInStrictMode(node)) { + var nameText = ts.declarationNameToString(node); + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } function checkGrammarDecorators(node) { if (!node.decorators) { return false; @@ -18101,17 +18231,17 @@ var ts; var inStrictMode = (node.parserContextFlags & 1) !== 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var prop = _a[_i]; - var name_11 = prop.name; + var name_13 = prop.name; if (prop.kind === 175 || - name_11.kind === 127) { - checkGrammarComputedPropertyName(name_11); + name_13.kind === 127) { + checkGrammarComputedPropertyName(name_13); continue; } var currentKind = void 0; if (prop.kind === 224 || prop.kind === 225) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_11.kind === 7) { - checkGrammarNumbericLiteral(name_11); + if (name_13.kind === 7) { + checkGrammarNumbericLiteral(name_13); } currentKind = Property; } @@ -18127,26 +18257,26 @@ var ts; else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_11.text)) { - seen[name_11.text] = currentKind; + if (!ts.hasProperty(seen, name_13.text)) { + seen[name_13.text] = currentKind; } else { - var existingKind = seen[name_11.text]; + var existingKind = seen[name_13.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_11.text] = currentKind | existingKind; + seen[name_13.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -18465,12 +18595,11 @@ var ts; var identifier = name; if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { var nameText = ts.declarationNameToString(identifier); - if (ts.getAncestor(name, 201) || ts.getAncestor(name, 174)) { - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); - } - else { + var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); + if (!reportErrorInClassDeclaration) { return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); } + return reportErrorInClassDeclaration; } } } @@ -18919,9 +19048,9 @@ var ts; } var count = 0; while (true) { - var name_12 = baseName + "_" + (++count); - if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) { - return name_12; + var name_14 = baseName + "_" + (++count); + if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) { + return name_14; } } } @@ -20003,9 +20132,9 @@ var ts; var count = tempFlags & 268435455; tempFlags++; if (count !== 8 && count !== 13) { - var name_13 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); - if (isUniqueName(name_13)) { - return name_13; + var name_15 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_15)) { + return name_15; } } } @@ -20033,8 +20162,8 @@ var ts; } function generateNameForModuleOrEnum(node) { if (node.name.kind === 65) { - var name_14 = node.name.text; - assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14)); + var name_16 = node.name.text; + assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16)); } } function generateNameForImportOrExportDeclaration(node) { @@ -20214,8 +20343,8 @@ var ts; if (scopeName) { var parentIndex = getSourceMapNameIndex(); if (parentIndex !== -1) { - var name_15 = node.name; - if (!name_15 || name_15.kind !== 127) { + var name_17 = node.name; + if (!name_17 || name_17.kind !== 127) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -20242,9 +20371,9 @@ var ts; node.kind === 201 || node.kind === 204) { if (node.name) { - var name_16 = node.name; - scopeName = name_16.kind === 127 - ? ts.getTextOfNode(name_16) + var name_18 = node.name; + scopeName = name_18.kind === 127 + ? ts.getTextOfNode(name_18) : node.name.text; } recordScopeNameStart(scopeName); @@ -20657,6 +20786,7 @@ var ts; default: return -1; } + case 172: case 170: return -1; default: @@ -20828,6 +20958,16 @@ var ts; write("..."); emit(node.expression); } + function emitYieldExpression(node) { + write(ts.tokenToString(111)); + if (node.asteriskToken) { + write("*"); + } + if (node.expression) { + write(" "); + emit(node.expression); + } + } function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 65: @@ -21069,6 +21209,9 @@ var ts; write("]"); } function emitMethod(node) { + if (languageVersion >= 2 && node.asteriskToken) { + write("*"); + } emit(node.name, false); if (languageVersion < 2) { write(": function "); @@ -22054,12 +22197,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name_17 = createTempVariable(0); + var name_19 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_17); - emit(name_17); + tempParameters.push(name_19); + emit(name_19); } else { emit(node.name); @@ -22178,7 +22321,11 @@ var ts; write("default "); } } - write("function "); + write("function"); + if (languageVersion >= 2 && node.asteriskToken) { + write("*"); + } + write(" "); } if (shouldEmitFunctionName(node)) { emitDeclarationName(node); @@ -22510,6 +22657,9 @@ var ts; else if (member.kind === 137) { write("set "); } + if (member.asteriskToken) { + write("*"); + } emit(member.name); emitSignatureAndBody(member); emitEnd(member); @@ -23475,8 +23625,8 @@ var ts; else { for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_18 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier); + var name_20 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier); } } break; @@ -23787,6 +23937,8 @@ var ts; return emitConditionalExpression(node); case 173: return emitSpreadElementExpression(node); + case 172: + return emitYieldExpression(node); case 175: return; case 179: @@ -24060,7 +24212,7 @@ var ts; } return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: function () { return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); }, useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -24100,6 +24252,10 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function getDefaultLibFileName(options) { + return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; + } + ts.getDefaultLibFileName = getDefaultLibFileName; function createProgram(rootNames, options, host) { var program; var files = []; diff --git a/bin/tsserver.js b/bin/tsserver.js index ba3c349c046..e8f4bd1398a 100644 --- a/bin/tsserver.js +++ b/bin/tsserver.js @@ -600,10 +600,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" }; - function getDefaultLibFileName(options) { - return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; - } - ts.getDefaultLibFileName = getDefaultLibFileName; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -1076,6 +1072,12 @@ var ts; Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." }, A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, @@ -3217,7 +3219,7 @@ var ts; scanner.setTextPos(pos); scanner.scan(); var start = scanner.getTokenPos(); - return createTextSpanFromBounds(start, scanner.getTextPos()); + return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; function getErrorSpanForNode(sourceFile, node) { @@ -3226,7 +3228,7 @@ var ts; case 227: var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { - return createTextSpan(0, 0); + return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); case 198: @@ -3248,7 +3250,7 @@ var ts; var pos = nodeIsMissing(errorNode) ? errorNode.pos : ts.skipTrivia(sourceFile.text, errorNode.pos); - return createTextSpanFromBounds(pos, errorNode.end); + return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -3970,115 +3972,6 @@ var ts; return false; } ts.isModifier = isModifier; - function textSpanEnd(span) { - return span.start + span.length; - } - ts.textSpanEnd = textSpanEnd; - function textSpanIsEmpty(span) { - return span.length === 0; - } - ts.textSpanIsEmpty = textSpanIsEmpty; - function textSpanContainsPosition(span, position) { - return position >= span.start && position < textSpanEnd(span); - } - ts.textSpanContainsPosition = textSpanContainsPosition; - function textSpanContainsTextSpan(span, other) { - return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); - } - ts.textSpanContainsTextSpan = textSpanContainsTextSpan; - function textSpanOverlapsWith(span, other) { - var overlapStart = Math.max(span.start, other.start); - var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); - return overlapStart < overlapEnd; - } - ts.textSpanOverlapsWith = textSpanOverlapsWith; - function textSpanOverlap(span1, span2) { - var overlapStart = Math.max(span1.start, span2.start); - var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (overlapStart < overlapEnd) { - return createTextSpanFromBounds(overlapStart, overlapEnd); - } - return undefined; - } - ts.textSpanOverlap = textSpanOverlap; - function textSpanIntersectsWithTextSpan(span, other) { - return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; - } - ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; - function textSpanIntersectsWith(span, start, length) { - var end = start + length; - return start <= textSpanEnd(span) && end >= span.start; - } - ts.textSpanIntersectsWith = textSpanIntersectsWith; - function textSpanIntersectsWithPosition(span, position) { - return position <= textSpanEnd(span) && position >= span.start; - } - ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; - function textSpanIntersection(span1, span2) { - var intersectStart = Math.max(span1.start, span2.start); - var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (intersectStart <= intersectEnd) { - return createTextSpanFromBounds(intersectStart, intersectEnd); - } - return undefined; - } - ts.textSpanIntersection = textSpanIntersection; - function createTextSpan(start, length) { - if (start < 0) { - throw new Error("start < 0"); - } - if (length < 0) { - throw new Error("length < 0"); - } - return { start: start, length: length }; - } - ts.createTextSpan = createTextSpan; - function createTextSpanFromBounds(start, end) { - return createTextSpan(start, end - start); - } - ts.createTextSpanFromBounds = createTextSpanFromBounds; - function textChangeRangeNewSpan(range) { - return createTextSpan(range.span.start, range.newLength); - } - ts.textChangeRangeNewSpan = textChangeRangeNewSpan; - function textChangeRangeIsUnchanged(range) { - return textSpanIsEmpty(range.span) && range.newLength === 0; - } - ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; - function createTextChangeRange(span, newLength) { - if (newLength < 0) { - throw new Error("newLength < 0"); - } - return { span: span, newLength: newLength }; - } - ts.createTextChangeRange = createTextChangeRange; - ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); - function collapseTextChangeRangesAcrossMultipleVersions(changes) { - if (changes.length === 0) { - return ts.unchangedTextChangeRange; - } - if (changes.length === 1) { - return changes[0]; - } - var change0 = changes[0]; - var oldStartN = change0.span.start; - var oldEndN = textSpanEnd(change0.span); - var newEndN = oldStartN + change0.newLength; - for (var i = 1; i < changes.length; i++) { - var nextChange = changes[i]; - var oldStart1 = oldStartN; - var oldEnd1 = oldEndN; - var newEnd1 = newEndN; - var oldStart2 = nextChange.span.start; - var oldEnd2 = textSpanEnd(nextChange.span); - var newEnd2 = oldStart2 + nextChange.newLength; - oldStartN = Math.min(oldStart1, oldStart2); - oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); - newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); - } - return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); - } - ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function nodeStartsNewLexicalEnvironment(n) { return isFunctionLike(n) || n.kind === 205 || n.kind === 227; } @@ -4475,6 +4368,118 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +var ts; +(function (ts) { + function textSpanEnd(span) { + return span.start + span.length; + } + ts.textSpanEnd = textSpanEnd; + function textSpanIsEmpty(span) { + return span.length === 0; + } + ts.textSpanIsEmpty = textSpanIsEmpty; + function textSpanContainsPosition(span, position) { + return position >= span.start && position < textSpanEnd(span); + } + ts.textSpanContainsPosition = textSpanContainsPosition; + function textSpanContainsTextSpan(span, other) { + return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); + } + ts.textSpanContainsTextSpan = textSpanContainsTextSpan; + function textSpanOverlapsWith(span, other) { + var overlapStart = Math.max(span.start, other.start); + var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + return overlapStart < overlapEnd; + } + ts.textSpanOverlapsWith = textSpanOverlapsWith; + function textSpanOverlap(span1, span2) { + var overlapStart = Math.max(span1.start, span2.start); + var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (overlapStart < overlapEnd) { + return createTextSpanFromBounds(overlapStart, overlapEnd); + } + return undefined; + } + ts.textSpanOverlap = textSpanOverlap; + function textSpanIntersectsWithTextSpan(span, other) { + return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; + } + ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; + function textSpanIntersectsWith(span, start, length) { + var end = start + length; + return start <= textSpanEnd(span) && end >= span.start; + } + ts.textSpanIntersectsWith = textSpanIntersectsWith; + function textSpanIntersectsWithPosition(span, position) { + return position <= textSpanEnd(span) && position >= span.start; + } + ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; + function textSpanIntersection(span1, span2) { + var intersectStart = Math.max(span1.start, span2.start); + var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (intersectStart <= intersectEnd) { + return createTextSpanFromBounds(intersectStart, intersectEnd); + } + return undefined; + } + ts.textSpanIntersection = textSpanIntersection; + function createTextSpan(start, length) { + if (start < 0) { + throw new Error("start < 0"); + } + if (length < 0) { + throw new Error("length < 0"); + } + return { start: start, length: length }; + } + ts.createTextSpan = createTextSpan; + function createTextSpanFromBounds(start, end) { + return createTextSpan(start, end - start); + } + ts.createTextSpanFromBounds = createTextSpanFromBounds; + function textChangeRangeNewSpan(range) { + return createTextSpan(range.span.start, range.newLength); + } + ts.textChangeRangeNewSpan = textChangeRangeNewSpan; + function textChangeRangeIsUnchanged(range) { + return textSpanIsEmpty(range.span) && range.newLength === 0; + } + ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; + function createTextChangeRange(span, newLength) { + if (newLength < 0) { + throw new Error("newLength < 0"); + } + return { span: span, newLength: newLength }; + } + ts.createTextChangeRange = createTextChangeRange; + ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + function collapseTextChangeRangesAcrossMultipleVersions(changes) { + if (changes.length === 0) { + return ts.unchangedTextChangeRange; + } + if (changes.length === 1) { + return changes[0]; + } + var change0 = changes[0]; + var oldStartN = change0.span.start; + var oldEndN = textSpanEnd(change0.span); + var newEndN = oldStartN + change0.newLength; + for (var i = 1; i < changes.length; i++) { + var nextChange = changes[i]; + var oldStart1 = oldStartN; + var oldEnd1 = oldEndN; + var newEnd1 = newEndN; + var oldStart2 = nextChange.span.start; + var oldEnd2 = textSpanEnd(nextChange.span); + var newEnd2 = oldStart2 + nextChange.newLength; + oldStartN = Math.min(oldStart1, oldStart2); + oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); + newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); + } + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); + } + ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; +})(ts || (ts = {})); /// /// var ts; @@ -5326,7 +5331,7 @@ var ts; if (token === 111 && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 111 : token > 101; + return token > 101; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -5420,6 +5425,9 @@ var ts; identifierCount++; if (isIdentifier) { var node = createNode(65); + if (token !== 65) { + node.originalKeywordKind = token; + } node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); @@ -7550,6 +7558,17 @@ var ts; node.body = parseFunctionBlockOrSemicolon(false); return finishNode(node); } + function isClassMemberModifier(idToken) { + switch (idToken) { + case 109: + case 107: + case 108: + case 110: + return true; + default: + return false; + } + } function isClassMemberStart() { var idToken; if (token === 52) { @@ -7557,6 +7576,9 @@ var ts; } while (ts.isModifier(token)) { idToken = token; + if (isClassMemberModifier(idToken)) { + return true; + } nextToken(); } if (token === 35) { @@ -14513,7 +14535,7 @@ var ts; } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); - var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); + var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node); if (!hasGrammarError && node.kind === 162) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } @@ -14550,7 +14572,7 @@ var ts; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { ts.Debug.assert(node.kind !== 134 || ts.isObjectLiteralMethod(node)); - if (node.type) { + if (node.type && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { @@ -15021,6 +15043,7 @@ var ts; return type; } function checkExpression(node, contextualMapper) { + checkGrammarIdentifierInStrictMode(node); return checkExpressionOrQualifiedName(node, contextualMapper); } function checkExpressionOrQualifiedName(node, contextualMapper) { @@ -15115,6 +15138,7 @@ var ts; return unknownType; } function checkTypeParameter(node) { + checkGrammarDeclarationNameInStrictMode(node); if (node.expression) { grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); } @@ -15317,9 +15341,11 @@ var ts; checkDecorators(node); } function checkTypeReferenceNode(node) { + checkGrammarTypeReferenceInStrictMode(node.typeName); return checkTypeReferenceOrHeritageClauseElement(node); } function checkHeritageClauseElement(node) { + checkGrammarHeritageClauseElementInStrictMode(node.expression); return checkTypeReferenceOrHeritageClauseElement(node); } function checkTypeReferenceOrHeritageClauseElement(node) { @@ -15722,6 +15748,7 @@ var ts; } } function checkFunctionLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSignatureDeclaration(node); if (node.name && node.name.kind === 127) { @@ -15741,7 +15768,7 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind)) { + if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !node.type && !isPrivateWithinAmbient(node)) { @@ -15907,6 +15934,7 @@ var ts; } } function checkVariableLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSourceElement(node.type); if (node.name.kind === 127) { @@ -16430,6 +16458,7 @@ var ts; return unknownType; } function checkClassDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); if (node.parent.kind !== 206 && node.parent.kind !== 227) { grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); } @@ -16618,7 +16647,7 @@ var ts; return ok; } function checkInterfaceDeclaration(node) { - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); @@ -16804,7 +16833,7 @@ var ts; if (!produceDiagnostics) { return; } - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); @@ -16857,7 +16886,7 @@ var ts; } function checkModuleDeclaration(node) { if (produceDiagnostics) { - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { + if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -16946,7 +16975,7 @@ var ts; checkAliasSymbol(node); } function checkImportDeclaration(node) { - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { + if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -16967,7 +16996,7 @@ var ts; } } function checkImportEqualsDeclaration(node) { - checkGrammarDecorators(node) || checkGrammarModifiers(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node); if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (node.flags & 1) { @@ -17268,6 +17297,8 @@ var ts; if (!(links.flags & 1)) { checkGrammarSourceFile(node); emitExtends = false; + emitDecorate = false; + emitParam = false; potentialThisCollisions.length = 0; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); @@ -18075,6 +18106,105 @@ var ts; } anyArrayType = createArrayType(anyType); } + function isReservedwordInStrictMode(node) { + return (node.parserContextFlags & 1) && + (node.originalKeywordKind >= 103 && node.originalKeywordKind <= 111); + } + function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) { + if (ts.getAncestor(identifier, 201) || ts.getAncestor(identifier, 174)) { + return grammarErrorOnNode(identifier, message, arg0); + } + return false; + } + function checkGrammarImportDeclarationNameInStrictMode(node) { + if (node.importClause) { + var impotClause = node.importClause; + if (impotClause.namedBindings) { + var nameBindings = impotClause.namedBindings; + if (nameBindings.kind === 211) { + var name_11 = nameBindings.name; + if (name_11.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_11); + return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + else if (nameBindings.kind === 212) { + var reportError = false; + for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) { + var element = _a[_i]; + var name_12 = element.name; + if (name_12.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_12); + reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return reportError; + } + } + } + return false; + } + function checkGrammarDeclarationNameInStrictMode(node) { + var name = node.name; + if (name && name.kind === 65 && isReservedwordInStrictMode(name)) { + var nameText = ts.declarationNameToString(name); + switch (node.kind) { + case 129: + case 198: + case 200: + case 128: + case 152: + case 202: + case 203: + case 204: + return checkGrammarIdentifierInStrictMode(name); + case 201: + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText); + case 205: + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + case 208: + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return false; + } + function checkGrammarTypeReferenceInStrictMode(typeName) { + if (typeName.kind === 65) { + checkGrammarTypeNameInStrictMode(typeName); + } + else if (typeName.kind === 126) { + checkGrammarTypeNameInStrictMode(typeName.right); + checkGrammarTypeReferenceInStrictMode(typeName.left); + } + } + function checkGrammarHeritageClauseElementInStrictMode(expression) { + if (expression && expression.kind === 65) { + return checkGrammarIdentifierInStrictMode(expression); + } + else if (expression && expression.kind === 155) { + checkGrammarHeritageClauseElementInStrictMode(expression.expression); + } + } + function checkGrammarIdentifierInStrictMode(node, nameText) { + if (node && node.kind === 65 && isReservedwordInStrictMode(node)) { + if (!nameText) { + nameText = ts.declarationNameToString(node); + } + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } + function checkGrammarTypeNameInStrictMode(node) { + if (node && node.kind === 65 && isReservedwordInStrictMode(node)) { + var nameText = ts.declarationNameToString(node); + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } function checkGrammarDecorators(node) { if (!node.decorators) { return false; @@ -18444,17 +18574,17 @@ var ts; var inStrictMode = (node.parserContextFlags & 1) !== 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var prop = _a[_i]; - var name_11 = prop.name; + var name_13 = prop.name; if (prop.kind === 175 || - name_11.kind === 127) { - checkGrammarComputedPropertyName(name_11); + name_13.kind === 127) { + checkGrammarComputedPropertyName(name_13); continue; } var currentKind = void 0; if (prop.kind === 224 || prop.kind === 225) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_11.kind === 7) { - checkGrammarNumbericLiteral(name_11); + if (name_13.kind === 7) { + checkGrammarNumbericLiteral(name_13); } currentKind = Property; } @@ -18470,26 +18600,26 @@ var ts; else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_11.text)) { - seen[name_11.text] = currentKind; + if (!ts.hasProperty(seen, name_13.text)) { + seen[name_13.text] = currentKind; } else { - var existingKind = seen[name_11.text]; + var existingKind = seen[name_13.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_11.text] = currentKind | existingKind; + seen[name_13.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -18808,12 +18938,11 @@ var ts; var identifier = name; if (contextNode && (contextNode.parserContextFlags & 1) && ts.isEvalOrArgumentsIdentifier(identifier)) { var nameText = ts.declarationNameToString(identifier); - if (ts.getAncestor(name, 201) || ts.getAncestor(name, 174)) { - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); - } - else { + var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); + if (!reportErrorInClassDeclaration) { return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); } + return reportErrorInClassDeclaration; } } } @@ -19262,9 +19391,9 @@ var ts; } var count = 0; while (true) { - var name_12 = baseName + "_" + (++count); - if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) { - return name_12; + var name_14 = baseName + "_" + (++count); + if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) { + return name_14; } } } @@ -20346,9 +20475,9 @@ var ts; var count = tempFlags & 268435455; tempFlags++; if (count !== 8 && count !== 13) { - var name_13 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); - if (isUniqueName(name_13)) { - return name_13; + var name_15 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_15)) { + return name_15; } } } @@ -20376,8 +20505,8 @@ var ts; } function generateNameForModuleOrEnum(node) { if (node.name.kind === 65) { - var name_14 = node.name.text; - assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14)); + var name_16 = node.name.text; + assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16)); } } function generateNameForImportOrExportDeclaration(node) { @@ -20557,8 +20686,8 @@ var ts; if (scopeName) { var parentIndex = getSourceMapNameIndex(); if (parentIndex !== -1) { - var name_15 = node.name; - if (!name_15 || name_15.kind !== 127) { + var name_17 = node.name; + if (!name_17 || name_17.kind !== 127) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -20585,9 +20714,9 @@ var ts; node.kind === 201 || node.kind === 204) { if (node.name) { - var name_16 = node.name; - scopeName = name_16.kind === 127 - ? ts.getTextOfNode(name_16) + var name_18 = node.name; + scopeName = name_18.kind === 127 + ? ts.getTextOfNode(name_18) : node.name.text; } recordScopeNameStart(scopeName); @@ -21000,6 +21129,7 @@ var ts; default: return -1; } + case 172: case 170: return -1; default: @@ -21171,6 +21301,16 @@ var ts; write("..."); emit(node.expression); } + function emitYieldExpression(node) { + write(ts.tokenToString(111)); + if (node.asteriskToken) { + write("*"); + } + if (node.expression) { + write(" "); + emit(node.expression); + } + } function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 65: @@ -21412,6 +21552,9 @@ var ts; write("]"); } function emitMethod(node) { + if (languageVersion >= 2 && node.asteriskToken) { + write("*"); + } emit(node.name, false); if (languageVersion < 2) { write(": function "); @@ -22397,12 +22540,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name_17 = createTempVariable(0); + var name_19 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_17); - emit(name_17); + tempParameters.push(name_19); + emit(name_19); } else { emit(node.name); @@ -22521,7 +22664,11 @@ var ts; write("default "); } } - write("function "); + write("function"); + if (languageVersion >= 2 && node.asteriskToken) { + write("*"); + } + write(" "); } if (shouldEmitFunctionName(node)) { emitDeclarationName(node); @@ -22853,6 +23000,9 @@ var ts; else if (member.kind === 137) { write("set "); } + if (member.asteriskToken) { + write("*"); + } emit(member.name); emitSignatureAndBody(member); emitEnd(member); @@ -23818,8 +23968,8 @@ var ts; else { for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_18 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier); + var name_20 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier); } } break; @@ -24130,6 +24280,8 @@ var ts; return emitConditionalExpression(node); case 173: return emitSpreadElementExpression(node); + case 172: + return emitYieldExpression(node); case 175: return; case 179: @@ -24403,7 +24555,7 @@ var ts; } return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: function () { return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); }, useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -24443,6 +24595,10 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function getDefaultLibFileName(options) { + return options.target === 2 ? "lib.es6.d.ts" : "lib.d.ts"; + } + ts.getDefaultLibFileName = getDefaultLibFileName; function createProgram(rootNames, options, host) { var program; var files = []; @@ -25670,9 +25826,9 @@ var ts; case 198: case 152: var variableDeclarationNode; - var name_19; + var name_21; if (node.kind === 152) { - name_19 = node.name; + name_21 = node.name; variableDeclarationNode = node; while (variableDeclarationNode && variableDeclarationNode.kind !== 198) { variableDeclarationNode = variableDeclarationNode.parent; @@ -25682,16 +25838,16 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_19 = node.name; + name_21 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.variableElement); } case 135: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); @@ -27639,9 +27795,9 @@ var ts; } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_20 in o) { - if (o[name_20] === rule) { - return name_20; + for (var name_22 in o) { + if (o[name_22] === rule) { + return name_22; } } throw new Error("Unknown rule"); @@ -31293,10 +31449,10 @@ var ts; for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) { var sourceFile = _a[_i]; var nameTable = getNameTable(sourceFile); - for (var name_21 in nameTable) { - if (!allNames[name_21]) { - allNames[name_21] = name_21; - var displayName = getCompletionEntryDisplayName(name_21, target, true); + for (var name_23 in nameTable) { + if (!allNames[name_23]) { + allNames[name_23] = name_23; + var displayName = getCompletionEntryDisplayName(name_23, target, true); if (displayName) { var entry = { name: displayName, @@ -32935,17 +33091,17 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeInfoResolver.getContextualType(objectLiteral); - var name_22 = node.text; + var name_24 = node.text; if (contextualType) { if (contextualType.flags & 16384) { - var unionProperty = contextualType.getProperty(name_22); + var unionProperty = contextualType.getProperty(name_24); if (unionProperty) { return [unionProperty]; } else { var result_3 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_22); + var symbol = t.getProperty(name_24); if (symbol) { result_3.push(symbol); } @@ -32954,7 +33110,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_22); + var symbol_1 = contextualType.getProperty(name_24); if (symbol_1) { return [symbol_1]; } diff --git a/bin/typescript.d.ts b/bin/typescript.d.ts index a16bff2a862..1439f0de597 100644 --- a/bin/typescript.d.ts +++ b/bin/typescript.d.ts @@ -310,6 +310,7 @@ declare module "typescript" { } interface Identifier extends PrimaryExpression { text: string; + originalKeywordKind?: SyntaxKind; } interface QualifiedName extends Node { left: EntityName; @@ -1181,6 +1182,33 @@ declare module "typescript" { function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean; function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean; } +declare module "typescript" { + function textSpanEnd(span: TextSpan): number; + function textSpanIsEmpty(span: TextSpan): boolean; + function textSpanContainsPosition(span: TextSpan, position: number): boolean; + function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean; + function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean; + function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan; + function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean; + function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean; + function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean; + function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan; + function createTextSpan(start: number, length: number): TextSpan; + function createTextSpanFromBounds(start: number, end: number): TextSpan; + function textChangeRangeNewSpan(range: TextChangeRange): TextSpan; + function textChangeRangeIsUnchanged(range: TextChangeRange): boolean; + function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange; + let unchangedTextChangeRange: TextChangeRange; + /** + * Called to merge all the changes that occurred across several versions of a script snapshot + * into a single change. i.e. if a user keeps making successive edits to a script we will + * have a text change from V1 to V2, V2 to V3, ..., Vn. + * + * This function will then merge those changes into a single change range valid between V1 and + * Vn. + */ + function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; +} declare module "typescript" { function getNodeConstructor(kind: SyntaxKind): new () => Node; function createNode(kind: SyntaxKind): Node; @@ -1199,6 +1227,7 @@ declare module "typescript" { function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; + function getDefaultLibFileName(options: CompilerOptions): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module "typescript" { diff --git a/bin/typescript.js b/bin/typescript.js index 1c749f0d94a..4544cc24ec1 100644 --- a/bin/typescript.js +++ b/bin/typescript.js @@ -1308,10 +1308,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" // nextLine }; - function getDefaultLibFileName(options) { - return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts"; - } - ts.getDefaultLibFileName = getDefaultLibFileName; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -1809,6 +1805,12 @@ var ts; Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." }, A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, @@ -4331,13 +4333,12 @@ var ts; }; } ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain; - /* @internal */ function getSpanOfTokenAtPosition(sourceFile, pos) { var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text); scanner.setTextPos(pos); scanner.scan(); var start = scanner.getTokenPos(); - return createTextSpanFromBounds(start, scanner.getTextPos()); + return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; function getErrorSpanForNode(sourceFile, node) { @@ -4347,7 +4348,7 @@ var ts; var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { // file is empty - return span for the beginning of the file - return createTextSpan(0, 0); + return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); // This list is a work in progress. Add missing node kinds to improve their error @@ -4373,7 +4374,7 @@ var ts; var pos = nodeIsMissing(errorNode) ? errorNode.pos : ts.skipTrivia(sourceFile.text, errorNode.pos); - return createTextSpanFromBounds(pos, errorNode.end); + return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -4482,7 +4483,6 @@ var ts; } } ts.forEachReturnStatement = forEachReturnStatement; - /* @internal */ function isVariableLike(node) { if (node) { switch (node.kind) { @@ -5170,205 +5170,6 @@ var ts; return false; } ts.isModifier = isModifier; - function textSpanEnd(span) { - return span.start + span.length; - } - ts.textSpanEnd = textSpanEnd; - function textSpanIsEmpty(span) { - return span.length === 0; - } - ts.textSpanIsEmpty = textSpanIsEmpty; - function textSpanContainsPosition(span, position) { - return position >= span.start && position < textSpanEnd(span); - } - ts.textSpanContainsPosition = textSpanContainsPosition; - // Returns true if 'span' contains 'other'. - function textSpanContainsTextSpan(span, other) { - return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); - } - ts.textSpanContainsTextSpan = textSpanContainsTextSpan; - function textSpanOverlapsWith(span, other) { - var overlapStart = Math.max(span.start, other.start); - var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); - return overlapStart < overlapEnd; - } - ts.textSpanOverlapsWith = textSpanOverlapsWith; - function textSpanOverlap(span1, span2) { - var overlapStart = Math.max(span1.start, span2.start); - var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (overlapStart < overlapEnd) { - return createTextSpanFromBounds(overlapStart, overlapEnd); - } - return undefined; - } - ts.textSpanOverlap = textSpanOverlap; - function textSpanIntersectsWithTextSpan(span, other) { - return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; - } - ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; - function textSpanIntersectsWith(span, start, length) { - var end = start + length; - return start <= textSpanEnd(span) && end >= span.start; - } - ts.textSpanIntersectsWith = textSpanIntersectsWith; - function textSpanIntersectsWithPosition(span, position) { - return position <= textSpanEnd(span) && position >= span.start; - } - ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; - function textSpanIntersection(span1, span2) { - var intersectStart = Math.max(span1.start, span2.start); - var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (intersectStart <= intersectEnd) { - return createTextSpanFromBounds(intersectStart, intersectEnd); - } - return undefined; - } - ts.textSpanIntersection = textSpanIntersection; - function createTextSpan(start, length) { - if (start < 0) { - throw new Error("start < 0"); - } - if (length < 0) { - throw new Error("length < 0"); - } - return { start: start, length: length }; - } - ts.createTextSpan = createTextSpan; - function createTextSpanFromBounds(start, end) { - return createTextSpan(start, end - start); - } - ts.createTextSpanFromBounds = createTextSpanFromBounds; - function textChangeRangeNewSpan(range) { - return createTextSpan(range.span.start, range.newLength); - } - ts.textChangeRangeNewSpan = textChangeRangeNewSpan; - function textChangeRangeIsUnchanged(range) { - return textSpanIsEmpty(range.span) && range.newLength === 0; - } - ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; - function createTextChangeRange(span, newLength) { - if (newLength < 0) { - throw new Error("newLength < 0"); - } - return { span: span, newLength: newLength }; - } - ts.createTextChangeRange = createTextChangeRange; - ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); - /** - * Called to merge all the changes that occurred across several versions of a script snapshot - * into a single change. i.e. if a user keeps making successive edits to a script we will - * have a text change from V1 to V2, V2 to V3, ..., Vn. - * - * This function will then merge those changes into a single change range valid between V1 and - * Vn. - */ - function collapseTextChangeRangesAcrossMultipleVersions(changes) { - if (changes.length === 0) { - return ts.unchangedTextChangeRange; - } - if (changes.length === 1) { - return changes[0]; - } - // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } - // as it makes things much easier to reason about. - var change0 = changes[0]; - var oldStartN = change0.span.start; - var oldEndN = textSpanEnd(change0.span); - var newEndN = oldStartN + change0.newLength; - for (var i = 1; i < changes.length; i++) { - var nextChange = changes[i]; - // Consider the following case: - // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting - // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. - // i.e. the span starting at 30 with length 30 is increased to length 40. - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------------------------------------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------------------------------------------------- - // | \ - // | \ - // T2 | \ - // | \ - // | \ - // ------------------------------------------------------------------------------------------------------- - // - // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial - // it's just the min of the old and new starts. i.e.: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------*------------------------------------------ - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ----------------------------------------$-------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // (Note the dots represent the newly inferrred start. - // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the - // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see - // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that - // means: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // --------------------------------------------------------------------------------*---------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // In other words (in this case), we're recognizing that the second edit happened after where the first edit - // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started - // that's the same as if we started at char 80 instead of 60. - // - // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter - // than pusing the first edit forward to match the second, we'll push the second edit forward to match the - // first. - // - // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange - // semantics: { { start: 10, length: 70 }, newLength: 60 } - // - // The math then works out as follows. - // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the - // final result like so: - // - // { - // oldStart3: Min(oldStart1, oldStart2), - // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), - // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) - // } - var oldStart1 = oldStartN; - var oldEnd1 = oldEndN; - var newEnd1 = newEndN; - var oldStart2 = nextChange.span.start; - var oldEnd2 = textSpanEnd(nextChange.span); - var newEnd2 = oldStart2 + nextChange.newLength; - oldStartN = Math.min(oldStart1, oldStart2); - oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); - newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); - } - return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); - } - ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function nodeStartsNewLexicalEnvironment(n) { return isFunctionLike(n) || n.kind === 205 /* ModuleDeclaration */ || n.kind === 227 /* SourceFile */; } @@ -5385,7 +5186,6 @@ var ts; return node; } ts.createSynthesizedNode = createSynthesizedNode; - /* @internal */ function createDiagnosticCollection() { var nonFileDiagnostics = []; var fileDiagnostics = {}; @@ -5807,6 +5607,208 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +var ts; +(function (ts) { + function textSpanEnd(span) { + return span.start + span.length; + } + ts.textSpanEnd = textSpanEnd; + function textSpanIsEmpty(span) { + return span.length === 0; + } + ts.textSpanIsEmpty = textSpanIsEmpty; + function textSpanContainsPosition(span, position) { + return position >= span.start && position < textSpanEnd(span); + } + ts.textSpanContainsPosition = textSpanContainsPosition; + // Returns true if 'span' contains 'other'. + function textSpanContainsTextSpan(span, other) { + return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); + } + ts.textSpanContainsTextSpan = textSpanContainsTextSpan; + function textSpanOverlapsWith(span, other) { + var overlapStart = Math.max(span.start, other.start); + var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + return overlapStart < overlapEnd; + } + ts.textSpanOverlapsWith = textSpanOverlapsWith; + function textSpanOverlap(span1, span2) { + var overlapStart = Math.max(span1.start, span2.start); + var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (overlapStart < overlapEnd) { + return createTextSpanFromBounds(overlapStart, overlapEnd); + } + return undefined; + } + ts.textSpanOverlap = textSpanOverlap; + function textSpanIntersectsWithTextSpan(span, other) { + return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; + } + ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; + function textSpanIntersectsWith(span, start, length) { + var end = start + length; + return start <= textSpanEnd(span) && end >= span.start; + } + ts.textSpanIntersectsWith = textSpanIntersectsWith; + function textSpanIntersectsWithPosition(span, position) { + return position <= textSpanEnd(span) && position >= span.start; + } + ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; + function textSpanIntersection(span1, span2) { + var intersectStart = Math.max(span1.start, span2.start); + var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (intersectStart <= intersectEnd) { + return createTextSpanFromBounds(intersectStart, intersectEnd); + } + return undefined; + } + ts.textSpanIntersection = textSpanIntersection; + function createTextSpan(start, length) { + if (start < 0) { + throw new Error("start < 0"); + } + if (length < 0) { + throw new Error("length < 0"); + } + return { start: start, length: length }; + } + ts.createTextSpan = createTextSpan; + function createTextSpanFromBounds(start, end) { + return createTextSpan(start, end - start); + } + ts.createTextSpanFromBounds = createTextSpanFromBounds; + function textChangeRangeNewSpan(range) { + return createTextSpan(range.span.start, range.newLength); + } + ts.textChangeRangeNewSpan = textChangeRangeNewSpan; + function textChangeRangeIsUnchanged(range) { + return textSpanIsEmpty(range.span) && range.newLength === 0; + } + ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; + function createTextChangeRange(span, newLength) { + if (newLength < 0) { + throw new Error("newLength < 0"); + } + return { span: span, newLength: newLength }; + } + ts.createTextChangeRange = createTextChangeRange; + ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + /** + * Called to merge all the changes that occurred across several versions of a script snapshot + * into a single change. i.e. if a user keeps making successive edits to a script we will + * have a text change from V1 to V2, V2 to V3, ..., Vn. + * + * This function will then merge those changes into a single change range valid between V1 and + * Vn. + */ + function collapseTextChangeRangesAcrossMultipleVersions(changes) { + if (changes.length === 0) { + return ts.unchangedTextChangeRange; + } + if (changes.length === 1) { + return changes[0]; + } + // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } + // as it makes things much easier to reason about. + var change0 = changes[0]; + var oldStartN = change0.span.start; + var oldEndN = textSpanEnd(change0.span); + var newEndN = oldStartN + change0.newLength; + for (var i = 1; i < changes.length; i++) { + var nextChange = changes[i]; + // Consider the following case: + // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting + // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. + // i.e. the span starting at 30 with length 30 is increased to length 40. + // + // 0 10 20 30 40 50 60 70 80 90 100 + // ------------------------------------------------------------------------------------------------------- + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ------------------------------------------------------------------------------------------------------- + // | \ + // | \ + // T2 | \ + // | \ + // | \ + // ------------------------------------------------------------------------------------------------------- + // + // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial + // it's just the min of the old and new starts. i.e.: + // + // 0 10 20 30 40 50 60 70 80 90 100 + // ------------------------------------------------------------*------------------------------------------ + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ----------------------------------------$-------------------$------------------------------------------ + // . | \ + // . | \ + // T2 . | \ + // . | \ + // . | \ + // ----------------------------------------------------------------------*-------------------------------- + // + // (Note the dots represent the newly inferrred start. + // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the + // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see + // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that + // means: + // + // 0 10 20 30 40 50 60 70 80 90 100 + // --------------------------------------------------------------------------------*---------------------- + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ------------------------------------------------------------$------------------------------------------ + // . | \ + // . | \ + // T2 . | \ + // . | \ + // . | \ + // ----------------------------------------------------------------------*-------------------------------- + // + // In other words (in this case), we're recognizing that the second edit happened after where the first edit + // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started + // that's the same as if we started at char 80 instead of 60. + // + // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter + // than pusing the first edit forward to match the second, we'll push the second edit forward to match the + // first. + // + // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange + // semantics: { { start: 10, length: 70 }, newLength: 60 } + // + // The math then works out as follows. + // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the + // final result like so: + // + // { + // oldStart3: Min(oldStart1, oldStart2), + // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), + // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) + // } + var oldStart1 = oldStartN; + var oldEnd1 = oldEndN; + var newEnd1 = newEndN; + var oldStart2 = nextChange.span.start; + var oldEnd2 = textSpanEnd(nextChange.span); + var newEnd2 = oldStart2 + nextChange.newLength; + oldStartN = Math.min(oldStart1, oldStart2); + oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); + newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); + } + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); + } + ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; +})(ts || (ts = {})); /// /// var ts; @@ -6995,6 +6997,7 @@ var ts; function tryParse(callback) { return speculationHelper(callback, false); } + // Ignore strict mode flag because we will report an error in type checker instead. function isIdentifier() { if (token === 65 /* Identifier */) { return true; @@ -7004,7 +7007,7 @@ var ts; if (token === 111 /* YieldKeyword */ && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 111 /* LastFutureReservedWord */ : token > 101 /* LastReservedWord */; + return token > 101 /* LastReservedWord */; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -7108,6 +7111,10 @@ var ts; identifierCount++; if (isIdentifier) { var node = createNode(65 /* Identifier */); + // Store original token kind if it is not just an Identifier so we can report appropriate error later in type checker + if (token !== 65 /* Identifier */) { + node.originalKeywordKind = token; + } node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); @@ -9823,6 +9830,17 @@ var ts; node.body = parseFunctionBlockOrSemicolon(false); return finishNode(node); } + function isClassMemberModifier(idToken) { + switch (idToken) { + case 109 /* PublicKeyword */: + case 107 /* PrivateKeyword */: + case 108 /* ProtectedKeyword */: + case 110 /* StaticKeyword */: + return true; + default: + return false; + } + } function isClassMemberStart() { var idToken; if (token === 52 /* AtToken */) { @@ -9831,6 +9849,15 @@ var ts; // Eat up all modifiers, but hold on to the last one in case it is actually an identifier. while (ts.isModifier(token)) { idToken = token; + // If the idToken is a class modifier (protected, private, public, and static), it is + // certain that we are starting to parse class member. This allows better error recovery + // Example: + // public foo() ... // true + // public @dec blah ... // true; we will then report an error later + // export public ... // true; we will then report an error later + if (isClassMemberModifier(idToken)) { + return true; + } nextToken(); } if (token === 35 /* AsteriskToken */) { @@ -17230,7 +17257,7 @@ var ts; function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); // Grammar checking - var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); + var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node); if (!hasGrammarError && node.kind === 162 /* FunctionExpression */) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } @@ -17272,7 +17299,7 @@ var ts; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); - if (node.type) { + if (node.type && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { @@ -17834,6 +17861,7 @@ var ts; return type; } function checkExpression(node, contextualMapper) { + checkGrammarIdentifierInStrictMode(node); return checkExpressionOrQualifiedName(node, contextualMapper); } // Checks an expression and returns its type. The contextualMapper parameter serves two purposes: When @@ -17941,6 +17969,7 @@ var ts; } // DECLARATION AND STATEMENT TYPE CHECKING function checkTypeParameter(node) { + checkGrammarDeclarationNameInStrictMode(node); // Grammar Checking if (node.expression) { grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); @@ -18172,9 +18201,11 @@ var ts; checkDecorators(node); } function checkTypeReferenceNode(node) { + checkGrammarTypeReferenceInStrictMode(node.typeName); return checkTypeReferenceOrHeritageClauseElement(node); } function checkHeritageClauseElement(node) { + checkGrammarHeritageClauseElementInStrictMode(node.expression); return checkTypeReferenceOrHeritageClauseElement(node); } function checkTypeReferenceOrHeritageClauseElement(node) { @@ -18648,6 +18679,7 @@ var ts; } } function checkFunctionLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSignatureDeclaration(node); // Do not use hasDynamicName here, because that returns false for well known symbols. @@ -18678,7 +18710,7 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind)) { + if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } // Report an implicit any error if there is no body, no explicit return type, and node is not a private method @@ -18891,6 +18923,7 @@ var ts; } // Check variable, parameter, or property declaration function checkVariableLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSourceElement(node.type); // For a computed property, just check the initializer and exit @@ -19521,6 +19554,7 @@ var ts; return unknownType; } function checkClassDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); // Grammar checking if (node.parent.kind !== 206 /* ModuleBlock */ && node.parent.kind !== 227 /* SourceFile */) { grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); @@ -19721,7 +19755,7 @@ var ts; } function checkInterfaceDeclaration(node) { // Grammar checking - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); @@ -19921,7 +19955,7 @@ var ts; return; } // Grammar checking - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); @@ -19983,7 +20017,7 @@ var ts; function checkModuleDeclaration(node) { if (produceDiagnostics) { // Grammar checking - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { + if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8 /* StringLiteral */) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -20078,7 +20112,7 @@ var ts; checkAliasSymbol(node); } function checkImportDeclaration(node) { - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) { + if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -20099,7 +20133,7 @@ var ts; } } function checkImportEqualsDeclaration(node) { - checkGrammarDecorators(node) || checkGrammarModifiers(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node); if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (node.flags & 1 /* Export */) { @@ -20418,6 +20452,8 @@ var ts; // Grammar checking checkGrammarSourceFile(node); emitExtends = false; + emitDecorate = false; + emitParam = false; potentialThisCollisions.length = 0; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); @@ -21346,6 +21382,137 @@ var ts; anyArrayType = createArrayType(anyType); } // GRAMMAR CHECKING + function isReservedwordInStrictMode(node) { + // Check that originalKeywordKind is less than LastFurtureReservedWord to see if an Identifier is a strict-mode reserved word + return (node.parserContextFlags & 1 /* StrictMode */) && + (node.originalKeywordKind >= 103 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 111 /* LastFutureReservedWord */); + } + function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) { + // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.) + // if so, we would like to give more explicit invalid usage error. + if (ts.getAncestor(identifier, 201 /* ClassDeclaration */) || ts.getAncestor(identifier, 174 /* ClassExpression */)) { + return grammarErrorOnNode(identifier, message, arg0); + } + return false; + } + function checkGrammarImportDeclarationNameInStrictMode(node) { + // Check if the import declaration used strict-mode reserved word in its names bindings + if (node.importClause) { + var impotClause = node.importClause; + if (impotClause.namedBindings) { + var nameBindings = impotClause.namedBindings; + if (nameBindings.kind === 211 /* NamespaceImport */) { + var name_11 = nameBindings.name; + if (name_11.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_11); + return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + else if (nameBindings.kind === 212 /* NamedImports */) { + var reportError = false; + for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) { + var element = _a[_i]; + var name_12 = element.name; + if (name_12.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_12); + reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return reportError; + } + } + } + return false; + } + function checkGrammarDeclarationNameInStrictMode(node) { + var name = node.name; + if (name && name.kind === 65 /* Identifier */ && isReservedwordInStrictMode(name)) { + var nameText = ts.declarationNameToString(name); + switch (node.kind) { + case 129 /* Parameter */: + case 198 /* VariableDeclaration */: + case 200 /* FunctionDeclaration */: + case 128 /* TypeParameter */: + case 152 /* BindingElement */: + case 202 /* InterfaceDeclaration */: + case 203 /* TypeAliasDeclaration */: + case 204 /* EnumDeclaration */: + return checkGrammarIdentifierInStrictMode(name); + case 201 /* ClassDeclaration */: + // Report an error if the class declaration uses strict-mode reserved word. + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText); + case 205 /* ModuleDeclaration */: + // Report an error if the module declaration uses strict-mode reserved word. + // TODO(yuisu): fix this when having external module in strict mode + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + case 208 /* ImportEqualsDeclaration */: + // TODO(yuisu): fix this when having external module in strict mode + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return false; + } + function checkGrammarTypeReferenceInStrictMode(typeName) { + // Check if the type reference is using strict mode keyword + // Example: + // class C { + // foo(x: public){} // Error. + // } + if (typeName.kind === 65 /* Identifier */) { + checkGrammarTypeNameInStrictMode(typeName); + } + else if (typeName.kind === 126 /* QualifiedName */) { + // Walk from right to left and report a possible error at each Identifier in QualifiedName + // Example: + // x1: public.private.package // error at public and private + checkGrammarTypeNameInStrictMode(typeName.right); + checkGrammarTypeReferenceInStrictMode(typeName.left); + } + } + // This function will report an error for every identifier in property access expression + // whether it violates strict mode reserved words. + // Example: + // public // error at public + // public.private.package // error at public + // B.private.B // no error + function checkGrammarHeritageClauseElementInStrictMode(expression) { + // Example: + // class C extends public // error at public + if (expression && expression.kind === 65 /* Identifier */) { + return checkGrammarIdentifierInStrictMode(expression); + } + else if (expression && expression.kind === 155 /* PropertyAccessExpression */) { + // Walk from left to right in PropertyAccessExpression until we are at the left most expression + // in PropertyAccessExpression. According to grammar production of MemberExpression, + // the left component expression is a PrimaryExpression (i.e. Identifier) while the other + // component after dots can be IdentifierName. + checkGrammarHeritageClauseElementInStrictMode(expression.expression); + } + } + // The function takes an identifier itself or an expression which has SyntaxKind.Identifier. + function checkGrammarIdentifierInStrictMode(node, nameText) { + if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) { + if (!nameText) { + nameText = ts.declarationNameToString(node); + } + // TODO (yuisu): Fix when module is a strict mode + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } + // The function takes an identifier when uses as a typeName in TypeReferenceNode + function checkGrammarTypeNameInStrictMode(node) { + if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) { + var nameText = ts.declarationNameToString(node); + // TODO (yuisu): Fix when module is a strict mode + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } function checkGrammarDecorators(node) { if (!node.decorators) { return false; @@ -21721,11 +21888,11 @@ var ts; var inStrictMode = (node.parserContextFlags & 1 /* StrictMode */) !== 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var prop = _a[_i]; - var name_11 = prop.name; + var name_13 = prop.name; if (prop.kind === 175 /* OmittedExpression */ || - name_11.kind === 127 /* ComputedPropertyName */) { + name_13.kind === 127 /* ComputedPropertyName */) { // If the name is not a ComputedPropertyName, the grammar checking will skip it - checkGrammarComputedPropertyName(name_11); + checkGrammarComputedPropertyName(name_13); continue; } // ECMA-262 11.1.5 Object Initialiser @@ -21740,8 +21907,8 @@ var ts; if (prop.kind === 224 /* PropertyAssignment */ || prop.kind === 225 /* ShorthandPropertyAssignment */) { // Grammar checking for computedPropertName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_11.kind === 7 /* NumericLiteral */) { - checkGrammarNumbericLiteral(name_11); + if (name_13.kind === 7 /* NumericLiteral */) { + checkGrammarNumbericLiteral(name_13); } currentKind = Property; } @@ -21757,26 +21924,26 @@ var ts; else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_11.text)) { - seen[name_11.text] = currentKind; + if (!ts.hasProperty(seen, name_13.text)) { + seen[name_13.text] = currentKind; } else { - var existingKind = seen[name_11.text]; + var existingKind = seen[name_13.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_11.text] = currentKind | existingKind; + seen[name_13.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -22124,15 +22291,14 @@ var ts; var identifier = name; if (contextNode && (contextNode.parserContextFlags & 1 /* StrictMode */) && ts.isEvalOrArgumentsIdentifier(identifier)) { var nameText = ts.declarationNameToString(identifier); - // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.) - // if so, we would like to give more explicit invalid usage error. - // This will be particularly helpful in the case of "arguments" as such case is very common mistake. - if (ts.getAncestor(name, 201 /* ClassDeclaration */) || ts.getAncestor(name, 174 /* ClassExpression */)) { - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); - } - else { + // We check first if the name is inside class declaration or class expression; if so give explicit message + // otherwise report generic error message. + // reportGrammarErrorInClassDeclaration only return true if grammar error is successfully reported and false otherwise + var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); + if (!reportErrorInClassDeclaration) { return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); } + return reportErrorInClassDeclaration; } } } @@ -22631,9 +22797,9 @@ var ts; } var count = 0; while (true) { - var name_12 = baseName + "_" + (++count); - if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) { - return name_12; + var name_14 = baseName + "_" + (++count); + if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) { + return name_14; } } } @@ -23835,9 +24001,9 @@ var ts; tempFlags++; // Skip over 'i' and 'n' if (count !== 8 && count !== 13) { - var name_13 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); - if (isUniqueName(name_13)) { - return name_13; + var name_15 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); + if (isUniqueName(name_15)) { + return name_15; } } } @@ -23870,9 +24036,9 @@ var ts; } function generateNameForModuleOrEnum(node) { if (node.name.kind === 65 /* Identifier */) { - var name_14 = node.name.text; + var name_16 = node.name.text; // Use module/enum name itself if it is unique, otherwise make a unique variation - assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14)); + assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16)); } } function generateNameForImportOrExportDeclaration(node) { @@ -24085,8 +24251,8 @@ var ts; // Child scopes are always shown with a dot (even if they have no name), // unless it is a computed property. Then it is shown with brackets, // but the brackets are included in the name. - var name_15 = node.name; - if (!name_15 || name_15.kind !== 127 /* ComputedPropertyName */) { + var name_17 = node.name; + if (!name_17 || name_17.kind !== 127 /* ComputedPropertyName */) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -24115,10 +24281,10 @@ var ts; node.kind === 204 /* EnumDeclaration */) { // Declaration and has associated name use it if (node.name) { - var name_16 = node.name; + var name_18 = node.name; // For computed property names, the text will include the brackets - scopeName = name_16.kind === 127 /* ComputedPropertyName */ - ? ts.getTextOfNode(name_16) + scopeName = name_18.kind === 127 /* ComputedPropertyName */ + ? ts.getTextOfNode(name_18) : node.name.text; } recordScopeNameStart(scopeName); @@ -24592,6 +24758,7 @@ var ts; default: return -1 /* LessThan */; } + case 172 /* YieldExpression */: case 170 /* ConditionalExpression */: return -1 /* LessThan */; default: @@ -24779,6 +24946,16 @@ var ts; write("..."); emit(node.expression); } + function emitYieldExpression(node) { + write(ts.tokenToString(111 /* YieldKeyword */)); + if (node.asteriskToken) { + write("*"); + } + if (node.expression) { + write(" "); + emit(node.expression); + } + } function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 65 /* Identifier */: @@ -25037,6 +25214,9 @@ var ts; write("]"); } function emitMethod(node) { + if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) { + write("*"); + } emit(node.name, false); if (languageVersion < 2 /* ES6 */) { write(": function "); @@ -26140,12 +26320,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2 /* ES6 */) { if (ts.isBindingPattern(node.name)) { - var name_17 = createTempVariable(0 /* Auto */); + var name_19 = createTempVariable(0 /* Auto */); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_17); - emit(name_17); + tempParameters.push(name_19); + emit(name_19); } else { emit(node.name); @@ -26269,7 +26449,11 @@ var ts; write("default "); } } - write("function "); + write("function"); + if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) { + write("*"); + } + write(" "); } if (shouldEmitFunctionName(node)) { emitDeclarationName(node); @@ -26616,6 +26800,9 @@ var ts; else if (member.kind === 137 /* SetAccessor */) { write("set "); } + if (member.asteriskToken) { + write("*"); + } emit(member.name); emitSignatureAndBody(member); emitEnd(member); @@ -27761,8 +27948,8 @@ var ts; // export { x, y } for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_18 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier); + var name_20 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier); } } break; @@ -28094,6 +28281,8 @@ var ts; return emitConditionalExpression(node); case 173 /* SpreadElementExpression */: return emitSpreadElementExpression(node); + case 172 /* YieldExpression */: + return emitYieldExpression(node); case 175 /* OmittedExpression */: return; case 179 /* Block */: @@ -28393,7 +28582,7 @@ var ts; } return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: function () { return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); }, useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -28433,6 +28622,10 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function getDefaultLibFileName(options) { + return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts"; + } + ts.getDefaultLibFileName = getDefaultLibFileName; function createProgram(rootNames, options, host) { var program; var files = []; @@ -29753,9 +29946,9 @@ var ts; case 198 /* VariableDeclaration */: case 152 /* BindingElement */: var variableDeclarationNode; - var name_19; + var name_21; if (node.kind === 152 /* BindingElement */) { - name_19 = node.name; + name_21 = node.name; variableDeclarationNode = node; // binding elements are added only for variable declarations // bubble up to the containing variable declaration @@ -29767,16 +29960,16 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_19 = node.name; + name_21 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.variableElement); } case 135 /* Constructor */: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); @@ -32316,9 +32509,9 @@ var ts; } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_20 in o) { - if (o[name_20] === rule) { - return name_20; + for (var name_22 in o) { + if (o[name_22] === rule) { + return name_22; } } throw new Error("Unknown rule"); @@ -36528,10 +36721,10 @@ var ts; for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) { var sourceFile = _a[_i]; var nameTable = getNameTable(sourceFile); - for (var name_21 in nameTable) { - if (!allNames[name_21]) { - allNames[name_21] = name_21; - var displayName = getCompletionEntryDisplayName(name_21, target, true); + for (var name_23 in nameTable) { + if (!allNames[name_23]) { + allNames[name_23] = name_23; + var displayName = getCompletionEntryDisplayName(name_23, target, true); if (displayName) { var entry = { name: displayName, @@ -38363,19 +38556,19 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeInfoResolver.getContextualType(objectLiteral); - var name_22 = node.text; + var name_24 = node.text; if (contextualType) { if (contextualType.flags & 16384 /* Union */) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name_22); + var unionProperty = contextualType.getProperty(name_24); if (unionProperty) { return [unionProperty]; } else { var result_3 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_22); + var symbol = t.getProperty(name_24); if (symbol) { result_3.push(symbol); } @@ -38384,7 +38577,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_22); + var symbol_1 = contextualType.getProperty(name_24); if (symbol_1) { return [symbol_1]; } diff --git a/bin/typescriptServices.d.ts b/bin/typescriptServices.d.ts index d988810fd3b..9e9df4fdc78 100644 --- a/bin/typescriptServices.d.ts +++ b/bin/typescriptServices.d.ts @@ -310,6 +310,7 @@ declare module ts { } interface Identifier extends PrimaryExpression { text: string; + originalKeywordKind?: SyntaxKind; } interface QualifiedName extends Node { left: EntityName; @@ -1181,6 +1182,33 @@ declare module ts { function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean; function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean; } +declare module ts { + function textSpanEnd(span: TextSpan): number; + function textSpanIsEmpty(span: TextSpan): boolean; + function textSpanContainsPosition(span: TextSpan, position: number): boolean; + function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean; + function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean; + function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan; + function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean; + function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean; + function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean; + function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan; + function createTextSpan(start: number, length: number): TextSpan; + function createTextSpanFromBounds(start: number, end: number): TextSpan; + function textChangeRangeNewSpan(range: TextChangeRange): TextSpan; + function textChangeRangeIsUnchanged(range: TextChangeRange): boolean; + function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange; + let unchangedTextChangeRange: TextChangeRange; + /** + * Called to merge all the changes that occurred across several versions of a script snapshot + * into a single change. i.e. if a user keeps making successive edits to a script we will + * have a text change from V1 to V2, V2 to V3, ..., Vn. + * + * This function will then merge those changes into a single change range valid between V1 and + * Vn. + */ + function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; +} declare module ts { function getNodeConstructor(kind: SyntaxKind): new () => Node; function createNode(kind: SyntaxKind): Node; @@ -1199,6 +1227,7 @@ declare module ts { function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program): Diagnostic[]; function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string; + function getDefaultLibFileName(options: CompilerOptions): string; function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program; } declare module ts { diff --git a/bin/typescriptServices.js b/bin/typescriptServices.js index 1c749f0d94a..4544cc24ec1 100644 --- a/bin/typescriptServices.js +++ b/bin/typescriptServices.js @@ -1308,10 +1308,6 @@ var ts; "\u2029": "\\u2029", "\u0085": "\\u0085" // nextLine }; - function getDefaultLibFileName(options) { - return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts"; - } - ts.getDefaultLibFileName = getDefaultLibFileName; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -1809,6 +1805,12 @@ var ts; Ambient_const_enums_are_not_allowed_when_the_separateCompilation_flag_is_provided: { code: 1209, category: ts.DiagnosticCategory.Error, key: "Ambient const enums are not allowed when the '--separateCompilation' flag is provided." }, Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode: { code: 1210, category: ts.DiagnosticCategory.Error, key: "Invalid use of '{0}'. Class definitions are automatically in strict mode." }, A_class_declaration_without_the_default_modifier_must_have_a_name: { code: 1211, category: ts.DiagnosticCategory.Error, key: "A class declaration without the 'default' modifier must have a name" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode: { code: 1212, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode" }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1213, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Identifier_expected_0_is_a_reserved_word_in_strict_mode_External_Module_is_automatically_in_strict_mode: { code: 1214, category: ts.DiagnosticCategory.Error, key: "Identifier expected. '{0}' is a reserved word in strict mode. External Module is automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode: { code: 1215, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode" }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode: { code: 1216, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode." }, + Type_expected_0_is_a_reserved_word_in_strict_mode_Module_is_automatically_in_strict_mode: { code: 1217, category: ts.DiagnosticCategory.Error, key: "Type expected. '{0}' is a reserved word in strict mode. Module is automatically in strict mode." }, Duplicate_identifier_0: { code: 2300, category: ts.DiagnosticCategory.Error, key: "Duplicate identifier '{0}'." }, Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor: { code: 2301, category: ts.DiagnosticCategory.Error, key: "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor." }, Static_members_cannot_reference_class_type_parameters: { code: 2302, category: ts.DiagnosticCategory.Error, key: "Static members cannot reference class type parameters." }, @@ -4331,13 +4333,12 @@ var ts; }; } ts.createDiagnosticForNodeFromMessageChain = createDiagnosticForNodeFromMessageChain; - /* @internal */ function getSpanOfTokenAtPosition(sourceFile, pos) { var scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.text); scanner.setTextPos(pos); scanner.scan(); var start = scanner.getTokenPos(); - return createTextSpanFromBounds(start, scanner.getTextPos()); + return ts.createTextSpanFromBounds(start, scanner.getTextPos()); } ts.getSpanOfTokenAtPosition = getSpanOfTokenAtPosition; function getErrorSpanForNode(sourceFile, node) { @@ -4347,7 +4348,7 @@ var ts; var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { // file is empty - return span for the beginning of the file - return createTextSpan(0, 0); + return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); // This list is a work in progress. Add missing node kinds to improve their error @@ -4373,7 +4374,7 @@ var ts; var pos = nodeIsMissing(errorNode) ? errorNode.pos : ts.skipTrivia(sourceFile.text, errorNode.pos); - return createTextSpanFromBounds(pos, errorNode.end); + return ts.createTextSpanFromBounds(pos, errorNode.end); } ts.getErrorSpanForNode = getErrorSpanForNode; function isExternalModule(file) { @@ -4482,7 +4483,6 @@ var ts; } } ts.forEachReturnStatement = forEachReturnStatement; - /* @internal */ function isVariableLike(node) { if (node) { switch (node.kind) { @@ -5170,205 +5170,6 @@ var ts; return false; } ts.isModifier = isModifier; - function textSpanEnd(span) { - return span.start + span.length; - } - ts.textSpanEnd = textSpanEnd; - function textSpanIsEmpty(span) { - return span.length === 0; - } - ts.textSpanIsEmpty = textSpanIsEmpty; - function textSpanContainsPosition(span, position) { - return position >= span.start && position < textSpanEnd(span); - } - ts.textSpanContainsPosition = textSpanContainsPosition; - // Returns true if 'span' contains 'other'. - function textSpanContainsTextSpan(span, other) { - return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); - } - ts.textSpanContainsTextSpan = textSpanContainsTextSpan; - function textSpanOverlapsWith(span, other) { - var overlapStart = Math.max(span.start, other.start); - var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); - return overlapStart < overlapEnd; - } - ts.textSpanOverlapsWith = textSpanOverlapsWith; - function textSpanOverlap(span1, span2) { - var overlapStart = Math.max(span1.start, span2.start); - var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (overlapStart < overlapEnd) { - return createTextSpanFromBounds(overlapStart, overlapEnd); - } - return undefined; - } - ts.textSpanOverlap = textSpanOverlap; - function textSpanIntersectsWithTextSpan(span, other) { - return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; - } - ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; - function textSpanIntersectsWith(span, start, length) { - var end = start + length; - return start <= textSpanEnd(span) && end >= span.start; - } - ts.textSpanIntersectsWith = textSpanIntersectsWith; - function textSpanIntersectsWithPosition(span, position) { - return position <= textSpanEnd(span) && position >= span.start; - } - ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; - function textSpanIntersection(span1, span2) { - var intersectStart = Math.max(span1.start, span2.start); - var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); - if (intersectStart <= intersectEnd) { - return createTextSpanFromBounds(intersectStart, intersectEnd); - } - return undefined; - } - ts.textSpanIntersection = textSpanIntersection; - function createTextSpan(start, length) { - if (start < 0) { - throw new Error("start < 0"); - } - if (length < 0) { - throw new Error("length < 0"); - } - return { start: start, length: length }; - } - ts.createTextSpan = createTextSpan; - function createTextSpanFromBounds(start, end) { - return createTextSpan(start, end - start); - } - ts.createTextSpanFromBounds = createTextSpanFromBounds; - function textChangeRangeNewSpan(range) { - return createTextSpan(range.span.start, range.newLength); - } - ts.textChangeRangeNewSpan = textChangeRangeNewSpan; - function textChangeRangeIsUnchanged(range) { - return textSpanIsEmpty(range.span) && range.newLength === 0; - } - ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; - function createTextChangeRange(span, newLength) { - if (newLength < 0) { - throw new Error("newLength < 0"); - } - return { span: span, newLength: newLength }; - } - ts.createTextChangeRange = createTextChangeRange; - ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); - /** - * Called to merge all the changes that occurred across several versions of a script snapshot - * into a single change. i.e. if a user keeps making successive edits to a script we will - * have a text change from V1 to V2, V2 to V3, ..., Vn. - * - * This function will then merge those changes into a single change range valid between V1 and - * Vn. - */ - function collapseTextChangeRangesAcrossMultipleVersions(changes) { - if (changes.length === 0) { - return ts.unchangedTextChangeRange; - } - if (changes.length === 1) { - return changes[0]; - } - // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } - // as it makes things much easier to reason about. - var change0 = changes[0]; - var oldStartN = change0.span.start; - var oldEndN = textSpanEnd(change0.span); - var newEndN = oldStartN + change0.newLength; - for (var i = 1; i < changes.length; i++) { - var nextChange = changes[i]; - // Consider the following case: - // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting - // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. - // i.e. the span starting at 30 with length 30 is increased to length 40. - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------------------------------------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------------------------------------------------- - // | \ - // | \ - // T2 | \ - // | \ - // | \ - // ------------------------------------------------------------------------------------------------------- - // - // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial - // it's just the min of the old and new starts. i.e.: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // ------------------------------------------------------------*------------------------------------------ - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ----------------------------------------$-------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // (Note the dots represent the newly inferrred start. - // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the - // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see - // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that - // means: - // - // 0 10 20 30 40 50 60 70 80 90 100 - // --------------------------------------------------------------------------------*---------------------- - // | / - // | /---- - // T1 | /---- - // | /---- - // | /---- - // ------------------------------------------------------------$------------------------------------------ - // . | \ - // . | \ - // T2 . | \ - // . | \ - // . | \ - // ----------------------------------------------------------------------*-------------------------------- - // - // In other words (in this case), we're recognizing that the second edit happened after where the first edit - // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started - // that's the same as if we started at char 80 instead of 60. - // - // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter - // than pusing the first edit forward to match the second, we'll push the second edit forward to match the - // first. - // - // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange - // semantics: { { start: 10, length: 70 }, newLength: 60 } - // - // The math then works out as follows. - // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the - // final result like so: - // - // { - // oldStart3: Min(oldStart1, oldStart2), - // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), - // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) - // } - var oldStart1 = oldStartN; - var oldEnd1 = oldEndN; - var newEnd1 = newEndN; - var oldStart2 = nextChange.span.start; - var oldEnd2 = textSpanEnd(nextChange.span); - var newEnd2 = oldStart2 + nextChange.newLength; - oldStartN = Math.min(oldStart1, oldStart2); - oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); - newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); - } - return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); - } - ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; function nodeStartsNewLexicalEnvironment(n) { return isFunctionLike(n) || n.kind === 205 /* ModuleDeclaration */ || n.kind === 227 /* SourceFile */; } @@ -5385,7 +5186,6 @@ var ts; return node; } ts.createSynthesizedNode = createSynthesizedNode; - /* @internal */ function createDiagnosticCollection() { var nonFileDiagnostics = []; var fileDiagnostics = {}; @@ -5807,6 +5607,208 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; })(ts || (ts = {})); +var ts; +(function (ts) { + function textSpanEnd(span) { + return span.start + span.length; + } + ts.textSpanEnd = textSpanEnd; + function textSpanIsEmpty(span) { + return span.length === 0; + } + ts.textSpanIsEmpty = textSpanIsEmpty; + function textSpanContainsPosition(span, position) { + return position >= span.start && position < textSpanEnd(span); + } + ts.textSpanContainsPosition = textSpanContainsPosition; + // Returns true if 'span' contains 'other'. + function textSpanContainsTextSpan(span, other) { + return other.start >= span.start && textSpanEnd(other) <= textSpanEnd(span); + } + ts.textSpanContainsTextSpan = textSpanContainsTextSpan; + function textSpanOverlapsWith(span, other) { + var overlapStart = Math.max(span.start, other.start); + var overlapEnd = Math.min(textSpanEnd(span), textSpanEnd(other)); + return overlapStart < overlapEnd; + } + ts.textSpanOverlapsWith = textSpanOverlapsWith; + function textSpanOverlap(span1, span2) { + var overlapStart = Math.max(span1.start, span2.start); + var overlapEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (overlapStart < overlapEnd) { + return createTextSpanFromBounds(overlapStart, overlapEnd); + } + return undefined; + } + ts.textSpanOverlap = textSpanOverlap; + function textSpanIntersectsWithTextSpan(span, other) { + return other.start <= textSpanEnd(span) && textSpanEnd(other) >= span.start; + } + ts.textSpanIntersectsWithTextSpan = textSpanIntersectsWithTextSpan; + function textSpanIntersectsWith(span, start, length) { + var end = start + length; + return start <= textSpanEnd(span) && end >= span.start; + } + ts.textSpanIntersectsWith = textSpanIntersectsWith; + function textSpanIntersectsWithPosition(span, position) { + return position <= textSpanEnd(span) && position >= span.start; + } + ts.textSpanIntersectsWithPosition = textSpanIntersectsWithPosition; + function textSpanIntersection(span1, span2) { + var intersectStart = Math.max(span1.start, span2.start); + var intersectEnd = Math.min(textSpanEnd(span1), textSpanEnd(span2)); + if (intersectStart <= intersectEnd) { + return createTextSpanFromBounds(intersectStart, intersectEnd); + } + return undefined; + } + ts.textSpanIntersection = textSpanIntersection; + function createTextSpan(start, length) { + if (start < 0) { + throw new Error("start < 0"); + } + if (length < 0) { + throw new Error("length < 0"); + } + return { start: start, length: length }; + } + ts.createTextSpan = createTextSpan; + function createTextSpanFromBounds(start, end) { + return createTextSpan(start, end - start); + } + ts.createTextSpanFromBounds = createTextSpanFromBounds; + function textChangeRangeNewSpan(range) { + return createTextSpan(range.span.start, range.newLength); + } + ts.textChangeRangeNewSpan = textChangeRangeNewSpan; + function textChangeRangeIsUnchanged(range) { + return textSpanIsEmpty(range.span) && range.newLength === 0; + } + ts.textChangeRangeIsUnchanged = textChangeRangeIsUnchanged; + function createTextChangeRange(span, newLength) { + if (newLength < 0) { + throw new Error("newLength < 0"); + } + return { span: span, newLength: newLength }; + } + ts.createTextChangeRange = createTextChangeRange; + ts.unchangedTextChangeRange = createTextChangeRange(createTextSpan(0, 0), 0); + /** + * Called to merge all the changes that occurred across several versions of a script snapshot + * into a single change. i.e. if a user keeps making successive edits to a script we will + * have a text change from V1 to V2, V2 to V3, ..., Vn. + * + * This function will then merge those changes into a single change range valid between V1 and + * Vn. + */ + function collapseTextChangeRangesAcrossMultipleVersions(changes) { + if (changes.length === 0) { + return ts.unchangedTextChangeRange; + } + if (changes.length === 1) { + return changes[0]; + } + // We change from talking about { { oldStart, oldLength }, newLength } to { oldStart, oldEnd, newEnd } + // as it makes things much easier to reason about. + var change0 = changes[0]; + var oldStartN = change0.span.start; + var oldEndN = textSpanEnd(change0.span); + var newEndN = oldStartN + change0.newLength; + for (var i = 1; i < changes.length; i++) { + var nextChange = changes[i]; + // Consider the following case: + // i.e. two edits. The first represents the text change range { { 10, 50 }, 30 }. i.e. The span starting + // at 10, with length 50 is reduced to length 30. The second represents the text change range { { 30, 30 }, 40 }. + // i.e. the span starting at 30 with length 30 is increased to length 40. + // + // 0 10 20 30 40 50 60 70 80 90 100 + // ------------------------------------------------------------------------------------------------------- + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ------------------------------------------------------------------------------------------------------- + // | \ + // | \ + // T2 | \ + // | \ + // | \ + // ------------------------------------------------------------------------------------------------------- + // + // Merging these turns out to not be too difficult. First, determining the new start of the change is trivial + // it's just the min of the old and new starts. i.e.: + // + // 0 10 20 30 40 50 60 70 80 90 100 + // ------------------------------------------------------------*------------------------------------------ + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ----------------------------------------$-------------------$------------------------------------------ + // . | \ + // . | \ + // T2 . | \ + // . | \ + // . | \ + // ----------------------------------------------------------------------*-------------------------------- + // + // (Note the dots represent the newly inferrred start. + // Determining the new and old end is also pretty simple. Basically it boils down to paying attention to the + // absolute positions at the asterixes, and the relative change between the dollar signs. Basically, we see + // which if the two $'s precedes the other, and we move that one forward until they line up. in this case that + // means: + // + // 0 10 20 30 40 50 60 70 80 90 100 + // --------------------------------------------------------------------------------*---------------------- + // | / + // | /---- + // T1 | /---- + // | /---- + // | /---- + // ------------------------------------------------------------$------------------------------------------ + // . | \ + // . | \ + // T2 . | \ + // . | \ + // . | \ + // ----------------------------------------------------------------------*-------------------------------- + // + // In other words (in this case), we're recognizing that the second edit happened after where the first edit + // ended with a delta of 20 characters (60 - 40). Thus, if we go back in time to where the first edit started + // that's the same as if we started at char 80 instead of 60. + // + // As it so happens, the same logic applies if the second edit precedes the first edit. In that case rahter + // than pusing the first edit forward to match the second, we'll push the second edit forward to match the + // first. + // + // In this case that means we have { oldStart: 10, oldEnd: 80, newEnd: 70 } or, in TextChangeRange + // semantics: { { start: 10, length: 70 }, newLength: 60 } + // + // The math then works out as follows. + // If we have { oldStart1, oldEnd1, newEnd1 } and { oldStart2, oldEnd2, newEnd2 } then we can compute the + // final result like so: + // + // { + // oldStart3: Min(oldStart1, oldStart2), + // oldEnd3 : Max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)), + // newEnd3 : Max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)) + // } + var oldStart1 = oldStartN; + var oldEnd1 = oldEndN; + var newEnd1 = newEndN; + var oldStart2 = nextChange.span.start; + var oldEnd2 = textSpanEnd(nextChange.span); + var newEnd2 = oldStart2 + nextChange.newLength; + oldStartN = Math.min(oldStart1, oldStart2); + oldEndN = Math.max(oldEnd1, oldEnd1 + (oldEnd2 - newEnd1)); + newEndN = Math.max(newEnd2, newEnd2 + (newEnd1 - oldEnd2)); + } + return createTextChangeRange(createTextSpanFromBounds(oldStartN, oldEndN), newEndN - oldStartN); + } + ts.collapseTextChangeRangesAcrossMultipleVersions = collapseTextChangeRangesAcrossMultipleVersions; +})(ts || (ts = {})); /// /// var ts; @@ -6995,6 +6997,7 @@ var ts; function tryParse(callback) { return speculationHelper(callback, false); } + // Ignore strict mode flag because we will report an error in type checker instead. function isIdentifier() { if (token === 65 /* Identifier */) { return true; @@ -7004,7 +7007,7 @@ var ts; if (token === 111 /* YieldKeyword */ && inYieldContext()) { return false; } - return inStrictModeContext() ? token > 111 /* LastFutureReservedWord */ : token > 101 /* LastReservedWord */; + return token > 101 /* LastReservedWord */; } function parseExpected(kind, diagnosticMessage) { if (token === kind) { @@ -7108,6 +7111,10 @@ var ts; identifierCount++; if (isIdentifier) { var node = createNode(65 /* Identifier */); + // Store original token kind if it is not just an Identifier so we can report appropriate error later in type checker + if (token !== 65 /* Identifier */) { + node.originalKeywordKind = token; + } node.text = internIdentifier(scanner.getTokenValue()); nextToken(); return finishNode(node); @@ -9823,6 +9830,17 @@ var ts; node.body = parseFunctionBlockOrSemicolon(false); return finishNode(node); } + function isClassMemberModifier(idToken) { + switch (idToken) { + case 109 /* PublicKeyword */: + case 107 /* PrivateKeyword */: + case 108 /* ProtectedKeyword */: + case 110 /* StaticKeyword */: + return true; + default: + return false; + } + } function isClassMemberStart() { var idToken; if (token === 52 /* AtToken */) { @@ -9831,6 +9849,15 @@ var ts; // Eat up all modifiers, but hold on to the last one in case it is actually an identifier. while (ts.isModifier(token)) { idToken = token; + // If the idToken is a class modifier (protected, private, public, and static), it is + // certain that we are starting to parse class member. This allows better error recovery + // Example: + // public foo() ... // true + // public @dec blah ... // true; we will then report an error later + // export public ... // true; we will then report an error later + if (isClassMemberModifier(idToken)) { + return true; + } nextToken(); } if (token === 35 /* AsteriskToken */) { @@ -17230,7 +17257,7 @@ var ts; function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); // Grammar checking - var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); + var hasGrammarError = checkGrammarDeclarationNameInStrictMode(node) || checkGrammarFunctionLikeDeclaration(node); if (!hasGrammarError && node.kind === 162 /* FunctionExpression */) { checkGrammarFunctionName(node.name) || checkGrammarForGenerator(node); } @@ -17272,7 +17299,7 @@ var ts; } function checkFunctionExpressionOrObjectLiteralMethodBody(node) { ts.Debug.assert(node.kind !== 134 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); - if (node.type) { + if (node.type && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } if (node.body) { @@ -17834,6 +17861,7 @@ var ts; return type; } function checkExpression(node, contextualMapper) { + checkGrammarIdentifierInStrictMode(node); return checkExpressionOrQualifiedName(node, contextualMapper); } // Checks an expression and returns its type. The contextualMapper parameter serves two purposes: When @@ -17941,6 +17969,7 @@ var ts; } // DECLARATION AND STATEMENT TYPE CHECKING function checkTypeParameter(node) { + checkGrammarDeclarationNameInStrictMode(node); // Grammar Checking if (node.expression) { grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); @@ -18172,9 +18201,11 @@ var ts; checkDecorators(node); } function checkTypeReferenceNode(node) { + checkGrammarTypeReferenceInStrictMode(node.typeName); return checkTypeReferenceOrHeritageClauseElement(node); } function checkHeritageClauseElement(node) { + checkGrammarHeritageClauseElementInStrictMode(node.expression); return checkTypeReferenceOrHeritageClauseElement(node); } function checkTypeReferenceOrHeritageClauseElement(node) { @@ -18648,6 +18679,7 @@ var ts; } } function checkFunctionLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSignatureDeclaration(node); // Do not use hasDynamicName here, because that returns false for well known symbols. @@ -18678,7 +18710,7 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind)) { + if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNodeOrHeritageClauseElement(node.type)); } // Report an implicit any error if there is no body, no explicit return type, and node is not a private method @@ -18891,6 +18923,7 @@ var ts; } // Check variable, parameter, or property declaration function checkVariableLikeDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); checkDecorators(node); checkSourceElement(node.type); // For a computed property, just check the initializer and exit @@ -19521,6 +19554,7 @@ var ts; return unknownType; } function checkClassDeclaration(node) { + checkGrammarDeclarationNameInStrictMode(node); // Grammar checking if (node.parent.kind !== 206 /* ModuleBlock */ && node.parent.kind !== 227 /* SourceFile */) { grammarErrorOnNode(node, ts.Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); @@ -19721,7 +19755,7 @@ var ts; } function checkInterfaceDeclaration(node) { // Grammar checking - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarInterfaceDeclaration(node); checkTypeParameters(node.typeParameters); if (produceDiagnostics) { checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); @@ -19921,7 +19955,7 @@ var ts; return; } // Grammar checking - checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node) || checkGrammarEnumDeclaration(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Enum_name_cannot_be_0); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); @@ -19983,7 +20017,7 @@ var ts; function checkModuleDeclaration(node) { if (produceDiagnostics) { // Grammar checking - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { + if (!checkGrammarDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node)) { if (!ts.isInAmbientContext(node) && node.name.kind === 8 /* StringLiteral */) { grammarErrorOnNode(node.name, ts.Diagnostics.Only_ambient_modules_can_use_quoted_names); } @@ -20078,7 +20112,7 @@ var ts; checkAliasSymbol(node); } function checkImportDeclaration(node) { - if (!checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) { + if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & 499 /* Modifier */)) { grammarErrorOnFirstToken(node, ts.Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { @@ -20099,7 +20133,7 @@ var ts; } } function checkImportEqualsDeclaration(node) { - checkGrammarDecorators(node) || checkGrammarModifiers(node); + checkGrammarDeclarationNameInStrictMode(node) || checkGrammarDecorators(node) || checkGrammarModifiers(node); if (ts.isInternalModuleImportEqualsDeclaration(node) || checkExternalImportOrExportDeclaration(node)) { checkImportBinding(node); if (node.flags & 1 /* Export */) { @@ -20418,6 +20452,8 @@ var ts; // Grammar checking checkGrammarSourceFile(node); emitExtends = false; + emitDecorate = false; + emitParam = false; potentialThisCollisions.length = 0; ts.forEach(node.statements, checkSourceElement); checkFunctionExpressionBodies(node); @@ -21346,6 +21382,137 @@ var ts; anyArrayType = createArrayType(anyType); } // GRAMMAR CHECKING + function isReservedwordInStrictMode(node) { + // Check that originalKeywordKind is less than LastFurtureReservedWord to see if an Identifier is a strict-mode reserved word + return (node.parserContextFlags & 1 /* StrictMode */) && + (node.originalKeywordKind >= 103 /* FirstFutureReservedWord */ && node.originalKeywordKind <= 111 /* LastFutureReservedWord */); + } + function reportStrictModeGrammarErrorInClassDeclaration(identifier, message, arg0, arg1, arg2) { + // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.) + // if so, we would like to give more explicit invalid usage error. + if (ts.getAncestor(identifier, 201 /* ClassDeclaration */) || ts.getAncestor(identifier, 174 /* ClassExpression */)) { + return grammarErrorOnNode(identifier, message, arg0); + } + return false; + } + function checkGrammarImportDeclarationNameInStrictMode(node) { + // Check if the import declaration used strict-mode reserved word in its names bindings + if (node.importClause) { + var impotClause = node.importClause; + if (impotClause.namedBindings) { + var nameBindings = impotClause.namedBindings; + if (nameBindings.kind === 211 /* NamespaceImport */) { + var name_11 = nameBindings.name; + if (name_11.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_11); + return grammarErrorOnNode(name_11, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + else if (nameBindings.kind === 212 /* NamedImports */) { + var reportError = false; + for (var _i = 0, _a = nameBindings.elements; _i < _a.length; _i++) { + var element = _a[_i]; + var name_12 = element.name; + if (name_12.originalKeywordKind) { + var nameText = ts.declarationNameToString(name_12); + reportError = reportError || grammarErrorOnNode(name_12, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return reportError; + } + } + } + return false; + } + function checkGrammarDeclarationNameInStrictMode(node) { + var name = node.name; + if (name && name.kind === 65 /* Identifier */ && isReservedwordInStrictMode(name)) { + var nameText = ts.declarationNameToString(name); + switch (node.kind) { + case 129 /* Parameter */: + case 198 /* VariableDeclaration */: + case 200 /* FunctionDeclaration */: + case 128 /* TypeParameter */: + case 152 /* BindingElement */: + case 202 /* InterfaceDeclaration */: + case 203 /* TypeAliasDeclaration */: + case 204 /* EnumDeclaration */: + return checkGrammarIdentifierInStrictMode(name); + case 201 /* ClassDeclaration */: + // Report an error if the class declaration uses strict-mode reserved word. + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText); + case 205 /* ModuleDeclaration */: + // Report an error if the module declaration uses strict-mode reserved word. + // TODO(yuisu): fix this when having external module in strict mode + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + case 208 /* ImportEqualsDeclaration */: + // TODO(yuisu): fix this when having external module in strict mode + return grammarErrorOnNode(name, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + } + } + return false; + } + function checkGrammarTypeReferenceInStrictMode(typeName) { + // Check if the type reference is using strict mode keyword + // Example: + // class C { + // foo(x: public){} // Error. + // } + if (typeName.kind === 65 /* Identifier */) { + checkGrammarTypeNameInStrictMode(typeName); + } + else if (typeName.kind === 126 /* QualifiedName */) { + // Walk from right to left and report a possible error at each Identifier in QualifiedName + // Example: + // x1: public.private.package // error at public and private + checkGrammarTypeNameInStrictMode(typeName.right); + checkGrammarTypeReferenceInStrictMode(typeName.left); + } + } + // This function will report an error for every identifier in property access expression + // whether it violates strict mode reserved words. + // Example: + // public // error at public + // public.private.package // error at public + // B.private.B // no error + function checkGrammarHeritageClauseElementInStrictMode(expression) { + // Example: + // class C extends public // error at public + if (expression && expression.kind === 65 /* Identifier */) { + return checkGrammarIdentifierInStrictMode(expression); + } + else if (expression && expression.kind === 155 /* PropertyAccessExpression */) { + // Walk from left to right in PropertyAccessExpression until we are at the left most expression + // in PropertyAccessExpression. According to grammar production of MemberExpression, + // the left component expression is a PrimaryExpression (i.e. Identifier) while the other + // component after dots can be IdentifierName. + checkGrammarHeritageClauseElementInStrictMode(expression.expression); + } + } + // The function takes an identifier itself or an expression which has SyntaxKind.Identifier. + function checkGrammarIdentifierInStrictMode(node, nameText) { + if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) { + if (!nameText) { + nameText = ts.declarationNameToString(node); + } + // TODO (yuisu): Fix when module is a strict mode + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } + // The function takes an identifier when uses as a typeName in TypeReferenceNode + function checkGrammarTypeNameInStrictMode(node) { + if (node && node.kind === 65 /* Identifier */ && isReservedwordInStrictMode(node)) { + var nameText = ts.declarationNameToString(node); + // TODO (yuisu): Fix when module is a strict mode + var errorReport = reportStrictModeGrammarErrorInClassDeclaration(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode, nameText) || + grammarErrorOnNode(node, ts.Diagnostics.Type_expected_0_is_a_reserved_word_in_strict_mode, nameText); + return errorReport; + } + return false; + } function checkGrammarDecorators(node) { if (!node.decorators) { return false; @@ -21721,11 +21888,11 @@ var ts; var inStrictMode = (node.parserContextFlags & 1 /* StrictMode */) !== 0; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var prop = _a[_i]; - var name_11 = prop.name; + var name_13 = prop.name; if (prop.kind === 175 /* OmittedExpression */ || - name_11.kind === 127 /* ComputedPropertyName */) { + name_13.kind === 127 /* ComputedPropertyName */) { // If the name is not a ComputedPropertyName, the grammar checking will skip it - checkGrammarComputedPropertyName(name_11); + checkGrammarComputedPropertyName(name_13); continue; } // ECMA-262 11.1.5 Object Initialiser @@ -21740,8 +21907,8 @@ var ts; if (prop.kind === 224 /* PropertyAssignment */ || prop.kind === 225 /* ShorthandPropertyAssignment */) { // Grammar checking for computedPropertName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_11.kind === 7 /* NumericLiteral */) { - checkGrammarNumbericLiteral(name_11); + if (name_13.kind === 7 /* NumericLiteral */) { + checkGrammarNumbericLiteral(name_13); } currentKind = Property; } @@ -21757,26 +21924,26 @@ var ts; else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_11.text)) { - seen[name_11.text] = currentKind; + if (!ts.hasProperty(seen, name_13.text)) { + seen[name_13.text] = currentKind; } else { - var existingKind = seen[name_11.text]; + var existingKind = seen[name_13.text]; if (currentKind === Property && existingKind === Property) { if (inStrictMode) { - grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); + grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode); } } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_11.text] = currentKind | existingKind; + seen[name_13.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); } } else { - return grammarErrorOnNode(name_11, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return grammarErrorOnNode(name_13, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); } } } @@ -22124,15 +22291,14 @@ var ts; var identifier = name; if (contextNode && (contextNode.parserContextFlags & 1 /* StrictMode */) && ts.isEvalOrArgumentsIdentifier(identifier)) { var nameText = ts.declarationNameToString(identifier); - // We are checking if this name is inside class declaration or class expression (which are under class definitions inside ES6 spec.) - // if so, we would like to give more explicit invalid usage error. - // This will be particularly helpful in the case of "arguments" as such case is very common mistake. - if (ts.getAncestor(name, 201 /* ClassDeclaration */) || ts.getAncestor(name, 174 /* ClassExpression */)) { - return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); - } - else { + // We check first if the name is inside class declaration or class expression; if so give explicit message + // otherwise report generic error message. + // reportGrammarErrorInClassDeclaration only return true if grammar error is successfully reported and false otherwise + var reportErrorInClassDeclaration = reportStrictModeGrammarErrorInClassDeclaration(identifier, ts.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode, nameText); + if (!reportErrorInClassDeclaration) { return grammarErrorOnNode(identifier, ts.Diagnostics.Invalid_use_of_0_in_strict_mode, nameText); } + return reportErrorInClassDeclaration; } } } @@ -22631,9 +22797,9 @@ var ts; } var count = 0; while (true) { - var name_12 = baseName + "_" + (++count); - if (!ts.hasProperty(currentSourceFile.identifiers, name_12)) { - return name_12; + var name_14 = baseName + "_" + (++count); + if (!ts.hasProperty(currentSourceFile.identifiers, name_14)) { + return name_14; } } } @@ -23835,9 +24001,9 @@ var ts; tempFlags++; // Skip over 'i' and 'n' if (count !== 8 && count !== 13) { - var name_13 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); - if (isUniqueName(name_13)) { - return name_13; + var name_15 = count < 26 ? "_" + String.fromCharCode(97 /* a */ + count) : "_" + (count - 26); + if (isUniqueName(name_15)) { + return name_15; } } } @@ -23870,9 +24036,9 @@ var ts; } function generateNameForModuleOrEnum(node) { if (node.name.kind === 65 /* Identifier */) { - var name_14 = node.name.text; + var name_16 = node.name.text; // Use module/enum name itself if it is unique, otherwise make a unique variation - assignGeneratedName(node, isUniqueLocalName(name_14, node) ? name_14 : makeUniqueName(name_14)); + assignGeneratedName(node, isUniqueLocalName(name_16, node) ? name_16 : makeUniqueName(name_16)); } } function generateNameForImportOrExportDeclaration(node) { @@ -24085,8 +24251,8 @@ var ts; // Child scopes are always shown with a dot (even if they have no name), // unless it is a computed property. Then it is shown with brackets, // but the brackets are included in the name. - var name_15 = node.name; - if (!name_15 || name_15.kind !== 127 /* ComputedPropertyName */) { + var name_17 = node.name; + if (!name_17 || name_17.kind !== 127 /* ComputedPropertyName */) { scopeName = "." + scopeName; } scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; @@ -24115,10 +24281,10 @@ var ts; node.kind === 204 /* EnumDeclaration */) { // Declaration and has associated name use it if (node.name) { - var name_16 = node.name; + var name_18 = node.name; // For computed property names, the text will include the brackets - scopeName = name_16.kind === 127 /* ComputedPropertyName */ - ? ts.getTextOfNode(name_16) + scopeName = name_18.kind === 127 /* ComputedPropertyName */ + ? ts.getTextOfNode(name_18) : node.name.text; } recordScopeNameStart(scopeName); @@ -24592,6 +24758,7 @@ var ts; default: return -1 /* LessThan */; } + case 172 /* YieldExpression */: case 170 /* ConditionalExpression */: return -1 /* LessThan */; default: @@ -24779,6 +24946,16 @@ var ts; write("..."); emit(node.expression); } + function emitYieldExpression(node) { + write(ts.tokenToString(111 /* YieldKeyword */)); + if (node.asteriskToken) { + write("*"); + } + if (node.expression) { + write(" "); + emit(node.expression); + } + } function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 65 /* Identifier */: @@ -25037,6 +25214,9 @@ var ts; write("]"); } function emitMethod(node) { + if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) { + write("*"); + } emit(node.name, false); if (languageVersion < 2 /* ES6 */) { write(": function "); @@ -26140,12 +26320,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2 /* ES6 */) { if (ts.isBindingPattern(node.name)) { - var name_17 = createTempVariable(0 /* Auto */); + var name_19 = createTempVariable(0 /* Auto */); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_17); - emit(name_17); + tempParameters.push(name_19); + emit(name_19); } else { emit(node.name); @@ -26269,7 +26449,11 @@ var ts; write("default "); } } - write("function "); + write("function"); + if (languageVersion >= 2 /* ES6 */ && node.asteriskToken) { + write("*"); + } + write(" "); } if (shouldEmitFunctionName(node)) { emitDeclarationName(node); @@ -26616,6 +26800,9 @@ var ts; else if (member.kind === 137 /* SetAccessor */) { write("set "); } + if (member.asteriskToken) { + write("*"); + } emit(member.name); emitSignatureAndBody(member); emitEnd(member); @@ -27761,8 +27948,8 @@ var ts; // export { x, y } for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_18 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_18] || (exportSpecifiers[name_18] = [])).push(specifier); + var name_20 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_20] || (exportSpecifiers[name_20] = [])).push(specifier); } } break; @@ -28094,6 +28281,8 @@ var ts; return emitConditionalExpression(node); case 173 /* SpreadElementExpression */: return emitSpreadElementExpression(node); + case 172 /* YieldExpression */: + return emitYieldExpression(node); case 175 /* OmittedExpression */: return; case 179 /* Block */: @@ -28393,7 +28582,7 @@ var ts; } return { getSourceFile: getSourceFile, - getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), ts.getDefaultLibFileName(options)); }, + getDefaultLibFileName: function (options) { return ts.combinePaths(ts.getDirectoryPath(ts.normalizePath(ts.sys.getExecutingFilePath())), getDefaultLibFileName(options)); }, writeFile: writeFile, getCurrentDirectory: function () { return currentDirectory || (currentDirectory = ts.sys.getCurrentDirectory()); }, useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, @@ -28433,6 +28622,10 @@ var ts; } } ts.flattenDiagnosticMessageText = flattenDiagnosticMessageText; + function getDefaultLibFileName(options) { + return options.target === 2 /* ES6 */ ? "lib.es6.d.ts" : "lib.d.ts"; + } + ts.getDefaultLibFileName = getDefaultLibFileName; function createProgram(rootNames, options, host) { var program; var files = []; @@ -29753,9 +29946,9 @@ var ts; case 198 /* VariableDeclaration */: case 152 /* BindingElement */: var variableDeclarationNode; - var name_19; + var name_21; if (node.kind === 152 /* BindingElement */) { - name_19 = node.name; + name_21 = node.name; variableDeclarationNode = node; // binding elements are added only for variable declarations // bubble up to the containing variable declaration @@ -29767,16 +29960,16 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_19 = node.name; + name_21 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_19), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_21), ts.ScriptElementKind.variableElement); } case 135 /* Constructor */: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); @@ -32316,9 +32509,9 @@ var ts; } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_20 in o) { - if (o[name_20] === rule) { - return name_20; + for (var name_22 in o) { + if (o[name_22] === rule) { + return name_22; } } throw new Error("Unknown rule"); @@ -36528,10 +36721,10 @@ var ts; for (var _i = 0, _a = program.getSourceFiles(); _i < _a.length; _i++) { var sourceFile = _a[_i]; var nameTable = getNameTable(sourceFile); - for (var name_21 in nameTable) { - if (!allNames[name_21]) { - allNames[name_21] = name_21; - var displayName = getCompletionEntryDisplayName(name_21, target, true); + for (var name_23 in nameTable) { + if (!allNames[name_23]) { + allNames[name_23] = name_23; + var displayName = getCompletionEntryDisplayName(name_23, target, true); if (displayName) { var entry = { name: displayName, @@ -38363,19 +38556,19 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeInfoResolver.getContextualType(objectLiteral); - var name_22 = node.text; + var name_24 = node.text; if (contextualType) { if (contextualType.flags & 16384 /* Union */) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name_22); + var unionProperty = contextualType.getProperty(name_24); if (unionProperty) { return [unionProperty]; } else { var result_3 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_22); + var symbol = t.getProperty(name_24); if (symbol) { result_3.push(symbol); } @@ -38384,7 +38577,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_22); + var symbol_1 = contextualType.getProperty(name_24); if (symbol_1) { return [symbol_1]; } From 61951e5d947e5b202e8dcd751a03e2306accc710 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Sun, 12 Apr 2015 14:02:58 -0700 Subject: [PATCH 13/64] Use a single scanner for all parsing tasks. --- .../diagnosticInformationMap.generated.ts | 1 - src/compiler/parser.ts | 13 +++- src/compiler/program.ts | 1 + src/compiler/scanner.ts | 66 ++++++++++++------- 4 files changed, 54 insertions(+), 27 deletions(-) diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 0271ac73105..6e956889b49 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -1,6 +1,5 @@ // /// -/* @internal */ module ts { export var Diagnostics = { Unterminated_string_literal: { code: 1002, category: DiagnosticCategory.Error, key: "Unterminated string literal." }, diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 93f8404d881..5e65103f91c 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1006,6 +1006,10 @@ module ts { return result; } + // Share a single scanner across all calls to parse a source file. This helps speed things + // up by avoiding the cost of creating/compiling scanners over and over again. + let scanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ true); + function parseSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, syntaxCursor: SyntaxCursor, setParentNodes = false): SourceFile { const disallowInAndDecoratorContext = ParserContextFlags.DisallowIn | ParserContextFlags.Decorator; @@ -1105,7 +1109,10 @@ module ts { let parseErrorBeforeNextFinishedNode: boolean = false; // Create and prime the scanner before parsing the source elements. - let scanner = createScanner(languageVersion, /*skipTrivia*/ true, sourceText, scanError); + + scanner.setText(sourceText); + scanner.setOnError(scanError); + scanner.setScriptTarget(languageVersion); token = nextToken(); processReferenceComments(sourceFile); @@ -1125,6 +1132,10 @@ module ts { } syntaxCursor = undefined; + + // Clear out the text the scanner is pointing at, so it doesn't keep anything alive unnecessarily. + scanner.setText(""); + scanner.setOnError(undefined); return sourceFile; function setContextFlag(val: Boolean, flag: ParserContextFlags) { diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 46466478029..3cf0f34e54f 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -54,6 +54,7 @@ module ts { } text = ""; } + return text !== undefined ? createSourceFile(fileName, text, languageVersion, setParentNodes) : undefined; } diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 327fb5261a0..53d213f5bd5 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -25,6 +25,8 @@ module ts { reScanTemplateToken(): SyntaxKind; scan(): SyntaxKind; setText(text: string): void; + setOnError(onError: ErrorCallback): void; + setScriptTarget(scriptTarget: ScriptTarget): void; setTextPos(textPos: number): void; // Invokes the provided callback then unconditionally restores the scanner to the state it // was in immediately prior to invoking the callback. The result of invoking the callback @@ -599,6 +601,7 @@ module ts { export function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, text?: string, onError?: ErrorCallback): Scanner { let pos: number; // Current position (end position of text of current token) let len: number; // Length of text + let startPos: number; // Start position of whitespace before current token let tokenPos: number; // Start position of text of current token let token: SyntaxKind; @@ -607,6 +610,32 @@ module ts { let hasExtendedUnicodeEscape: boolean; let tokenIsUnterminated: boolean; + setText(text); + + return { + getStartPos: () => startPos, + getTextPos: () => pos, + getToken: () => token, + getTokenPos: () => tokenPos, + getTokenText: () => text.substring(tokenPos, pos), + getTokenValue: () => tokenValue, + hasExtendedUnicodeEscape: () => hasExtendedUnicodeEscape, + hasPrecedingLineBreak: () => precedingLineBreak, + isIdentifier: () => token === SyntaxKind.Identifier || token > SyntaxKind.LastReservedWord, + isReservedWord: () => token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord, + isUnterminated: () => tokenIsUnterminated, + reScanGreaterToken, + reScanSlashToken, + reScanTemplateToken, + scan, + setText, + setScriptTarget, + setOnError, + setTextPos, + tryScan, + lookAhead, + }; + function error(message: DiagnosticMessage, length?: number): void { if (onError) { onError(message, length || 0); @@ -1450,37 +1479,24 @@ module ts { setTextPos(0); } + function setOnError(errorCallback: ErrorCallback) { + onError = errorCallback; + } + + function setScriptTarget(scriptTarget: ScriptTarget) { + languageVersion = scriptTarget; + } + function setTextPos(textPos: number) { pos = textPos; startPos = textPos; tokenPos = textPos; token = SyntaxKind.Unknown; precedingLineBreak = false; + + tokenValue = undefined; + hasExtendedUnicodeEscape = false; + tokenIsUnterminated = false; } - - setText(text); - - - return { - getStartPos: () => startPos, - getTextPos: () => pos, - getToken: () => token, - getTokenPos: () => tokenPos, - getTokenText: () => text.substring(tokenPos, pos), - getTokenValue: () => tokenValue, - hasExtendedUnicodeEscape: () => hasExtendedUnicodeEscape, - hasPrecedingLineBreak: () => precedingLineBreak, - isIdentifier: () => token === SyntaxKind.Identifier || token > SyntaxKind.LastReservedWord, - isReservedWord: () => token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord, - isUnterminated: () => tokenIsUnterminated, - reScanGreaterToken, - reScanSlashToken, - reScanTemplateToken, - scan, - setText, - setTextPos, - tryScan, - lookAhead, - }; } } From 362320dc45faf47a60691a04f5964cbb808b0a4d Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Sun, 12 Apr 2015 14:25:19 -0700 Subject: [PATCH 14/64] Use a singleton parser as well. --- src/compiler/parser.ts | 113 ++++++++++++++++++++++++++++------------- 1 file changed, 77 insertions(+), 36 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 5e65103f91c..ea29235dfe7 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1006,30 +1006,32 @@ module ts { return result; } + interface Parser { + parse(fileName: string, sourceText: string, languageVersion: ScriptTarget, syntaxCursor: SyntaxCursor, setParentNodes?: boolean): SourceFile; + } + // Share a single scanner across all calls to parse a source file. This helps speed things // up by avoiding the cost of creating/compiling scanners over and over again. let scanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ true); + let parser = createParser(ScriptTarget.Latest); function parseSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, syntaxCursor: SyntaxCursor, setParentNodes = false): SourceFile { - const disallowInAndDecoratorContext = ParserContextFlags.DisallowIn | ParserContextFlags.Decorator; + return parser.parse(fileName, sourceText, languageVersion, syntaxCursor, setParentNodes); + } + + const disallowInAndDecoratorContext = ParserContextFlags.DisallowIn | ParserContextFlags.Decorator; + + function createParser(languageVersion: ScriptTarget): Parser { + let sourceFile: SourceFile; + let syntaxCursor: SyntaxCursor; - let parsingContext: ParsingContext = 0; - let identifiers: Map = {}; - let identifierCount = 0; - let nodeCount = 0; let token: SyntaxKind; + let sourceText: string; + let nodeCount: number; + let identifiers: Map; + let identifierCount: number; - let sourceFile = createNode(SyntaxKind.SourceFile, /*pos*/ 0); - - sourceFile.pos = 0; - sourceFile.end = sourceText.length; - sourceFile.text = sourceText; - - sourceFile.parseDiagnostics = []; - sourceFile.bindDiagnostics = []; - sourceFile.languageVersion = languageVersion; - sourceFile.fileName = normalizePath(fileName); - sourceFile.flags = fileExtensionIs(sourceFile.fileName, ".d.ts") ? NodeFlags.DeclarationFile : 0; + let parsingContext: ParsingContext; // Flags that dictate what parsing context we're in. For example: // Whether or not we are in strict parsing mode. All that changes in strict parsing mode is @@ -1108,35 +1110,74 @@ module ts { // attached to the EOF token. let parseErrorBeforeNextFinishedNode: boolean = false; - // Create and prime the scanner before parsing the source elements. + return { parse }; - scanner.setText(sourceText); - scanner.setOnError(scanError); - scanner.setScriptTarget(languageVersion); - token = nextToken(); + function parse(fileName: string, _sourceText: string, languageVersion: ScriptTarget, _syntaxCursor: SyntaxCursor, setParentNodes?: boolean): SourceFile { + sourceText = _sourceText; + syntaxCursor = _syntaxCursor; - processReferenceComments(sourceFile); + parsingContext = 0; + identifiers = {}; + identifierCount = 0; + nodeCount = 0; - sourceFile.statements = parseList(ParsingContext.SourceElements, /*checkForStrictMode*/ true, parseSourceElement); - Debug.assert(token === SyntaxKind.EndOfFileToken); - sourceFile.endOfFileToken = parseTokenNode(); + contextFlags = 0; + parseErrorBeforeNextFinishedNode = false; - setExternalModuleIndicator(sourceFile); + createSourceFile(fileName); - sourceFile.nodeCount = nodeCount; - sourceFile.identifierCount = identifierCount; - sourceFile.identifiers = identifiers; + // Initialize and prime the scanner before parsing the source elements. + scanner.setText(sourceText); + scanner.setOnError(scanError); + scanner.setScriptTarget(languageVersion); + token = nextToken(); - if (setParentNodes) { - fixupParentReferences(sourceFile); + processReferenceComments(sourceFile); + + sourceFile.statements = parseList(ParsingContext.SourceElements, /*checkForStrictMode*/ true, parseSourceElement); + Debug.assert(token === SyntaxKind.EndOfFileToken); + sourceFile.endOfFileToken = parseTokenNode(); + + setExternalModuleIndicator(sourceFile); + + sourceFile.nodeCount = nodeCount; + sourceFile.identifierCount = identifierCount; + sourceFile.identifiers = identifiers; + + if (setParentNodes) { + fixupParentReferences(sourceFile); + } + + syntaxCursor = undefined; + + // Clear out the text the scanner is pointing at, so it doesn't keep anything alive unnecessarily. + scanner.setText(""); + scanner.setOnError(undefined); + + let result = sourceFile; + + // Clear any data. We don't want to accidently hold onto it for too long. + sourceFile = undefined; + identifiers = undefined; + syntaxCursor = undefined; + sourceText = undefined; + + return result; } - syntaxCursor = undefined; + function createSourceFile(fileName: string) { + sourceFile = createNode(SyntaxKind.SourceFile, /*pos*/ 0); - // Clear out the text the scanner is pointing at, so it doesn't keep anything alive unnecessarily. - scanner.setText(""); - scanner.setOnError(undefined); - return sourceFile; + sourceFile.pos = 0; + sourceFile.end = sourceText.length; + sourceFile.text = sourceText; + + sourceFile.parseDiagnostics = []; + sourceFile.bindDiagnostics = []; + sourceFile.languageVersion = languageVersion; + sourceFile.fileName = normalizePath(fileName); + sourceFile.flags = fileExtensionIs(sourceFile.fileName, ".d.ts") ? NodeFlags.DeclarationFile : 0; + } function setContextFlag(val: Boolean, flag: ParserContextFlags) { if (val) { From 4e0c26347f185826469029f9d0f97655e9293b9c Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Sun, 12 Apr 2015 22:47:25 -0700 Subject: [PATCH 15/64] Use const. --- src/compiler/parser.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index ea29235dfe7..09f63bd8990 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1012,8 +1012,8 @@ module ts { // Share a single scanner across all calls to parse a source file. This helps speed things // up by avoiding the cost of creating/compiling scanners over and over again. - let scanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ true); - let parser = createParser(ScriptTarget.Latest); + const scanner = createScanner(ScriptTarget.Latest, /*skipTrivia:*/ true); + const parser = createParser(ScriptTarget.Latest); function parseSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, syntaxCursor: SyntaxCursor, setParentNodes = false): SourceFile { return parser.parse(fileName, sourceText, languageVersion, syntaxCursor, setParentNodes); From 522c71a752cdc62f288c5c4d531e907c703d9d05 Mon Sep 17 00:00:00 2001 From: Zev Spitz Date: Mon, 13 Apr 2015 16:23:31 +0300 Subject: [PATCH 16/64] Ebynerator, VBArray --- src/lib/scriptHost.d.ts | 61 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/lib/scriptHost.d.ts b/src/lib/scriptHost.d.ts index decf813bc2d..cf9feac7129 100644 --- a/src/lib/scriptHost.d.ts +++ b/src/lib/scriptHost.d.ts @@ -170,3 +170,64 @@ declare var WScript: { */ Sleep(intTime: number): void; }; + +/* + * Allows enumerating over a COM collection, which may not have indexed item access + */ +interface Enumerator { + /* + * Returns true if the current item is the last one in the collection, or the collection is empty, or the current item is undefined + */ + atEnd(): boolean; + /* + * Returns the current item in the collection + */ + item(): T; + /* + * Resets the current item in the collection to the first item. If there are no items in the collection, the current item is set to undefined. + */ + moveFirst(): void; + /* + * Moves the current item to the next item in the collection. If the enumerator is at the end of the collection or the collection is empty, the current item is set to undefined. + */ + moveNext(): void; +} +interface EnumeratorConstructor { + new (collection: any): Enumerator; + new (collection: any): Enumerator; +} +declare var Enumerator: EnumeratorConstructor; + +/* + * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions + */ +interface VBArray { + /* + * Returns the number of dimensions (1-based). + */ + dimensions(): number; + /* + * Takes an index for each dimension in the array, and returns the item at the corresponding location. + */ + getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T; + /* + * Returns the smallest available index for a given dimension + * @param dimension 1-based dimension (defaults to 1) + */ + lbound(dimension?: number): number; + /* + * Returns the largest available index for a given dimension + * @param dimension 1-based dimension (defaults to 1) + */ + ubound(dimension?: number): number; + /* + * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions, each successive dimension is appended to the end of the array. + * [[1,2,3],[4,5,6]] => [1,2,3,4,5,6] + */ + toArray(): T[]; +} +interface VBArrayConstructor { + new (safeArray: any): VBArray; + new (safeArray: any): VBArray; +} +declare var VBArray: VBArrayConstructor; \ No newline at end of file From b7bcdde18c1d0fa7a99c0c62430e3e23ceea4df6 Mon Sep 17 00:00:00 2001 From: Zev Spitz Date: Mon, 13 Apr 2015 21:35:59 +0300 Subject: [PATCH 17/64] Fixed jsDoc, wrapping, newlines --- src/lib/scriptHost.d.ts | 68 ++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/src/lib/scriptHost.d.ts b/src/lib/scriptHost.d.ts index cf9feac7129..86cf5158be9 100644 --- a/src/lib/scriptHost.d.ts +++ b/src/lib/scriptHost.d.ts @@ -27,7 +27,8 @@ interface TextStreamBase { Line: number; /** * Closes a text stream. - * It is not necessary to close standard streams; they close automatically when the process ends. If you close a standard stream, be aware that any other pointers to that standard stream become invalid. + * It is not necessary to close standard streams; they close automatically when the process ends. If + * you close a standard stream, be aware that any other pointers to that standard stream become invalid. */ Close(): void; } @@ -49,7 +50,7 @@ interface TextStreamWriter extends TextStreamBase { interface TextStreamReader extends TextStreamBase { /** - * Returns a specified number of characters from an input stream, beginning at the current pointer position. + * Returns a specified number of characters from an input stream, starting at the current pointer position. * Does not return until the ENTER key is pressed. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ @@ -88,7 +89,8 @@ interface TextStreamReader extends TextStreamBase { declare var WScript: { /** - * Outputs text to either a message box (under WScript.exe) or the command console window followed by a newline (under CScript.ext). + * Outputs text to either a message box (under WScript.exe) or the command console window followed by + * a newline (under CScript.ext). */ Echo(s: any): void; /** @@ -159,7 +161,8 @@ declare var WScript: { DisconnectObject(obj: any): void; /** * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. - * @param strPathname Fully qualified path to the file containing the object persisted to disk. For objects in memory, pass a zero-length string. + * @param strPathname Fully qualified path to the file containing the object persisted to disk. + * For objects in memory, pass a zero-length string. * @param strProgID * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. */ @@ -171,63 +174,78 @@ declare var WScript: { Sleep(intTime: number): void; }; -/* - * Allows enumerating over a COM collection, which may not have indexed item access +/** + * Allows enumerating over a COM collection, which may not have indexed item access. */ interface Enumerator { - /* - * Returns true if the current item is the last one in the collection, or the collection is empty, or the current item is undefined + /** + * Returns true if the current item is the last one in the collection, or the collection is empty, + * or the current item is undefined. */ atEnd(): boolean; - /* + + /** * Returns the current item in the collection */ item(): T; - /* - * Resets the current item in the collection to the first item. If there are no items in the collection, the current item is set to undefined. + + /** + * Resets the current item in the collection to the first item. If there are no items in the collection, + * the current item is set to undefined. */ moveFirst(): void; - /* - * Moves the current item to the next item in the collection. If the enumerator is at the end of the collection or the collection is empty, the current item is set to undefined. + + /** + * Moves the current item to the next item in the collection. If the enumerator is at the end of + * the collection or the collection is empty, the current item is set to undefined. */ moveNext(): void; } + interface EnumeratorConstructor { new (collection: any): Enumerator; new (collection: any): Enumerator; } + declare var Enumerator: EnumeratorConstructor; -/* - * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions +/** + * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions. */ interface VBArray { - /* + /** * Returns the number of dimensions (1-based). */ dimensions(): number; - /* + + /** * Takes an index for each dimension in the array, and returns the item at the corresponding location. */ getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T; - /* - * Returns the smallest available index for a given dimension + + /** + * Returns the smallest available index for a given dimension. * @param dimension 1-based dimension (defaults to 1) */ lbound(dimension?: number): number; - /* - * Returns the largest available index for a given dimension + + /** + * Returns the largest available index for a given dimension. * @param dimension 1-based dimension (defaults to 1) */ ubound(dimension?: number): number; - /* - * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions, each successive dimension is appended to the end of the array. - * [[1,2,3],[4,5,6]] => [1,2,3,4,5,6] + + /** + * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions, + * each successive dimension is appended to the end of the array. + * Example: [[1,2,3],[4,5,6]] becomes [1,2,3,4,5,6] */ toArray(): T[]; } + interface VBArrayConstructor { new (safeArray: any): VBArray; new (safeArray: any): VBArray; } -declare var VBArray: VBArrayConstructor; \ No newline at end of file + +declare var VBArray: VBArrayConstructor; From 77afd9468cb2bbc93adb3014111f3213388e9d0d Mon Sep 17 00:00:00 2001 From: Zev Spitz Date: Mon, 13 Apr 2015 21:41:01 +0300 Subject: [PATCH 18/64] More newlines --- src/lib/scriptHost.d.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/lib/scriptHost.d.ts b/src/lib/scriptHost.d.ts index 86cf5158be9..7ff8399cbfc 100644 --- a/src/lib/scriptHost.d.ts +++ b/src/lib/scriptHost.d.ts @@ -21,10 +21,12 @@ interface TextStreamBase { * The column number of the current character position in an input stream. */ Column: number; + /** * The current line number in an input stream. */ Line: number; + /** * Closes a text stream. * It is not necessary to close standard streams; they close automatically when the process ends. If @@ -38,10 +40,12 @@ interface TextStreamWriter extends TextStreamBase { * Sends a string to an output stream. */ Write(s: string): void; + /** * Sends a specified number of blank lines (newline characters) to an output stream. */ WriteBlankLines(intLines: number): void; + /** * Sends a string followed by a newline character to an output stream. */ @@ -55,32 +59,38 @@ interface TextStreamReader extends TextStreamBase { * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ Read(characters: number): string; + /** * Returns all characters from an input stream. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ ReadAll(): string; + /** * Returns an entire line from an input stream. * Although this method extracts the newline character, it does not add it to the returned string. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ ReadLine(): string; + /** * Skips a specified number of characters when reading from an input text stream. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) */ Skip(characters: number): void; + /** * Skips the next line when reading from an input text stream. * Can only be used on a stream in reading mode, not writing or appending mode. */ SkipLine(): void; + /** * Indicates whether the stream pointer position is at the end of a line. */ AtEndOfLine: boolean; + /** * Indicates whether the stream pointer position is at the end of a stream. */ @@ -93,72 +103,88 @@ declare var WScript: { * a newline (under CScript.ext). */ Echo(s: any): void; + /** * Exposes the write-only error output stream for the current script. * Can be accessed only while using CScript.exe. */ StdErr: TextStreamWriter; + /** * Exposes the write-only output stream for the current script. * Can be accessed only while using CScript.exe. */ StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; + /** * The full path of the currently running script. */ ScriptFullName: string; + /** * Forces the script to stop immediately, with an optional exit code. */ Quit(exitCode?: number): number; + /** * The Windows Script Host build version number. */ BuildVersion: number; + /** * Fully qualified path of the host executable. */ FullName: string; + /** * Gets/sets the script mode - interactive(true) or batch(false). */ Interactive: boolean; + /** * The name of the host executable (WScript.exe or CScript.exe). */ Name: string; + /** * Path of the directory containing the host executable. */ Path: string; + /** * The filename of the currently running script. */ ScriptName: string; + /** * Exposes the read-only input stream for the current script. * Can be accessed only while using CScript.exe. */ StdIn: TextStreamReader; + /** * Windows Script Host version */ Version: string; + /** * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. */ ConnectObject(objEventSource: any, strPrefix: string): void; + /** * Creates a COM object. * @param strProgiID * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. */ CreateObject(strProgID: string, strPrefix?: string): any; + /** * Disconnects a COM object from its event sources. */ DisconnectObject(obj: any): void; + /** * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. * @param strPathname Fully qualified path to the file containing the object persisted to disk. @@ -167,6 +193,7 @@ declare var WScript: { * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. */ GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; + /** * Suspends script execution for a specified length of time, then continues execution. * @param intTime Interval (in milliseconds) to suspend script execution. From 9ec046bf9c115ca008d6be4b8842f90f7c923ead Mon Sep 17 00:00:00 2001 From: Zev Spitz Date: Mon, 13 Apr 2015 22:20:37 +0300 Subject: [PATCH 19/64] Formatting --- src/lib/scriptHost.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/scriptHost.d.ts b/src/lib/scriptHost.d.ts index 7ff8399cbfc..7faae06714c 100644 --- a/src/lib/scriptHost.d.ts +++ b/src/lib/scriptHost.d.ts @@ -100,7 +100,7 @@ interface TextStreamReader extends TextStreamBase { declare var WScript: { /** * Outputs text to either a message box (under WScript.exe) or the command console window followed by - * a newline (under CScript.ext). + * a newline (under CScript.exe). */ Echo(s: any): void; @@ -188,7 +188,7 @@ declare var WScript: { /** * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. * @param strPathname Fully qualified path to the file containing the object persisted to disk. - * For objects in memory, pass a zero-length string. + * For objects in memory, pass a zero-length string. * @param strProgID * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. */ From 592e2314d4ac7ace12641d0809a028c0f6ac0341 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 13 Apr 2015 12:36:11 -0700 Subject: [PATCH 20/64] Simplify typewriter code. --- src/harness/typeWriter.ts | 59 +-- .../reference/APISample_compile.types | 10 + .../reference/APISample_linter.types | 9 + .../reference/APISample_transform.types | 1 + .../reference/APISample_watcher.types | 15 + ...eAndAmbientWithSameNameAndCommonRoot.types | 2 + ...mbientClassWithSameNameAndCommonRoot.types | 2 + ...FunctionWithTheSameNameAndCommonRoot.types | 2 + ...AndNonExportedFunctionThatShareAName.types | 6 + ...iableAndNonExportedVarThatShareAName.types | 6 + .../reference/ES3For-ofTypeCheck2.types | 1 + tests/baselines/reference/ES5For-of10.types | 1 + tests/baselines/reference/ES5For-of13.types | 3 + tests/baselines/reference/ES5For-of24.types | 4 + tests/baselines/reference/ES5For-of25.types | 3 + tests/baselines/reference/ES5For-of3.types | 3 + tests/baselines/reference/ES5For-of9.types | 1 + .../reference/ES5For-ofTypeCheck1.types | 1 + .../reference/ES5For-ofTypeCheck2.types | 1 + .../reference/ES5For-ofTypeCheck3.types | 2 + ...umAndModuleWithSameNameAndCommonRoot.types | 2 + ...ExtendsInterfaceWithInaccessibleType.types | 1 + ...assHeritageListMemberTypeAnnotations.types | 5 + ...essibleTypeInTypeParameterConstraint.types | 6 + ...esInParameterAndReturnTypeAnnotation.types | 2 + ...ssibleTypesInParameterTypeAnnotation.types | 2 + ...ccessibleTypesInReturnTypeAnnotation.types | 2 + ...assHeritageListMemberTypeAnnotations.types | 5 + ...essibleTypeInTypeParameterConstraint.types | 5 + ...hAccessibleTypesOnItsExportedMembers.types | 4 + ...cessibleTypesInMemberTypeAnnotations.types | 6 + ...leTypesInNestedMemberTypeAnnotations.types | 1 + ...leWithAccessibleTypeInTypeAnnotation.types | 2 + ...WithInaccessibleTypeInTypeAnnotation.types | 5 + ...leWithSameNameAndDifferentCommonRoot.types | 4 + ...duleAndEnumWithSameNameAndCommonRoot.types | 2 + ...AndNonExportedLocalVarsOfTheSameName.types | 5 + ...ithTheSameNameAndDifferentCommonRoot.types | 2 + ...ulesWithTheSameNameAndSameCommonRoot.types | 4 + .../reference/TypeGuardWithEnumUnion.types | 4 + .../TypeGuardWithEnumUnion.types.pull | 4 + .../reference/VariableDeclaration10_es6.types | 1 + .../reference/VariableDeclaration3_es6.types | 1 + .../reference/VariableDeclaration5_es6.types | 1 + .../reference/VariableDeclaration8_es6.types | 1 + .../accessOverriddenBaseClassMember1.types | 3 + .../baselines/reference/accessorWithES5.types | 2 + ...ddMoreCallSignaturesToBaseSignature2.types | 1 + .../additionOperatorWithAnyAndEveryType.types | 3 + ...peratorWithNullValueAndValidOperator.types | 22 + .../additionOperatorWithNumberAndEnum.types | 6 + ...ditionOperatorWithStringAndEveryType.types | 3 + ...orWithUndefinedValueAndValidOperator.types | 6 + .../aliasUsageInAccessorsOfClass.types | 2 + .../reference/aliasUsageInArray.types | 2 + .../aliasUsageInFunctionExpression.types | 2 + .../aliasUsageInGenericFunction.types | 3 + .../aliasUsageInIndexerOfClass.types | 2 + .../reference/aliasUsageInObjectLiteral.types | 2 + .../reference/aliasUsageInOrExpression.types | 5 + .../aliasUsageInOrExpression.types.pull | 5 + ...asUsageInTypeArgumentOfExtendsClause.types | 2 + .../reference/aliasUsageInVarAssignment.types | 2 + .../reference/aliasUsedAsNameValue.types | 1 + .../reference/ambientDeclarations.types | 2 + .../ambientEnumElementInitializer1.types | 1 + .../ambientEnumElementInitializer2.types | 1 + .../ambientEnumElementInitializer4.types | 1 + .../ambientEnumElementInitializer5.types | 1 + .../ambientEnumElementInitializer6.types | 1 + .../baselines/reference/ambientModules.types | 1 + .../ambiguousCallsWhereReturnTypesAgree.types | 1 + .../amdImportAsPrimaryExpression.types | 1 + .../amdImportNotAsPrimaryExpression.types | 6 + .../baselines/reference/amdModuleName1.types | 1 + tests/baselines/reference/anonterface.types | 2 + .../reference/anyAsFunctionCall.types | 1 + .../anyAsReturnTypeForNewOnCall.types | 2 + .../anyAssignabilityInInheritance.types | 2 + tests/baselines/reference/anyPlusAny1.types | 1 + .../reference/anyPropertyAccess.types | 4 + tests/baselines/reference/argsInScope.types | 4 + tests/baselines/reference/arguments.types | 1 + .../arithmeticOperatorWithAnyAndNumber.types | 60 +++ .../arithmeticOperatorWithEnum.types | 20 + .../arithmeticOperatorWithEnumUnion.types | 20 + ...peratorWithNullValueAndValidOperands.types | 100 +++++ ...orWithUndefinedValueAndValidOperands.types | 20 + .../reference/arrayAssignmentTest6.types | 1 + tests/baselines/reference/arrayAugment.types | 2 + .../reference/arrayBestCommonTypes.types | 138 +++++++ ...rrayBindingPatternOmittedExpressions.types | 11 + tests/baselines/reference/arrayConcat2.types | 4 + .../baselines/reference/arrayConcatMap.types | 2 + .../reference/arrayConstructors1.types | 10 + tests/baselines/reference/arrayLiteral.types | 8 + tests/baselines/reference/arrayLiteral1.types | 2 + tests/baselines/reference/arrayLiteral2.types | 2 + .../arrayLiteralContextualType.types | 4 + .../arrayLiteralInNonVarArgParameter.types | 2 + .../reference/arrayLiteralSpread.types | 21 + .../reference/arrayLiteralTypeInference.types | 8 + .../reference/arrayLiteralWidened.types | 5 + ...ayLiteralWithMultipleBestCommonTypes.types | 8 + tests/baselines/reference/arrayLiterals.types | 29 ++ .../reference/arrayLiterals.types.pull | 29 ++ .../arrayLiteralsWithRecursiveGenerics.types | 1 + .../reference/arrayOfFunctionTypes3.types | 8 + tests/baselines/reference/arrayconcat.types | 4 + .../reference/arrowFunctionExpressions.types | 21 + .../arrowFunctionInExpressionStatement1.types | 1 + .../arrowFunctionInExpressionStatement2.types | 1 + .../arrowFunctionWithObjectLiteralBody5.types | 8 + .../arrowFunctionWithObjectLiteralBody6.types | 8 + tests/baselines/reference/asiArith.types | 4 + tests/baselines/reference/asiBreak.types | 3 +- tests/baselines/reference/asiContinue.types | 3 +- .../baselines/reference/asiInES6Classes.types | 2 + tests/baselines/reference/assign1.types | 2 + .../reference/assignEveryTypeToAny.types | 7 + .../reference/assignmentCompatForEnums.types | 2 + .../assignmentCompatWithObjectMembers.types | 2 + .../assignmentCompatWithObjectMembers2.types | 2 + .../assignmentCompatWithObjectMembers3.types | 2 + ...tCompatWithObjectMembersNumericNames.types | 2 + .../reference/assignmentCompatability1.types | 1 + .../reference/assignmentCompatability2.types | 1 + .../reference/assignmentCompatability3.types | 2 + .../reference/assignmentCompatability4.types | 1 + .../reference/assignmentCompatability5.types | 2 + .../reference/assignmentCompatability6.types | 1 + .../reference/assignmentCompatability7.types | 2 + .../reference/assignmentCompatability8.types | 2 + .../reference/assignmentCompatability9.types | 1 + .../reference/assignmentLHSIsReference.types | 2 + ...entedTypeBracketAccessIndexSignature.types | 2 + ...mentedTypeBracketNamedPropertyAccess.types | 4 + .../reference/augmentedTypesClass3.types | 2 + .../augmentedTypesExternalModule1.types | 1 + .../reference/augmentedTypesModules3b.types | 4 + .../reference/augmentedTypesModules4.types | 3 + .../reference/autonumberingInEnums.types | 1 + tests/baselines/reference/avoid.types | 1 + .../baseIndexSignatureResolution.types | 2 + ...stCommonTypeOfConditionalExpressions.types | 13 + .../reference/bestCommonTypeOfTuple.types | 9 + .../reference/bestCommonTypeOfTuple2.types | 7 + .../bestCommonTypeReturnStatement.types | 3 + .../bestCommonTypeWithContextualTyping.types | 1 + .../reference/binaryArithmatic1.types | 2 + .../reference/binaryArithmatic2.types | 1 + .../reference/binaryIntegerLiteral.types | 30 ++ .../reference/binaryIntegerLiteralES6.types | 30 ++ .../binopAssignmentShouldHaveType.types | 5 + .../bitwiseNotOperatorWithBooleanType.types | 8 + .../bitwiseNotOperatorWithEnumType.types | 5 + .../bitwiseNotOperatorWithNumberType.types | 9 + .../bitwiseNotOperatorWithStringType.types | 10 + tests/baselines/reference/bom-utf16be.types | 1 + tests/baselines/reference/bom-utf16le.types | 1 + tests/baselines/reference/bom-utf8.types | 1 + .../reference/booleanPropertyAccess.types | 2 + .../breakInIterationOrSwitchStatement1.types | 7 +- .../breakInIterationOrSwitchStatement2.types | 9 +- tests/baselines/reference/breakTarget1.types | 7 +- tests/baselines/reference/breakTarget2.types | 12 +- tests/baselines/reference/breakTarget3.types | 16 +- tests/baselines/reference/breakTarget4.types | 16 +- ...meterConstrainedToOuterTypeParameter.types | 1 + ...GenericFunctionWithZeroTypeArguments.types | 11 + ...allSignatureWithoutAnnotationsOrBody.types | 1 + ...WithoutReturnTypeAnnotationInference.types | 20 + ...callSignaturesWithOptionalParameters.types | 17 + ...allSignaturesWithOptionalParameters2.types | 26 ++ .../reference/callWithSpreadES6.types | 49 +++ .../reference/castExpressionParentheses.types | 11 + tests/baselines/reference/castTest.types | 8 + tests/baselines/reference/cf.types | 31 ++ .../reference/chainedAssignment2.types | 1 + .../reference/circularImportAlias.types | 1 + .../classAppearsToHaveMembersOfObject.types | 1 + ...rationMergedInModuleWithContinuation.types | 2 + .../reference/classExtendingClass.types | 2 + .../classExtendingQualifiedName2.types | 1 + .../reference/classImplementsClass3.types | 2 + .../reference/classWithEmptyBody.types | 5 + ...lyPublicMembersEquivalentToInterface.types | 2 + ...yPublicMembersEquivalentToInterface2.types | 2 + .../classWithProtectedProperty.types | 6 + .../reference/classWithPublicProperty.types | 6 + .../cloduleAcrossModuleDefinitions.types | 1 + tests/baselines/reference/cloduleTest1.types | 2 + ...CodeGenModuleWithConstructorChildren.types | 2 + ...ionCodeGenModuleWithFunctionChildren.types | 1 + ...isionCodeGenModuleWithMemberVariable.types | 1 + ...isionCodeGenModuleWithMethodChildren.types | 1 + ...isionCodeGenModuleWithModuleChildren.types | 2 + ...sionCodeGenModuleWithModuleReopening.types | 1 + ...llisionExportsRequireAndAmbientClass.types | 1 + ...sionExportsRequireAndAmbientFunction.types | 1 + ...equireAndAmbientFunctionInGlobalFile.types | 1 + ...lisionExportsRequireAndAmbientModule.types | 4 + ...collisionExportsRequireAndAmbientVar.types | 2 + ...xportsRequireAndFunctionInGlobalFile.types | 6 + ...xportsRequireAndUninstantiatedModule.types | 2 + ...collisionRestParameterArrowFunctions.types | 4 + ...llisionRestParameterClassConstructor.types | 6 + .../collisionRestParameterClassMethod.types | 4 + .../collisionRestParameterFunction.types | 4 + ...sionRestParameterFunctionExpressions.types | 4 + ...llisionRestParameterUnderscoreIUsage.types | 1 + .../baselines/reference/commaOperator1.types | 8 + .../commaOperatorOtherValidOperation.types | 4 + ...ommaOperatorWithSecondOperandAnyType.types | 17 + ...OperatorWithSecondOperandBooleanType.types | 22 + ...aOperatorWithSecondOperandNumberType.types | 16 + ...aOperatorWithSecondOperandObjectType.types | 10 + ...aOperatorWithSecondOperandStringType.types | 14 + .../commaOperatorsMultipleOperators.types | 8 + .../commentBeforeStaticMethod1.types | 1 + .../reference/commentEmitAtEndOfFile1.types | 1 + .../reference/commentOnAmbientModule.types | 1 + .../reference/commentOnAmbientVariable2.types | 2 + .../commentOnExpressionStatement1.types | 2 + .../reference/commentOnIfStatement1.types | 8 +- .../commentOnSimpleArrowFunctionBody1.types | 1 + .../reference/commentsAtEndOfFile1.types | 9 +- .../commentsBeforeFunctionExpression1.types | 1 + .../reference/commentsClassMembers.types | 6 + .../reference/commentsCommentParsing.types | 2 + .../reference/commentsFunction.types | 8 + .../reference/commentsInheritance.types | 9 + .../reference/commentsInterface.types | 14 + .../reference/commentsOnObjectLiteral3.types | 1 + .../commentsOnReturnStatement1.types | 2 + .../reference/commentsOnStaticMembers.types | 2 + .../reference/commentsOverloads.types | 27 ++ .../commentsPropertySignature1.types | 1 + .../baselines/reference/commentsVarDecl.types | 8 + .../commentsVariableStatement1.types | 1 + .../reference/commentsdoNotEmitComments.types | 3 + .../reference/commentsemitComments.types | 3 + .../commonJSImportAsPrimaryExpression.types | 2 + ...commonJSImportNotAsPrimaryExpression.types | 6 + ...mparisonOperatorWithIdenticalObjects.types | 3 + ...onOperatorWithIdenticalPrimitiveType.types | 16 + ...mparisonOperatorWithOneOperandIsNull.types | 128 ++++++ ...isonOperatorWithSubtypeEnumAndNumber.types | 16 + .../reference/complexClassRelationships.types | 1 + .../reference/compositeGenericFunction.types | 1 + ...ndAdditionAssignmentLHSCanBeAssigned.types | 13 + ...ArithmeticAssignmentLHSCanBeAssigned.types | 3 + .../compoundAssignmentLHSIsReference.types | 4 + .../reference/compoundVarDecl1.types | 5 + .../computedPropertyNames10_ES5.types | 8 + .../computedPropertyNames10_ES6.types | 8 + .../computedPropertyNames11_ES5.types | 12 + .../computedPropertyNames11_ES6.types | 12 + .../computedPropertyNames13_ES5.types | 8 + .../computedPropertyNames13_ES6.types | 8 + .../computedPropertyNames16_ES5.types | 12 + .../computedPropertyNames16_ES6.types | 12 + .../computedPropertyNames18_ES5.types | 1 + .../computedPropertyNames18_ES6.types | 1 + .../computedPropertyNames1_ES5.types | 5 + .../computedPropertyNames1_ES6.types | 5 + .../computedPropertyNames20_ES5.types | 1 + .../computedPropertyNames20_ES6.types | 1 + .../computedPropertyNames22_ES5.types | 1 + .../computedPropertyNames22_ES6.types | 1 + .../computedPropertyNames25_ES5.types | 2 + .../computedPropertyNames25_ES6.types | 2 + .../computedPropertyNames28_ES5.types | 1 + .../computedPropertyNames28_ES6.types | 1 + .../computedPropertyNames29_ES5.types | 1 + .../computedPropertyNames29_ES6.types | 1 + .../computedPropertyNames31_ES5.types | 2 + .../computedPropertyNames31_ES6.types | 2 + .../computedPropertyNames33_ES5.types | 2 + .../computedPropertyNames33_ES6.types | 2 + .../computedPropertyNames37_ES5.types | 2 + .../computedPropertyNames37_ES6.types | 2 + .../computedPropertyNames41_ES5.types | 1 + .../computedPropertyNames41_ES6.types | 1 + .../computedPropertyNames46_ES5.types | 3 + .../computedPropertyNames46_ES6.types | 3 + .../computedPropertyNames47_ES5.types | 1 + .../computedPropertyNames47_ES6.types | 1 + .../computedPropertyNames48_ES5.types | 5 + .../computedPropertyNames48_ES6.types | 5 + .../computedPropertyNames4_ES5.types | 17 + .../computedPropertyNames4_ES6.types | 17 + .../computedPropertyNames7_ES5.types | 1 + .../computedPropertyNames7_ES6.types | 1 + ...utedPropertyNamesContextualType1_ES5.types | 4 + ...utedPropertyNamesContextualType1_ES6.types | 4 + ...utedPropertyNamesContextualType2_ES5.types | 2 + ...utedPropertyNamesContextualType2_ES6.types | 2 + ...utedPropertyNamesContextualType3_ES5.types | 2 + ...utedPropertyNamesContextualType3_ES6.types | 2 + ...utedPropertyNamesContextualType4_ES5.types | 6 + ...utedPropertyNamesContextualType4_ES6.types | 6 + ...utedPropertyNamesContextualType5_ES5.types | 4 + ...utedPropertyNamesContextualType5_ES6.types | 4 + ...utedPropertyNamesContextualType6_ES5.types | 9 + ...ropertyNamesContextualType6_ES5.types.pull | 9 + ...utedPropertyNamesContextualType6_ES6.types | 9 + ...ropertyNamesContextualType6_ES6.types.pull | 9 + ...utedPropertyNamesContextualType7_ES5.types | 9 + ...ropertyNamesContextualType7_ES5.types.pull | 9 + ...utedPropertyNamesContextualType7_ES6.types | 9 + ...ropertyNamesContextualType7_ES6.types.pull | 9 + ...tedPropertyNamesDeclarationEmit1_ES5.types | 7 + ...tedPropertyNamesDeclarationEmit1_ES6.types | 7 + ...tedPropertyNamesDeclarationEmit2_ES5.types | 7 + ...tedPropertyNamesDeclarationEmit2_ES6.types | 7 + ...tedPropertyNamesDeclarationEmit5_ES5.types | 10 + ...tedPropertyNamesDeclarationEmit5_ES6.types | 10 + .../computedPropertyNamesSourceMap1_ES5.types | 2 + .../computedPropertyNamesSourceMap1_ES6.types | 2 + .../computedPropertyNamesSourceMap2_ES5.types | 2 + .../computedPropertyNamesSourceMap2_ES6.types | 2 + ...putedPropertyNamesWithStaticProperty.types | 2 + tests/baselines/reference/concatError.types | 2 + .../reference/conditionalExpressions2.types | 24 ++ ...tionalOperatorConditionIsBooleanType.types | 32 ++ ...itionalOperatorConditionIsNumberType.types | 29 ++ ...itionalOperatorConditionIsObjectType.types | 12 + ...onditionalOperatorConditoinIsAnyType.types | 14 + ...itionalOperatorConditoinIsStringType.types | 20 + .../conditionalOperatorWithIdenticalBCT.types | 37 ++ ...DeclarationShadowedByVarDeclaration2.types | 2 + ...DeclarationShadowedByVarDeclaration3.types | 2 + .../reference/constDeclarations-es5.types | 5 + .../reference/constDeclarations-scopes2.types | 4 + .../reference/constDeclarations.types | 9 + .../reference/constDeclarations2.types | 5 + .../reference/constEnumDeclarations.types | 3 + .../reference/constEnumExternalModule.types | 1 + .../constEnumOnlyModuleMerging.types | 1 + tests/baselines/reference/constEnums.types | 31 ++ .../reference/constantOverloadFunction.types | 1 + .../constraintSatisfactionWithAny.types | 3 + ...ructSignaturesWithIdenticalOverloads.types | 12 + .../constructSignaturesWithOverloads.types | 12 + ...rFunctionTypeIsAssignableToBaseType2.types | 1 + ...uctorImplementationWithDefaultValues.types | 3 + .../reference/constructorOverloads2.types | 2 + .../constructorReturningAPrimitive.types | 1 + .../contextualSignatureInstantiation.types | 12 + ...ontextualSignatureInstantiation.types.pull | 12 + .../contextualSignatureInstantiation3.types | 3 + ...meterConstrainedToOuterTypeParameter.types | 2 + .../reference/contextualTypeAny.types | 2 + .../contextualTypeArrayReturnType.types | 1 + ...tualTypeWithUnionTypeIndexSignatures.types | 2 + .../contextualTypeWithUnionTypeMembers.types | 18 + .../reference/contextualTyping1.types | 1 + .../reference/contextualTyping10.types | 2 + .../reference/contextualTyping12.types | 3 + .../reference/contextualTyping15.types | 1 + .../reference/contextualTyping16.types | 2 + .../reference/contextualTyping17.types | 3 + .../reference/contextualTyping18.types | 1 + .../reference/contextualTyping19.types | 3 + .../reference/contextualTyping2.types | 2 + .../reference/contextualTyping20.types | 4 + .../reference/contextualTyping23.types | 1 + .../reference/contextualTyping28.types | 1 + .../reference/contextualTyping29.types | 2 + .../reference/contextualTyping3.types | 1 + .../reference/contextualTyping31.types | 1 + .../reference/contextualTyping32.types | 2 + .../reference/contextualTyping34.types | 1 + .../reference/contextualTyping35.types | 2 + .../reference/contextualTyping36.types | 1 + .../reference/contextualTyping37.types | 1 + .../reference/contextualTyping4.types | 2 + .../reference/contextualTyping40.types | 1 + .../reference/contextualTyping6.types | 2 + .../reference/contextualTyping9.types | 3 + ...textualTypingOfConditionalExpression.types | 2 + ...ypingTwoInstancesOfSameTypeParameter.types | 1 + ...ctionExpressionsAndReturnAnnotations.types | 5 + .../contextuallyTypingOrOperator.types | 3 + .../contextuallyTypingOrOperator2.types | 1 + .../continueInIterationStatement1.types | 7 +- .../continueInIterationStatement2.types | 9 +- tests/baselines/reference/continueLabel.types | 4 + .../baselines/reference/continueTarget2.types | 12 +- .../baselines/reference/continueTarget3.types | 16 +- .../baselines/reference/continueTarget4.types | 16 +- .../crashInresolveReturnStatement.types | 1 + .../reference/declFileAccessors.types | 14 + .../reference/declFileConstructors.types | 4 + tests/baselines/reference/declFileEnums.types | 6 + .../reference/declFileForVarList.types | 4 + .../reference/declFileFunctions.types | 3 + .../reference/declFileGenericType.types | 8 + .../reference/declFileGenericType2.types | 9 + ...FileImportModuleWithExportAssignment.types | 3 + .../baselines/reference/declFileMethods.types | 8 + .../declFileModuleContinuation.types | 2 + .../reference/declFileRegressionTests.types | 3 + ...tParametersOfFunctionAndFunctionType.types | 1 + .../declFileTypeAnnotationBuiltInType.types | 6 + .../declFileTypeAnnotationParenType.types | 2 + .../declFileTypeAnnotationStringLiteral.types | 1 + .../declFileTypeAnnotationTypeQuery.types | 2 + .../reference/declFileTypeofFunction.types | 1 + ...tingWithClassReferredByExtendsClause.types | 6 + ...lModuleNameConflictsInExtendsClause1.types | 3 + ...lModuleNameConflictsInExtendsClause2.types | 2 + ...lModuleNameConflictsInExtendsClause3.types | 3 + tests/baselines/reference/declInput3.types | 6 + tests/baselines/reference/declInput4.types | 2 + .../declarationEmitDefaultExport3.types | 1 + .../declarationEmitDefaultExport4.types | 6 +- .../declarationEmitDefaultExport5.types | 2 + .../declarationEmitDefaultExport8.types | 3 + .../declarationEmitDestructuring2.types | 19 + .../declarationEmitDestructuring3.types | 3 + .../declarationEmitDestructuring4.types | 7 + .../declarationEmitDestructuring5.types | 16 + ...rationEmitDestructuringArrayPattern1.types | 13 + ...rationEmitDestructuringArrayPattern2.types | 16 + ...rationEmitDestructuringArrayPattern3.types | 2 + ...rationEmitDestructuringArrayPattern4.types | 24 ++ ...rationEmitDestructuringArrayPattern5.types | 17 + ...mitDestructuringObjectLiteralPattern.types | 20 + ...itDestructuringObjectLiteralPattern1.types | 14 + ...itDestructuringObjectLiteralPattern2.types | 6 + .../declarationEmit_invalidReference.types | 1 + .../declarationEmit_nameConflicts.types | 5 + .../declarationEmit_protectedMembers.types | 3 + .../reference/declareDottedExtend.types | 3 + ...signmentWithVarFromVariableStatement.types | 1 + .../reference/decoratorOnClassAccessor1.types | 1 + .../reference/decoratorOnClassAccessor2.types | 1 + .../reference/decoratorOnClassMethod13.types | 2 + .../reference/decoratorOnClassMethod4.types | 1 + .../reference/decoratorOnClassMethod5.types | 1 + .../reference/decoratorOnClassMethod6.types | 1 + .../reference/decoratorOnClassMethod7.types | 1 + .../decrementOperatorWithAnyOtherType.types | 8 + .../decrementOperatorWithNumberType.types | 5 + .../reference/defaultIndexProps1.types | 4 + .../reference/defaultIndexProps2.types | 6 + .../deleteOperatorWithBooleanType.types | 8 + .../deleteOperatorWithEnumType.types | 5 + .../deleteOperatorWithNumberType.types | 10 + .../deleteOperatorWithStringType.types | 11 + ...rivedClassOverridesProtectedMembers2.types | 2 + .../baselines/reference/derivedClasses.types | 4 + ...HiddenBaseCallViaSuperPropertyAccess.types | 7 + ...denAtObjectLiteralPropertyAssignment.types | 2 + .../reference/doWhileBreakStatements.types | 38 ++ .../reference/doWhileContinueStatements.types | 38 ++ tests/baselines/reference/doWhileLoop.types | 2 + .../reference/dottedModuleName2.types | 3 + .../reference/dottedSymbolResolution1.types | 4 + .../reference/downlevelLetConst10.types | 1 + .../reference/downlevelLetConst12.types | 5 + .../reference/downlevelLetConst13.types | 14 + .../reference/downlevelLetConst14.types | 19 + .../reference/downlevelLetConst15.types | 19 + .../reference/downlevelLetConst17.types | 15 + .../reference/downlevelLetConst19.types | 2 + .../reference/downlevelLetConst3.types | 1 + .../reference/downlevelLetConst5.types | 1 + .../reference/downlevelLetConst8.types | 1 + .../reference/duplicateAnonymousInners1.types | 1 + .../baselines/reference/duplicateLabel3.types | 7 + .../baselines/reference/duplicateLabel4.types | 19 +- .../reference/duplicateVariablesByScope.types | 12 + .../dynamicModuleTypecheckError.types | 4 + .../reference/elidingImportNames.types | 2 + .../reference/emitArrowFunction.types | 3 + .../reference/emitArrowFunctionES6.types | 9 + .../emitArrowFunctionThisCapturing.types | 4 + .../emitArrowFunctionThisCapturingES6.types | 4 + .../emitClassDeclarationOverloadInES6.types | 1 + ...ClassDeclarationWithConstructorInES6.types | 3 + ...itClassDeclarationWithExtensionInES6.types | 3 + ...lassDeclarationWithGetterSetterInES6.types | 13 + ...larationWithLiteralPropertyNameInES6.types | 15 + .../emitClassDeclarationWithMethodInES6.types | 14 + ...clarationWithPropertyAssignmentInES6.types | 6 + ...ionWithStaticPropertyAssignmentInES6.types | 3 + ...ClassDeclarationWithThisKeywordInES6.types | 2 + .../emitDefaultParametersFunction.types | 4 + .../emitDefaultParametersFunctionES6.types | 4 + ...tDefaultParametersFunctionExpression.types | 9 + ...faultParametersFunctionExpressionES6.types | 9 + ...mitDefaultParametersFunctionProperty.types | 4 + ...DefaultParametersFunctionPropertyES6.types | 4 + .../emitDefaultParametersMethod.types | 7 + .../emitDefaultParametersMethodES6.types | 7 + .../emitMemberAccessExpression.types | 9 +- .../reference/emitPostComments.types | 1 + .../baselines/reference/emitPreComments.types | 1 + tests/baselines/reference/emptyIndexer.types | 1 + tests/baselines/reference/enumBasics.types | 15 + .../reference/enumCodeGenNewLines1.types | 3 + tests/baselines/reference/enumIndexer.types | 2 + .../reference/enumMapBackIntoItself.types | 1 + tests/baselines/reference/enumMerging.types | 15 + .../reference/enumNegativeLiteral1.types | 1 + .../baselines/reference/enumNumbering1.types | 2 + .../baselines/reference/enumOperations.types | 3 + tests/baselines/reference/es3-amd.types | 1 + .../reference/es3-declaration-amd.types | 1 + .../reference/es3-sourcemap-amd.types | 1 + tests/baselines/reference/es5-amd.types | 1 + .../reference/es5-declaration-amd.types | 1 + .../reference/es5-souremap-amd.types | 1 + .../es5ExportDefaultExpression.types | 2 + .../reference/es5ModuleWithModuleGenAmd.types | 1 + .../es5ModuleWithModuleGenCommonjs.types | 1 + .../reference/es6ClassSuperCodegenBug.types | 6 + tests/baselines/reference/es6ClassTest3.types | 2 + tests/baselines/reference/es6ClassTest5.types | 1 + tests/baselines/reference/es6ClassTest7.types | 1 + tests/baselines/reference/es6ClassTest8.types | 8 + tests/baselines/reference/es6ExportAll.types | 2 + .../reference/es6ExportAllInEs5.types | 2 + .../baselines/reference/es6ExportClause.types | 2 + .../reference/es6ExportClauseInEs5.types | 2 + ...s6ExportClauseWithoutModuleSpecifier.types | 2 + ...ortClauseWithoutModuleSpecifierInEs5.types | 2 + .../es6ExportDefaultExpression.types | 2 + .../reference/es6ImportDefaultBinding.types | 1 + .../es6ImportDefaultBindingAmd.types | 1 + ...BindingFollowedWithNamespaceBinding1.types | 1 + ...ngFollowedWithNamespaceBinding1InEs5.types | 1 + .../es6ImportNameSpaceImportAmd.types | 1 + .../es6ImportNameSpaceImportInEs5.types | 1 + ...6ImportNameSpaceImportNoNamedExports.types | 1 + .../reference/es6ImportNamedImportAmd.types | 6 + .../reference/es6ImportNamedImportInEs5.types | 6 + ...6ImportNamedImportWithTypesAndValues.types | 2 + .../es6ImportWithoutFromClause.types | 1 + .../es6ImportWithoutFromClauseAmd.types | 4 + .../es6ImportWithoutFromClauseInEs5.types | 1 + tests/baselines/reference/es6Module.types | 1 + .../reference/es6ModuleClassDeclaration.types | 24 ++ .../baselines/reference/es6ModuleConst.types | 1 + .../reference/es6ModuleInternalImport.types | 1 + tests/baselines/reference/es6ModuleLet.types | 1 + .../es6ModuleModuleDeclaration.types | 12 + .../es6ModuleVariableStatement.types | 1 + .../reference/escapedIdentifiers.types | 54 +++ ...capedReservedCompilerNamedIdentifier.types | 18 + ...veryTypeWithAnnotationAndInitializer.types | 9 + .../reference/everyTypeWithInitializer.types | 7 + .../reference/exportAssignValueAndType.types | 1 + .../reference/exportAssignmentClass.types | 1 + .../reference/exportAssignmentFunction.types | 1 + .../exportAssignmentMergedInterface.types | 4 + .../exportAssignmentMergedModule.types | 4 + .../exportAssignmentTopLevelClodule.types | 3 + .../exportAssignmentTopLevelEnumdule.types | 1 + .../exportAssignmentTopLevelFundule.types | 3 + .../exportAssignmentTopLevelIdentifier.types | 2 + .../reference/exportAssignmentVariable.types | 1 + tests/baselines/reference/exportCodeGen.types | 8 + .../reference/exportEqualNamespaces.types | 1 + tests/baselines/reference/exportImport.types | 1 + .../reference/exportImportAlias.types | 8 + .../reference/exportImportAndClodule.types | 2 + .../reference/exportImportMultipleFiles.types | 4 + .../exportImportNonInstantiatedModule.types | 1 + .../exportImportNonInstantiatedModule2.types | 1 + .../reference/exportPrivateType.types | 1 + .../reference/exportVisibility.types | 1 + .../reference/exportedVariable1.types | 1 + .../reference/exportsAndImports1-amd.types | 1 + .../reference/exportsAndImports1.types | 1 + .../reference/exportsAndImports2-amd.types | 2 + .../reference/exportsAndImports2.types | 2 + .../reference/exportsAndImports3-amd.types | 1 + .../reference/exportsAndImports3.types | 1 + tests/baselines/reference/extBaseClass1.types | 2 + .../reference/extendBooleanInterface.types | 5 + .../reference/extendNumberInterface.types | 5 + .../reference/extendStringInterface.types | 5 + .../extendedInterfaceGenericType.types | 1 + ...ndingClassFromAliasAndUsageInIndexer.types | 3 + tests/baselines/reference/externFunc.types | 1 + .../externalModuleQualification.types | 1 + ...rnalModuleReferenceDoubleUnderscore1.types | 7 + .../reference/externalModuleResolution.types | 1 + .../reference/externalModuleResolution2.types | 1 + tests/baselines/reference/fatArrowSelf.types | 1 + .../reference/fatArrowfunctionAsType.types | 1 + .../reference/fatarrowfunctions.types | 7 + ...functionsInFunctionParameterDefaults.types | 1 + .../fatarrowfunctionsInFunctions.types | 2 + .../fileReferencesWithNoExtensions.types | 2 + .../reference/fileWithNextLine1.types | 1 + .../reference/fileWithNextLine2.types | 1 + tests/baselines/reference/for-of13.types | 1 + tests/baselines/reference/for-of18.types | 2 + tests/baselines/reference/for-of19.types | 1 + tests/baselines/reference/for-of20.types | 1 + tests/baselines/reference/for-of21.types | 1 + tests/baselines/reference/for-of22.types | 1 + tests/baselines/reference/for-of23.types | 2 + tests/baselines/reference/for-of36.types | 2 + tests/baselines/reference/for-of37.types | 2 + tests/baselines/reference/for-of38.types | 2 + tests/baselines/reference/for-of4.types | 1 + tests/baselines/reference/for-of40.types | 4 + tests/baselines/reference/for-of41.types | 2 + tests/baselines/reference/for-of42.types | 2 + tests/baselines/reference/for-of44.types | 5 + tests/baselines/reference/for-of45.types | 4 + tests/baselines/reference/for-of5.types | 1 + tests/baselines/reference/for-of50.types | 2 + tests/baselines/reference/for-of8.types | 1 + tests/baselines/reference/for-of9.types | 2 + .../reference/forBreakStatements.types | 22 + .../reference/forContinueStatements.types | 22 + .../reference/forInBreakStatements.types | 22 + .../reference/forInContinueStatements.types | 22 + tests/baselines/reference/forInModule.types | 2 + tests/baselines/reference/forStatements.types | 9 + .../forStatementsMultipleValidDecl.types | 14 + .../reference/fromAsIdentifier2.types | 2 + tests/baselines/reference/funcdecl.types | 7 + tests/baselines/reference/funcdecl.types.pull | 168 ++++++++ .../reference/functionAssignmentError.types | 2 + tests/baselines/reference/functionCall1.types | 1 + tests/baselines/reference/functionCall2.types | 1 + tests/baselines/reference/functionCall3.types | 1 + tests/baselines/reference/functionCall4.types | 1 + .../reference/functionImplementations.types | 14 + .../functionInIfStatementInModule.types | 2 + .../baselines/reference/functionLiteral.types | 1 + .../reference/functionMergedWithModule.types | 1 + .../reference/functionOnlyHasThrow.types | 1 + .../reference/functionOverloads12.types | 3 + .../reference/functionOverloads13.types | 1 + .../reference/functionOverloads14.types | 1 + .../reference/functionOverloads15.types | 1 + .../reference/functionOverloads16.types | 1 + .../reference/functionOverloads21.types | 1 + .../reference/functionOverloads23.types | 1 + .../reference/functionOverloads25.types | 1 + .../reference/functionOverloads26.types | 2 + .../reference/functionOverloads28.types | 1 + .../reference/functionOverloads30.types | 1 + .../reference/functionOverloads31.types | 1 + .../reference/functionOverloads33.types | 1 + .../reference/functionOverloads35.types | 1 + .../reference/functionOverloads36.types | 1 + .../reference/functionOverloads38.types | 1 + .../reference/functionOverloads39.types | 1 + .../reference/functionOverloads42.types | 1 + .../reference/functionOverloads7.types | 2 + .../reference/functionOverloads8.types | 1 + .../reference/functionOverloads9.types | 2 + .../baselines/reference/functionReturn.types | 4 + tests/baselines/reference/functionType.types | 2 + ...ithDefaultParameterWithNoStatements1.types | 1 + ...thDefaultParameterWithNoStatements10.types | 2 + ...thDefaultParameterWithNoStatements11.types | 2 + ...thDefaultParameterWithNoStatements13.types | 4 + ...thDefaultParameterWithNoStatements14.types | 4 + ...thDefaultParameterWithNoStatements15.types | 4 + ...ithDefaultParameterWithNoStatements2.types | 1 + ...ithDefaultParameterWithNoStatements3.types | 2 + ...ithDefaultParameterWithNoStatements4.types | 2 + ...ithDefaultParameterWithNoStatements5.types | 2 + ...ithDefaultParameterWithNoStatements6.types | 2 + ...ithDefaultParameterWithNoStatements7.types | 2 + ...fFunctionWithoutReturnTypeAnnotation.types | 1 + .../reference/generatedContextualTyping.types | 63 +++ .../genericAndNonGenericOverload1.types | 1 + ...nericArgumentCallSigAssignmentCompat.types | 5 + tests/baselines/reference/genericArray1.types | 3 + .../genericArrayPropertyAssignment.types | 1 + .../genericBaseClassLiteralProperty2.types | 1 + .../genericCallTypeArgumentInference.types | 28 ++ .../genericCallWithArrayLiteralArgs.types | 12 + .../genericCallWithFixedArguments.types | 1 + .../genericCallWithNonGenericArgs1.types | 1 + ...allWithObjectTypeArgsAndConstraints2.types | 4 + ...ricCallWithObjectTypeArgsAndIndexers.types | 2 + ...lWithObjectTypeArgsAndNumericIndexer.types | 2 + ...llWithObjectTypeArgsAndStringIndexer.types | 2 + ...WithOverloadedFunctionTypedArguments.types | 6 + ...ingGenericInterfaceFromAnotherModule.types | 1 + ...assPropertyInheritanceSpecialization.types | 4 + .../genericClassWithStaticFactory.types | 12 + .../reference/genericCloduleInModule.types | 1 + .../genericConstraintDeclaration.types | 1 + ...ericConstraintOnExtendedBuiltinTypes.types | 1 + ...ricConstraintOnExtendedBuiltinTypes2.types | 1 + ...genericConstructSignatureInInterface.types | 1 + ...enericContextualTypingSpecialization.types | 1 + .../reference/genericFunctions0.types | 1 + .../reference/genericFunctions1.types | 1 + ...ericFunctionsWithOptionalParameters1.types | 6 + ...ericFunctionsWithOptionalParameters3.types | 3 + .../reference/genericInference1.types | 3 + .../reference/genericInference2.types | 3 + .../genericInterfaceImplementation.types | 1 + .../genericMethodOverspecialization.types | 5 + .../genericObjectLitReturnType.types | 2 + .../reference/genericOfACloduleType1.types | 1 + .../reference/genericOfACloduleType2.types | 1 + .../genericParameterAssignability1.types | 1 + .../reference/genericPrototypeProperty.types | 2 + .../genericReversingTypeParameters.types | 4 + .../genericReversingTypeParameters2.types | 3 + .../reference/genericSpecializations1.types | 3 + .../genericStaticAnyTypeFunction.types | 2 + .../genericTypeArgumentInference1.types | 6 + .../reference/genericTypeAssertions3.types | 2 + .../genericTypeParameterEquivalence2.types | 2 + ...CallSignatureReturningSpecialization.types | 1 + ...nericWithIndexerOfTypeParameterType1.types | 1 + .../reference/getterSetterNonAccessor.types | 3 + tests/baselines/reference/global.types | 2 + .../reference/globalThisCapture.types | 1 + .../heterogeneousArrayLiterals.types | 44 ++ .../heterogeneousArrayLiterals.types.pull | 44 ++ .../reference/hidingCallSignatures.types | 4 + .../reference/hidingConstructSignatures.types | 4 + .../reference/hidingIndexSignatures.types | 2 + .../reference/ifDoWhileStatements.types | 58 +++ .../implicitAnyAnyReturningFunction.types | 2 + .../reference/implicitAnyGenerics.types | 6 + .../reference/implicitAnyInCatch.types | 1 + .../reference/importAliasIdentifiers.types | 6 + .../reference/importAliasWithDottedName.types | 2 + ...mportAndVariableDeclarationConflict2.types | 2 + tests/baselines/reference/importDecl.types | 5 + .../reference/importImportOnlyModule.types | 3 + .../reference/importInTypePosition.types | 4 + .../reference/importStatements.types | 6 + .../reference/importUsedInExtendsList1.types | 1 + .../import_reference-exported-alias.types | 1 + .../import_reference-to-type-alias.types | 1 + ...ferenecing-aliased-type-throug-array.types | 1 + .../reference/inOperatorWithFunction.types | 2 + .../inOperatorWithValidOperands.types | 2 + .../incrementOperatorWithAnyOtherType.types | 8 + .../incrementOperatorWithNumberType.types | 5 + .../reference/indexClassByNumber.types | 2 + tests/baselines/reference/indexIntoEnum.types | 1 + .../indexSignaturesInferentialTyping.types | 8 + tests/baselines/reference/indexer.types | 3 + tests/baselines/reference/indexer3.types | 1 + tests/baselines/reference/indexerA.types | 3 + .../indexerReturningTypeParameter1.types | 1 + .../reference/indexerWithTuple.types | 28 ++ .../reference/indexersInClassType.types | 1 + .../reference/inferSecondaryParameter.types | 1 + ...gumentsInSignatureWithRestParameters.types | 5 + .../inferenceFromParameterlessLambda.types | 1 + .../inferentialTypingWithFunctionType.types | 1 + .../inferentialTypingWithFunctionType2.types | 4 + ...erentialTypingWithFunctionTypeNested.types | 1 + ...ngWithFunctionTypeSyntacticScenarios.types | 10 + ...inferentialTypingWithFunctionTypeZip.types | 5 + ...nheritanceMemberFuncOverridingMethod.types | 2 + ...heritanceOfGenericConstructorMethod2.types | 2 + ...nheritanceStaticFuncOverridingMethod.types | 2 + ...aticFuncOverridingPropertyOfFuncType.types | 1 + ...ritedFunctionAssignmentCompatibility.types | 2 + ...ritedOverloadedSpecializedSignatures.types | 11 + .../initializePropertiesWithRenamedLet.types | 8 + .../reference/initializersWidened.types | 1 + tests/baselines/reference/innerAliases2.types | 1 + tests/baselines/reference/innerFunc.types | 2 + .../baselines/reference/innerOverloads.types | 1 + .../instanceAndStaticDeclarations1.types | 2 + .../instanceMemberInitialization.types | 2 + ...ofOperatorWithRHSIsSubtypeOfFunction.types | 1 + .../reference/instantiatedModule.types | 5 + ...instantiatedReturnTypeContravariance.types | 2 + .../interMixingModulesInterfaces0.types | 1 + .../interMixingModulesInterfaces1.types | 1 + .../interMixingModulesInterfaces2.types | 2 + .../interMixingModulesInterfaces3.types | 2 + .../interMixingModulesInterfaces4.types | 1 + .../interMixingModulesInterfaces5.types | 1 + tests/baselines/reference/interface0.types | 1 + .../reference/interfaceContextualType.types | 3 + .../reference/interfaceSubtyping.types | 1 + ...OverloadedCallAndConstructSignatures.types | 2 + .../interfaceWithPropertyOfEveryType.types | 8 + ...pecializedCallAndConstructSignatures.types | 4 + ...liasClassInsideLocalModuleWithExport.types | 1 + ...sClassInsideLocalModuleWithoutExport.types | 1 + ...sClassInsideTopLevelModuleWithExport.types | 1 + ...assInsideTopLevelModuleWithoutExport.types | 1 + .../reference/internalAliasFunction.types | 1 + ...sFunctionInsideLocalModuleWithExport.types | 1 + ...nctionInsideLocalModuleWithoutExport.types | 1 + ...nctionInsideTopLevelModuleWithExport.types | 1 + ...ionInsideTopLevelModuleWithoutExport.types | 1 + .../reference/internalAliasVar.types | 1 + ...lAliasVarInsideLocalModuleWithExport.types | 1 + ...iasVarInsideLocalModuleWithoutExport.types | 1 + ...iasVarInsideTopLevelModuleWithExport.types | 1 + ...VarInsideTopLevelModuleWithoutExport.types | 1 + ...lassNotReferencingInstanceNoConflict.types | 1 + ...duleNotReferencingInstanceNoConflict.types | 1 + tests/baselines/reference/invalidSplice.types | 4 + .../invalidSwitchBreakStatement.types | 17 +- .../reference/invalidUndefinedValues.types | 5 + tests/baselines/reference/ipromise2.types | 2 + tests/baselines/reference/ipromise4.types | 2 + tests/baselines/reference/isLiteral1.types | 1 + tests/baselines/reference/isLiteral2.types | 1 + .../reference/iterableArrayPattern1.types | 1 + .../reference/iterableArrayPattern11.types | 1 + .../reference/iterableArrayPattern12.types | 1 + .../reference/iterableArrayPattern13.types | 1 + .../reference/iterableArrayPattern14.types | 1 + .../reference/iterableArrayPattern15.types | 1 + .../reference/iterableArrayPattern2.types | 1 + .../reference/iterableArrayPattern20.types | 1 + .../reference/iterableArrayPattern27.types | 4 + .../reference/iterableArrayPattern3.types | 1 + .../reference/iterableArrayPattern30.types | 4 + .../reference/iterableArrayPattern4.types | 1 + .../reference/iterableArrayPattern9.types | 1 + .../reference/iteratorSpreadInArray.types | 1 + .../reference/iteratorSpreadInArray2.types | 3 + .../reference/iteratorSpreadInArray3.types | 3 + .../reference/iteratorSpreadInArray4.types | 3 + .../reference/iteratorSpreadInArray7.types | 1 + .../reference/iteratorSpreadInCall11.types | 2 + .../reference/iteratorSpreadInCall12.types | 3 + .../reference/iteratorSpreadInCall3.types | 1 + .../reference/iteratorSpreadInCall5.types | 3 + tests/baselines/reference/keywordField.types | 3 + tests/baselines/reference/lambdaASIEmit.types | 1 + .../reference/lambdaExpression.types | 4 + .../baselines/reference/letAsIdentifier.types | 3 + .../letConstMatchingParameterNames.types | 4 + .../reference/letDeclarations-access.types | 14 + .../reference/letDeclarations-es5-1.types | 5 + .../reference/letDeclarations-es5.types | 7 + .../baselines/reference/letDeclarations.types | 7 + .../reference/letDeclarations2.types | 2 + .../reference/letInNonStrictMode.types | 2 + .../reference/library_ArraySlice.types | 3 + .../library_DatePrototypeProperties.types | 16 + .../library_ObjectPrototypeProperties.types | 2 + .../library_RegExpExecArraySlice.types | 3 + .../reference/library_StringSlice.types | 3 + tests/baselines/reference/listFailure.types | 2 + tests/baselines/reference/literals1.types | 14 + .../logicalAndOperatorWithEveryType.types | 20 + .../logicalNotOperatorWithBooleanType.types | 8 + .../logicalNotOperatorWithEnumType.types | 3 + .../logicalNotOperatorWithNumberType.types | 10 + .../logicalNotOperatorWithStringType.types | 11 + ...gicalOrExpressionIsContextuallyTyped.types | 4 + .../logicalOrOperatorWithEveryType.types | 20 + .../logicalOrOperatorWithEveryType.types.pull | 20 + .../logicalOrOperatorWithTypeParameters.types | 1 + .../memberAccessMustUseModuleInstances.types | 2 + .../memberAccessOnConstructorType.types | 1 + .../memberVariableDeclarations1.types | 4 + .../reference/mergedDeclarations1.types | 4 + .../reference/mergedDeclarations4.types | 1 + .../mergedInterfacesWithIndexers.types | 3 + ...duleDeclarationWithSharedExportedVar.types | 1 + .../methodContainingLocalFunction.types | 3 + .../mismatchedGenericArguments1.types | 2 + .../moduleAndInterfaceSharingName.types | 1 + .../moduleAndInterfaceSharingName3.types | 1 + .../reference/moduleCodeGenTest3.types | 2 + .../reference/moduleCodeGenTest5.types | 6 + .../reference/moduleCodegenTest4.types | 3 + .../reference/moduleIdentifiers.types | 1 + .../moduleMemberWithoutTypeAnnotation1.types | 6 + .../moduleMemberWithoutTypeAnnotation2.types | 1 + tests/baselines/reference/moduleMerge.types | 2 + tests/baselines/reference/moduleNoEmit.types | 2 + .../reference/moduleOuterQualification.types | 1 + .../moduleReopenedTypeOtherBlock.types | 1 + .../moduleReopenedTypeSameBlock.types | 1 + ...resNameWithImportDeclarationInsideIt.types | 1 + ...esNameWithImportDeclarationInsideIt2.types | 1 + ...esNameWithImportDeclarationInsideIt4.types | 1 + ...esNameWithImportDeclarationInsideIt6.types | 1 + .../reference/moduleSymbolMerging.types | 1 + .../reference/moduleUnassignedVariable.types | 1 + .../moduleVariableArrayIndexer.types | 1 + .../baselines/reference/moduleVariables.types | 3 + .../reference/moduleVisibilityTest1.types | 12 + .../moduleWithStatementsOfEveryKind.types | 14 + .../reference/multiModuleClodule1.types | 3 + .../reference/multiModuleFundule1.types | 3 + .../mutuallyRecursiveGenericBaseTypes2.types | 1 + tests/baselines/reference/nameCollision.types | 9 + .../nameCollisionsInPropertyAssignments.types | 1 + .../reference/nameDelimitedBySlashes.types | 2 + .../reference/nameWithRelativePaths.types | 3 + .../namedFunctionExpressionInModule.types | 3 + .../negateOperatorWithAnyOtherType.types | 6 + .../negateOperatorWithBooleanType.types | 8 + .../negateOperatorWithEnumType.types | 3 + .../negateOperatorWithNumberType.types | 10 + .../negateOperatorWithStringType.types | 11 + tests/baselines/reference/negativeZero.types | 1 + .../reference/nestedIfStatement.types | 19 +- tests/baselines/reference/nestedModules.types | 2 + tests/baselines/reference/nestedSelf.types | 4 + tests/baselines/reference/newArrays.types | 2 + ...meterConstrainedToOuterTypeParameter.types | 1 + .../reference/newOperatorConformance.types | 1 + ...isExpressionAndLocalVarInConstructor.types | 2 + ...nThisExpressionAndLocalVarInFunction.types | 1 + ...ionThisExpressionAndLocalVarInLambda.types | 1 + ...ionThisExpressionAndLocalVarInMethod.types | 3 + ...nThisExpressionAndLocalVarInProperty.types | 3 + ...ollisionThisExpressionAndVarInGlobal.types | 1 + ...isExpressionInFunctionAndVarInGlobal.types | 1 + .../reference/noConstraintInReturnType1.types | 1 + ...licitAnyFunctionExpressionAssignment.types | 4 + ...yInContextuallyTypesFunctionParamter.types | 4 + .../noImplicitAnyIndexingSuppressed.types | 12 + .../reference/nonInstantiatedModule.types | 4 + tests/baselines/reference/null.types | 11 + .../reference/nullAssignableToEveryType.types | 22 + ...ullIsSubtypeOfEverythingButUndefined.types | 98 +++++ tests/baselines/reference/numberAsInLHS.types | 3 + .../reference/numberPropertyAccess.types | 5 + .../reference/numericIndexingResults.types | 37 ++ .../reference/numericMethodName1.types | 1 + .../reference/objectLitGetterSetter.types | 4 + .../baselines/reference/objectLiteral1.types | 2 + .../baselines/reference/objectLiteral2.types | 2 + .../objectLiteralArraySpecialization.types | 5 + .../objectLiteralContextualTyping.types | 6 + .../objectLiteralIndexerNoImplicitAny.types | 1 + .../objectLiteralShorthandProperties.types | 1 + ...LiteralShorthandPropertiesAssignment.types | 8 + ...eralShorthandPropertiesAssignmentES6.types | 8 + .../objectLiteralShorthandPropertiesES6.types | 1 + ...lShorthandPropertiesFunctionArgument.types | 2 + .../reference/objectLiteralWidened.types | 3 + .../reference/objectTypePropertyAccess.types | 7 + ...atureHidingMembersOfExtendedFunction.types | 2 + ...atureHidingMembersOfExtendedFunction.types | 2 + .../objectTypeWithNumericProperty.types | 19 + ...ctTypeWithStringNamedNumericProperty.types | 77 ++++ ...ringNamedPropertyOfIllegalCharacters.types | 21 + .../reference/objectTypesIdentity.types | 1 + ...bjectTypesIdentityWithCallSignatures.types | 4 + ...jectTypesIdentityWithCallSignatures2.types | 4 + ...thCallSignaturesDifferingParamCounts.types | 4 + ...ntityWithCallSignaturesWithOverloads.types | 4 + ...ypesIdentityWithConstructSignatures2.types | 3 + ...structSignaturesDifferingParamCounts.types | 3 + ...pesIdentityWithGenericCallSignatures.types | 3 + ...esIdentityWithGenericCallSignatures2.types | 3 + ...CallSignaturesDifferingByConstraints.types | 4 + ...cCallSignaturesDifferingByReturnType.types | 4 + ...CallSignaturesDifferingByReturnType2.types | 4 + ...gnaturesDifferingTypeParameterCounts.types | 3 + ...ignaturesDifferingTypeParameterNames.types | 3 + ...hGenericCallSignaturesOptionalParams.types | 3 + ...GenericCallSignaturesOptionalParams2.types | 3 + ...GenericCallSignaturesOptionalParams3.types | 3 + ...ructSignaturesDifferingByConstraints.types | 3 + ...tructSignaturesDifferingByReturnType.types | 3 + ...ructSignaturesDifferingByReturnType2.types | 3 + ...gnaturesDifferingTypeParameterCounts.types | 2 + ...ignaturesDifferingTypeParameterNames.types | 2 + ...ricConstructSignaturesOptionalParams.types | 2 + ...icConstructSignaturesOptionalParams2.types | 2 + ...icConstructSignaturesOptionalParams3.types | 2 + ...ectTypesIdentityWithNumericIndexers1.types | 1 + ...ectTypesIdentityWithNumericIndexers2.types | 1 + ...ectTypesIdentityWithNumericIndexers3.types | 1 + .../objectTypesIdentityWithOptionality.types | 1 + .../objectTypesIdentityWithPrivates.types | 1 + .../objectTypesIdentityWithPublics.types | 1 + ...bjectTypesIdentityWithStringIndexers.types | 1 + ...jectTypesIdentityWithStringIndexers2.types | 1 + .../reference/octalIntegerLiteral.types | 30 ++ .../reference/octalIntegerLiteralES6.types | 30 ++ .../optionalAccessorsInInterface1.types | 4 + ...optionalParamReferencingOtherParams1.types | 1 + tests/baselines/reference/out-flag.types | 1 + .../reference/overloadCallTest.types | 3 + .../overloadEquivalenceWithStatics.types | 1 + .../overloadOnConstConstraintChecks1.types | 1 + .../overloadOnConstConstraintChecks2.types | 1 + .../overloadOnConstConstraintChecks3.types | 2 + .../overloadResolutionOverNonCTLambdas.types | 4 + ...overloadResolutionOverNonCTObjectLit.types | 8 + .../reference/overloadResolutionWithAny.types | 6 + .../reference/overloadReturnTypes.types | 2 + ...lbacksWithDifferingOptionalityOnArgs.types | 2 + ...overloadedStaticMethodSpecialization.types | 1 + .../overloadsAndTypeArgumentArity.types | 2 + .../reference/overloadsWithConstraints.types | 1 + .../parenthesizedContexualTyping1.types | 16 + .../parenthesizedContexualTyping2.types | 16 + .../parenthesizedContexualTyping3.types | 23 ++ tests/baselines/reference/parser579071.types | 1 + tests/baselines/reference/parser596700.types | 1 + tests/baselines/reference/parser630933.types | 2 + .../baselines/reference/parser645086_3.types | 1 + .../baselines/reference/parser645086_4.types | 1 + tests/baselines/reference/parser768531.types | 8 +- .../parserAccessibilityAfterStatic3.types | 1 + .../parserAmbiguityWithBinaryOperator1.types | 1 + .../parserAmbiguityWithBinaryOperator2.types | 1 + .../parserAmbiguityWithBinaryOperator3.types | 1 + .../parserArrayLiteralExpression10.types | 2 + .../parserArrayLiteralExpression11.types | 3 + .../parserArrayLiteralExpression12.types | 4 + .../parserArrayLiteralExpression13.types | 5 + .../parserArrayLiteralExpression14.types | 11 + .../parserArrayLiteralExpression15.types | 11 + .../parserArrayLiteralExpression2.types | 1 + .../parserArrayLiteralExpression3.types | 2 + .../parserArrayLiteralExpression4.types | 3 + .../parserArrayLiteralExpression5.types | 1 + .../parserArrayLiteralExpression6.types | 2 + .../parserArrayLiteralExpression7.types | 1 + .../parserArrayLiteralExpression8.types | 2 + .../parserArrayLiteralExpression9.types | 2 + .../reference/parserDoStatement2.types | 4 +- .../reference/parserEmptyStatement1.types | 1 + .../reference/parserEnumDeclaration1.types | 1 + .../reference/parserEnumDeclaration3.types | 1 + .../reference/parserEnumDeclaration5.types | 2 + .../parserGreaterThanTokenAmbiguity1.types | 2 + .../parserGreaterThanTokenAmbiguity10.types | 3 + .../parserGreaterThanTokenAmbiguity5.types | 3 + .../parserGreaterThanTokenAmbiguity6.types | 2 + .../parserInterfaceKeywordInEnum1.types | 1 + .../parserKeywordsAsIdentifierName1.types | 3 + .../reference/parserModuleDeclaration11.types | 1 + .../reference/parserObjectLiterals1.types | 2 + .../reference/parserSbp_7.9_A9_T3.types | 33 +- .../reference/parserStrictMode16.types | 5 + .../reference/parserSymbolProperty6.types | 1 + .../baselines/reference/parserUnicode2.types | 1 + .../reference/parserVoidExpression1.types | 1 + ...r_breakInIterationOrSwitchStatement1.types | 7 +- ...r_breakInIterationOrSwitchStatement2.types | 9 +- .../reference/parser_breakTarget1.types | 7 +- .../reference/parser_breakTarget2.types | 12 +- .../reference/parser_breakTarget3.types | 16 +- .../reference/parser_breakTarget4.types | 16 +- ...parser_continueInIterationStatement1.types | 7 +- ...parser_continueInIterationStatement2.types | 9 +- .../reference/parser_continueLabel.types | 4 + .../reference/parser_continueTarget2.types | 12 +- .../reference/parser_continueTarget3.types | 16 +- .../reference/parser_continueTarget4.types | 16 +- .../reference/parser_duplicateLabel3.types | 7 + .../reference/parser_duplicateLabel4.types | 19 +- .../plusOperatorWithBooleanType.types | 8 + .../reference/plusOperatorWithEnumType.types | 3 + .../plusOperatorWithNumberType.types | 10 + .../plusOperatorWithStringType.types | 11 + ...ixIncrementAsOperandOfPlusExpression.types | 2 + .../reference/preserveConstEnums.types | 1 + ...ivacyCheckAnonymousFunctionParameter.types | 4 + ...vacyCheckAnonymousFunctionParameter2.types | 2 + ...ssignmentOnExportedGenericInterface2.types | 1 + .../baselines/reference/privateVisibles.types | 1 + .../baselines/reference/promiseChaining.types | 1 + tests/baselines/reference/promiseTest.types | 1 + .../reference/promiseTypeInference.types | 1 + .../propagationOfPromiseInitialization.types | 4 + tests/baselines/reference/properties.types | 1 + .../baselines/reference/propertyAccess6.types | 1 + ...AccessOnTypeParameterWithConstraints.types | 4 + ...ccessOnTypeParameterWithConstraints2.types | 8 + ...essOnTypeParameterWithoutConstraints.types | 5 + .../propertyNameWithoutTypeAnnotation.types | 2 + .../propertyNamesWithStringLiteral.types | 2 + ...edClassPropertyAccessibleWithinClass.types | 2 + .../protoAsIndexInIndexExpression.types | 4 + .../baselines/reference/protoInIndexer.types | 2 + .../prototypeOnConstructorFunctions.types | 1 + ...tions-entity-names-referencing-a-var.types | 1 + .../reference/quotedPropertyName1.types | 1 + .../reference/quotedPropertyName2.types | 1 + .../reference/quotedPropertyName3.types | 1 + .../reference/randomSemicolons1.types | 1 + .../reference/reboundBaseClassSymbol.types | 1 + ...nstantiationsWithDefaultConstructors.types | 1 + .../recursiveComplicatedClasses.types | 2 + .../reference/recursiveFunctionTypes1.types | 1 + .../reference/recursiveInference1.types | 4 + .../reference/recursiveInitializer.types | 2 + tests/baselines/reference/recursiveMods.types | 1 + .../reference/recursiveReturns.types | 1 + .../reference/recursiveTypesWithTypeof.types | 5 + .../regExpWithSlashInCharClass.types | 9 + .../reference/requireEmitSemicolon.types | 1 + tests/baselines/reference/reservedWords.types | 9 + ...sDeclarationWhenInBaseTypeResolution.types | 47 +++ .../restParameterNoTypeAnnotation.types | 1 + .../reference/returnStatement1.types | 1 + .../reference/returnStatements.types | 7 + ...seInferenceInContextualInstantiation.types | 1 + .../reversedRecusiveTypeInstantiation.types | 1 + .../reference/scannerES3NumericLiteral1.types | 3 +- .../reference/scannerES3NumericLiteral2.types | 3 +- .../reference/scannerES3NumericLiteral5.types | 3 +- .../reference/scannerES3NumericLiteral7.types | 3 +- .../reference/scannerNumericLiteral1.types | 3 +- .../reference/scannerNumericLiteral5.types | 3 +- .../reference/scannerNumericLiteral7.types | 3 +- ...gLiteralWithContainingNullCharacter1.types | Bin 147 -> 132 bytes .../scannerUnicodeEscapeInKeyword1.types | 1 + .../baselines/reference/selfInCallback.types | 2 + tests/baselines/reference/selfInLambdas.types | 2 + ...parateCompilationNonAmbientConstEnum.types | 1 + .../sourceMap-FileWithComments.types | 6 + ...terfacePrecedingVariableDeclaration1.types | 1 + .../reference/sourceMap-LineBreaks.types | 10 + .../sourceMap-StringLiteralWithNewLine.types | 2 + .../reference/sourceMapValidationClass.types | 3 + ...alidationClassWithDefaultConstructor.types | 2 + ...tConstructorAndCapturedThisStatement.types | 1 + ...thDefaultConstructorAndExtendsClause.types | 2 + .../sourceMapValidationClasses.types | 10 + .../sourceMapValidationDecorators.types | 12 + .../reference/sourceMapValidationDo.types | 3 + ...urceMapValidationFunctionExpressions.types | 2 + .../sourceMapValidationFunctions.types | 3 + .../reference/sourceMapValidationIfElse.types | 6 + .../sourceMapValidationLabeled.types | 3 + .../reference/sourceMapValidationModule.types | 2 + .../reference/sourceMapValidationSwitch.types | 9 + .../sourceMapValidationTryCatchFinally.types | 7 + .../sourceMapValidationVariables.types | 3 + .../reference/sourceMapValidationWhile.types | 3 + .../sourceMapValidationWithComments.types | 2 + ...rceMapWithMultipleFilesWithCopyright.types | 2 + ...ipleFilesWithFileEndingWithInterface.types | 1 + .../sourcemapValidationDuplicateNames.types | 1 + ...cializationsShouldNotAffectEachOther.types | 2 + .../reference/specializeVarArgs1.types | 2 + .../baselines/reference/staticFactory1.types | 2 + .../reference/staticInstanceResolution.types | 1 + .../reference/staticInstanceResolution2.types | 2 + .../reference/staticInstanceResolution3.types | 2 + .../staticMemberAccessOffDerivedType1.types | 1 + .../staticMemberInitialization.types | 1 + ...staticMemberWithStringAndNumberNames.types | 9 + tests/baselines/reference/stradac.types | 1 + .../strictModeWordInExportDeclaration.types | 3 + .../stringHasStringValuedNumericIndexer.types | 2 + .../reference/stringIndexingResults.types | 14 + ...ringLiteralObjectLiteralDeclaration1.types | 1 + ...ralPropertyNameWithLineContinuation1.types | 3 + .../reference/stringNamedPropertyAccess.types | 6 + .../reference/stringPropCodeGen.types | 1 + .../reference/stringPropertyAccess.types | 7 + tests/baselines/reference/structural1.types | 2 + tests/baselines/reference/styleOptions.types | 2 + tests/baselines/reference/subtypesOfAny.types | 2 + .../reference/subtypingTransitivity.types | 2 + .../subtypingWithCallSignatures.types | 4 + .../subtypingWithCallSignatures2.types | 25 ++ .../subtypingWithCallSignatures3.types | 22 + .../subtypingWithCallSignatures4.types | 19 + ...ubtypingWithObjectMembersOptionality.types | 4 + ...btypingWithObjectMembersOptionality3.types | 1 + ...btypingWithObjectMembersOptionality4.types | 1 + tests/baselines/reference/super2.types | 5 + tests/baselines/reference/superCalls.types | 4 + .../reference/switchBreakStatements.types | 67 ++++ tests/baselines/reference/switchCases.types | 13 +- .../reference/switchFallThroughs.types | 15 + .../reference/switchStatements.types | 36 ++ .../reference/symbolDeclarationEmit10.types | 1 + .../reference/symbolDeclarationEmit11.types | 2 + .../reference/symbolDeclarationEmit13.types | 1 + .../reference/symbolDeclarationEmit14.types | 2 + .../reference/symbolDeclarationEmit2.types | 1 + .../reference/symbolDeclarationEmit4.types | 1 + .../reference/symbolDeclarationEmit8.types | 1 + .../baselines/reference/symbolProperty1.types | 2 + .../reference/symbolProperty18.types | 3 + .../reference/symbolProperty19.types | 1 + .../baselines/reference/symbolProperty2.types | 2 + .../reference/symbolProperty21.types | 3 + .../reference/symbolProperty22.types | 1 + .../reference/symbolProperty23.types | 1 + .../reference/symbolProperty26.types | 2 + .../reference/symbolProperty27.types | 1 + .../reference/symbolProperty28.types | 1 + .../baselines/reference/symbolProperty4.types | 2 + .../reference/symbolProperty40.types | 2 + .../reference/symbolProperty41.types | 2 + .../reference/symbolProperty45.types | 2 + .../baselines/reference/symbolProperty5.types | 2 + .../reference/symbolProperty55.types | 1 + .../reference/symbolProperty56.types | 2 + .../reference/symbolProperty57.types | 2 + .../baselines/reference/symbolProperty6.types | 2 + tests/baselines/reference/symbolType11.types | 3 + tests/baselines/reference/symbolType17.types | 1 + tests/baselines/reference/symbolType18.types | 1 + tests/baselines/reference/symbolType19.types | 1 + .../taggedTemplateContextualTyping1.types | 10 + .../taggedTemplateContextualTyping2.types | 10 + ...gedTemplateStringsHexadecimalEscapes.types | 3 + ...TemplateStringsHexadecimalEscapesES6.types | 3 + ...ainCharactersThatArePartsOfEscapes01.types | 2 + ...haractersThatArePartsOfEscapes01_ES6.types | 2 + ...ainCharactersThatArePartsOfEscapes02.types | 36 +- ...haractersThatArePartsOfEscapes02_ES6.types | 31 ++ ...ingsWithManyCallAndMemberExpressions.types | 6 + ...sWithManyCallAndMemberExpressionsES6.types | 6 + ...TemplateStringsWithMultilineTemplate.types | 2 + ...plateStringsWithMultilineTemplateES6.types | 2 + ...mplateStringsWithOverloadResolution2.types | 8 + ...teStringsWithOverloadResolution2_ES6.types | 8 + ...gedTemplateStringsWithTagsTypedAsAny.types | 46 +++ ...TemplateStringsWithTagsTypedAsAnyES6.types | 46 +++ .../taggedTemplateStringsWithTypedTags.types | 40 ++ ...aggedTemplateStringsWithTypedTagsES6.types | 40 ++ ...gedTemplateStringsWithUnicodeEscapes.types | 3 + ...TemplateStringsWithUnicodeEscapesES6.types | 3 + ...TemplateStringsWithWhitespaceEscapes.types | 2 + ...plateStringsWithWhitespaceEscapesES6.types | 2 + .../baselines/reference/targetTypeArgs.types | 11 + .../baselines/reference/targetTypeCalls.types | 1 + .../reference/targetTypeObjectLiteral.types | 2 + .../targetTypeObjectLiteralToAny.types | 1 + .../baselines/reference/targetTypeTest2.types | 3 + .../templateStringBinaryOperations.types | 196 +++++++++ .../templateStringBinaryOperationsES6.types | 196 +++++++++ ...plateStringControlCharacterEscapes01.types | 1 + ...eStringControlCharacterEscapes01_ES6.types | 1 + ...plateStringControlCharacterEscapes02.types | 1 + ...eStringControlCharacterEscapes02_ES6.types | 1 + ...plateStringControlCharacterEscapes03.types | 1 + ...eStringControlCharacterEscapes03_ES6.types | 1 + ...plateStringControlCharacterEscapes04.types | 1 + ...eStringControlCharacterEscapes04_ES6.types | 1 + .../reference/templateStringInArray.types | 4 + .../templateStringInArrowFunction.types | 1 + .../templateStringInArrowFunctionES6.types | 1 + .../templateStringInConditional.types | 6 + .../templateStringInConditionalES6.types | 6 + .../templateStringInDeleteExpression.types | 2 + .../templateStringInDeleteExpressionES6.types | 2 + .../templateStringInEqualityChecks.types | 12 + .../templateStringInEqualityChecksES6.types | 12 + .../templateStringInFunctionExpression.types | 6 + ...emplateStringInFunctionExpressionES6.types | 6 + .../templateStringInInOperator.types | 4 + .../templateStringInInOperatorES6.types | 4 + .../templateStringInIndexExpression.types | 3 + .../templateStringInIndexExpressionES6.types | 3 + .../templateStringInParentheses.types | 2 + .../templateStringInParenthesesES6.types | 2 + .../templateStringInPropertyAssignment.types | 3 + ...emplateStringInPropertyAssignmentES6.types | 3 + .../templateStringInSwitchAndCase.types | 23 +- .../templateStringInSwitchAndCaseES6.types | 23 +- .../templateStringInTypeAssertion.types | 2 + .../templateStringInTypeAssertionES6.types | 2 + .../reference/templateStringInTypeOf.types | 2 + .../reference/templateStringInTypeOfES6.types | 2 + .../reference/templateStringInUnaryPlus.types | 2 + .../templateStringInUnaryPlusES6.types | 2 + .../reference/templateStringInWhile.types | 10 +- .../reference/templateStringInWhileES6.types | 10 +- .../reference/templateStringMultiline1.types | 13 +- .../templateStringMultiline1_ES6.types | 11 +- .../reference/templateStringMultiline2.types | 13 +- .../templateStringMultiline2_ES6.types | 11 +- .../reference/templateStringMultiline3.types | 13 +- .../templateStringMultiline3_ES6.types | 11 +- ...ainCharactersThatArePartsOfEscapes01.types | 5 +- ...haractersThatArePartsOfEscapes01_ES6.types | 5 +- ...ainCharactersThatArePartsOfEscapes02.types | 36 +- ...haractersThatArePartsOfEscapes02_ES6.types | 34 +- .../templateStringTermination1.types | 5 +- .../templateStringTermination1_ES6.types | 3 +- .../templateStringTermination2.types | 5 +- .../templateStringTermination2_ES6.types | 3 +- .../templateStringTermination3.types | 5 +- .../templateStringTermination3_ES6.types | 3 +- .../templateStringTermination4.types | 5 +- .../templateStringTermination4_ES6.types | 3 +- .../templateStringTermination5.types | 5 +- .../templateStringTermination5_ES6.types | 3 +- .../templateStringWhitespaceEscapes1.types | 7 +- ...templateStringWhitespaceEscapes1_ES6.types | 5 +- .../templateStringWhitespaceEscapes2.types | 9 +- ...templateStringWhitespaceEscapes2_ES6.types | 7 +- .../templateStringWithEmbeddedAddition.types | 3 + ...emplateStringWithEmbeddedAdditionES6.types | 3 + .../templateStringWithEmbeddedArray.types | 4 + .../templateStringWithEmbeddedArrayES6.types | 4 + ...plateStringWithEmbeddedArrowFunction.types | 1 + ...teStringWithEmbeddedArrowFunctionES6.types | 1 + .../templateStringWithEmbeddedComments.types | 28 +- ...emplateStringWithEmbeddedCommentsES6.types | 28 +- ...emplateStringWithEmbeddedConditional.types | 4 + ...lateStringWithEmbeddedConditionalES6.types | 4 + .../templateStringWithEmbeddedDivision.types | 3 + ...emplateStringWithEmbeddedDivisionES6.types | 3 + ...StringWithEmbeddedFunctionExpression.types | 1 + ...ingWithEmbeddedFunctionExpressionES6.types | 1 + ...templateStringWithEmbeddedInOperator.types | 4 + ...plateStringWithEmbeddedInOperatorES6.types | 4 + .../templateStringWithEmbeddedModulo.types | 3 + .../templateStringWithEmbeddedModuloES6.types | 3 + ...lateStringWithEmbeddedMultiplication.types | 3 + ...eStringWithEmbeddedMultiplicationES6.types | 3 + ...emplateStringWithEmbeddedNewOperator.types | 2 + ...lateStringWithEmbeddedNewOperatorES6.types | 2 + ...plateStringWithEmbeddedObjectLiteral.types | 3 + ...teStringWithEmbeddedObjectLiteralES6.types | 3 + ...lateStringWithEmbeddedTemplateString.types | 5 + ...eStringWithEmbeddedTemplateStringES6.types | 5 + ...gWithEmbeddedTypeAssertionOnAddition.types | 3 + ...thEmbeddedTypeAssertionOnAdditionES6.types | 3 + ...lateStringWithEmbeddedTypeOfOperator.types | 2 + ...eStringWithEmbeddedTypeOfOperatorES6.types | 2 + .../templateStringWithEmbeddedUnaryPlus.types | 1 + ...mplateStringWithEmbeddedUnaryPlusES6.types | 1 + ...mplateStringWithEmptyLiteralPortions.types | 33 ++ ...ateStringWithEmptyLiteralPortionsES6.types | 33 ++ ...StringWithOpenCommentInStringPortion.types | 5 +- ...ingWithOpenCommentInStringPortionES6.types | 5 +- .../templateStringWithPropertyAccess.types | 3 + .../templateStringWithPropertyAccessES6.types | 3 + .../ternaryExpressionSourceMap.types | 3 + tests/baselines/reference/thisBinding2.types | 4 + tests/baselines/reference/thisCapture1.types | 2 + .../thisInGenericStaticMembers.types | 2 + .../reference/thisInInnerFunctions.types | 2 + tests/baselines/reference/thisInLambda.types | 1 + .../thisInPropertyBoundDeclarations.types | 3 + .../reference/thisInStaticMethod1.types | 1 + .../throwInEnclosingStatements.types | 10 + .../baselines/reference/throwStatements.types | 25 ++ .../reference/toStringOnPrimitives.types | 3 + tests/baselines/reference/topLevel.types | 12 + .../reference/topLevelAmbientModule.types | 1 + .../baselines/reference/topLevelExports.types | 1 + .../reference/trailingCommasES3.types | 14 + .../reference/trailingCommasES5.types | 14 + .../transitiveTypeArgumentInference1.types | 1 + ...rgedInterfacesWithDifferingOverloads.types | 5 + ...gedInterfacesWithDifferingOverloads2.types | 8 + tests/baselines/reference/typeAliases.types | 4 + ...notationBestCommonTypeInArrayLiteral.types | 15 + .../reference/typeArgInference.types | 2 + .../reference/typeArgInferenceWithNull.types | 4 + .../typeArgumentInferenceOrdering.types | 1 + ...ssionWithUndefinedCallResolutionData.types | 1 + .../typeGuardOfFormExpr1AndExpr2.types | 9 + .../typeGuardOfFormExpr1OrExpr2.types | 9 + .../reference/typeGuardOfFormNotExpr.types | 10 + .../typeGuardOfFormTypeOfBoolean.types | 10 + ...ardOfFormTypeOfEqualEqualHasNoEffect.types | 4 + ...GuardOfFormTypeOfNotEqualHasNoEffect.types | 4 + .../typeGuardOfFormTypeOfNumber.types | 10 + .../typeGuardOfFormTypeOfOther.types | 8 + .../typeGuardOfFormTypeOfString.types | 10 + .../reference/typeGuardsDefeat.types | 6 + .../typeGuardsInClassAccessors.types | 20 + .../reference/typeGuardsInClassMethods.types | 15 + .../typeGuardsInConditionalExpression.types | 32 ++ ...peGuardsInConditionalExpression.types.pull | 32 ++ .../typeGuardsInExternalModule.types | 2 + .../reference/typeGuardsInFunction.types | 19 + .../typeGuardsInFunctionAndModuleBlock.types | 13 + .../reference/typeGuardsInGlobal.types | 1 + .../reference/typeGuardsInIfStatement.types | 34 ++ .../reference/typeGuardsInModule.types | 11 + .../reference/typeGuardsInProperties.types | 6 + ...GuardsInRightOperandOfAndAndOperator.types | 19 + ...peGuardsInRightOperandOfOrOrOperator.types | 19 + .../reference/typeGuardsObjectMethods.types | 10 + .../reference/typeInferenceFixEarly.types | 1 + .../typeInferenceReturnTypeCallback.types | 2 + .../typeInferenceWithTupleType.types | 12 + .../baselines/reference/typeOfPrototype.types | 2 + .../reference/typeOfThisInStaticMembers.types | 4 + .../typeParameterAndArgumentOfSameName1.types | 2 + .../typeParameterAsElementType.types | 1 + ...sTypeParameterConstraintTransitively.types | 15 + ...TypeParameterConstraintTransitively2.types | 12 + ...eterCompatibilityAccrossDeclarations.types | 2 + .../typeParameterFixingWithConstraints.types | 3 + ...rFixingWithContextSensitiveArguments.types | 2 + ...typeParametersAvailableInNestedScope.types | 2 + .../typeQueryWithReservedWords.types | 6 + tests/baselines/reference/typeVal.types | 2 + tests/baselines/reference/typedArrays.types | 108 +++++ .../typedGenericPrototypeMember.types | 1 + .../baselines/reference/typeofInterface.types | 2 + .../typeofModuleWithoutExports.types | 1 + .../typeofOperatorWithBooleanType.types | 16 + .../typeofOperatorWithEnumType.types | 7 + .../typeofOperatorWithNumberType.types | 19 + .../typeofOperatorWithStringType.types | 20 + .../reference/typesWithOptionalProperty.types | 6 + .../typesWithSpecializedCallSignatures.types | 3 + ...esWithSpecializedConstructSignatures.types | 4 + tests/baselines/reference/unaryPlus.types | 5 + .../reference/uncaughtCompilerError1.types | 15 + .../undefinedInferentialTyping.types | 2 + .../undefinedIsSubtypeOfEverything.types | 2 + .../reference/underscoreMapFirst.types | 2 + .../baselines/reference/underscoreTest1.types | 377 ++++++++++++++++++ ...dedEscapesInRegularExpressions01_ES5.types | 1 + ...dedEscapesInRegularExpressions01_ES6.types | 1 + ...dedEscapesInRegularExpressions02_ES5.types | 1 + ...dedEscapesInRegularExpressions02_ES6.types | 1 + ...dedEscapesInRegularExpressions03_ES5.types | 1 + ...dedEscapesInRegularExpressions03_ES6.types | 1 + ...dedEscapesInRegularExpressions04_ES5.types | 1 + ...dedEscapesInRegularExpressions04_ES6.types | 1 + ...dedEscapesInRegularExpressions05_ES5.types | 1 + ...dedEscapesInRegularExpressions05_ES6.types | 1 + ...dedEscapesInRegularExpressions06_ES5.types | 1 + ...dedEscapesInRegularExpressions06_ES6.types | 1 + ...dedEscapesInRegularExpressions07_ES5.types | 1 + ...dedEscapesInRegularExpressions07_ES6.types | 1 + ...dedEscapesInRegularExpressions08_ES5.types | 1 + ...dedEscapesInRegularExpressions08_ES6.types | 1 + ...dedEscapesInRegularExpressions09_ES5.types | 1 + ...dedEscapesInRegularExpressions09_ES6.types | 1 + ...dedEscapesInRegularExpressions10_ES5.types | 1 + ...dedEscapesInRegularExpressions10_ES6.types | 1 + ...dedEscapesInRegularExpressions11_ES5.types | 1 + ...dedEscapesInRegularExpressions11_ES6.types | 1 + ...dedEscapesInRegularExpressions12_ES5.types | 1 + ...dedEscapesInRegularExpressions12_ES6.types | 1 + ...dedEscapesInRegularExpressions13_ES5.types | 1 + ...dedEscapesInRegularExpressions13_ES6.types | 1 + ...dedEscapesInRegularExpressions14_ES5.types | 1 + ...dedEscapesInRegularExpressions14_ES6.types | 1 + ...dedEscapesInRegularExpressions15_ES5.types | 1 + ...dedEscapesInRegularExpressions15_ES6.types | 1 + ...dedEscapesInRegularExpressions16_ES5.types | 1 + ...dedEscapesInRegularExpressions16_ES6.types | 1 + ...dedEscapesInRegularExpressions17_ES5.types | 1 + ...dedEscapesInRegularExpressions17_ES6.types | 1 + ...dedEscapesInRegularExpressions18_ES5.types | 1 + ...dedEscapesInRegularExpressions18_ES6.types | 1 + ...dedEscapesInRegularExpressions19_ES5.types | 1 + ...dedEscapesInRegularExpressions19_ES6.types | 1 + ...nicodeExtendedEscapesInStrings01_ES5.types | 1 + ...nicodeExtendedEscapesInStrings01_ES6.types | 1 + ...nicodeExtendedEscapesInStrings02_ES5.types | 1 + ...nicodeExtendedEscapesInStrings02_ES6.types | 1 + ...nicodeExtendedEscapesInStrings03_ES5.types | 1 + ...nicodeExtendedEscapesInStrings03_ES6.types | 1 + ...nicodeExtendedEscapesInStrings04_ES5.types | 1 + ...nicodeExtendedEscapesInStrings04_ES6.types | 1 + ...nicodeExtendedEscapesInStrings05_ES5.types | 1 + ...nicodeExtendedEscapesInStrings05_ES6.types | 1 + ...nicodeExtendedEscapesInStrings06_ES5.types | 1 + ...nicodeExtendedEscapesInStrings06_ES6.types | 1 + ...nicodeExtendedEscapesInStrings08_ES5.types | 1 + ...nicodeExtendedEscapesInStrings08_ES6.types | 1 + ...nicodeExtendedEscapesInStrings09_ES5.types | 1 + ...nicodeExtendedEscapesInStrings09_ES6.types | 1 + ...nicodeExtendedEscapesInStrings10_ES5.types | 1 + ...nicodeExtendedEscapesInStrings10_ES6.types | 1 + ...nicodeExtendedEscapesInStrings11_ES5.types | 1 + ...nicodeExtendedEscapesInStrings11_ES6.types | 1 + ...nicodeExtendedEscapesInStrings13_ES5.types | 1 + ...nicodeExtendedEscapesInStrings13_ES6.types | 1 + ...nicodeExtendedEscapesInStrings15_ES5.types | 1 + ...nicodeExtendedEscapesInStrings15_ES6.types | 1 + ...nicodeExtendedEscapesInStrings16_ES5.types | 1 + ...nicodeExtendedEscapesInStrings16_ES6.types | 1 + ...nicodeExtendedEscapesInStrings18_ES5.types | 1 + ...nicodeExtendedEscapesInStrings18_ES6.types | 1 + ...nicodeExtendedEscapesInStrings23_ES5.types | 1 + ...nicodeExtendedEscapesInStrings23_ES6.types | 1 + ...codeExtendedEscapesInTemplates01_ES5.types | 1 + ...codeExtendedEscapesInTemplates01_ES6.types | 1 + ...codeExtendedEscapesInTemplates02_ES5.types | 1 + ...codeExtendedEscapesInTemplates02_ES6.types | 1 + ...codeExtendedEscapesInTemplates03_ES5.types | 1 + ...codeExtendedEscapesInTemplates03_ES6.types | 1 + ...codeExtendedEscapesInTemplates04_ES5.types | 1 + ...codeExtendedEscapesInTemplates04_ES6.types | 1 + ...codeExtendedEscapesInTemplates05_ES5.types | 1 + ...codeExtendedEscapesInTemplates05_ES6.types | 1 + ...codeExtendedEscapesInTemplates06_ES5.types | 1 + ...codeExtendedEscapesInTemplates06_ES6.types | 1 + ...codeExtendedEscapesInTemplates08_ES5.types | 1 + ...codeExtendedEscapesInTemplates08_ES6.types | 1 + ...codeExtendedEscapesInTemplates09_ES5.types | 1 + ...codeExtendedEscapesInTemplates09_ES6.types | 1 + ...codeExtendedEscapesInTemplates10_ES5.types | 1 + ...codeExtendedEscapesInTemplates10_ES6.types | 1 + ...codeExtendedEscapesInTemplates11_ES5.types | 1 + ...codeExtendedEscapesInTemplates11_ES6.types | 1 + ...codeExtendedEscapesInTemplates13_ES5.types | 1 + ...codeExtendedEscapesInTemplates13_ES6.types | 1 + ...codeExtendedEscapesInTemplates15_ES5.types | 1 + ...codeExtendedEscapesInTemplates15_ES6.types | 1 + ...codeExtendedEscapesInTemplates16_ES5.types | 1 + ...codeExtendedEscapesInTemplates16_ES6.types | 1 + ...codeExtendedEscapesInTemplates18_ES5.types | 1 + ...codeExtendedEscapesInTemplates18_ES6.types | 1 + ...codeExtendedEscapesInTemplates20_ES5.types | 2 + ...codeExtendedEscapesInTemplates20_ES6.types | 2 + .../reference/unicodeIdentifierNames.types | 1 + .../reference/unionTypeFromArrayLiteral.types | 16 + .../reference/unionTypeIndexSignature.types | 8 + .../reference/unionTypeInference.types | 14 + .../untypedArgumentInLambdaExpression.types | 1 + .../reference/unusedImportDeclaration.types | 3 + ...oduleWithExportImportInValuePosition.types | 3 + .../reference/validBooleanAssignments.types | 1 + .../reference/validEnumAssignments.types | 5 + .../validMultipleVariableDeclarations.types | 18 + .../reference/validNumberAssignments.types | 1 + .../reference/validStringAssignments.types | 1 + .../baselines/reference/validVoidValues.types | 1 + tests/baselines/reference/varAsID.types | 2 + .../varInFunctionInVarInitializer.types | 2 + tests/baselines/reference/vardecl.types | 19 + .../reference/variableDeclarator1.types | 1 + tests/baselines/reference/visSyntax.types | 1 + .../baselines/reference/voidAsOperator.types | 4 + .../voidFunctionAssignmentCompat.types | 7 + tests/baselines/reference/voidOperator1.types | 3 + .../voidOperatorWithBooleanType.types | 8 + .../reference/voidOperatorWithEnumType.types | 5 + .../voidOperatorWithNumberType.types | 10 + .../voidOperatorWithStringType.types | 11 + .../reference/whileBreakStatements.types | 43 ++ .../reference/whileContinueStatements.types | 53 +++ tests/baselines/reference/widenedTypes1.types | 5 + .../baselines/reference/withImportDecl.types | 10 + .../wrappedAndRecursiveConstraints.types | 1 + .../wrappedAndRecursiveConstraints3.types | 4 + 1553 files changed, 9116 insertions(+), 335 deletions(-) create mode 100644 tests/baselines/reference/funcdecl.types.pull diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index 4c50e0e0cad..37b2c18530f 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -29,68 +29,13 @@ class TypeWriterWalker { } private visitNode(node: ts.Node): void { - switch (node.kind) { - // Should always log expressions that are not tokens - // Also, always log the "this" keyword - // TODO: Ideally we should log all expressions, but to compare to the - // old typeWriter baselines, suppress tokens - case ts.SyntaxKind.ThisKeyword: - case ts.SyntaxKind.SuperKeyword: - case ts.SyntaxKind.ArrayLiteralExpression: - case ts.SyntaxKind.ObjectLiteralExpression: - case ts.SyntaxKind.ElementAccessExpression: - case ts.SyntaxKind.CallExpression: - case ts.SyntaxKind.NewExpression: - case ts.SyntaxKind.TypeAssertionExpression: - case ts.SyntaxKind.ParenthesizedExpression: - case ts.SyntaxKind.FunctionExpression: - case ts.SyntaxKind.ArrowFunction: - case ts.SyntaxKind.TypeOfExpression: - case ts.SyntaxKind.VoidExpression: - case ts.SyntaxKind.DeleteExpression: - case ts.SyntaxKind.PrefixUnaryExpression: - case ts.SyntaxKind.PostfixUnaryExpression: - case ts.SyntaxKind.BinaryExpression: - case ts.SyntaxKind.ConditionalExpression: - case ts.SyntaxKind.SpreadElementExpression: - this.log(node, this.getTypeOfNode(node)); - break; - - case ts.SyntaxKind.PropertyAccessExpression: - for (var current = node; current.kind === ts.SyntaxKind.PropertyAccessExpression; current = current.parent) { - } - if (current.kind !== ts.SyntaxKind.HeritageClauseElement) { - this.log(node, this.getTypeOfNode(node)); - } - break; - - // Should not change expression status (maybe expressions) - // TODO: Again, ideally should log number and string literals too, - // but to be consistent with the old typeWriter, just log identifiers - case ts.SyntaxKind.Identifier: - var identifier = node; - if (!this.isLabel(identifier)) { - var type = this.getTypeOfNode(identifier); - this.log(node, type); - } - break; + if (ts.isExpression(node) || node.kind === ts.SyntaxKind.Identifier) { + this.log(node, this.getTypeOfNode(node)); } ts.forEachChild(node, child => this.visitNode(child)); } - private isLabel(identifier: ts.Identifier): boolean { - var parent = identifier.parent; - switch (parent.kind) { - case ts.SyntaxKind.ContinueStatement: - case ts.SyntaxKind.BreakStatement: - return (parent).label === identifier; - case ts.SyntaxKind.LabeledStatement: - return (parent).label === identifier; - } - return false; - } - private log(node: ts.Node, type: ts.Type): void { var actualPos = ts.skipTrivia(this.currentSourceFile.text, node.pos); var lineAndCharacter = this.currentSourceFile.getLineAndCharacterOfPosition(actualPos); diff --git a/tests/baselines/reference/APISample_compile.types b/tests/baselines/reference/APISample_compile.types index 7ccbae38212..c54c6cb6ec7 100644 --- a/tests/baselines/reference/APISample_compile.types +++ b/tests/baselines/reference/APISample_compile.types @@ -85,12 +85,14 @@ export function compile(fileNames: string[], options: ts.CompilerOptions): void >diagnostic.messageText : string | ts.DiagnosticMessageChain >diagnostic : ts.Diagnostic >messageText : string | ts.DiagnosticMessageChain +>'\n' : string console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`); >console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`) : any >console.log : any >console : any >log : any +>`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}` : string >diagnostic.file.fileName : string >diagnostic.file : ts.SourceFile >diagnostic : ts.Diagnostic @@ -98,8 +100,10 @@ export function compile(fileNames: string[], options: ts.CompilerOptions): void >fileName : string >line + 1 : number >line : number +>1 : number >character + 1 : number >character : number +>1 : number >message : string }); @@ -110,12 +114,15 @@ export function compile(fileNames: string[], options: ts.CompilerOptions): void >emitResult.emitSkipped : boolean >emitResult : ts.EmitResult >emitSkipped : boolean +>1 : number +>0 : number console.log(`Process exiting with code '${exitCode}'.`); >console.log(`Process exiting with code '${exitCode}'.`) : any >console.log : any >console : any >log : any +>`Process exiting with code '${exitCode}'.` : string >exitCode : number process.exit(exitCode); @@ -135,11 +142,14 @@ compile(process.argv.slice(2), { >process : any >argv : any >slice : any +>2 : number >{ noEmitOnError: true, noImplicitAny: true, target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS} : { [x: string]: boolean | ts.ScriptTarget | ts.ModuleKind; noEmitOnError: boolean; noImplicitAny: boolean; target: ts.ScriptTarget; module: ts.ModuleKind; } noEmitOnError: true, noImplicitAny: true, >noEmitOnError : boolean +>true : boolean >noImplicitAny : boolean +>true : boolean target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS >target : ts.ScriptTarget diff --git a/tests/baselines/reference/APISample_linter.types b/tests/baselines/reference/APISample_linter.types index 609f08f3a76..c611e4c2912 100644 --- a/tests/baselines/reference/APISample_linter.types +++ b/tests/baselines/reference/APISample_linter.types @@ -89,6 +89,7 @@ export function delint(sourceFile: ts.SourceFile) { >report(node, "A looping statement's contents should be wrapped in a block body.") : void >report : (node: ts.Node, message: string) => void >node : ts.Node +>"A looping statement's contents should be wrapped in a block body." : string } break; @@ -126,6 +127,7 @@ export function delint(sourceFile: ts.SourceFile) { >ifStatement.thenStatement : ts.Statement >ifStatement : ts.IfStatement >thenStatement : ts.Statement +>"An if statement's contents should be wrapped in a block body." : string } if (ifStatement.elseStatement && >ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block && ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean @@ -166,6 +168,7 @@ export function delint(sourceFile: ts.SourceFile) { >ifStatement.elseStatement : ts.Statement >ifStatement : ts.IfStatement >elseStatement : ts.Statement +>"An else statement's contents should be wrapped in a block body." : string } break; @@ -209,6 +212,7 @@ export function delint(sourceFile: ts.SourceFile) { >report(node, "Use '===' and '!=='.") : void >report : (node: ts.Node, message: string) => void >node : ts.Node +>"Use '===' and '!=='." : string } break; } @@ -246,13 +250,16 @@ export function delint(sourceFile: ts.SourceFile) { >console.log : any >console : any >log : any +>`${sourceFile.fileName} (${line + 1},${character + 1}): ${message}` : string >sourceFile.fileName : string >sourceFile : ts.SourceFile >fileName : string >line + 1 : number >line : number +>1 : number >character + 1 : number >character : number +>1 : number >message : string } } @@ -265,6 +272,7 @@ const fileNames = process.argv.slice(2); >process : any >argv : any >slice : any +>2 : number fileNames.forEach(fileName => { >fileNames.forEach(fileName => { // Parse a file let sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);}) : any @@ -293,6 +301,7 @@ fileNames.forEach(fileName => { >ts : typeof ts >ScriptTarget : typeof ts.ScriptTarget >ES6 : ts.ScriptTarget +>true : boolean // delint it delint(sourceFile); diff --git a/tests/baselines/reference/APISample_transform.types b/tests/baselines/reference/APISample_transform.types index d98d2cfad00..43470a7835a 100644 --- a/tests/baselines/reference/APISample_transform.types +++ b/tests/baselines/reference/APISample_transform.types @@ -14,6 +14,7 @@ import * as ts from "typescript"; const source = "let x: string = 'string'"; >source : string +>"let x: string = 'string'" : string let result = ts.transpile(source, { module: ts.ModuleKind.CommonJS }); >result : string diff --git a/tests/baselines/reference/APISample_watcher.types b/tests/baselines/reference/APISample_watcher.types index 5f123ea839b..8e8c07325a6 100644 --- a/tests/baselines/reference/APISample_watcher.types +++ b/tests/baselines/reference/APISample_watcher.types @@ -51,6 +51,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >fileName : string >{ version: 0 } : { version: number; } >version : number +>0 : number }); @@ -181,7 +182,9 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { { persistent: true, interval: 250 }, >{ persistent: true, interval: 250 } : { persistent: boolean; interval: number; } >persistent : boolean +>true : boolean >interval : number +>250 : number (curr, prev) => { >(curr, prev) => { // Check timestamp if (+curr.mtime <= +prev.mtime) { return; } // Update the version to signal a change in the file files[fileName].version++; // write the changes to disk emitFile(fileName); } : (curr: any, prev: any) => void @@ -244,6 +247,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >console.log : any >console : any >log : any +>`Emitting ${fileName}` : string >fileName : string } else { @@ -252,6 +256,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >console.log : any >console : any >log : any +>`Emitting ${fileName} failed` : string >fileName : string logErrors(fileName); @@ -281,6 +286,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >o.text : string >o : ts.OutputFile >text : string +>"utf8" : string }); } @@ -333,6 +339,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >diagnostic.messageText : string | ts.DiagnosticMessageChain >diagnostic : ts.Diagnostic >messageText : string | ts.DiagnosticMessageChain +>"\n" : string if (diagnostic.file) { >diagnostic.file : ts.SourceFile @@ -357,6 +364,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >console.log : any >console : any >log : any +>` Error ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}` : string >diagnostic.file.fileName : string >diagnostic.file : ts.SourceFile >diagnostic : ts.Diagnostic @@ -364,8 +372,10 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >fileName : string >line + 1 : number >line : number +>1 : number >character + 1 : number >character : number +>1 : number >message : string } else { @@ -374,6 +384,7 @@ function watch(rootFileNames: string[], options: ts.CompilerOptions) { >console.log : any >console : any >log : any +>` Error: ${message}` : string >message : string } }); @@ -403,6 +414,7 @@ const currentDirectoryFiles = fs.readdirSync(process.cwd()). >fileName.length : any >fileName : any >length : any +>3 : number >fileName.substr(fileName.length - 3, 3) === ".ts" : boolean >fileName.substr(fileName.length - 3, 3) : any >fileName.substr : any @@ -412,6 +424,9 @@ const currentDirectoryFiles = fs.readdirSync(process.cwd()). >fileName.length : any >fileName : any >length : any +>3 : number +>3 : number +>".ts" : string // Start the watcher watch(currentDirectoryFiles, { module: ts.ModuleKind.CommonJS }); diff --git a/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types index 8846d2c3a37..fec7593a993 100644 --- a/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types +++ b/tests/baselines/reference/AmbientModuleAndAmbientWithSameNameAndCommonRoot.types @@ -56,4 +56,6 @@ var p = new A.Point(0, 0); // unexpected error here, bug 840000 >A.Point : typeof A.Point >A : typeof A >Point : typeof A.Point +>0 : number +>0 : number diff --git a/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types index 975f0f65a68..cd57c0c503d 100644 --- a/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types +++ b/tests/baselines/reference/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.types @@ -50,4 +50,6 @@ var p = new A.Point(0, 0); // unexpected error here, bug 840000 >A.Point : typeof A.Point >A : typeof A >Point : typeof A.Point +>0 : number +>0 : number diff --git a/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types b/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types index cf4aeb6bcc0..035f2a50c37 100644 --- a/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types +++ b/tests/baselines/reference/AmbientModuleAndNonAmbientFunctionWithTheSameNameAndCommonRoot.types @@ -15,7 +15,9 @@ function Point() { return { x: 0, y: 0 }; >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } === tests/cases/conformance/internalModules/DeclarationMerging/test.ts === diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types index 3ea1919ecae..9d943ab354c 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.types @@ -11,7 +11,9 @@ class Point { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } module Point { @@ -19,6 +21,7 @@ module Point { function Origin() { return ""; }// not an error, since not exported >Origin : () => string +>"" : string } @@ -37,7 +40,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } export module Point { @@ -45,5 +50,6 @@ module A { function Origin() { return ""; }// not an error since not exported >Origin : () => string +>"" : string } } diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types index 827089847e2..8f8ffc8839f 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.types @@ -11,7 +11,9 @@ class Point { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } module Point { @@ -19,6 +21,7 @@ module Point { var Origin = ""; // not an error, since not exported >Origin : string +>"" : string } @@ -37,7 +40,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } export module Point { @@ -45,5 +50,6 @@ module A { var Origin = ""; // not an error since not exported >Origin : string +>"" : string } } diff --git a/tests/baselines/reference/ES3For-ofTypeCheck2.types b/tests/baselines/reference/ES3For-ofTypeCheck2.types index f5ca0ab17e8..81230c9cea4 100644 --- a/tests/baselines/reference/ES3For-ofTypeCheck2.types +++ b/tests/baselines/reference/ES3For-ofTypeCheck2.types @@ -2,4 +2,5 @@ for (var v of [true]) { } >v : boolean >[true] : boolean[] +>true : boolean diff --git a/tests/baselines/reference/ES5For-of10.types b/tests/baselines/reference/ES5For-of10.types index 32a2adcf3da..d31f8972038 100644 --- a/tests/baselines/reference/ES5For-of10.types +++ b/tests/baselines/reference/ES5For-of10.types @@ -5,6 +5,7 @@ function foo() { return { x: 0 }; >{ x: 0 } : { x: number; } >x : number +>0 : number } for (foo().x of []) { >foo().x : number diff --git a/tests/baselines/reference/ES5For-of13.types b/tests/baselines/reference/ES5For-of13.types index 64aac2ae4b2..46125af551e 100644 --- a/tests/baselines/reference/ES5For-of13.types +++ b/tests/baselines/reference/ES5For-of13.types @@ -2,6 +2,9 @@ for (let v of ['a', 'b', 'c']) { >v : string >['a', 'b', 'c'] : string[] +>'a' : string +>'b' : string +>'c' : string var x = v; >x : string diff --git a/tests/baselines/reference/ES5For-of24.types b/tests/baselines/reference/ES5For-of24.types index 7170073b5d9..c0c4666fbf5 100644 --- a/tests/baselines/reference/ES5For-of24.types +++ b/tests/baselines/reference/ES5For-of24.types @@ -2,6 +2,9 @@ var a = [1, 2, 3]; >a : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number for (var v of a) { >v : number @@ -9,4 +12,5 @@ for (var v of a) { let a = 0; >a : number +>0 : number } diff --git a/tests/baselines/reference/ES5For-of25.types b/tests/baselines/reference/ES5For-of25.types index 7b306ee9a26..4650e3244d3 100644 --- a/tests/baselines/reference/ES5For-of25.types +++ b/tests/baselines/reference/ES5For-of25.types @@ -2,6 +2,9 @@ var a = [1, 2, 3]; >a : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number for (var v of a) { >v : number diff --git a/tests/baselines/reference/ES5For-of3.types b/tests/baselines/reference/ES5For-of3.types index c47328816e8..65267fe3f70 100644 --- a/tests/baselines/reference/ES5For-of3.types +++ b/tests/baselines/reference/ES5For-of3.types @@ -2,6 +2,9 @@ for (var v of ['a', 'b', 'c']) >v : string >['a', 'b', 'c'] : string[] +>'a' : string +>'b' : string +>'c' : string var x = v; >x : string diff --git a/tests/baselines/reference/ES5For-of9.types b/tests/baselines/reference/ES5For-of9.types index 60870c2d642..ec41df704c6 100644 --- a/tests/baselines/reference/ES5For-of9.types +++ b/tests/baselines/reference/ES5For-of9.types @@ -5,6 +5,7 @@ function foo() { return { x: 0 }; >{ x: 0 } : { x: number; } >x : number +>0 : number } for (foo().x of []) { >foo().x : number diff --git a/tests/baselines/reference/ES5For-ofTypeCheck1.types b/tests/baselines/reference/ES5For-ofTypeCheck1.types index 4da0ecc0e36..395900d683b 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck1.types +++ b/tests/baselines/reference/ES5For-ofTypeCheck1.types @@ -1,4 +1,5 @@ === tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck1.ts === for (var v of "") { } >v : string +>"" : string diff --git a/tests/baselines/reference/ES5For-ofTypeCheck2.types b/tests/baselines/reference/ES5For-ofTypeCheck2.types index e6b86ce1d81..d28a2803216 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck2.types +++ b/tests/baselines/reference/ES5For-ofTypeCheck2.types @@ -2,4 +2,5 @@ for (var v of [true]) { } >v : boolean >[true] : boolean[] +>true : boolean diff --git a/tests/baselines/reference/ES5For-ofTypeCheck3.types b/tests/baselines/reference/ES5For-ofTypeCheck3.types index 5293634c6c5..a62dcc94f98 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck3.types +++ b/tests/baselines/reference/ES5For-ofTypeCheck3.types @@ -2,6 +2,8 @@ var tuple: [string, number] = ["", 0]; >tuple : [string, number] >["", 0] : [string, number] +>"" : string +>0 : number for (var v of tuple) { } >v : string | number diff --git a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types index 3cbd14c78bb..205335c7eb6 100644 --- a/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types +++ b/tests/baselines/reference/EnumAndModuleWithSameNameAndCommonRoot.types @@ -40,4 +40,6 @@ var y = new enumdule.Point(0, 0); >enumdule.Point : typeof enumdule.Point >enumdule : typeof enumdule >Point : typeof enumdule.Point +>0 : number +>0 : number diff --git a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types index 6d69109e542..e47b38a0b61 100644 --- a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types +++ b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types @@ -31,6 +31,7 @@ module A { >Point : Point return 1; +>1 : number } } } diff --git a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types index 17b4a25cde3..a5cefcc521e 100644 --- a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types +++ b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types @@ -17,7 +17,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export class Point3d extends Point { >Point3d : Point3d @@ -32,8 +34,11 @@ module A { >Point3d : Point3d >{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; } >x : number +>0 : number >y : number +>0 : number >z : number +>0 : number export class Line{ >Line : Line diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types index 6f4452fce4c..ba174d9bbba 100644 --- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types +++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types @@ -17,7 +17,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export class Point3d extends Point { >Point3d : Point3d @@ -32,8 +34,11 @@ module A { >Point3d : Point3d >{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; } >x : number +>0 : number >y : number +>0 : number >z : number +>0 : number export class Line{ >Line : Line @@ -54,6 +59,7 @@ module A { >Point : Point return null; +>null : null } } } diff --git a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types index ac1845a533c..60a6e122a78 100644 --- a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types +++ b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types @@ -33,7 +33,9 @@ module A { >Line : typeof Line >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number >p : Point } } diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types index 3f3a670ee8e..ba862ad77cf 100644 --- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types +++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types @@ -33,7 +33,9 @@ module A { >Line : typeof Line >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number >p : Point } } diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types index 7634e2cde3e..ef72f80ffde 100644 --- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types +++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types @@ -33,7 +33,9 @@ module A { >Line : typeof Line >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number >p : Point } } diff --git a/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types b/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types index f6f4e6a441a..b4a331b9140 100644 --- a/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types +++ b/tests/baselines/reference/ExportInterfaceWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types @@ -17,7 +17,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export interface Point3d extends Point { >Point3d : Point3d @@ -32,8 +34,11 @@ module A { >Point3d : Point3d >{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; } >x : number +>0 : number >y : number +>0 : number >z : number +>0 : number export interface Line{ >Line : Line diff --git a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types index 53484780474..366e21b6472 100644 --- a/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types +++ b/tests/baselines/reference/ExportInterfaceWithInaccessibleTypeInTypeParameterConstraint.types @@ -17,7 +17,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export interface Point3d extends Point { >Point3d : Point3d @@ -32,8 +34,11 @@ module A { >Point3d : Point3d >{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; } >x : number +>0 : number >y : number +>0 : number >z : number +>0 : number export interface Line{ >Line : Line diff --git a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types index a3a80cb06ad..cd8526242fa 100644 --- a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types +++ b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types @@ -18,6 +18,8 @@ module A { >Point : Point >new Point(0, 0) : Point >Point : typeof Point +>0 : number +>0 : number export class Line { >Line : Line @@ -40,7 +42,9 @@ module A { >Line : typeof Line >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number >p : Point } } diff --git a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types index 82bdf732173..e08a4345a95 100644 --- a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types +++ b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInMemberTypeAnnotations.types @@ -15,7 +15,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export var Unity = { start: new Point(0, 0), end: new Point(1, 0) }; >Unity : { start: Point; end: Point; } @@ -23,8 +25,12 @@ module A { >start : Point >new Point(0, 0) : Point >Point : typeof Point +>0 : number +>0 : number >end : Point >new Point(1, 0) : Point >Point : typeof Point +>1 : number +>0 : number } diff --git a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types index a4284a8f410..12a8cd974ad 100644 --- a/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types +++ b/tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types @@ -28,4 +28,5 @@ module A { >Point : Point } = null; +>null : null } diff --git a/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types b/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types index 945a4be6fe5..faf86ea6982 100644 --- a/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types +++ b/tests/baselines/reference/ExportVariableWithAccessibleTypeInTypeAnnotation.types @@ -18,6 +18,8 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } diff --git a/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types b/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types index 9ae05f87416..4ce1912d441 100644 --- a/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types +++ b/tests/baselines/reference/ExportVariableWithInaccessibleTypeInTypeAnnotation.types @@ -18,7 +18,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number interface Point3d extends Point { >Point3d : Point3d @@ -34,7 +36,10 @@ module A { >Point3d : Point3d >{ x: 0, y: 0, z: 0 } : { x: number; y: number; z: number; } >x : number +>0 : number >y : number +>0 : number >z : number +>0 : number } diff --git a/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types b/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types index 879088f93df..fe976cd0a3b 100644 --- a/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types +++ b/tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types @@ -8,7 +8,9 @@ module A { return { x: 0, y: 0 }; >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } } @@ -23,7 +25,9 @@ module B { >Origin : { x: number; y: number; } >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } } diff --git a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types index 023511c8c4d..343b69954b0 100644 --- a/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types +++ b/tests/baselines/reference/ModuleAndEnumWithSameNameAndCommonRoot.types @@ -40,4 +40,6 @@ var y = new enumdule.Point(0, 0); >enumdule.Point : typeof enumdule.Point >enumdule : typeof enumdule >Point : typeof enumdule.Point +>0 : number +>0 : number diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types index 003fb5fa15a..ec4027df0b2 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types @@ -39,7 +39,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } === tests/cases/conformance/internalModules/DeclarationMerging/part2.ts === @@ -49,6 +51,7 @@ module A { // not a collision, since we don't export var Origin: string = "0,0"; >Origin : string +>"0,0" : string export module Utils { >Utils : typeof Utils @@ -120,6 +123,8 @@ var p = new A.Utils.Plane(o, { x: 1, y: 1 }); >o : { x: number; y: number; } >{ x: 1, y: 1 } : { x: number; y: number; } >x : number +>1 : number >y : number +>1 : number diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types index b31bb4b22ac..770e6f37d20 100644 --- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types +++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types @@ -55,7 +55,9 @@ module otherRoot { >Point : Root.A.Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export module Utils { >Utils : typeof Utils diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types index b13cbde5522..1ba99568099 100644 --- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types +++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types @@ -45,7 +45,9 @@ module A { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number export module Utils { >Utils : typeof Utils @@ -117,6 +119,8 @@ var p = new A.Utils.Plane(o, { x: 1, y: 1 }); >o : { x: number; y: number; } >{ x: 1, y: 1 } : { x: number; y: number; } >x : number +>1 : number >y : number +>1 : number diff --git a/tests/baselines/reference/TypeGuardWithEnumUnion.types b/tests/baselines/reference/TypeGuardWithEnumUnion.types index 9296e0ad04e..16d999e46f2 100644 --- a/tests/baselines/reference/TypeGuardWithEnumUnion.types +++ b/tests/baselines/reference/TypeGuardWithEnumUnion.types @@ -14,6 +14,7 @@ function f1(x: Color | string) { >typeof x === "number" : boolean >typeof x : string >x : string | Color +>"number" : string var y = x; >y : Color @@ -42,6 +43,7 @@ function f2(x: Color | string | string[]) { >typeof x === "object" : boolean >typeof x : string >x : string | string[] | Color +>"object" : string var y = x; >y : string[] @@ -54,6 +56,7 @@ function f2(x: Color | string | string[]) { >typeof x === "number" : boolean >typeof x : string >x : string | string[] | Color +>"number" : string var z = x; >z : Color @@ -75,6 +78,7 @@ function f2(x: Color | string | string[]) { >typeof x === "string" : boolean >typeof x : string >x : string | string[] | Color +>"string" : string var a = x; >a : string diff --git a/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull b/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull index 33a40762445..61cce562ba5 100644 --- a/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull +++ b/tests/baselines/reference/TypeGuardWithEnumUnion.types.pull @@ -14,6 +14,7 @@ function f1(x: Color | string) { >typeof x === "number" : boolean >typeof x : string >x : string | Color +>"number" : string var y = x; >y : Color @@ -42,6 +43,7 @@ function f2(x: Color | string | string[]) { >typeof x === "object" : boolean >typeof x : string >x : string | Color | string[] +>"object" : string var y = x; >y : string[] @@ -54,6 +56,7 @@ function f2(x: Color | string | string[]) { >typeof x === "number" : boolean >typeof x : string >x : string | Color | string[] +>"number" : string var z = x; >z : Color @@ -75,6 +78,7 @@ function f2(x: Color | string | string[]) { >typeof x === "string" : boolean >typeof x : string >x : string | Color | string[] +>"string" : string var a = x; >a : string diff --git a/tests/baselines/reference/VariableDeclaration10_es6.types b/tests/baselines/reference/VariableDeclaration10_es6.types index 47238fdd5a8..717de7ed0ff 100644 --- a/tests/baselines/reference/VariableDeclaration10_es6.types +++ b/tests/baselines/reference/VariableDeclaration10_es6.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/variableDeclarations/VariableDeclaration10_es6.ts === let a: number = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/VariableDeclaration3_es6.types b/tests/baselines/reference/VariableDeclaration3_es6.types index a172c8114cb..1b5bbdb4ea7 100644 --- a/tests/baselines/reference/VariableDeclaration3_es6.types +++ b/tests/baselines/reference/VariableDeclaration3_es6.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/variableDeclarations/VariableDeclaration3_es6.ts === const a = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/VariableDeclaration5_es6.types b/tests/baselines/reference/VariableDeclaration5_es6.types index a07894d533d..0dce532be51 100644 --- a/tests/baselines/reference/VariableDeclaration5_es6.types +++ b/tests/baselines/reference/VariableDeclaration5_es6.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/variableDeclarations/VariableDeclaration5_es6.ts === const a: number = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/VariableDeclaration8_es6.types b/tests/baselines/reference/VariableDeclaration8_es6.types index 530b147136d..24a3cd85383 100644 --- a/tests/baselines/reference/VariableDeclaration8_es6.types +++ b/tests/baselines/reference/VariableDeclaration8_es6.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/variableDeclarations/VariableDeclaration8_es6.ts === let a = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/accessOverriddenBaseClassMember1.types b/tests/baselines/reference/accessOverriddenBaseClassMember1.types index 15007cebf4c..2aeb541d723 100644 --- a/tests/baselines/reference/accessOverriddenBaseClassMember1.types +++ b/tests/baselines/reference/accessOverriddenBaseClassMember1.types @@ -13,9 +13,11 @@ class Point { >"x=" + this.x + " y=" + this.y : string >"x=" + this.x + " y=" : string >"x=" + this.x : string +>"x=" : string >this.x : number >this : Point >x : number +>" y=" : string >this.y : number >this : Point >y : number @@ -46,6 +48,7 @@ class ColoredPoint extends Point { >super.toString : () => string >super : Point >toString : () => string +>" color=" : string >this.color : string >this : ColoredPoint >color : string diff --git a/tests/baselines/reference/accessorWithES5.types b/tests/baselines/reference/accessorWithES5.types index 9d4976dd91a..cb54e92b184 100644 --- a/tests/baselines/reference/accessorWithES5.types +++ b/tests/baselines/reference/accessorWithES5.types @@ -7,6 +7,7 @@ class C { >x : number return 1; +>1 : number } } @@ -25,6 +26,7 @@ var x = { get a() { return 1 } >a : number +>1 : number } var y = { diff --git a/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types b/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types index a80986c8cd1..98bd1910241 100644 --- a/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types +++ b/tests/baselines/reference/addMoreCallSignaturesToBaseSignature2.types @@ -22,4 +22,5 @@ var kitty = a(1); >kitty : string >a(1) : string >a : Bar +>1 : number diff --git a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types index da534c68ad6..9f1a9f03898 100644 --- a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types +++ b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types @@ -144,11 +144,13 @@ var r17 = a + ''; >r17 : string >a + '' : string >a : any +>'' : string var r18 = a + 123; >r18 : any >a + 123 : any >a : any +>123 : number var r19 = a + { a: '' }; >r19 : any @@ -156,6 +158,7 @@ var r19 = a + { a: '' }; >a : any >{ a: '' } : { a: string; } >a : string +>'' : string var r20 = a + ((a: string) => { return a }); >r20 : any diff --git a/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types b/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types index 4dade89f5e4..f4ea168ee0d 100644 --- a/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types +++ b/tests/baselines/reference/additionOperatorWithNullValueAndValidOperator.types @@ -24,31 +24,38 @@ var d: string; var r1: any = null + a; >r1 : any >null + a : any +>null : null >a : any var r2: any = a + null; >r2 : any >a + null : any >a : any +>null : null // null + number/enum var r3 = null + b; >r3 : number >null + b : number +>null : null >b : number var r4 = null + 1; >r4 : number >null + 1 : number +>null : null +>1 : number var r5 = null + c; >r5 : number >null + c : number +>null : null >c : E var r6 = null + E.a; >r6 : number >null + E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -56,22 +63,28 @@ var r6 = null + E.a; var r7 = null + E['a']; >r7 : number >null + E['a'] : number +>null : null >E['a'] : E >E : typeof E +>'a' : string var r8 = b + null; >r8 : number >b + null : number >b : number +>null : null var r9 = 1 + null; >r9 : number >1 + null : number +>1 : number +>null : null var r10 = c + null >r10 : number >c + null : number >c : E +>null : null var r11 = E.a + null; >r11 : number @@ -79,29 +92,38 @@ var r11 = E.a + null; >E.a : E >E : typeof E >a : E +>null : null var r12 = E['a'] + null; >r12 : number >E['a'] + null : number >E['a'] : E >E : typeof E +>'a' : string +>null : null // null + string var r13 = null + d; >r13 : string >null + d : string +>null : null >d : string var r14 = null + ''; >r14 : string >null + '' : string +>null : null +>'' : string var r15 = d + null; >r15 : string >d + null : string >d : string +>null : null var r16 = '' + null; >r16 : string >'' + null : string +>'' : string +>null : null diff --git a/tests/baselines/reference/additionOperatorWithNumberAndEnum.types b/tests/baselines/reference/additionOperatorWithNumberAndEnum.types index c22939ffd98..2b1c2794065 100644 --- a/tests/baselines/reference/additionOperatorWithNumberAndEnum.types +++ b/tests/baselines/reference/additionOperatorWithNumberAndEnum.types @@ -48,6 +48,7 @@ var r4 = b + b; var r5 = 0 + a; >r5 : number >0 + a : number +>0 : number >a : number var r6 = E.a + 0; @@ -56,6 +57,7 @@ var r6 = E.a + 0; >E.a : E >E : typeof E >a : E +>0 : number var r7 = E.a + E.b; >r7 : number @@ -72,16 +74,20 @@ var r8 = E['a'] + E['b']; >E['a'] + E['b'] : number >E['a'] : E >E : typeof E +>'a' : string >E['b'] : E >E : typeof E +>'b' : string var r9 = E['a'] + F['c']; >r9 : number >E['a'] + F['c'] : number >E['a'] : E >E : typeof E +>'a' : string >F['c'] : F >F : typeof F +>'c' : string var r10 = a + c; >r10 : number diff --git a/tests/baselines/reference/additionOperatorWithStringAndEveryType.types b/tests/baselines/reference/additionOperatorWithStringAndEveryType.types index 9d5a926c427..5413f5f5bdf 100644 --- a/tests/baselines/reference/additionOperatorWithStringAndEveryType.types +++ b/tests/baselines/reference/additionOperatorWithStringAndEveryType.types @@ -137,11 +137,13 @@ var r17 = x + ''; >r17 : string >x + '' : string >x : string +>'' : string var r18 = x + 0; >r18 : string >x + 0 : string >x : string +>0 : number var r19 = x + { a: '' }; >r19 : string @@ -149,6 +151,7 @@ var r19 = x + { a: '' }; >x : string >{ a: '' } : { a: string; } >a : string +>'' : string var r20 = x + []; >r20 : string diff --git a/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types b/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types index 9a67b25024c..16f0a4dfa84 100644 --- a/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types +++ b/tests/baselines/reference/additionOperatorWithUndefinedValueAndValidOperator.types @@ -44,6 +44,7 @@ var r4 = undefined + 1; >r4 : number >undefined + 1 : number >undefined : undefined +>1 : number var r5 = undefined + c; >r5 : number @@ -65,6 +66,7 @@ var r7 = undefined + E['a']; >undefined : undefined >E['a'] : E >E : typeof E +>'a' : string var r8 = b + undefined; >r8 : number @@ -75,6 +77,7 @@ var r8 = b + undefined; var r9 = 1 + undefined; >r9 : number >1 + undefined : number +>1 : number >undefined : undefined var r10 = c + undefined @@ -96,6 +99,7 @@ var r12 = E['a'] + undefined; >E['a'] + undefined : number >E['a'] : E >E : typeof E +>'a' : string >undefined : undefined // undefined + string @@ -109,6 +113,7 @@ var r14 = undefined + ''; >r14 : string >undefined + '' : string >undefined : undefined +>'' : string var r15 = d + undefined; >r15 : string @@ -119,5 +124,6 @@ var r15 = d + undefined; var r16 = '' + undefined; >r16 : string >'' + undefined : string +>'' : string >undefined : undefined diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types index a666d2cee98..02dfb65177d 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -52,6 +53,7 @@ import Backbone = require("aliasUsage1_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInArray.types b/tests/baselines/reference/aliasUsageInArray.types index f7e2beb49dd..2129775e0de 100644 --- a/tests/baselines/reference/aliasUsageInArray.types +++ b/tests/baselines/reference/aliasUsageInArray.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -40,6 +41,7 @@ import Backbone = require("aliasUsageInArray_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types index 392481d2d02..1c52886d140 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.types +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -41,6 +42,7 @@ import Backbone = require("aliasUsageInFunctionExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types index 568e885f51f..c8bf0c99e31 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.types +++ b/tests/baselines/reference/aliasUsageInGenericFunction.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -40,6 +41,7 @@ var r2 = foo({ a: null }); >a : IHasVisualizationModel >null : IHasVisualizationModel >IHasVisualizationModel : IHasVisualizationModel +>null : null === tests/cases/compiler/aliasUsageInGenericFunction_backbone.ts === export class Model { @@ -55,6 +57,7 @@ import Backbone = require("aliasUsageInGenericFunction_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.types b/tests/baselines/reference/aliasUsageInIndexerOfClass.types index e968abe597f..494f198b2c1 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.types +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -49,6 +50,7 @@ import Backbone = require("aliasUsageInIndexerOfClass_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.types b/tests/baselines/reference/aliasUsageInObjectLiteral.types index 2e631a41cdf..94272df2154 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.types +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -54,6 +55,7 @@ import Backbone = require("aliasUsageInObjectLiteral_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types b/tests/baselines/reference/aliasUsageInOrExpression.types index 1a4dae90356..480f8102cb8 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types +++ b/tests/baselines/reference/aliasUsageInOrExpression.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -45,6 +46,7 @@ var e: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null || { ><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; } >x : IHasVisualizationModel >IHasVisualizationModel : IHasVisualizationModel +>null : null >{ x: moduleA } : { x: typeof moduleA; } >x : typeof moduleA >moduleA : typeof moduleA @@ -57,9 +59,11 @@ var f: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null ? { x ><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; } >x : IHasVisualizationModel >IHasVisualizationModel : IHasVisualizationModel +>null : null >{ x: moduleA } : { x: typeof moduleA; } >x : typeof moduleA >moduleA : typeof moduleA +>null : null === tests/cases/compiler/aliasUsageInOrExpression_backbone.ts === export class Model { @@ -75,6 +79,7 @@ import Backbone = require("aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types.pull b/tests/baselines/reference/aliasUsageInOrExpression.types.pull index 3b138d1404a..1554c9c72c5 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types.pull +++ b/tests/baselines/reference/aliasUsageInOrExpression.types.pull @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -45,6 +46,7 @@ var e: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null || { ><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; } >x : IHasVisualizationModel >IHasVisualizationModel : IHasVisualizationModel +>null : null >{ x: moduleA } : { x: typeof moduleA; } >x : typeof moduleA >moduleA : typeof moduleA @@ -57,9 +59,11 @@ var f: { x: IHasVisualizationModel } = <{ x: IHasVisualizationModel }>null ? { x ><{ x: IHasVisualizationModel }>null : { x: IHasVisualizationModel; } >x : IHasVisualizationModel >IHasVisualizationModel : IHasVisualizationModel +>null : null >{ x: moduleA } : { x: typeof moduleA; } >x : typeof moduleA >moduleA : typeof moduleA +>null : null === tests/cases/compiler/aliasUsageInOrExpression_backbone.ts === export class Model { @@ -75,6 +79,7 @@ import Backbone = require("aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types index 72f0aaf9e20..47c5bf78403 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -45,6 +46,7 @@ import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.types b/tests/baselines/reference/aliasUsageInVarAssignment.types index 6b1c097ad97..d662675a72b 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.types +++ b/tests/baselines/reference/aliasUsageInVarAssignment.types @@ -10,6 +10,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -36,6 +37,7 @@ import Backbone = require("aliasUsageInVarAssignment_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/aliasUsedAsNameValue.types b/tests/baselines/reference/aliasUsedAsNameValue.types index b8d92f28496..9c519786c76 100644 --- a/tests/baselines/reference/aliasUsedAsNameValue.types +++ b/tests/baselines/reference/aliasUsedAsNameValue.types @@ -28,4 +28,5 @@ export var id: number; export function b(a: any): any { return null; } >b : (a: any) => any >a : any +>null : null diff --git a/tests/baselines/reference/ambientDeclarations.types b/tests/baselines/reference/ambientDeclarations.types index 38814405521..f44d49cfc57 100644 --- a/tests/baselines/reference/ambientDeclarations.types +++ b/tests/baselines/reference/ambientDeclarations.types @@ -103,12 +103,14 @@ declare enum E2 { a = 1, >a : E2 +>1 : number b, >b : E2 c = 2, >c : E2 +>2 : number d >d : E2 diff --git a/tests/baselines/reference/ambientEnumElementInitializer1.types b/tests/baselines/reference/ambientEnumElementInitializer1.types index da80015cbd5..97db9f199d3 100644 --- a/tests/baselines/reference/ambientEnumElementInitializer1.types +++ b/tests/baselines/reference/ambientEnumElementInitializer1.types @@ -4,4 +4,5 @@ declare enum E { e = 3 >e : E +>3 : number } diff --git a/tests/baselines/reference/ambientEnumElementInitializer2.types b/tests/baselines/reference/ambientEnumElementInitializer2.types index cb1414630b9..7217bc8e6fd 100644 --- a/tests/baselines/reference/ambientEnumElementInitializer2.types +++ b/tests/baselines/reference/ambientEnumElementInitializer2.types @@ -5,4 +5,5 @@ declare enum E { e = -3 // Negative >e : E >-3 : number +>3 : number } diff --git a/tests/baselines/reference/ambientEnumElementInitializer4.types b/tests/baselines/reference/ambientEnumElementInitializer4.types index 566c03103a1..b85649d654d 100644 --- a/tests/baselines/reference/ambientEnumElementInitializer4.types +++ b/tests/baselines/reference/ambientEnumElementInitializer4.types @@ -4,4 +4,5 @@ declare enum E { e = 0xA >e : E +>0xA : number } diff --git a/tests/baselines/reference/ambientEnumElementInitializer5.types b/tests/baselines/reference/ambientEnumElementInitializer5.types index 3b6198f0e24..1c5ea0ecdd3 100644 --- a/tests/baselines/reference/ambientEnumElementInitializer5.types +++ b/tests/baselines/reference/ambientEnumElementInitializer5.types @@ -5,4 +5,5 @@ declare enum E { e = -0xA >e : E >-0xA : number +>0xA : number } diff --git a/tests/baselines/reference/ambientEnumElementInitializer6.types b/tests/baselines/reference/ambientEnumElementInitializer6.types index 3a38fd6912d..015d3f4e146 100644 --- a/tests/baselines/reference/ambientEnumElementInitializer6.types +++ b/tests/baselines/reference/ambientEnumElementInitializer6.types @@ -7,5 +7,6 @@ declare module M { e = 3 >e : E +>3 : number } } diff --git a/tests/baselines/reference/ambientModules.types b/tests/baselines/reference/ambientModules.types index fe0aceef810..15e6d51b457 100644 --- a/tests/baselines/reference/ambientModules.types +++ b/tests/baselines/reference/ambientModules.types @@ -11,4 +11,5 @@ Foo.Bar.foo = 5; >Foo : typeof Foo >Bar : typeof Foo.Bar >foo : any +>5 : number diff --git a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types index 4e508ba2df5..d4df0f75d16 100644 --- a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types +++ b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types @@ -53,6 +53,7 @@ class TestClass2 { >x : any return 0; +>0 : number } public foo(x: string): number; diff --git a/tests/baselines/reference/amdImportAsPrimaryExpression.types b/tests/baselines/reference/amdImportAsPrimaryExpression.types index f88bc9a1ffe..eab0b168f44 100644 --- a/tests/baselines/reference/amdImportAsPrimaryExpression.types +++ b/tests/baselines/reference/amdImportAsPrimaryExpression.types @@ -9,6 +9,7 @@ if(foo.E1.A === 0){ >foo : typeof foo >E1 : typeof foo.E1 >A : foo.E1 +>0 : number // Should cause runtime import - interesting optimization possibility, as gets inlined to 0. } diff --git a/tests/baselines/reference/amdImportNotAsPrimaryExpression.types b/tests/baselines/reference/amdImportNotAsPrimaryExpression.types index bde0cb02b1e..4f3b58768c6 100644 --- a/tests/baselines/reference/amdImportNotAsPrimaryExpression.types +++ b/tests/baselines/reference/amdImportNotAsPrimaryExpression.types @@ -23,9 +23,12 @@ var x: foo.C1 = <{m1: number}>{}; var y: typeof foo.C1.s1 = false; >y : boolean +>foo.C1.s1 : boolean +>foo.C1 : typeof foo.C1 >foo : typeof foo >C1 : typeof foo.C1 >s1 : boolean +>false : boolean var z: foo.M1.I2; >z : f.I2 @@ -38,6 +41,7 @@ var e: number = 0; >0 : foo.E1 >foo : unknown >E1 : foo.E1 +>0 : number === tests/cases/conformance/externalModules/foo_0.ts === export class C1 { @@ -45,9 +49,11 @@ export class C1 { m1 = 42; >m1 : number +>42 : number static s1 = true; >s1 : boolean +>true : boolean } export interface I1 { diff --git a/tests/baselines/reference/amdModuleName1.types b/tests/baselines/reference/amdModuleName1.types index 02ad9472354..64bc7842451 100644 --- a/tests/baselines/reference/amdModuleName1.types +++ b/tests/baselines/reference/amdModuleName1.types @@ -12,6 +12,7 @@ class Foo { >this.x : number >this : Foo >x : number +>5 : number } } export = Foo; diff --git a/tests/baselines/reference/anonterface.types b/tests/baselines/reference/anonterface.types index 7b5b1401cac..b152ce79a1d 100644 --- a/tests/baselines/reference/anonterface.types +++ b/tests/baselines/reference/anonterface.types @@ -34,7 +34,9 @@ c.m(function(n) { return "hello: "+n; },18); >function(n) { return "hello: "+n; } : (n: number) => string >n : number >"hello: "+n : string +>"hello: " : string >n : number +>18 : number diff --git a/tests/baselines/reference/anyAsFunctionCall.types b/tests/baselines/reference/anyAsFunctionCall.types index 6492dce37d2..340ccac463f 100644 --- a/tests/baselines/reference/anyAsFunctionCall.types +++ b/tests/baselines/reference/anyAsFunctionCall.types @@ -14,6 +14,7 @@ var b = x('hello'); >b : any >x('hello') : any >x : any +>'hello' : string var c = x(x); >c : any diff --git a/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types b/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types index f25cd57831b..bd0d9a9a092 100644 --- a/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types +++ b/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types @@ -24,6 +24,8 @@ var o = new Point(3, 4); >o : any >new Point(3, 4) : any >Point : (x: any, y: any) => void +>3 : number +>4 : number var xx = o.x; >xx : any diff --git a/tests/baselines/reference/anyAssignabilityInInheritance.types b/tests/baselines/reference/anyAssignabilityInInheritance.types index f5a4f22ef3f..b8575e8edb2 100644 --- a/tests/baselines/reference/anyAssignabilityInInheritance.types +++ b/tests/baselines/reference/anyAssignabilityInInheritance.types @@ -246,6 +246,7 @@ module f { export var bar = 1; >bar : number +>1 : number } declare function foo15(x: typeof f): typeof f; >foo15 : { (x: typeof f): typeof f; (x: any): any; } @@ -272,6 +273,7 @@ module CC { export var bar = 1; >bar : number +>1 : number } declare function foo16(x: CC): CC; >foo16 : { (x: CC): CC; (x: any): any; } diff --git a/tests/baselines/reference/anyPlusAny1.types b/tests/baselines/reference/anyPlusAny1.types index aeda001eeaa..406d432f06e 100644 --- a/tests/baselines/reference/anyPlusAny1.types +++ b/tests/baselines/reference/anyPlusAny1.types @@ -7,6 +7,7 @@ x.name = "hello"; >x.name : any >x : any >name : any +>"hello" : string var z = x + x; >z : any diff --git a/tests/baselines/reference/anyPropertyAccess.types b/tests/baselines/reference/anyPropertyAccess.types index 5ea20cefdd6..13eec6b53b2 100644 --- a/tests/baselines/reference/anyPropertyAccess.types +++ b/tests/baselines/reference/anyPropertyAccess.types @@ -12,12 +12,14 @@ var b = x['foo']; >b : any >x['foo'] : any >x : any +>'foo' : string var c = x['fn'](); >c : any >x['fn']() : any >x['fn'] : any >x : any +>'fn' : string var d = x.bar.baz; >d : any @@ -32,6 +34,7 @@ var e = x[0].foo; >x[0].foo : any >x[0] : any >x : any +>0 : number >foo : any var f = x['0'].bar; @@ -39,5 +42,6 @@ var f = x['0'].bar; >x['0'].bar : any >x['0'] : any >x : any +>'0' : string >bar : any diff --git a/tests/baselines/reference/argsInScope.types b/tests/baselines/reference/argsInScope.types index 010e5624039..745ae249359 100644 --- a/tests/baselines/reference/argsInScope.types +++ b/tests/baselines/reference/argsInScope.types @@ -10,6 +10,7 @@ class C { for (var i = 0; i < arguments.length; i++) { >i : number +>0 : number >i < arguments.length : boolean >i : number >arguments.length : number @@ -33,4 +34,7 @@ c.P(1,2,3); >c.P : (ii: number, j: number, k: number) => void >c : C >P : (ii: number, j: number, k: number) => void +>1 : number +>2 : number +>3 : number diff --git a/tests/baselines/reference/arguments.types b/tests/baselines/reference/arguments.types index 1902e459316..4699d463b34 100644 --- a/tests/baselines/reference/arguments.types +++ b/tests/baselines/reference/arguments.types @@ -6,4 +6,5 @@ function f() { >x : any >arguments[12] : any >arguments : IArguments +>12 : number } diff --git a/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types b/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types index f0120f328c4..8845a52760d 100644 --- a/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types +++ b/tests/baselines/reference/arithmeticOperatorWithAnyAndNumber.types @@ -22,24 +22,30 @@ var ra3 = a * 0; >ra3 : number >a * 0 : number >a : any +>0 : number var ra4 = 0 * a; >ra4 : number >0 * a : number +>0 : number >a : any var ra5 = 0 * 0; >ra5 : number >0 * 0 : number +>0 : number +>0 : number var ra6 = b * 0; >ra6 : number >b * 0 : number >b : number +>0 : number var ra7 = 0 * b; >ra7 : number >0 * b : number +>0 : number >b : number var ra8 = b * b; @@ -65,24 +71,30 @@ var rb3 = a / 0; >rb3 : number >a / 0 : number >a : any +>0 : number var rb4 = 0 / a; >rb4 : number >0 / a : number +>0 : number >a : any var rb5 = 0 / 0; >rb5 : number >0 / 0 : number +>0 : number +>0 : number var rb6 = b / 0; >rb6 : number >b / 0 : number >b : number +>0 : number var rb7 = 0 / b; >rb7 : number >0 / b : number +>0 : number >b : number var rb8 = b / b; @@ -108,24 +120,30 @@ var rc3 = a % 0; >rc3 : number >a % 0 : number >a : any +>0 : number var rc4 = 0 % a; >rc4 : number >0 % a : number +>0 : number >a : any var rc5 = 0 % 0; >rc5 : number >0 % 0 : number +>0 : number +>0 : number var rc6 = b % 0; >rc6 : number >b % 0 : number >b : number +>0 : number var rc7 = 0 % b; >rc7 : number >0 % b : number +>0 : number >b : number var rc8 = b % b; @@ -151,24 +169,30 @@ var rd3 = a - 0; >rd3 : number >a - 0 : number >a : any +>0 : number var rd4 = 0 - a; >rd4 : number >0 - a : number +>0 : number >a : any var rd5 = 0 - 0; >rd5 : number >0 - 0 : number +>0 : number +>0 : number var rd6 = b - 0; >rd6 : number >b - 0 : number >b : number +>0 : number var rd7 = 0 - b; >rd7 : number >0 - b : number +>0 : number >b : number var rd8 = b - b; @@ -194,24 +218,30 @@ var re3 = a << 0; >re3 : number >a << 0 : number >a : any +>0 : number var re4 = 0 << a; >re4 : number >0 << a : number +>0 : number >a : any var re5 = 0 << 0; >re5 : number >0 << 0 : number +>0 : number +>0 : number var re6 = b << 0; >re6 : number >b << 0 : number >b : number +>0 : number var re7 = 0 << b; >re7 : number >0 << b : number +>0 : number >b : number var re8 = b << b; @@ -237,24 +267,30 @@ var rf3 = a >> 0; >rf3 : number >a >> 0 : number >a : any +>0 : number var rf4 = 0 >> a; >rf4 : number >0 >> a : number +>0 : number >a : any var rf5 = 0 >> 0; >rf5 : number >0 >> 0 : number +>0 : number +>0 : number var rf6 = b >> 0; >rf6 : number >b >> 0 : number >b : number +>0 : number var rf7 = 0 >> b; >rf7 : number >0 >> b : number +>0 : number >b : number var rf8 = b >> b; @@ -280,24 +316,30 @@ var rg3 = a >>> 0; >rg3 : number >a >>> 0 : number >a : any +>0 : number var rg4 = 0 >>> a; >rg4 : number >0 >>> a : number +>0 : number >a : any var rg5 = 0 >>> 0; >rg5 : number >0 >>> 0 : number +>0 : number +>0 : number var rg6 = b >>> 0; >rg6 : number >b >>> 0 : number >b : number +>0 : number var rg7 = 0 >>> b; >rg7 : number >0 >>> b : number +>0 : number >b : number var rg8 = b >>> b; @@ -323,24 +365,30 @@ var rh3 = a & 0; >rh3 : number >a & 0 : number >a : any +>0 : number var rh4 = 0 & a; >rh4 : number >0 & a : number +>0 : number >a : any var rh5 = 0 & 0; >rh5 : number >0 & 0 : number +>0 : number +>0 : number var rh6 = b & 0; >rh6 : number >b & 0 : number >b : number +>0 : number var rh7 = 0 & b; >rh7 : number >0 & b : number +>0 : number >b : number var rh8 = b & b; @@ -366,24 +414,30 @@ var ri3 = a ^ 0; >ri3 : number >a ^ 0 : number >a : any +>0 : number var ri4 = 0 ^ a; >ri4 : number >0 ^ a : number +>0 : number >a : any var ri5 = 0 ^ 0; >ri5 : number >0 ^ 0 : number +>0 : number +>0 : number var ri6 = b ^ 0; >ri6 : number >b ^ 0 : number >b : number +>0 : number var ri7 = 0 ^ b; >ri7 : number >0 ^ b : number +>0 : number >b : number var ri8 = b ^ b; @@ -409,24 +463,30 @@ var rj3 = a | 0; >rj3 : number >a | 0 : number >a : any +>0 : number var rj4 = 0 | a; >rj4 : number >0 | a : number +>0 : number >a : any var rj5 = 0 | 0; >rj5 : number >0 | 0 : number +>0 : number +>0 : number var rj6 = b | 0; >rj6 : number >b | 0 : number >b : number +>0 : number var rj7 = 0 | b; >rj7 : number >0 | b : number +>0 : number >b : number var rj8 = b | b; diff --git a/tests/baselines/reference/arithmeticOperatorWithEnum.types b/tests/baselines/reference/arithmeticOperatorWithEnum.types index 2f4ebce8f32..3aca5c31798 100644 --- a/tests/baselines/reference/arithmeticOperatorWithEnum.types +++ b/tests/baselines/reference/arithmeticOperatorWithEnum.types @@ -84,6 +84,7 @@ var ra9 = E.a * 1; >E.a : E >E : typeof E >a : E +>1 : number var ra10 = a * E.b; >ra10 : number @@ -104,6 +105,7 @@ var ra11 = b * E.b; var ra12 = 1 * E.b; >ra12 : number >1 * E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -171,6 +173,7 @@ var rb9 = E.a / 1; >E.a : E >E : typeof E >a : E +>1 : number var rb10 = a / E.b; >rb10 : number @@ -191,6 +194,7 @@ var rb11 = b / E.b; var rb12 = 1 / E.b; >rb12 : number >1 / E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -258,6 +262,7 @@ var rc9 = E.a % 1; >E.a : E >E : typeof E >a : E +>1 : number var rc10 = a % E.b; >rc10 : number @@ -278,6 +283,7 @@ var rc11 = b % E.b; var rc12 = 1 % E.b; >rc12 : number >1 % E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -345,6 +351,7 @@ var rd9 = E.a - 1; >E.a : E >E : typeof E >a : E +>1 : number var rd10 = a - E.b; >rd10 : number @@ -365,6 +372,7 @@ var rd11 = b - E.b; var rd12 = 1 - E.b; >rd12 : number >1 - E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -432,6 +440,7 @@ var re9 = E.a << 1; >E.a : E >E : typeof E >a : E +>1 : number var re10 = a << E.b; >re10 : number @@ -452,6 +461,7 @@ var re11 = b << E.b; var re12 = 1 << E.b; >re12 : number >1 << E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -519,6 +529,7 @@ var rf9 = E.a >> 1; >E.a : E >E : typeof E >a : E +>1 : number var rf10 = a >> E.b; >rf10 : number @@ -539,6 +550,7 @@ var rf11 = b >> E.b; var rf12 = 1 >> E.b; >rf12 : number >1 >> E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -606,6 +618,7 @@ var rg9 = E.a >>> 1; >E.a : E >E : typeof E >a : E +>1 : number var rg10 = a >>> E.b; >rg10 : number @@ -626,6 +639,7 @@ var rg11 = b >>> E.b; var rg12 = 1 >>> E.b; >rg12 : number >1 >>> E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -693,6 +707,7 @@ var rh9 = E.a & 1; >E.a : E >E : typeof E >a : E +>1 : number var rh10 = a & E.b; >rh10 : number @@ -713,6 +728,7 @@ var rh11 = b & E.b; var rh12 = 1 & E.b; >rh12 : number >1 & E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -780,6 +796,7 @@ var ri9 = E.a ^ 1; >E.a : E >E : typeof E >a : E +>1 : number var ri10 = a ^ E.b; >ri10 : number @@ -800,6 +817,7 @@ var ri11 = b ^ E.b; var ri12 = 1 ^ E.b; >ri12 : number >1 ^ E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -867,6 +885,7 @@ var rj9 = E.a | 1; >E.a : E >E : typeof E >a : E +>1 : number var rj10 = a | E.b; >rj10 : number @@ -887,6 +906,7 @@ var rj11 = b | E.b; var rj12 = 1 | E.b; >rj12 : number >1 | E.b : number +>1 : number >E.b : E >E : typeof E >b : E diff --git a/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types b/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types index 7b65ddf7f00..cb9bf3d45b0 100644 --- a/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types +++ b/tests/baselines/reference/arithmeticOperatorWithEnumUnion.types @@ -94,6 +94,7 @@ var ra9 = E.a * 1; >E.a : E >E : typeof E >a : E +>1 : number var ra10 = a * E.b; >ra10 : number @@ -114,6 +115,7 @@ var ra11 = b * E.b; var ra12 = 1 * E.b; >ra12 : number >1 * E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -181,6 +183,7 @@ var rb9 = E.a / 1; >E.a : E >E : typeof E >a : E +>1 : number var rb10 = a / E.b; >rb10 : number @@ -201,6 +204,7 @@ var rb11 = b / E.b; var rb12 = 1 / E.b; >rb12 : number >1 / E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -268,6 +272,7 @@ var rc9 = E.a % 1; >E.a : E >E : typeof E >a : E +>1 : number var rc10 = a % E.b; >rc10 : number @@ -288,6 +293,7 @@ var rc11 = b % E.b; var rc12 = 1 % E.b; >rc12 : number >1 % E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -355,6 +361,7 @@ var rd9 = E.a - 1; >E.a : E >E : typeof E >a : E +>1 : number var rd10 = a - E.b; >rd10 : number @@ -375,6 +382,7 @@ var rd11 = b - E.b; var rd12 = 1 - E.b; >rd12 : number >1 - E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -442,6 +450,7 @@ var re9 = E.a << 1; >E.a : E >E : typeof E >a : E +>1 : number var re10 = a << E.b; >re10 : number @@ -462,6 +471,7 @@ var re11 = b << E.b; var re12 = 1 << E.b; >re12 : number >1 << E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -529,6 +539,7 @@ var rf9 = E.a >> 1; >E.a : E >E : typeof E >a : E +>1 : number var rf10 = a >> E.b; >rf10 : number @@ -549,6 +560,7 @@ var rf11 = b >> E.b; var rf12 = 1 >> E.b; >rf12 : number >1 >> E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -616,6 +628,7 @@ var rg9 = E.a >>> 1; >E.a : E >E : typeof E >a : E +>1 : number var rg10 = a >>> E.b; >rg10 : number @@ -636,6 +649,7 @@ var rg11 = b >>> E.b; var rg12 = 1 >>> E.b; >rg12 : number >1 >>> E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -703,6 +717,7 @@ var rh9 = E.a & 1; >E.a : E >E : typeof E >a : E +>1 : number var rh10 = a & E.b; >rh10 : number @@ -723,6 +738,7 @@ var rh11 = b & E.b; var rh12 = 1 & E.b; >rh12 : number >1 & E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -790,6 +806,7 @@ var ri9 = E.a ^ 1; >E.a : E >E : typeof E >a : E +>1 : number var ri10 = a ^ E.b; >ri10 : number @@ -810,6 +827,7 @@ var ri11 = b ^ E.b; var ri12 = 1 ^ E.b; >ri12 : number >1 ^ E.b : number +>1 : number >E.b : E >E : typeof E >b : E @@ -877,6 +895,7 @@ var rj9 = E.a | 1; >E.a : E >E : typeof E >a : E +>1 : number var rj10 = a | E.b; >rj10 : number @@ -897,6 +916,7 @@ var rj11 = b | E.b; var rj12 = 1 | E.b; >rj12 : number >1 | E.b : number +>1 : number >E.b : E >E : typeof E >b : E diff --git a/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types b/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types index 711ccd0c66c..521fb4d7313 100644 --- a/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types +++ b/tests/baselines/reference/arithmeticOperatorWithNullValueAndValidOperands.types @@ -22,20 +22,25 @@ var b: number; var ra1 = null * a; >ra1 : number >null * a : number +>null : null >a : any var ra2 = null * b; >ra2 : number >null * b : number +>null : null >b : number var ra3 = null * 1; >ra3 : number >null * 1 : number +>null : null +>1 : number var ra4 = null * E.a; >ra4 : number >null * E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -44,15 +49,19 @@ var ra5 = a * null; >ra5 : number >a * null : number >a : any +>null : null var ra6 = b * null; >ra6 : number >b * null : number >b : number +>null : null var ra7 = 0 * null; >ra7 : number >0 * null : number +>0 : number +>null : null var ra8 = E.b * null; >ra8 : number @@ -60,25 +69,31 @@ var ra8 = E.b * null; >E.b : E >E : typeof E >b : E +>null : null // operator / var rb1 = null / a; >rb1 : number >null / a : number +>null : null >a : any var rb2 = null / b; >rb2 : number >null / b : number +>null : null >b : number var rb3 = null / 1; >rb3 : number >null / 1 : number +>null : null +>1 : number var rb4 = null / E.a; >rb4 : number >null / E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -87,15 +102,19 @@ var rb5 = a / null; >rb5 : number >a / null : number >a : any +>null : null var rb6 = b / null; >rb6 : number >b / null : number >b : number +>null : null var rb7 = 0 / null; >rb7 : number >0 / null : number +>0 : number +>null : null var rb8 = E.b / null; >rb8 : number @@ -103,25 +122,31 @@ var rb8 = E.b / null; >E.b : E >E : typeof E >b : E +>null : null // operator % var rc1 = null % a; >rc1 : number >null % a : number +>null : null >a : any var rc2 = null % b; >rc2 : number >null % b : number +>null : null >b : number var rc3 = null % 1; >rc3 : number >null % 1 : number +>null : null +>1 : number var rc4 = null % E.a; >rc4 : number >null % E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -130,15 +155,19 @@ var rc5 = a % null; >rc5 : number >a % null : number >a : any +>null : null var rc6 = b % null; >rc6 : number >b % null : number >b : number +>null : null var rc7 = 0 % null; >rc7 : number >0 % null : number +>0 : number +>null : null var rc8 = E.b % null; >rc8 : number @@ -146,25 +175,31 @@ var rc8 = E.b % null; >E.b : E >E : typeof E >b : E +>null : null // operator - var rd1 = null - a; >rd1 : number >null - a : number +>null : null >a : any var rd2 = null - b; >rd2 : number >null - b : number +>null : null >b : number var rd3 = null - 1; >rd3 : number >null - 1 : number +>null : null +>1 : number var rd4 = null - E.a; >rd4 : number >null - E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -173,15 +208,19 @@ var rd5 = a - null; >rd5 : number >a - null : number >a : any +>null : null var rd6 = b - null; >rd6 : number >b - null : number >b : number +>null : null var rd7 = 0 - null; >rd7 : number >0 - null : number +>0 : number +>null : null var rd8 = E.b - null; >rd8 : number @@ -189,25 +228,31 @@ var rd8 = E.b - null; >E.b : E >E : typeof E >b : E +>null : null // operator << var re1 = null << a; >re1 : number >null << a : number +>null : null >a : any var re2 = null << b; >re2 : number >null << b : number +>null : null >b : number var re3 = null << 1; >re3 : number >null << 1 : number +>null : null +>1 : number var re4 = null << E.a; >re4 : number >null << E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -216,15 +261,19 @@ var re5 = a << null; >re5 : number >a << null : number >a : any +>null : null var re6 = b << null; >re6 : number >b << null : number >b : number +>null : null var re7 = 0 << null; >re7 : number >0 << null : number +>0 : number +>null : null var re8 = E.b << null; >re8 : number @@ -232,25 +281,31 @@ var re8 = E.b << null; >E.b : E >E : typeof E >b : E +>null : null // operator >> var rf1 = null >> a; >rf1 : number >null >> a : number +>null : null >a : any var rf2 = null >> b; >rf2 : number >null >> b : number +>null : null >b : number var rf3 = null >> 1; >rf3 : number >null >> 1 : number +>null : null +>1 : number var rf4 = null >> E.a; >rf4 : number >null >> E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -259,15 +314,19 @@ var rf5 = a >> null; >rf5 : number >a >> null : number >a : any +>null : null var rf6 = b >> null; >rf6 : number >b >> null : number >b : number +>null : null var rf7 = 0 >> null; >rf7 : number >0 >> null : number +>0 : number +>null : null var rf8 = E.b >> null; >rf8 : number @@ -275,25 +334,31 @@ var rf8 = E.b >> null; >E.b : E >E : typeof E >b : E +>null : null // operator >>> var rg1 = null >>> a; >rg1 : number >null >>> a : number +>null : null >a : any var rg2 = null >>> b; >rg2 : number >null >>> b : number +>null : null >b : number var rg3 = null >>> 1; >rg3 : number >null >>> 1 : number +>null : null +>1 : number var rg4 = null >>> E.a; >rg4 : number >null >>> E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -302,15 +367,19 @@ var rg5 = a >>> null; >rg5 : number >a >>> null : number >a : any +>null : null var rg6 = b >>> null; >rg6 : number >b >>> null : number >b : number +>null : null var rg7 = 0 >>> null; >rg7 : number >0 >>> null : number +>0 : number +>null : null var rg8 = E.b >>> null; >rg8 : number @@ -318,25 +387,31 @@ var rg8 = E.b >>> null; >E.b : E >E : typeof E >b : E +>null : null // operator & var rh1 = null & a; >rh1 : number >null & a : number +>null : null >a : any var rh2 = null & b; >rh2 : number >null & b : number +>null : null >b : number var rh3 = null & 1; >rh3 : number >null & 1 : number +>null : null +>1 : number var rh4 = null & E.a; >rh4 : number >null & E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -345,15 +420,19 @@ var rh5 = a & null; >rh5 : number >a & null : number >a : any +>null : null var rh6 = b & null; >rh6 : number >b & null : number >b : number +>null : null var rh7 = 0 & null; >rh7 : number >0 & null : number +>0 : number +>null : null var rh8 = E.b & null; >rh8 : number @@ -361,25 +440,31 @@ var rh8 = E.b & null; >E.b : E >E : typeof E >b : E +>null : null // operator ^ var ri1 = null ^ a; >ri1 : number >null ^ a : number +>null : null >a : any var ri2 = null ^ b; >ri2 : number >null ^ b : number +>null : null >b : number var ri3 = null ^ 1; >ri3 : number >null ^ 1 : number +>null : null +>1 : number var ri4 = null ^ E.a; >ri4 : number >null ^ E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -388,15 +473,19 @@ var ri5 = a ^ null; >ri5 : number >a ^ null : number >a : any +>null : null var ri6 = b ^ null; >ri6 : number >b ^ null : number >b : number +>null : null var ri7 = 0 ^ null; >ri7 : number >0 ^ null : number +>0 : number +>null : null var ri8 = E.b ^ null; >ri8 : number @@ -404,25 +493,31 @@ var ri8 = E.b ^ null; >E.b : E >E : typeof E >b : E +>null : null // operator | var rj1 = null | a; >rj1 : number >null | a : number +>null : null >a : any var rj2 = null | b; >rj2 : number >null | b : number +>null : null >b : number var rj3 = null | 1; >rj3 : number >null | 1 : number +>null : null +>1 : number var rj4 = null | E.a; >rj4 : number >null | E.a : number +>null : null >E.a : E >E : typeof E >a : E @@ -431,15 +526,19 @@ var rj5 = a | null; >rj5 : number >a | null : number >a : any +>null : null var rj6 = b | null; >rj6 : number >b | null : number >b : number +>null : null var rj7 = 0 | null; >rj7 : number >0 | null : number +>0 : number +>null : null var rj8 = E.b | null; >rj8 : number @@ -447,4 +546,5 @@ var rj8 = E.b | null; >E.b : E >E : typeof E >b : E +>null : null diff --git a/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types b/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types index 7db074df8bb..77dbe1c1441 100644 --- a/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types +++ b/tests/baselines/reference/arithmeticOperatorWithUndefinedValueAndValidOperands.types @@ -35,6 +35,7 @@ var ra3 = undefined * 1; >ra3 : number >undefined * 1 : number >undefined : undefined +>1 : number var ra4 = undefined * E.a; >ra4 : number @@ -59,6 +60,7 @@ var ra6 = b * undefined; var ra7 = 0 * undefined; >ra7 : number >0 * undefined : number +>0 : number >undefined : undefined var ra8 = E.b * undefined; @@ -86,6 +88,7 @@ var rb3 = undefined / 1; >rb3 : number >undefined / 1 : number >undefined : undefined +>1 : number var rb4 = undefined / E.a; >rb4 : number @@ -110,6 +113,7 @@ var rb6 = b / undefined; var rb7 = 0 / undefined; >rb7 : number >0 / undefined : number +>0 : number >undefined : undefined var rb8 = E.b / undefined; @@ -137,6 +141,7 @@ var rc3 = undefined % 1; >rc3 : number >undefined % 1 : number >undefined : undefined +>1 : number var rc4 = undefined % E.a; >rc4 : number @@ -161,6 +166,7 @@ var rc6 = b % undefined; var rc7 = 0 % undefined; >rc7 : number >0 % undefined : number +>0 : number >undefined : undefined var rc8 = E.b % undefined; @@ -188,6 +194,7 @@ var rd3 = undefined - 1; >rd3 : number >undefined - 1 : number >undefined : undefined +>1 : number var rd4 = undefined - E.a; >rd4 : number @@ -212,6 +219,7 @@ var rd6 = b - undefined; var rd7 = 0 - undefined; >rd7 : number >0 - undefined : number +>0 : number >undefined : undefined var rd8 = E.b - undefined; @@ -239,6 +247,7 @@ var re3 = undefined << 1; >re3 : number >undefined << 1 : number >undefined : undefined +>1 : number var re4 = undefined << E.a; >re4 : number @@ -263,6 +272,7 @@ var re6 = b << undefined; var re7 = 0 << undefined; >re7 : number >0 << undefined : number +>0 : number >undefined : undefined var re8 = E.b << undefined; @@ -290,6 +300,7 @@ var rf3 = undefined >> 1; >rf3 : number >undefined >> 1 : number >undefined : undefined +>1 : number var rf4 = undefined >> E.a; >rf4 : number @@ -314,6 +325,7 @@ var rf6 = b >> undefined; var rf7 = 0 >> undefined; >rf7 : number >0 >> undefined : number +>0 : number >undefined : undefined var rf8 = E.b >> undefined; @@ -341,6 +353,7 @@ var rg3 = undefined >>> 1; >rg3 : number >undefined >>> 1 : number >undefined : undefined +>1 : number var rg4 = undefined >>> E.a; >rg4 : number @@ -365,6 +378,7 @@ var rg6 = b >>> undefined; var rg7 = 0 >>> undefined; >rg7 : number >0 >>> undefined : number +>0 : number >undefined : undefined var rg8 = E.b >>> undefined; @@ -392,6 +406,7 @@ var rh3 = undefined & 1; >rh3 : number >undefined & 1 : number >undefined : undefined +>1 : number var rh4 = undefined & E.a; >rh4 : number @@ -416,6 +431,7 @@ var rh6 = b & undefined; var rh7 = 0 & undefined; >rh7 : number >0 & undefined : number +>0 : number >undefined : undefined var rh8 = E.b & undefined; @@ -443,6 +459,7 @@ var ri3 = undefined ^ 1; >ri3 : number >undefined ^ 1 : number >undefined : undefined +>1 : number var ri4 = undefined ^ E.a; >ri4 : number @@ -467,6 +484,7 @@ var ri6 = b ^ undefined; var ri7 = 0 ^ undefined; >ri7 : number >0 ^ undefined : number +>0 : number >undefined : undefined var ri8 = E.b ^ undefined; @@ -494,6 +512,7 @@ var rj3 = undefined | 1; >rj3 : number >undefined | 1 : number >undefined : undefined +>1 : number var rj4 = undefined | E.a; >rj4 : number @@ -518,6 +537,7 @@ var rj6 = b | undefined; var rj7 = 0 | undefined; >rj7 : number >0 | undefined : number +>0 : number >undefined : undefined var rj8 = E.b | undefined; diff --git a/tests/baselines/reference/arrayAssignmentTest6.types b/tests/baselines/reference/arrayAssignmentTest6.types index 0c932cb7556..411144d4426 100644 --- a/tests/baselines/reference/arrayAssignmentTest6.types +++ b/tests/baselines/reference/arrayAssignmentTest6.types @@ -46,6 +46,7 @@ module Test { >ILineTokens : ILineTokens return null; +>null : null } } } diff --git a/tests/baselines/reference/arrayAugment.types b/tests/baselines/reference/arrayAugment.types index b338d7f5c5f..042b7265ec8 100644 --- a/tests/baselines/reference/arrayAugment.types +++ b/tests/baselines/reference/arrayAugment.types @@ -12,6 +12,7 @@ interface Array { var x = ['']; >x : string[] >[''] : string[] +>'' : string var y = x.split(4); >y : string[][] @@ -19,6 +20,7 @@ var y = x.split(4); >x.split : (parts: number) => string[][] >x : string[] >split : (parts: number) => string[][] +>4 : number var y: string[][]; // Expect no error here >y : string[][] diff --git a/tests/baselines/reference/arrayBestCommonTypes.types b/tests/baselines/reference/arrayBestCommonTypes.types index 5e34380673d..5650efc9ae7 100644 --- a/tests/baselines/reference/arrayBestCommonTypes.types +++ b/tests/baselines/reference/arrayBestCommonTypes.types @@ -40,6 +40,8 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : any >y : boolean +>false : boolean +>null : null public x() { >x : () => void @@ -53,6 +55,9 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2][0] : number >[4, 2] : number[] +>4 : number +>2 : number +>0 : number (this.voidIfAny([4, 2, undefined][0])); >(this.voidIfAny([4, 2, undefined][0])) : number @@ -63,7 +68,10 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2, undefined][0] : number >[4, 2, undefined] : number[] +>4 : number +>2 : number >undefined : undefined +>0 : number (this.voidIfAny([undefined, 2, 4][0])); >(this.voidIfAny([undefined, 2, 4][0])) : number @@ -75,6 +83,9 @@ module EmptyTypes { >[undefined, 2, 4][0] : number >[undefined, 2, 4] : number[] >undefined : undefined +>2 : number +>4 : number +>0 : number (this.voidIfAny([null, 2, 4][0])); >(this.voidIfAny([null, 2, 4][0])) : number @@ -85,6 +96,10 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, 2, 4][0] : number >[null, 2, 4] : number[] +>null : null +>2 : number +>4 : number +>0 : number (this.voidIfAny([2, 4, null][0])); >(this.voidIfAny([2, 4, null][0])) : number @@ -95,6 +110,10 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[2, 4, null][0] : number >[2, 4, null] : number[] +>2 : number +>4 : number +>null : null +>0 : number (this.voidIfAny([undefined, 4, null][0])); >(this.voidIfAny([undefined, 4, null][0])) : number @@ -106,6 +125,9 @@ module EmptyTypes { >[undefined, 4, null][0] : number >[undefined, 4, null] : number[] >undefined : undefined +>4 : number +>null : null +>0 : number (this.voidIfAny(['', "q"][0])); >(this.voidIfAny(['', "q"][0])) : number @@ -116,6 +138,9 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q"][0] : string >['', "q"] : string[] +>'' : string +>"q" : string +>0 : number (this.voidIfAny(['', "q", undefined][0])); >(this.voidIfAny(['', "q", undefined][0])) : number @@ -126,7 +151,10 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q", undefined][0] : string >['', "q", undefined] : string[] +>'' : string +>"q" : string >undefined : undefined +>0 : number (this.voidIfAny([undefined, "q", ''][0])); >(this.voidIfAny([undefined, "q", ''][0])) : number @@ -138,6 +166,9 @@ module EmptyTypes { >[undefined, "q", ''][0] : string >[undefined, "q", ''] : string[] >undefined : undefined +>"q" : string +>'' : string +>0 : number (this.voidIfAny([null, "q", ''][0])); >(this.voidIfAny([null, "q", ''][0])) : number @@ -148,6 +179,10 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, "q", ''][0] : string >[null, "q", ''] : string[] +>null : null +>"q" : string +>'' : string +>0 : number (this.voidIfAny(["q", '', null][0])); >(this.voidIfAny(["q", '', null][0])) : number @@ -158,6 +193,10 @@ module EmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >["q", '', null][0] : string >["q", '', null] : string[] +>"q" : string +>'' : string +>null : null +>0 : number (this.voidIfAny([undefined, '', null][0])); >(this.voidIfAny([undefined, '', null][0])) : number @@ -169,6 +208,9 @@ module EmptyTypes { >[undefined, '', null][0] : string >[undefined, '', null] : string[] >undefined : undefined +>'' : string +>null : null +>0 : number (this.voidIfAny([[3, 4], [null]][0][0])); >(this.voidIfAny([[3, 4], [null]][0][0])) : number @@ -181,7 +223,12 @@ module EmptyTypes { >[[3, 4], [null]][0] : number[] >[[3, 4], [null]] : number[][] >[3, 4] : number[] +>3 : number +>4 : number >[null] : null[] +>null : null +>0 : number +>0 : number var t1: { x: number; y: base; }[] = [{ x: 7, y: new derived() }, { x: 5, y: new base() }]; @@ -192,11 +239,13 @@ module EmptyTypes { >[{ x: 7, y: new derived() }, { x: 5, y: new base() }] : { x: number; y: derived; }[] >{ x: 7, y: new derived() } : { x: number; y: derived; } >x : number +>7 : number >y : derived >new derived() : derived >derived : typeof derived >{ x: 5, y: new base() } : { x: number; y: base; } >x : number +>5 : number >y : base >new base() : base >base : typeof base @@ -209,11 +258,13 @@ module EmptyTypes { >[{ x: true, y: new derived() }, { x: false, y: new base() }] : { x: boolean; y: derived; }[] >{ x: true, y: new derived() } : { x: boolean; y: derived; } >x : boolean +>true : boolean >y : derived >new derived() : derived >derived : typeof derived >{ x: false, y: new base() } : { x: boolean; y: base; } >x : boolean +>false : boolean >y : base >new base() : base >base : typeof base @@ -232,12 +283,14 @@ module EmptyTypes { >base : typeof base >{ x: '', y: new derived() } : { x: string; y: derived; } >x : string +>'' : string >y : derived >new derived() : derived >derived : typeof derived var anyObj: any = null; >anyObj : any +>null : null // Order matters here so test all the variants var a1 = [{ x: 0, y: 'a' }, { x: 'a', y: 'a' }, { x: anyObj, y: 'a' }]; @@ -245,14 +298,19 @@ module EmptyTypes { >[{ x: 0, y: 'a' }, { x: 'a', y: 'a' }, { x: anyObj, y: 'a' }] : { x: any; y: string; }[] >{ x: 0, y: 'a' } : { x: number; y: string; } >x : number +>0 : number >y : string +>'a' : string >{ x: 'a', y: 'a' } : { x: string; y: string; } >x : string +>'a' : string >y : string +>'a' : string >{ x: anyObj, y: 'a' } : { x: any; y: string; } >x : any >anyObj : any >y : string +>'a' : string var a2 = [{ x: anyObj, y: 'a' }, { x: 0, y: 'a' }, { x: 'a', y: 'a' }]; >a2 : { x: any; y: string; }[] @@ -261,30 +319,41 @@ module EmptyTypes { >x : any >anyObj : any >y : string +>'a' : string >{ x: 0, y: 'a' } : { x: number; y: string; } >x : number +>0 : number >y : string +>'a' : string >{ x: 'a', y: 'a' } : { x: string; y: string; } >x : string +>'a' : string >y : string +>'a' : string var a3 = [{ x: 0, y: 'a' }, { x: anyObj, y: 'a' }, { x: 'a', y: 'a' }]; >a3 : { x: any; y: string; }[] >[{ x: 0, y: 'a' }, { x: anyObj, y: 'a' }, { x: 'a', y: 'a' }] : { x: any; y: string; }[] >{ x: 0, y: 'a' } : { x: number; y: string; } >x : number +>0 : number >y : string +>'a' : string >{ x: anyObj, y: 'a' } : { x: any; y: string; } >x : any >anyObj : any >y : string +>'a' : string >{ x: 'a', y: 'a' } : { x: string; y: string; } >x : string +>'a' : string >y : string +>'a' : string var ifaceObj: iface = null; >ifaceObj : iface >iface : iface +>null : null var baseObj = new base(); >baseObj : base @@ -374,6 +443,8 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >x : any >y : boolean +>false : boolean +>null : null public x() { >x : () => void @@ -387,6 +458,9 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2][0] : number >[4, 2] : number[] +>4 : number +>2 : number +>0 : number (this.voidIfAny([4, 2, undefined][0])); >(this.voidIfAny([4, 2, undefined][0])) : number @@ -397,7 +471,10 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[4, 2, undefined][0] : number >[4, 2, undefined] : number[] +>4 : number +>2 : number >undefined : undefined +>0 : number (this.voidIfAny([undefined, 2, 4][0])); >(this.voidIfAny([undefined, 2, 4][0])) : number @@ -409,6 +486,9 @@ module NonEmptyTypes { >[undefined, 2, 4][0] : number >[undefined, 2, 4] : number[] >undefined : undefined +>2 : number +>4 : number +>0 : number (this.voidIfAny([null, 2, 4][0])); >(this.voidIfAny([null, 2, 4][0])) : number @@ -419,6 +499,10 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, 2, 4][0] : number >[null, 2, 4] : number[] +>null : null +>2 : number +>4 : number +>0 : number (this.voidIfAny([2, 4, null][0])); >(this.voidIfAny([2, 4, null][0])) : number @@ -429,6 +513,10 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[2, 4, null][0] : number >[2, 4, null] : number[] +>2 : number +>4 : number +>null : null +>0 : number (this.voidIfAny([undefined, 4, null][0])); >(this.voidIfAny([undefined, 4, null][0])) : number @@ -440,6 +528,9 @@ module NonEmptyTypes { >[undefined, 4, null][0] : number >[undefined, 4, null] : number[] >undefined : undefined +>4 : number +>null : null +>0 : number (this.voidIfAny(['', "q"][0])); >(this.voidIfAny(['', "q"][0])) : number @@ -450,6 +541,9 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q"][0] : string >['', "q"] : string[] +>'' : string +>"q" : string +>0 : number (this.voidIfAny(['', "q", undefined][0])); >(this.voidIfAny(['', "q", undefined][0])) : number @@ -460,7 +554,10 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >['', "q", undefined][0] : string >['', "q", undefined] : string[] +>'' : string +>"q" : string >undefined : undefined +>0 : number (this.voidIfAny([undefined, "q", ''][0])); >(this.voidIfAny([undefined, "q", ''][0])) : number @@ -472,6 +569,9 @@ module NonEmptyTypes { >[undefined, "q", ''][0] : string >[undefined, "q", ''] : string[] >undefined : undefined +>"q" : string +>'' : string +>0 : number (this.voidIfAny([null, "q", ''][0])); >(this.voidIfAny([null, "q", ''][0])) : number @@ -482,6 +582,10 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >[null, "q", ''][0] : string >[null, "q", ''] : string[] +>null : null +>"q" : string +>'' : string +>0 : number (this.voidIfAny(["q", '', null][0])); >(this.voidIfAny(["q", '', null][0])) : number @@ -492,6 +596,10 @@ module NonEmptyTypes { >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } >["q", '', null][0] : string >["q", '', null] : string[] +>"q" : string +>'' : string +>null : null +>0 : number (this.voidIfAny([undefined, '', null][0])); >(this.voidIfAny([undefined, '', null][0])) : number @@ -503,6 +611,9 @@ module NonEmptyTypes { >[undefined, '', null][0] : string >[undefined, '', null] : string[] >undefined : undefined +>'' : string +>null : null +>0 : number (this.voidIfAny([[3, 4], [null]][0][0])); >(this.voidIfAny([[3, 4], [null]][0][0])) : number @@ -515,7 +626,12 @@ module NonEmptyTypes { >[[3, 4], [null]][0] : number[] >[[3, 4], [null]] : number[][] >[3, 4] : number[] +>3 : number +>4 : number >[null] : null[] +>null : null +>0 : number +>0 : number var t1: { x: number; y: base; }[] = [{ x: 7, y: new derived() }, { x: 5, y: new base() }]; @@ -526,11 +642,13 @@ module NonEmptyTypes { >[{ x: 7, y: new derived() }, { x: 5, y: new base() }] : { x: number; y: base; }[] >{ x: 7, y: new derived() } : { x: number; y: derived; } >x : number +>7 : number >y : derived >new derived() : derived >derived : typeof derived >{ x: 5, y: new base() } : { x: number; y: base; } >x : number +>5 : number >y : base >new base() : base >base : typeof base @@ -543,11 +661,13 @@ module NonEmptyTypes { >[{ x: true, y: new derived() }, { x: false, y: new base() }] : { x: boolean; y: base; }[] >{ x: true, y: new derived() } : { x: boolean; y: derived; } >x : boolean +>true : boolean >y : derived >new derived() : derived >derived : typeof derived >{ x: false, y: new base() } : { x: boolean; y: base; } >x : boolean +>false : boolean >y : base >new base() : base >base : typeof base @@ -566,12 +686,14 @@ module NonEmptyTypes { >base : typeof base >{ x: '', y: new derived() } : { x: string; y: derived; } >x : string +>'' : string >y : derived >new derived() : derived >derived : typeof derived var anyObj: any = null; >anyObj : any +>null : null // Order matters here so test all the variants var a1 = [{ x: 0, y: 'a' }, { x: 'a', y: 'a' }, { x: anyObj, y: 'a' }]; @@ -579,14 +701,19 @@ module NonEmptyTypes { >[{ x: 0, y: 'a' }, { x: 'a', y: 'a' }, { x: anyObj, y: 'a' }] : { x: any; y: string; }[] >{ x: 0, y: 'a' } : { x: number; y: string; } >x : number +>0 : number >y : string +>'a' : string >{ x: 'a', y: 'a' } : { x: string; y: string; } >x : string +>'a' : string >y : string +>'a' : string >{ x: anyObj, y: 'a' } : { x: any; y: string; } >x : any >anyObj : any >y : string +>'a' : string var a2 = [{ x: anyObj, y: 'a' }, { x: 0, y: 'a' }, { x: 'a', y: 'a' }]; >a2 : { x: any; y: string; }[] @@ -595,30 +722,41 @@ module NonEmptyTypes { >x : any >anyObj : any >y : string +>'a' : string >{ x: 0, y: 'a' } : { x: number; y: string; } >x : number +>0 : number >y : string +>'a' : string >{ x: 'a', y: 'a' } : { x: string; y: string; } >x : string +>'a' : string >y : string +>'a' : string var a3 = [{ x: 0, y: 'a' }, { x: anyObj, y: 'a' }, { x: 'a', y: 'a' }]; >a3 : { x: any; y: string; }[] >[{ x: 0, y: 'a' }, { x: anyObj, y: 'a' }, { x: 'a', y: 'a' }] : { x: any; y: string; }[] >{ x: 0, y: 'a' } : { x: number; y: string; } >x : number +>0 : number >y : string +>'a' : string >{ x: anyObj, y: 'a' } : { x: any; y: string; } >x : any >anyObj : any >y : string +>'a' : string >{ x: 'a', y: 'a' } : { x: string; y: string; } >x : string +>'a' : string >y : string +>'a' : string var ifaceObj: iface = null; >ifaceObj : iface >iface : iface +>null : null var baseObj = new base(); >baseObj : base diff --git a/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types b/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types index ba1ac955b85..e83aa6a17de 100644 --- a/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types +++ b/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types @@ -5,7 +5,9 @@ var results: string[]; { let [, b, , a] = results; +> : undefined >b : string +> : undefined >a : string >results : string[] @@ -24,9 +26,16 @@ var results: string[]; function f([, a, , b, , , , s, , , ] = results) { >f : ([, a, , b, , , , s, , , ]?: string[]) => void +> : undefined >a : string +> : undefined >b : string +> : undefined +> : undefined +> : undefined >s : string +> : undefined +> : undefined >results : string[] a = s[1]; @@ -34,10 +43,12 @@ function f([, a, , b, , , , s, , , ] = results) { >a : string >s[1] : string >s : string +>1 : number b = s[2]; >b = s[2] : string >b : string >s[2] : string >s : string +>2 : number } diff --git a/tests/baselines/reference/arrayConcat2.types b/tests/baselines/reference/arrayConcat2.types index aa0e0478033..a49046c871f 100644 --- a/tests/baselines/reference/arrayConcat2.types +++ b/tests/baselines/reference/arrayConcat2.types @@ -8,12 +8,15 @@ a.concat("hello", 'world'); >a.concat : { (...items: U[]): string[]; (...items: string[]): string[]; } >a : string[] >concat : { (...items: U[]): string[]; (...items: string[]): string[]; } +>"hello" : string +>'world' : string a.concat('Hello'); >a.concat('Hello') : string[] >a.concat : { (...items: U[]): string[]; (...items: string[]): string[]; } >a : string[] >concat : { (...items: U[]): string[]; (...items: string[]): string[]; } +>'Hello' : string var b = new Array(); >b : string[] @@ -25,4 +28,5 @@ b.concat('hello'); >b.concat : { (...items: U[]): string[]; (...items: string[]): string[]; } >b : string[] >concat : { (...items: U[]): string[]; (...items: string[]): string[]; } +>'hello' : string diff --git a/tests/baselines/reference/arrayConcatMap.types b/tests/baselines/reference/arrayConcatMap.types index 92da3edf93f..11342ee848a 100644 --- a/tests/baselines/reference/arrayConcatMap.types +++ b/tests/baselines/reference/arrayConcatMap.types @@ -10,9 +10,11 @@ var x = [].concat([{ a: 1 }], [{ a: 2 }]) >[{ a: 1 }] : { a: number; }[] >{ a: 1 } : { a: number; } >a : number +>1 : number >[{ a: 2 }] : { a: number; }[] >{ a: 2 } : { a: number; } >a : number +>2 : number .map(b => b.a); >map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] diff --git a/tests/baselines/reference/arrayConstructors1.types b/tests/baselines/reference/arrayConstructors1.types index 6dbdc0cd8f2..89807cd0348 100644 --- a/tests/baselines/reference/arrayConstructors1.types +++ b/tests/baselines/reference/arrayConstructors1.types @@ -7,18 +7,23 @@ x = new Array(1); >x : string[] >new Array(1) : any[] >Array : ArrayConstructor +>1 : number x = new Array('hi', 'bye'); >x = new Array('hi', 'bye') : string[] >x : string[] >new Array('hi', 'bye') : string[] >Array : ArrayConstructor +>'hi' : string +>'bye' : string x = new Array('hi', 'bye'); >x = new Array('hi', 'bye') : string[] >x : string[] >new Array('hi', 'bye') : string[] >Array : ArrayConstructor +>'hi' : string +>'bye' : string var y: number[]; >y : number[] @@ -28,16 +33,21 @@ y = new Array(1); >y : number[] >new Array(1) : any[] >Array : ArrayConstructor +>1 : number y = new Array(1,2); >y = new Array(1,2) : number[] >y : number[] >new Array(1,2) : number[] >Array : ArrayConstructor +>1 : number +>2 : number y = new Array(1, 2); >y = new Array(1, 2) : number[] >y : number[] >new Array(1, 2) : number[] >Array : ArrayConstructor +>1 : number +>2 : number diff --git a/tests/baselines/reference/arrayLiteral.types b/tests/baselines/reference/arrayLiteral.types index a5ab7368937..a7b915de79d 100644 --- a/tests/baselines/reference/arrayLiteral.types +++ b/tests/baselines/reference/arrayLiteral.types @@ -9,14 +9,18 @@ var x = new Array(1); >x : any[] >new Array(1) : any[] >Array : ArrayConstructor +>1 : number var y = [1]; >y : number[] >[1] : number[] +>1 : number var y = [1, 2]; >y : number[] >[1, 2] : number[] +>1 : number +>2 : number var y = new Array(); >y : number[] @@ -31,14 +35,18 @@ var x2: number[] = new Array(1); >x2 : number[] >new Array(1) : any[] >Array : ArrayConstructor +>1 : number var y2: number[] = [1]; >y2 : number[] >[1] : number[] +>1 : number var y2: number[] = [1, 2]; >y2 : number[] >[1, 2] : number[] +>1 : number +>2 : number var y2: number[] = new Array(); >y2 : number[] diff --git a/tests/baselines/reference/arrayLiteral1.types b/tests/baselines/reference/arrayLiteral1.types index 79d00f5f46f..eb83fa87035 100644 --- a/tests/baselines/reference/arrayLiteral1.types +++ b/tests/baselines/reference/arrayLiteral1.types @@ -2,4 +2,6 @@ var v30 = [1, 2]; >v30 : number[] >[1, 2] : number[] +>1 : number +>2 : number diff --git a/tests/baselines/reference/arrayLiteral2.types b/tests/baselines/reference/arrayLiteral2.types index cd370c0f1a9..1c3c81117d9 100644 --- a/tests/baselines/reference/arrayLiteral2.types +++ b/tests/baselines/reference/arrayLiteral2.types @@ -2,5 +2,7 @@ var v30 = [1, 2], v31; >v30 : number[] >[1, 2] : number[] +>1 : number +>2 : number >v31 : any diff --git a/tests/baselines/reference/arrayLiteralContextualType.types b/tests/baselines/reference/arrayLiteralContextualType.types index b6d8377d012..0513908929e 100644 --- a/tests/baselines/reference/arrayLiteralContextualType.types +++ b/tests/baselines/reference/arrayLiteralContextualType.types @@ -11,9 +11,11 @@ class Giraffe { name = "Giraffe"; >name : string +>"Giraffe" : string neckLength = "3m"; >neckLength : string +>"3m" : string } class Elephant { @@ -21,9 +23,11 @@ class Elephant { name = "Elephant"; >name : string +>"Elephant" : string trunkDiameter = "20cm"; >trunkDiameter : string +>"20cm" : string } function foo(animals: IAnimal[]) { } diff --git a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types index 4743504c33e..fcbaa22bc6a 100644 --- a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types +++ b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types @@ -8,4 +8,6 @@ panic([], 'one', 'two'); >panic([], 'one', 'two') : void >panic : (val: string[], ...opt: string[]) => void >[] : undefined[] +>'one' : string +>'two' : string diff --git a/tests/baselines/reference/arrayLiteralSpread.types b/tests/baselines/reference/arrayLiteralSpread.types index 73d4f6013ed..7b9a34c0abe 100644 --- a/tests/baselines/reference/arrayLiteralSpread.types +++ b/tests/baselines/reference/arrayLiteralSpread.types @@ -5,6 +5,9 @@ function f0() { var a = [1, 2, 3]; >a : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number var a1 = [...a]; >a1 : number[] @@ -15,12 +18,15 @@ function f0() { var a2 = [1, ...a]; >a2 : number[] >[1, ...a] : number[] +>1 : number >...a : number >a : number[] var a3 = [1, 2, ...a]; >a3 : number[] >[1, 2, ...a] : number[] +>1 : number +>2 : number >...a : number >a : number[] @@ -29,24 +35,33 @@ function f0() { >[...a, 1] : number[] >...a : number >a : number[] +>1 : number var a5 = [...a, 1, 2]; >a5 : number[] >[...a, 1, 2] : number[] >...a : number >a : number[] +>1 : number +>2 : number var a6 = [1, 2, ...a, 1, 2]; >a6 : number[] >[1, 2, ...a, 1, 2] : number[] +>1 : number +>2 : number >...a : number >a : number[] +>1 : number +>2 : number var a7 = [1, ...a, 2, ...a]; >a7 : number[] >[1, ...a, 2, ...a] : number[] +>1 : number >...a : number >a : number[] +>2 : number >...a : number >a : number[] @@ -67,12 +82,17 @@ function f1() { var a = [1, 2, 3]; >a : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number var b = ["hello", ...a, true]; >b : (string | number | boolean)[] >["hello", ...a, true] : (string | number | boolean)[] +>"hello" : string >...a : number >a : number[] +>true : boolean var b: (string | number | boolean)[]; >b : (string | number | boolean)[] @@ -108,5 +128,6 @@ function f2() { >[...[5]] : number[] >...[5] : number >[5] : number[] +>5 : number } diff --git a/tests/baselines/reference/arrayLiteralTypeInference.types b/tests/baselines/reference/arrayLiteralTypeInference.types index adcc28c7440..660592fceb8 100644 --- a/tests/baselines/reference/arrayLiteralTypeInference.types +++ b/tests/baselines/reference/arrayLiteralTypeInference.types @@ -30,12 +30,16 @@ var x1: Action[] = [ { id: 2, trueness: false }, >{ id: 2, trueness: false } : { id: number; trueness: boolean; } >id : number +>2 : number >trueness : boolean +>false : boolean { id: 3, name: "three" } >{ id: 3, name: "three" } : { id: number; name: string; } >id : number +>3 : number >name : string +>"three" : string ] @@ -83,12 +87,16 @@ var z1: { id: number }[] = { id: 2, trueness: false }, >{ id: 2, trueness: false } : { id: number; trueness: boolean; } >id : number +>2 : number >trueness : boolean +>false : boolean { id: 3, name: "three" } >{ id: 3, name: "three" } : { id: number; name: string; } >id : number +>3 : number >name : string +>"three" : string ] diff --git a/tests/baselines/reference/arrayLiteralWidened.types b/tests/baselines/reference/arrayLiteralWidened.types index 6e89bc50892..9599db2dff5 100644 --- a/tests/baselines/reference/arrayLiteralWidened.types +++ b/tests/baselines/reference/arrayLiteralWidened.types @@ -8,6 +8,8 @@ var a = []; // any[] var a = [null, null]; >a : any[] >[null, null] : null[] +>null : null +>null : null var a = [undefined, undefined]; >a : any[] @@ -20,6 +22,8 @@ var b = [[], [null, null]]; // any[][] >[[], [null, null]] : null[][] >[] : undefined[] >[null, null] : null[] +>null : null +>null : null var b = [[], []]; >b : any[][] @@ -45,6 +49,7 @@ var c = [[[null]],[undefined]] >[[[null]],[undefined]] : null[][][] >[[null]] : null[][] >[null] : null[] +>null : null >[undefined] : undefined[] >undefined : undefined diff --git a/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types b/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types index bc21ec39073..aad515b62ee 100644 --- a/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types +++ b/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types @@ -41,17 +41,21 @@ var ds = [(x: Object) => 1, (x: string) => 2]; // { (x:Object) => number }[] >(x: Object) => 1 : (x: Object) => number >x : Object >Object : Object +>1 : number >(x: string) => 2 : (x: string) => number >x : string +>2 : number var es = [(x: string) => 2, (x: Object) => 1]; // { (x:string) => number }[] >es : ((x: string) => number)[] >[(x: string) => 2, (x: Object) => 1] : ((x: string) => number)[] >(x: string) => 2 : (x: string) => number >x : string +>2 : number >(x: Object) => 1 : (x: Object) => number >x : Object >Object : Object +>1 : number var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2]; // (a: { x: number; y?: number }) => number[] >fs : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] @@ -60,10 +64,12 @@ var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => >a : { x: number; y?: number; } >x : number >y : number +>1 : number >(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number >b : { x: number; z?: number; } >x : number >z : number +>2 : number var gs = [(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1]; // (b: { x: number; z?: number }) => number[] >gs : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] @@ -72,8 +78,10 @@ var gs = [(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => >b : { x: number; z?: number; } >x : number >z : number +>2 : number >(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number >a : { x: number; y?: number; } >x : number >y : number +>1 : number diff --git a/tests/baselines/reference/arrayLiterals.types b/tests/baselines/reference/arrayLiterals.types index b22543d3edf..841de336965 100644 --- a/tests/baselines/reference/arrayLiterals.types +++ b/tests/baselines/reference/arrayLiterals.types @@ -6,14 +6,19 @@ var arr1= [[], [1], ['']]; >[[], [1], ['']] : (string[] | number[])[] >[] : undefined[] >[1] : number[] +>1 : number >[''] : string[] +>'' : string var arr2 = [[null], [1], ['']]; >arr2 : (string[] | number[])[] >[[null], [1], ['']] : (string[] | number[])[] >[null] : null[] +>null : null >[1] : number[] +>1 : number >[''] : string[] +>'' : string // Array literal with elements of only EveryType E has type E[] @@ -21,19 +26,31 @@ var stringArrArr = [[''], [""]]; >stringArrArr : string[][] >[[''], [""]] : string[][] >[''] : string[] +>'' : string >[""] : string[] +>"" : string var stringArr = ['', ""]; >stringArr : string[] >['', ""] : string[] +>'' : string +>"" : string var numberArr = [0, 0.0, 0x00, 1e1]; >numberArr : number[] >[0, 0.0, 0x00, 1e1] : number[] +>0 : number +>0.0 : number +>0x00 : number +>1e1 : number var boolArr = [false, true, false, true]; >boolArr : boolean[] >[false, true, false, true] : boolean[] +>false : boolean +>true : boolean +>false : boolean +>true : boolean class C { private p; } >C : C @@ -68,24 +85,36 @@ var context1: { [n: number]: { a: string; b: number; }; } = [{ a: '', b: 0, c: ' >[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : ({ a: string; b: number; c: string; } | { a: string; b: number; c: number; })[] >{ a: '', b: 0, c: '' } : { a: string; b: number; c: string; } >a : string +>'' : string >b : number +>0 : number >c : string +>'' : string >{ a: "", b: 3, c: 0 } : { a: string; b: number; c: number; } >a : string +>"" : string >b : number +>3 : number >c : number +>0 : number var context2 = [{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }]; >context2 : ({ a: string; b: number; c: string; } | { a: string; b: number; c: number; })[] >[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : ({ a: string; b: number; c: string; } | { a: string; b: number; c: number; })[] >{ a: '', b: 0, c: '' } : { a: string; b: number; c: string; } >a : string +>'' : string >b : number +>0 : number >c : string +>'' : string >{ a: "", b: 3, c: 0 } : { a: string; b: number; c: number; } >a : string +>"" : string >b : number +>3 : number >c : number +>0 : number // Contextual type C with numeric index signature of type Base makes array literal of Derived have type Base[] class Base { private p; } diff --git a/tests/baselines/reference/arrayLiterals.types.pull b/tests/baselines/reference/arrayLiterals.types.pull index bd06540aca3..e103241dd0b 100644 --- a/tests/baselines/reference/arrayLiterals.types.pull +++ b/tests/baselines/reference/arrayLiterals.types.pull @@ -6,14 +6,19 @@ var arr1= [[], [1], ['']]; >[[], [1], ['']] : (number[] | string[])[] >[] : undefined[] >[1] : number[] +>1 : number >[''] : string[] +>'' : string var arr2 = [[null], [1], ['']]; >arr2 : (number[] | string[])[] >[[null], [1], ['']] : (number[] | string[])[] >[null] : null[] +>null : null >[1] : number[] +>1 : number >[''] : string[] +>'' : string // Array literal with elements of only EveryType E has type E[] @@ -21,19 +26,31 @@ var stringArrArr = [[''], [""]]; >stringArrArr : string[][] >[[''], [""]] : string[][] >[''] : string[] +>'' : string >[""] : string[] +>"" : string var stringArr = ['', ""]; >stringArr : string[] >['', ""] : string[] +>'' : string +>"" : string var numberArr = [0, 0.0, 0x00, 1e1]; >numberArr : number[] >[0, 0.0, 0x00, 1e1] : number[] +>0 : number +>0.0 : number +>0x00 : number +>1e1 : number var boolArr = [false, true, false, true]; >boolArr : boolean[] >[false, true, false, true] : boolean[] +>false : boolean +>true : boolean +>false : boolean +>true : boolean class C { private p; } >C : C @@ -68,24 +85,36 @@ var context1: { [n: number]: { a: string; b: number; }; } = [{ a: '', b: 0, c: ' >[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : ({ a: string; b: number; c: string; } | { a: string; b: number; c: number; })[] >{ a: '', b: 0, c: '' } : { a: string; b: number; c: string; } >a : string +>'' : string >b : number +>0 : number >c : string +>'' : string >{ a: "", b: 3, c: 0 } : { a: string; b: number; c: number; } >a : string +>"" : string >b : number +>3 : number >c : number +>0 : number var context2 = [{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }]; >context2 : ({ a: string; b: number; c: string; } | { a: string; b: number; c: number; })[] >[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : ({ a: string; b: number; c: string; } | { a: string; b: number; c: number; })[] >{ a: '', b: 0, c: '' } : { a: string; b: number; c: string; } >a : string +>'' : string >b : number +>0 : number >c : string +>'' : string >{ a: "", b: 3, c: 0 } : { a: string; b: number; c: number; } >a : string +>"" : string >b : number +>3 : number >c : number +>0 : number // Contextual type C with numeric index signature of type Base makes array literal of Derived have type Base[] class Base { private p; } diff --git a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types index 1496e99adca..9b2abf25c2d 100644 --- a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types +++ b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types @@ -70,6 +70,7 @@ var zs = [list, null]; // List[] >zs : List[] >[list, null] : List[] >list : List +>null : null var myDerivedList: DerivedList; >myDerivedList : DerivedList diff --git a/tests/baselines/reference/arrayOfFunctionTypes3.types b/tests/baselines/reference/arrayOfFunctionTypes3.types index 3ef5334382c..0ed92991ed0 100644 --- a/tests/baselines/reference/arrayOfFunctionTypes3.types +++ b/tests/baselines/reference/arrayOfFunctionTypes3.types @@ -5,6 +5,7 @@ var x = [() => 1, () => { }]; >x : (() => void)[] >[() => 1, () => { }] : (() => void)[] >() => 1 : () => number +>1 : number >() => { } : () => void var r2 = x[0](); @@ -12,6 +13,7 @@ var r2 = x[0](); >x[0]() : void >x[0] : () => void >x : (() => void)[] +>0 : number class C { >C : C @@ -30,6 +32,7 @@ var r3 = new y[0](); >new y[0]() : C >y[0] : typeof C >y : typeof C[] +>0 : number var a: { (x: number): number; (x: string): string; }; >a : { (x: number): number; (x: string): string; } @@ -57,16 +60,19 @@ var r4 = z[0]; >r4 : { (x: number): number; (x: any): any; } >z[0] : { (x: number): number; (x: any): any; } >z : { (x: number): number; (x: any): any; }[] +>0 : number var r5 = r4(''); // any not string >r5 : any >r4('') : any >r4 : { (x: number): number; (x: any): any; } +>'' : string var r5b = r4(1); >r5b : number >r4(1) : number >r4 : { (x: number): number; (x: any): any; } +>1 : number var a2: { (x: T): number; (x: string): string;}; >a2 : { (x: T): number; (x: string): string; } @@ -100,9 +106,11 @@ var r6 = z2[0]; >r6 : { (x: number): number; (x: T): any; } >z2[0] : { (x: number): number; (x: T): any; } >z2 : { (x: number): number; (x: T): any; }[] +>0 : number var r7 = r6(''); // any not string >r7 : any >r6('') : any >r6 : { (x: number): number; (x: T): any; } +>'' : string diff --git a/tests/baselines/reference/arrayconcat.types b/tests/baselines/reference/arrayconcat.types index 37e7308aad9..3560272a363 100644 --- a/tests/baselines/reference/arrayconcat.types +++ b/tests/baselines/reference/arrayconcat.types @@ -74,6 +74,8 @@ class parser { >bName : string return 1; +>1 : number + } else if (aName < bName) { >aName < bName : boolean >aName : string @@ -81,9 +83,11 @@ class parser { return -1; >-1 : number +>1 : number } else { return 0; +>0 : number } }); } diff --git a/tests/baselines/reference/arrowFunctionExpressions.types b/tests/baselines/reference/arrowFunctionExpressions.types index c10ecdad353..bb3d89df05e 100644 --- a/tests/baselines/reference/arrowFunctionExpressions.types +++ b/tests/baselines/reference/arrowFunctionExpressions.types @@ -21,11 +21,13 @@ var b = j => { return 0; } >b : (j: any) => number >j => { return 0; } : (j: any) => number >j : any +>0 : number var b = (j) => { return 0; } >b : (j: any) => number >(j) => { return 0; } : (j: any) => number >j : any +>0 : number // Identifier => AssignmentExpression is equivalent to(Identifier) => AssignmentExpression var c: number; @@ -65,17 +67,20 @@ var p2 = ([...a]) => { }; var p3 = ([, a]) => { }; >p3 : ([, a]: [any, any]) => void >([, a]) => { } : ([, a]: [any, any]) => void +> : undefined >a : any var p4 = ([, ...a]) => { }; >p4 : ([, ...a]: any[]) => void >([, ...a]) => { } : ([, ...a]: any[]) => void +> : undefined >a : any[] var p5 = ([a = 1]) => { }; >p5 : ([a = 1]: [number]) => void >([a = 1]) => { } : ([a = 1]: [number]) => void >a : number +>1 : number var p6 = ({ a }) => { }; >p6 : ({ a }: { a: any; }) => void @@ -92,14 +97,17 @@ var p8 = ({ a = 1 }) => { }; >p8 : ({ a = 1 }: { a?: number; }) => void >({ a = 1 }) => { } : ({ a = 1 }: { a?: number; }) => void >a : number +>1 : number var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; >p9 : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void >({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void >a : unknown >b : number +>1 : number >{ b: 1 } : { b: number; } >b : number +>1 : number var p10 = ([{ value, done }]) => { }; >p10 : ([{ value, done }]: [{ value: any; done: any; }]) => void @@ -118,6 +126,7 @@ class MyClass { >n : any >n + 1 : any >n : any +>1 : number p = (n) => n && this; >p : (n: any) => MyClass @@ -136,6 +145,7 @@ class MyClass { >n : any >n + 1 : any >n : any +>1 : number var p = (n) => n && this; >p : (n: any) => MyClass @@ -167,6 +177,8 @@ var e = arrrr()(3)()(4); >arrrr()(3) : () => (n: number) => number >arrrr() : (m: number) => () => (n: number) => number >arrrr : () => (m: number) => () => (n: number) => number +>3 : number +>4 : number var e: number; >e : number @@ -191,6 +203,8 @@ function someFn() { >arr(3)(4) : number >arr(3) : (p: number) => number >arr : (n: number) => (p: number) => number +>3 : number +>4 : number >toExponential : (fractionDigits?: number) => string } @@ -203,6 +217,7 @@ function someOtherFn() { >(n: number) => '' + n : (n: number) => string >n : number >'' + n : string +>'' : string >n : number arr(4).charAt(0); @@ -210,7 +225,9 @@ function someOtherFn() { >arr(4).charAt : (pos: number) => string >arr(4) : string >arr : (n: number) => string +>4 : number >charAt : (pos: number) => string +>0 : number } // Arrow function used in nested function in function @@ -253,12 +270,14 @@ var f = (n: string) => { return fn(4); >fn(4) : () => string >fn : (x: number) => () => string +>4 : number } var g = f('')(); >g : string >f('')() : string >f('') : () => string >f : (n: string) => () => string +>'' : string var g: string; >g : string @@ -295,6 +314,7 @@ var h = someOuterFn()('')()(); >someOuterFn()('') : () => () => number >someOuterFn() : (n: string) => () => () => number >someOuterFn : () => (n: string) => () => () => number +>'' : string h.toExponential(); >h.toExponential() : string @@ -328,6 +348,7 @@ function tryCatchFn() { >() => this + '' : () => string >this + '' : string >this : any +>'' : string } } diff --git a/tests/baselines/reference/arrowFunctionInExpressionStatement1.types b/tests/baselines/reference/arrowFunctionInExpressionStatement1.types index a5360a18fc0..a38a868f85b 100644 --- a/tests/baselines/reference/arrowFunctionInExpressionStatement1.types +++ b/tests/baselines/reference/arrowFunctionInExpressionStatement1.types @@ -1,4 +1,5 @@ === tests/cases/compiler/arrowFunctionInExpressionStatement1.ts === () => 0; >() => 0 : () => number +>0 : number diff --git a/tests/baselines/reference/arrowFunctionInExpressionStatement2.types b/tests/baselines/reference/arrowFunctionInExpressionStatement2.types index d4bb431fa8d..bfbd11e8c08 100644 --- a/tests/baselines/reference/arrowFunctionInExpressionStatement2.types +++ b/tests/baselines/reference/arrowFunctionInExpressionStatement2.types @@ -4,4 +4,5 @@ module M { () => 0; >() => 0 : () => number +>0 : number } diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types index 15b3697732a..0093ace2d9c 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types @@ -6,7 +6,9 @@ var a = () => { name: "foo", message: "bar" }; >Error : Error >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string var b = () => ({ name: "foo", message: "bar" }); >b : () => Error @@ -16,7 +18,9 @@ var b = () => ({ name: "foo", message: "bar" }); >Error : Error >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string var c = () => ({ name: "foo", message: "bar" }); >c : () => { name: string; message: string; } @@ -24,7 +28,9 @@ var c = () => ({ name: "foo", message: "bar" }); >({ name: "foo", message: "bar" }) : { name: string; message: string; } >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string var d = () => ((({ name: "foo", message: "bar" }))); >d : () => Error @@ -36,5 +42,7 @@ var d = () => ((({ name: "foo", message: "bar" }))); >({ name: "foo", message: "bar" }) : { name: string; message: string; } >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types index 14a45dca213..31d2a63fec0 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types @@ -6,7 +6,9 @@ var a = () => { name: "foo", message: "bar" }; >Error : Error >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string var b = () => ({ name: "foo", message: "bar" }); >b : () => Error @@ -16,7 +18,9 @@ var b = () => ({ name: "foo", message: "bar" }); >Error : Error >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string var c = () => ({ name: "foo", message: "bar" }); >c : () => { name: string; message: string; } @@ -24,7 +28,9 @@ var c = () => ({ name: "foo", message: "bar" }); >({ name: "foo", message: "bar" }) : { name: string; message: string; } >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string var d = () => ((({ name: "foo", message: "bar" }))); >d : () => Error @@ -36,5 +42,7 @@ var d = () => ((({ name: "foo", message: "bar" }))); >({ name: "foo", message: "bar" }) : { name: string; message: string; } >{ name: "foo", message: "bar" } : { name: string; message: string; } >name : string +>"foo" : string >message : string +>"bar" : string diff --git a/tests/baselines/reference/asiArith.types b/tests/baselines/reference/asiArith.types index d6c0c7abd71..13394d2f1c2 100644 --- a/tests/baselines/reference/asiArith.types +++ b/tests/baselines/reference/asiArith.types @@ -1,9 +1,11 @@ === tests/cases/compiler/asiArith.ts === var x = 1; >x : number +>1 : number var y = 1; >y : number +>1 : number var z = >z : number @@ -26,9 +28,11 @@ y var a = 1; >a : number +>1 : number var b = 1; >b : number +>1 : number var c = >c : number diff --git a/tests/baselines/reference/asiBreak.types b/tests/baselines/reference/asiBreak.types index 355d27f2a43..af3d6a040d5 100644 --- a/tests/baselines/reference/asiBreak.types +++ b/tests/baselines/reference/asiBreak.types @@ -1,3 +1,4 @@ === tests/cases/compiler/asiBreak.ts === while (true) break -No type information for this code. \ No newline at end of file +>true : boolean + diff --git a/tests/baselines/reference/asiContinue.types b/tests/baselines/reference/asiContinue.types index 5b3f0145377..e2eb5ba107d 100644 --- a/tests/baselines/reference/asiContinue.types +++ b/tests/baselines/reference/asiContinue.types @@ -1,3 +1,4 @@ === tests/cases/compiler/asiContinue.ts === while (true) continue -No type information for this code. \ No newline at end of file +>true : boolean + diff --git a/tests/baselines/reference/asiInES6Classes.types b/tests/baselines/reference/asiInES6Classes.types index 90c7f71aba6..41940a0f477 100644 --- a/tests/baselines/reference/asiInES6Classes.types +++ b/tests/baselines/reference/asiInES6Classes.types @@ -10,6 +10,7 @@ class Foo { done: false >done : boolean +>false : boolean } @@ -19,6 +20,7 @@ class Foo { >bar : () => number return 3; +>3 : number } diff --git a/tests/baselines/reference/assign1.types b/tests/baselines/reference/assign1.types index 32b93af647d..d600c4055af 100644 --- a/tests/baselines/reference/assign1.types +++ b/tests/baselines/reference/assign1.types @@ -17,6 +17,8 @@ module M { >I : I >{salt:2,pepper:0} : { salt: number; pepper: number; } >salt : number +>2 : number >pepper : number +>0 : number } diff --git a/tests/baselines/reference/assignEveryTypeToAny.types b/tests/baselines/reference/assignEveryTypeToAny.types index 129440fa463..dfff671a875 100644 --- a/tests/baselines/reference/assignEveryTypeToAny.types +++ b/tests/baselines/reference/assignEveryTypeToAny.types @@ -7,9 +7,11 @@ var x: any; x = 1; >x = 1 : number >x : any +>1 : number var a = 2; >a : number +>2 : number x = a; >x = a : number @@ -19,9 +21,11 @@ x = a; x = true; >x = true : boolean >x : any +>true : boolean var b = true; >b : boolean +>true : boolean x = b; >x = b : boolean @@ -31,9 +35,11 @@ x = b; x = ""; >x = "" : string >x : any +>"" : string var c = ""; >c : string +>"" : string x = c; >x = c : string @@ -136,6 +142,7 @@ x = { f() { return 1; } } >x : any >{ f() { return 1; } } : { f(): number; } >f : () => number +>1 : number x = { f(x: T) { return x; } } >x = { f(x: T) { return x; } } : { f(x: T): T; } diff --git a/tests/baselines/reference/assignmentCompatForEnums.types b/tests/baselines/reference/assignmentCompatForEnums.types index 53e8caab638..e8b48bd02bd 100644 --- a/tests/baselines/reference/assignmentCompatForEnums.types +++ b/tests/baselines/reference/assignmentCompatForEnums.types @@ -12,6 +12,7 @@ var list = {}; function returnType(): TokenType { return null; } >returnType : () => TokenType >TokenType : TokenType +>null : null function foo() { >foo : () => void @@ -26,6 +27,7 @@ function foo() { >TokenType : TokenType >list['one'] : any >list : {} +>'one' : string } diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembers.types b/tests/baselines/reference/assignmentCompatWithObjectMembers.types index 940b1d7071d..f56b0b1dc74 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembers.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembers.types @@ -49,11 +49,13 @@ module SimpleTypes { >a2 : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string var b2 = { foo: '' }; >b2 : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string s = t; >s = t : T diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembers2.types b/tests/baselines/reference/assignmentCompatWithObjectMembers2.types index 962b29732a5..560644f860e 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembers2.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembers2.types @@ -50,11 +50,13 @@ var a2 = { foo: '' }; >a2 : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string var b2 = { foo: '' }; >b2 : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string s = t; >s = t : T diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembers3.types b/tests/baselines/reference/assignmentCompatWithObjectMembers3.types index 85a7e59ffbc..3046c2f609d 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembers3.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembers3.types @@ -53,12 +53,14 @@ var a2: S2 = { foo: '' }; >S2 : S2 >{ foo: '' } : { foo: string; } >foo : string +>'' : string var b2: T2 = { foo: '' }; >b2 : T2 >T2 : T2 >{ foo: '' } : { foo: string; } >foo : string +>'' : string s = t; >s = t : T diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.types b/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.types index 4c76ce1e88a..440ef006e0a 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembersNumericNames.types @@ -43,10 +43,12 @@ var b: { 1.0: string; baz?: string } var a2 = { 1.0: '' }; >a2 : { 1.0: string; } >{ 1.0: '' } : { 1.0: string; } +>'' : string var b2 = { 1: '' }; >b2 : { 1: string; } >{ 1: '' } : { 1: string; } +>'' : string s = t; >s = t : T diff --git a/tests/baselines/reference/assignmentCompatability1.types b/tests/baselines/reference/assignmentCompatability1.types index 9949fc14bf5..66174a4036e 100644 --- a/tests/baselines/reference/assignmentCompatability1.types +++ b/tests/baselines/reference/assignmentCompatability1.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability2.types b/tests/baselines/reference/assignmentCompatability2.types index 16da45c7e35..f46a81cf51f 100644 --- a/tests/baselines/reference/assignmentCompatability2.types +++ b/tests/baselines/reference/assignmentCompatability2.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability3.types b/tests/baselines/reference/assignmentCompatability3.types index 61279b9c7fa..67e553235ed 100644 --- a/tests/baselines/reference/assignmentCompatability3.types +++ b/tests/baselines/reference/assignmentCompatability3.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional @@ -26,6 +27,7 @@ module __test2__ { >obj : { one: number; } >{one: 1} : { one: number; } >one : number +>1 : number export var __val__obj = obj; >__val__obj : { one: number; } diff --git a/tests/baselines/reference/assignmentCompatability4.types b/tests/baselines/reference/assignmentCompatability4.types index f7e5801e9b3..0cafbaa4dd7 100644 --- a/tests/baselines/reference/assignmentCompatability4.types +++ b/tests/baselines/reference/assignmentCompatability4.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability5.types b/tests/baselines/reference/assignmentCompatability5.types index 80eda3e510b..8f8dbb0f649 100644 --- a/tests/baselines/reference/assignmentCompatability5.types +++ b/tests/baselines/reference/assignmentCompatability5.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional @@ -31,6 +32,7 @@ module __test2__ { >interfaceOne : interfaceOne >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj1 = obj1; >__val__obj1 : interfaceOne diff --git a/tests/baselines/reference/assignmentCompatability6.types b/tests/baselines/reference/assignmentCompatability6.types index 5e9ae8c6a2f..1191ff8bc26 100644 --- a/tests/baselines/reference/assignmentCompatability6.types +++ b/tests/baselines/reference/assignmentCompatability6.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability7.types b/tests/baselines/reference/assignmentCompatability7.types index b7b2ab70566..77b67514473 100644 --- a/tests/baselines/reference/assignmentCompatability7.types +++ b/tests/baselines/reference/assignmentCompatability7.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional @@ -34,6 +35,7 @@ module __test2__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability8.types b/tests/baselines/reference/assignmentCompatability8.types index 1c009eea482..554f9b3caed 100644 --- a/tests/baselines/reference/assignmentCompatability8.types +++ b/tests/baselines/reference/assignmentCompatability8.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional @@ -30,6 +31,7 @@ module __test2__ { >x1 : classWithPublic >new classWithPublic(1) : classWithPublic >classWithPublic : typeof classWithPublic +>1 : number export var __val__x1 = x1; >__val__x1 : classWithPublic diff --git a/tests/baselines/reference/assignmentCompatability9.types b/tests/baselines/reference/assignmentCompatability9.types index a8235220bec..d8fe3a764a4 100644 --- a/tests/baselines/reference/assignmentCompatability9.types +++ b/tests/baselines/reference/assignmentCompatability9.types @@ -14,6 +14,7 @@ module __test1__ { >interfaceWithPublicAndOptional : interfaceWithPublicAndOptional >{ one: 1 } : { one: number; } >one : number +>1 : number export var __val__obj4 = obj4; >__val__obj4 : interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentLHSIsReference.types b/tests/baselines/reference/assignmentLHSIsReference.types index 0d7bfad3f06..47204740165 100644 --- a/tests/baselines/reference/assignmentLHSIsReference.types +++ b/tests/baselines/reference/assignmentLHSIsReference.types @@ -37,6 +37,7 @@ x3['a'] = value; >x3['a'] = value : any >x3['a'] : string >x3 : { a: string; } +>'a' : string >value : any // parentheses, the contained expression is reference @@ -70,5 +71,6 @@ function fn2(x4: number) { >(x3['a']) : string >x3['a'] : string >x3 : { a: string; } +>'a' : string >value : any diff --git a/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.types b/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.types index 4e6b51730da..898da985aad 100644 --- a/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.types +++ b/tests/baselines/reference/augmentedTypeBracketAccessIndexSignature.types @@ -27,10 +27,12 @@ var a = {}[0]; // Should be Foo >a : any >{}[0] : any >{} : {} +>0 : number var b = (() => { })[0]; // Should be Bar >b : any >(() => { })[0] : any >(() => { }) : () => void >() => { } : () => void +>0 : number diff --git a/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types b/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types index 142b08928e3..c47c98ebc9c 100644 --- a/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types +++ b/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types @@ -23,19 +23,23 @@ var r1 = o['data']; // Should be number >r1 : number >o['data'] : number >o : {} +>'data' : string var r2 = o['functionData']; // Should be any (no property found) >r2 : any >o['functionData'] : any >o : {} +>'functionData' : string var r3 = f['functionData']; // Should be string >r3 : string >f['functionData'] : string >f : () => void +>'functionData' : string var r4 = f['data']; // Should be number >r4 : number >f['data'] : number >f : () => void +>'data' : string diff --git a/tests/baselines/reference/augmentedTypesClass3.types b/tests/baselines/reference/augmentedTypesClass3.types index b22899b03cf..bed118b5978 100644 --- a/tests/baselines/reference/augmentedTypesClass3.types +++ b/tests/baselines/reference/augmentedTypesClass3.types @@ -14,6 +14,7 @@ class c5a { public foo() { } } module c5a { var y = 2; } // should be ok >c5a : typeof c5a >y : number +>2 : number class c5b { public foo() { } } >c5b : c5b @@ -22,6 +23,7 @@ class c5b { public foo() { } } module c5b { export var y = 2; } // should be ok >c5b : typeof c5b >y : number +>2 : number //// class then import class c5c { public foo() { } } diff --git a/tests/baselines/reference/augmentedTypesExternalModule1.types b/tests/baselines/reference/augmentedTypesExternalModule1.types index ec7e9194df6..e652ecb08e1 100644 --- a/tests/baselines/reference/augmentedTypesExternalModule1.types +++ b/tests/baselines/reference/augmentedTypesExternalModule1.types @@ -1,6 +1,7 @@ === tests/cases/compiler/augmentedTypesExternalModule1.ts === export var a = 1; >a : number +>1 : number class c5 { public foo() { } } >c5 : c5 diff --git a/tests/baselines/reference/augmentedTypesModules3b.types b/tests/baselines/reference/augmentedTypesModules3b.types index af2c33c65da..38134c7c1c2 100644 --- a/tests/baselines/reference/augmentedTypesModules3b.types +++ b/tests/baselines/reference/augmentedTypesModules3b.types @@ -6,6 +6,7 @@ class m3b { foo() { } } module m3b { var y = 2; } >m3b : typeof m3b >y : number +>2 : number class m3c { foo() { } } >m3c : m3c @@ -14,6 +15,7 @@ class m3c { foo() { } } module m3c { export var y = 2; } >m3c : typeof m3c >y : number +>2 : number declare class m3d { foo(): void } >m3d : m3d @@ -22,10 +24,12 @@ declare class m3d { foo(): void } module m3d { export var y = 2; } >m3d : typeof m3d >y : number +>2 : number module m3e { export var y = 2; } >m3e : typeof m3e >y : number +>2 : number declare class m3e { foo(): void } >m3e : m3e diff --git a/tests/baselines/reference/augmentedTypesModules4.types b/tests/baselines/reference/augmentedTypesModules4.types index bf8922a5761..15d7c28e1d6 100644 --- a/tests/baselines/reference/augmentedTypesModules4.types +++ b/tests/baselines/reference/augmentedTypesModules4.types @@ -10,6 +10,7 @@ enum m4 { } module m4a { var y = 2; } >m4a : typeof m4a >y : number +>2 : number enum m4a { One } >m4a : m4a @@ -18,6 +19,7 @@ enum m4a { One } module m4b { export var y = 2; } >m4b : typeof m4b >y : number +>2 : number enum m4b { One } >m4b : m4b @@ -46,6 +48,7 @@ enum m4d { One } module m5 { export var y = 2; } >m5 : typeof m5 >y : number +>2 : number module m5 { export interface I { foo(): void } } // should already be reasonably well covered >m5 : typeof m5 diff --git a/tests/baselines/reference/autonumberingInEnums.types b/tests/baselines/reference/autonumberingInEnums.types index ce3366390e8..35d5a1505a5 100644 --- a/tests/baselines/reference/autonumberingInEnums.types +++ b/tests/baselines/reference/autonumberingInEnums.types @@ -4,6 +4,7 @@ enum Foo { a = 1 >a : Foo +>1 : number } enum Foo { diff --git a/tests/baselines/reference/avoid.types b/tests/baselines/reference/avoid.types index 853d93bdd79..25fe27a2ea0 100644 --- a/tests/baselines/reference/avoid.types +++ b/tests/baselines/reference/avoid.types @@ -4,6 +4,7 @@ function f() { var x=1; >x : number +>1 : number } var y=f(); // error void fn diff --git a/tests/baselines/reference/baseIndexSignatureResolution.types b/tests/baselines/reference/baseIndexSignatureResolution.types index 5a7ad14d2fa..90d143155fb 100644 --- a/tests/baselines/reference/baseIndexSignatureResolution.types +++ b/tests/baselines/reference/baseIndexSignatureResolution.types @@ -30,12 +30,14 @@ var x: FooOf = null; >x : FooOf >FooOf : FooOf >Derived : Derived +>null : null var y: Derived = x[0]; >y : Derived >Derived : Derived >x[0] : Derived >x : FooOf +>0 : number /* // Note - the equivalent for normal interface methods works fine: diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types index eb94c140883..2a5ee6a2fe2 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types @@ -41,27 +41,35 @@ var derived2: Derived2; var r = true ? 1 : 2; >r : number >true ? 1 : 2 : number +>true : boolean +>1 : number +>2 : number var r3 = true ? 1 : {}; >r3 : {} >true ? 1 : {} : {} +>true : boolean +>1 : number >{} : {} var r4 = true ? a : b; // typeof a >r4 : { x: number; y?: number; } | { x: number; z?: number; } >true ? a : b : { x: number; y?: number; } | { x: number; z?: number; } +>true : boolean >a : { x: number; y?: number; } >b : { x: number; z?: number; } var r5 = true ? b : a; // typeof b >r5 : { x: number; y?: number; } | { x: number; z?: number; } >true ? b : a : { x: number; y?: number; } | { x: number; z?: number; } +>true : boolean >b : { x: number; z?: number; } >a : { x: number; y?: number; } var r6 = true ? (x: number) => { } : (x: Object) => { }; // returns number => void >r6 : (x: number) => void >true ? (x: number) => { } : (x: Object) => { } : (x: number) => void +>true : boolean >(x: number) => { } : (x: number) => void >x : number >(x: Object) => { } : (x: Object) => void @@ -73,6 +81,7 @@ var r7: (x: Object) => void = true ? (x: number) => { } : (x: Object) => { }; >x : Object >Object : Object >true ? (x: number) => { } : (x: Object) => { } : (x: number) => void +>true : boolean >(x: number) => { } : (x: number) => void >x : number >(x: Object) => { } : (x: Object) => void @@ -82,6 +91,7 @@ var r7: (x: Object) => void = true ? (x: number) => { } : (x: Object) => { }; var r8 = true ? (x: Object) => { } : (x: number) => { }; // returns Object => void >r8 : (x: Object) => void >true ? (x: Object) => { } : (x: number) => { } : (x: Object) => void +>true : boolean >(x: Object) => { } : (x: Object) => void >x : Object >Object : Object @@ -92,12 +102,14 @@ var r10: Base = true ? derived : derived2; // no error since we use the contextu >r10 : Base >Base : Base >true ? derived : derived2 : Derived | Derived2 +>true : boolean >derived : Derived >derived2 : Derived2 var r11 = true ? base : derived2; >r11 : Base >true ? base : derived2 : Base +>true : boolean >base : Base >derived2 : Derived2 @@ -113,6 +125,7 @@ function foo5(t: T, u: U): Object { return true ? t : u; // BCT is Object >true ? t : u : T | U +>true : boolean >t : T >u : U } diff --git a/tests/baselines/reference/bestCommonTypeOfTuple.types b/tests/baselines/reference/bestCommonTypeOfTuple.types index 0516fc4af2b..7b7302a9cc2 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple.types +++ b/tests/baselines/reference/bestCommonTypeOfTuple.types @@ -2,14 +2,17 @@ function f1(x: number): string { return "foo"; } >f1 : (x: number) => string >x : number +>"foo" : string function f2(x: number): number { return 10; } >f2 : (x: number) => number >x : number +>10 : number function f3(x: number): boolean { return true; } >f3 : (x: number) => boolean >x : number +>true : boolean enum E1 { one } >E1 : E1 @@ -61,6 +64,7 @@ t3 = [5, undefined]; >t3 = [5, undefined] : [number, undefined] >t3 : [number, any] >[5, undefined] : [number, undefined] +>5 : number >undefined : undefined t4 = [E1.one, E2.two, 20]; @@ -73,24 +77,29 @@ t4 = [E1.one, E2.two, 20]; >E2.two : E2 >E2 : typeof E2 >two : E2 +>20 : number var e1 = t1[2]; // {} >e1 : ((x: number) => string) | ((x: number) => number) >t1[2] : ((x: number) => string) | ((x: number) => number) >t1 : [(x: number) => string, (x: number) => number] +>2 : number var e2 = t2[2]; // {} >e2 : E1 | E2 >t2[2] : E1 | E2 >t2 : [E1, E2] +>2 : number var e3 = t3[2]; // any >e3 : any >t3[2] : any >t3 : [number, any] +>2 : number var e4 = t4[3]; // number >e4 : number >t4[3] : number >t4 : [E1, E2, number] +>3 : number diff --git a/tests/baselines/reference/bestCommonTypeOfTuple2.types b/tests/baselines/reference/bestCommonTypeOfTuple2.types index a87407e98fc..32196fdf668 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple2.types +++ b/tests/baselines/reference/bestCommonTypeOfTuple2.types @@ -30,12 +30,14 @@ class C1 implements base1 { i = "foo"; c } >C1 : C1 >base1 : base1 >i : string +>"foo" : string >c : any class D1 extends C1 { i = "bar"; d } >D1 : D1 >C1 : C1 >i : string +>"bar" : string >d : any var t1: [C, base]; @@ -67,24 +69,29 @@ var e11 = t1[4]; // base >e11 : base >t1[4] : base >t1 : [C, base] +>4 : number var e21 = t2[4]; // {} >e21 : C | D >t2[4] : C | D >t2 : [C, D] +>4 : number var e31 = t3[4]; // C1 >e31 : C1 >t3[4] : C1 >t3 : [C1, D1] +>4 : number var e41 = t4[2]; // base1 >e41 : base1 >t4[2] : base1 >t4 : [base1, C1] +>2 : number var e51 = t5[2]; // {} >e51 : F | C1 >t5[2] : F | C1 >t5 : [C1, F] +>2 : number diff --git a/tests/baselines/reference/bestCommonTypeReturnStatement.types b/tests/baselines/reference/bestCommonTypeReturnStatement.types index 3c260ea709b..28974f064a5 100644 --- a/tests/baselines/reference/bestCommonTypeReturnStatement.types +++ b/tests/baselines/reference/bestCommonTypeReturnStatement.types @@ -17,6 +17,7 @@ function f() { >f : () => IPromise if (true) return b(); +>true : boolean >b() : IPromise >b : () => IPromise @@ -29,8 +30,10 @@ function f() { function b(): IPromise { return null; } >b : () => IPromise >IPromise : IPromise +>null : null function d(): IPromise { return null; } >d : () => IPromise >IPromise : IPromise +>null : null diff --git a/tests/baselines/reference/bestCommonTypeWithContextualTyping.types b/tests/baselines/reference/bestCommonTypeWithContextualTyping.types index 606cbae9231..628fe82012a 100644 --- a/tests/baselines/reference/bestCommonTypeWithContextualTyping.types +++ b/tests/baselines/reference/bestCommonTypeWithContextualTyping.types @@ -44,6 +44,7 @@ var conditional: Contextual = null ? e : e; // Ellement >conditional : Contextual >Contextual : Contextual >null ? e : e : Ellement +>null : null >e : Ellement >e : Ellement diff --git a/tests/baselines/reference/binaryArithmatic1.types b/tests/baselines/reference/binaryArithmatic1.types index 2aec9528116..43f4f26de60 100644 --- a/tests/baselines/reference/binaryArithmatic1.types +++ b/tests/baselines/reference/binaryArithmatic1.types @@ -2,4 +2,6 @@ var v = 4 | null; >v : number >4 | null : number +>4 : number +>null : null diff --git a/tests/baselines/reference/binaryArithmatic2.types b/tests/baselines/reference/binaryArithmatic2.types index 9fe3350fc24..77cbce5b1e3 100644 --- a/tests/baselines/reference/binaryArithmatic2.types +++ b/tests/baselines/reference/binaryArithmatic2.types @@ -2,5 +2,6 @@ var v = 4 | undefined; >v : number >4 | undefined : number +>4 : number >undefined : undefined diff --git a/tests/baselines/reference/binaryIntegerLiteral.types b/tests/baselines/reference/binaryIntegerLiteral.types index f884ecc3a73..4ff3c3c28a3 100644 --- a/tests/baselines/reference/binaryIntegerLiteral.types +++ b/tests/baselines/reference/binaryIntegerLiteral.types @@ -1,21 +1,27 @@ === tests/cases/conformance/es6/binaryAndOctalIntegerLiteral/binaryIntegerLiteral.ts === var bin1 = 0b11010; >bin1 : number +>0b11010 : number var bin2 = 0B11010; >bin2 : number +>0B11010 : number var bin3 = 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111; >bin3 : number +>0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111 : number var bin4 = 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111; >bin4 : number +>0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111 : number var obj1 = { >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } >{ 0b11010: "Hello", a: bin1, bin1, b: 0b11010, 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: true,} : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } 0b11010: "Hello", +>"Hello" : string + a: bin1, >a : number >bin1 : number @@ -25,8 +31,10 @@ var obj1 = { b: 0b11010, >b : number +>0b11010 : number 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: true, +>true : boolean } var obj2 = { @@ -34,6 +42,8 @@ var obj2 = { >{ 0B11010: "World", a: bin2, bin2, b: 0B11010, 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: false,} : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } 0B11010: "World", +>"World" : string + a: bin2, >a : number >bin2 : number @@ -43,80 +53,100 @@ var obj2 = { b: 0B11010, >b : number +>0B11010 : number 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: false, +>false : boolean } obj1[0b11010]; // string >obj1[0b11010] : string >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>0b11010 : number obj1[26]; // string >obj1[26] : string >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>26 : number obj1["26"]; // string >obj1["26"] : string >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"26" : string obj1["0b11010"]; // any >obj1["0b11010"] : any >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"0b11010" : string obj1["a"]; // number >obj1["a"] : number >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"a" : string obj1["b"]; // number >obj1["b"] : number >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"b" : string obj1["bin1"]; // number >obj1["bin1"] : number >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"bin1" : string obj1["Infinity"]; // boolean >obj1["Infinity"] : boolean >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"Infinity" : string obj2[0B11010]; // string >obj2[0B11010] : string >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>0B11010 : number obj2[26]; // string >obj2[26] : string >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>26 : number obj2["26"]; // string >obj2["26"] : string >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"26" : string obj2["0B11010"]; // any >obj2["0B11010"] : any >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"0B11010" : string obj2["a"]; // number >obj2["a"] : number >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"a" : string obj2["b"]; // number >obj2["b"] : number >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"b" : string obj2["bin2"]; // number >obj2["bin2"] : number >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"bin2" : string obj2[9.671406556917009e+24]; // boolean >obj2[9.671406556917009e+24] : boolean >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>9.671406556917009e+24 : number obj2["9.671406556917009e+24"]; // boolean >obj2["9.671406556917009e+24"] : boolean >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"9.671406556917009e+24" : string obj2["Infinity"]; // any >obj2["Infinity"] : any >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"Infinity" : string diff --git a/tests/baselines/reference/binaryIntegerLiteralES6.types b/tests/baselines/reference/binaryIntegerLiteralES6.types index 86036ecc42f..47bfe6f548d 100644 --- a/tests/baselines/reference/binaryIntegerLiteralES6.types +++ b/tests/baselines/reference/binaryIntegerLiteralES6.types @@ -1,21 +1,27 @@ === tests/cases/conformance/es6/binaryAndOctalIntegerLiteral/binaryIntegerLiteralES6.ts === var bin1 = 0b11010; >bin1 : number +>0b11010 : number var bin2 = 0B11010; >bin2 : number +>0B11010 : number var bin3 = 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111; >bin3 : number +>0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111 : number var bin4 = 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111; >bin4 : number +>0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111 : number var obj1 = { >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } >{ 0b11010: "Hello", a: bin1, bin1, b: 0b11010, 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: true,} : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } 0b11010: "Hello", +>"Hello" : string + a: bin1, >a : number >bin1 : number @@ -25,8 +31,10 @@ var obj1 = { b: 0b11010, >b : number +>0b11010 : number 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: true, +>true : boolean } var obj2 = { @@ -34,6 +42,8 @@ var obj2 = { >{ 0B11010: "World", a: bin2, bin2, b: 0B11010, 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: false,} : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } 0B11010: "World", +>"World" : string + a: bin2, >a : number >bin2 : number @@ -43,81 +53,101 @@ var obj2 = { b: 0B11010, >b : number +>0B11010 : number 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: false, +>false : boolean } obj1[0b11010]; // string >obj1[0b11010] : string >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>0b11010 : number obj1[26]; // string >obj1[26] : string >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>26 : number obj1["26"]; // string >obj1["26"] : string >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"26" : string obj1["0b11010"]; // any >obj1["0b11010"] : any >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"0b11010" : string obj1["a"]; // number >obj1["a"] : number >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"a" : string obj1["b"]; // number >obj1["b"] : number >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"b" : string obj1["bin1"]; // number >obj1["bin1"] : number >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"bin1" : string obj1["Infinity"]; // boolean >obj1["Infinity"] : boolean >obj1 : { 0b11010: string; a: number; bin1: number; b: number; 0B111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"Infinity" : string obj2[0B11010]; // string >obj2[0B11010] : string >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>0B11010 : number obj2[26]; // string >obj2[26] : string >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>26 : number obj2["26"]; // string >obj2["26"] : string >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"26" : string obj2["0B11010"]; // any >obj2["0B11010"] : any >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"0B11010" : string obj2["a"]; // number >obj2["a"] : number >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"a" : string obj2["b"]; // number >obj2["b"] : number >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"b" : string obj2["bin2"]; // number >obj2["bin2"] : number >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"bin2" : string obj2[9.671406556917009e+24]; // boolean >obj2[9.671406556917009e+24] : boolean >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>9.671406556917009e+24 : number obj2["9.671406556917009e+24"]; // boolean >obj2["9.671406556917009e+24"] : boolean >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"9.671406556917009e+24" : string obj2["Infinity"]; // any >obj2["Infinity"] : any >obj2 : { 0B11010: string; a: number; bin2: number; b: number; 0B11111111111111111111111111111111111111111111111101001010100000010111110001111111111: boolean; } +>"Infinity" : string diff --git a/tests/baselines/reference/binopAssignmentShouldHaveType.types b/tests/baselines/reference/binopAssignmentShouldHaveType.types index cf6966147bc..fdef2fbcabd 100644 --- a/tests/baselines/reference/binopAssignmentShouldHaveType.types +++ b/tests/baselines/reference/binopAssignmentShouldHaveType.types @@ -3,6 +3,8 @@ declare var console; >console : any "use strict"; +>"use strict" : string + module Test { >Test : typeof Test @@ -13,12 +15,14 @@ module Test { >getName : () => string return "name"; +>"name" : string } bug() { >bug : () => void var name:string= null; >name : string +>null : null if ((name= this.getName()).length > 0) { >(name= this.getName()).length > 0 : boolean @@ -31,6 +35,7 @@ module Test { >this : Bug >getName : () => string >length : number +>0 : number console.log(name); >console.log(name) : any diff --git a/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.types b/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.types index ce870dbc818..234c01e2241 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithBooleanType.types @@ -5,6 +5,7 @@ var BOOLEAN: boolean; function foo(): boolean { return true; } >foo : () => boolean +>true : boolean class A { >A : A @@ -14,6 +15,7 @@ class A { static foo() { return false; } >foo : () => boolean +>false : boolean } module M { >M : typeof M @@ -37,13 +39,16 @@ var ResultIsNumber1 = ~BOOLEAN; var ResultIsNumber2 = ~true; >ResultIsNumber2 : number >~true : number +>true : boolean var ResultIsNumber3 = ~{ x: true, y: false }; >ResultIsNumber3 : number >~{ x: true, y: false } : number >{ x: true, y: false } : { x: boolean; y: boolean; } >x : boolean +>true : boolean >y : boolean +>false : boolean // boolean type expressions var ResultIsNumber4 = ~objA.a; @@ -84,6 +89,7 @@ var ResultIsNumber8 = ~~BOOLEAN; // miss assignment operators ~true; >~true : number +>true : boolean ~BOOLEAN; >~BOOLEAN : number @@ -97,6 +103,8 @@ var ResultIsNumber8 = ~~BOOLEAN; ~true, false; >~true, false : boolean >~true : number +>true : boolean +>false : boolean ~objA.a; >~objA.a : number diff --git a/tests/baselines/reference/bitwiseNotOperatorWithEnumType.types b/tests/baselines/reference/bitwiseNotOperatorWithEnumType.types index 71598c6f693..bb8be9b3f54 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithEnumType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithEnumType.types @@ -18,6 +18,7 @@ var ResultIsNumber2 = ~ENUM1["A"]; >~ENUM1["A"] : number >ENUM1["A"] : ENUM1 >ENUM1 : typeof ENUM1 +>"A" : string var ResultIsNumber3 = ~(ENUM1.A + ENUM1["B"]); >ResultIsNumber3 : number @@ -29,6 +30,7 @@ var ResultIsNumber3 = ~(ENUM1.A + ENUM1["B"]); >A : ENUM1 >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string // multiple ~ operators var ResultIsNumber4 = ~~~(ENUM1["A"] + ENUM1.B); @@ -40,6 +42,7 @@ var ResultIsNumber4 = ~~~(ENUM1["A"] + ENUM1.B); >ENUM1["A"] + ENUM1.B : number >ENUM1["A"] : ENUM1 >ENUM1 : typeof ENUM1 +>"A" : string >ENUM1.B : ENUM1 >ENUM1 : typeof ENUM1 >B : ENUM1 @@ -53,6 +56,7 @@ var ResultIsNumber4 = ~~~(ENUM1["A"] + ENUM1.B); >~ENUM1["A"] : number >ENUM1["A"] : ENUM1 >ENUM1 : typeof ENUM1 +>"A" : string ~ENUM1.A, ~ENUM1["B"]; >~ENUM1.A, ~ENUM1["B"] : number @@ -63,4 +67,5 @@ var ResultIsNumber4 = ~~~(ENUM1["A"] + ENUM1.B); >~ENUM1["B"] : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string diff --git a/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types b/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types index 94207a56343..228bd43e593 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types @@ -6,9 +6,12 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number function foo(): number { return 1; } >foo : () => number +>1 : number class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return 1; } >foo : () => number +>1 : number } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsNumber2 = ~NUMBER1; var ResultIsNumber3 = ~1; >ResultIsNumber3 : number >~1 : number +>1 : number var ResultIsNumber4 = ~{ x: 1, y: 2}; >ResultIsNumber4 : number >~{ x: 1, y: 2} : number >{ x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number var ResultIsNumber5 = ~{ x: 1, y: (n: number) => { return n; } }; >ResultIsNumber5 : number >~{ x: 1, y: (n: number) => { return n; } } : number >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } >x : number +>1 : number >y : (n: number) => number >(n: number) => { return n; } : (n: number) => number >n : number @@ -84,6 +92,7 @@ var ResultIsNumber8 = ~NUMBER1[0]; >~NUMBER1[0] : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number var ResultIsNumber9 = ~foo(); >ResultIsNumber9 : number diff --git a/tests/baselines/reference/bitwiseNotOperatorWithStringType.types b/tests/baselines/reference/bitwiseNotOperatorWithStringType.types index dbe2f29631e..4f1ca481a1f 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithStringType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithStringType.types @@ -6,9 +6,12 @@ var STRING: string; var STRING1: string[] = ["", "abc"]; >STRING1 : string[] >["", "abc"] : string[] +>"" : string +>"abc" : string function foo(): string { return "abc"; } >foo : () => string +>"abc" : string class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return ""; } >foo : () => string +>"" : string } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsNumber2 = ~STRING1; var ResultIsNumber3 = ~""; >ResultIsNumber3 : number >~"" : number +>"" : string var ResultIsNumber4 = ~{ x: "", y: "" }; >ResultIsNumber4 : number >~{ x: "", y: "" } : number >{ x: "", y: "" } : { x: string; y: string; } >x : string +>"" : string >y : string +>"" : string var ResultIsNumber5 = ~{ x: "", y: (s: string) => { return s; } }; >ResultIsNumber5 : number >~{ x: "", y: (s: string) => { return s; } } : number >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } >x : string +>"" : string >y : (s: string) => string >(s: string) => { return s; } : (s: string) => string >s : string @@ -84,6 +92,7 @@ var ResultIsNumber8 = ~STRING1[0]; >~STRING1[0] : number >STRING1[0] : string >STRING1 : string[] +>0 : number var ResultIsNumber9 = ~foo(); >ResultIsNumber9 : number @@ -114,6 +123,7 @@ var ResultIsNumber12 = ~STRING.charAt(0); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number // multiple ~ operators var ResultIsNumber13 = ~~STRING; diff --git a/tests/baselines/reference/bom-utf16be.types b/tests/baselines/reference/bom-utf16be.types index 04c6a5a61bb..1787d102245 100644 --- a/tests/baselines/reference/bom-utf16be.types +++ b/tests/baselines/reference/bom-utf16be.types @@ -1,4 +1,5 @@ === tests/cases/compiler/bom-utf16be.ts === var x=10; >x : number +>10 : number diff --git a/tests/baselines/reference/bom-utf16le.types b/tests/baselines/reference/bom-utf16le.types index 15970945942..865c94eb82d 100644 --- a/tests/baselines/reference/bom-utf16le.types +++ b/tests/baselines/reference/bom-utf16le.types @@ -1,4 +1,5 @@ === tests/cases/compiler/bom-utf16le.ts === var x=10; >x : number +>10 : number diff --git a/tests/baselines/reference/bom-utf8.types b/tests/baselines/reference/bom-utf8.types index b8398f7b6b6..d96d0132383 100644 --- a/tests/baselines/reference/bom-utf8.types +++ b/tests/baselines/reference/bom-utf8.types @@ -1,4 +1,5 @@ === tests/cases/compiler/bom-utf8.ts === var x=10; >x : number +>10 : number diff --git a/tests/baselines/reference/booleanPropertyAccess.types b/tests/baselines/reference/booleanPropertyAccess.types index d273e3b8852..2795b36cee5 100644 --- a/tests/baselines/reference/booleanPropertyAccess.types +++ b/tests/baselines/reference/booleanPropertyAccess.types @@ -1,6 +1,7 @@ === tests/cases/conformance/types/primitives/boolean/booleanPropertyAccess.ts === var x = true; >x : boolean +>true : boolean var a = x.toString(); >a : string @@ -14,4 +15,5 @@ var b = x['toString'](); >x['toString']() : string >x['toString'] : () => string >x : boolean +>'toString' : string diff --git a/tests/baselines/reference/breakInIterationOrSwitchStatement1.types b/tests/baselines/reference/breakInIterationOrSwitchStatement1.types index 6a2bae2c2c4..545a20ecc55 100644 --- a/tests/baselines/reference/breakInIterationOrSwitchStatement1.types +++ b/tests/baselines/reference/breakInIterationOrSwitchStatement1.types @@ -1,5 +1,6 @@ === tests/cases/compiler/breakInIterationOrSwitchStatement1.ts === while (true) { -No type information for this code. break; -No type information for this code.} -No type information for this code. \ No newline at end of file +>true : boolean + + break; +} diff --git a/tests/baselines/reference/breakInIterationOrSwitchStatement2.types b/tests/baselines/reference/breakInIterationOrSwitchStatement2.types index 0f8928a664d..5736be6c923 100644 --- a/tests/baselines/reference/breakInIterationOrSwitchStatement2.types +++ b/tests/baselines/reference/breakInIterationOrSwitchStatement2.types @@ -1,6 +1,7 @@ === tests/cases/compiler/breakInIterationOrSwitchStatement2.ts === do { -No type information for this code. break; -No type information for this code.} -No type information for this code.while (true); -No type information for this code. \ No newline at end of file + break; +} +while (true); +>true : boolean + diff --git a/tests/baselines/reference/breakTarget1.types b/tests/baselines/reference/breakTarget1.types index eda3b1cac35..88edef53e0f 100644 --- a/tests/baselines/reference/breakTarget1.types +++ b/tests/baselines/reference/breakTarget1.types @@ -1,4 +1,7 @@ === tests/cases/compiler/breakTarget1.ts === target: -No type information for this code. break target; -No type information for this code. \ No newline at end of file +>target : unknown + + break target; +>target : unknown + diff --git a/tests/baselines/reference/breakTarget2.types b/tests/baselines/reference/breakTarget2.types index 6357695785b..c483cd28341 100644 --- a/tests/baselines/reference/breakTarget2.types +++ b/tests/baselines/reference/breakTarget2.types @@ -1,6 +1,10 @@ === tests/cases/compiler/breakTarget2.ts === target: -No type information for this code.while (true) { -No type information for this code. break target; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target : unknown + +while (true) { +>true : boolean + + break target; +>target : unknown +} diff --git a/tests/baselines/reference/breakTarget3.types b/tests/baselines/reference/breakTarget3.types index 580706bbd4a..c1373e992e4 100644 --- a/tests/baselines/reference/breakTarget3.types +++ b/tests/baselines/reference/breakTarget3.types @@ -1,7 +1,13 @@ === tests/cases/compiler/breakTarget3.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. break target1; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + break target1; +>target1 : unknown +} diff --git a/tests/baselines/reference/breakTarget4.types b/tests/baselines/reference/breakTarget4.types index aba35ddcfdf..7e70a818a02 100644 --- a/tests/baselines/reference/breakTarget4.types +++ b/tests/baselines/reference/breakTarget4.types @@ -1,7 +1,13 @@ === tests/cases/compiler/breakTarget4.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. break target2; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + break target2; +>target2 : unknown +} diff --git a/tests/baselines/reference/callExpressionWithTypeParameterConstrainedToOuterTypeParameter.types b/tests/baselines/reference/callExpressionWithTypeParameterConstrainedToOuterTypeParameter.types index 6349114bffe..fe7d3a6ad08 100644 --- a/tests/baselines/reference/callExpressionWithTypeParameterConstrainedToOuterTypeParameter.types +++ b/tests/baselines/reference/callExpressionWithTypeParameterConstrainedToOuterTypeParameter.types @@ -18,4 +18,5 @@ var y = i(""); // y should be string >y : string >i("") : string >i : I +>"" : string diff --git a/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types b/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types index 34de901e3c0..e3bcb35805f 100644 --- a/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types +++ b/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types @@ -7,11 +7,13 @@ function f(x: T): T { return null; } >x : T >T : T >T : T +>null : null var r = f(1); >r : number >f(1) : number >f : (x: T) => T +>1 : number var f2 = (x: T): T => { return null; } >f2 : (x: T) => T @@ -20,11 +22,13 @@ var f2 = (x: T): T => { return null; } >x : T >T : T >T : T +>null : null var r2 = f2(1); >r2 : number >f2(1) : number >f2 : (x: T) => T +>1 : number var f3: { (x: T): T; } >f3 : (x: T) => T @@ -37,6 +41,7 @@ var r3 = f3(1); >r3 : number >f3(1) : number >f3 : (x: T) => T +>1 : number class C { >C : C @@ -49,6 +54,7 @@ class C { >T : T return null; +>null : null } } var r4 = (new C()).f(1); @@ -59,6 +65,7 @@ var r4 = (new C()).f(1); >new C() : C >C : typeof C >f : (x: T) => T +>1 : number interface I { >I : I @@ -80,6 +87,7 @@ var r5 = i.f(1); >i.f : (x: T) => T >i : I >f : (x: T) => T +>1 : number class C2 { >C2 : C2 @@ -92,6 +100,7 @@ class C2 { >T : T return null; +>null : null } } var r6 = (new C2()).f(1); @@ -102,6 +111,7 @@ var r6 = (new C2()).f(1); >new C2() : C2<{}> >C2 : typeof C2 >f : (x: {}) => {} +>1 : number interface I2 { >I2 : I2 @@ -123,4 +133,5 @@ var r7 = i2.f(1); >i2.f : (x: number) => number >i2 : I2 >f : (x: number) => number +>1 : number diff --git a/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types b/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types index b8b608762f5..062961ac093 100644 --- a/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types +++ b/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types @@ -9,6 +9,7 @@ var r = foo(1); // void since there's a body >r : void >foo(1) : void >foo : (x: any) => void +>1 : number interface I { >I : I diff --git a/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types b/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types index dc6a72cf897..760451eb9c1 100644 --- a/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types +++ b/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types @@ -7,11 +7,13 @@ function foo(x) { >x : any return 1; +>1 : number } var r = foo(1); >r : number >foo(1) : number >foo : (x: any) => number +>1 : number function foo2(x) { >foo2 : (x: any) => number @@ -26,6 +28,7 @@ var r2 = foo2(1); >r2 : number >foo2(1) : number >foo2 : (x: any) => number +>1 : number function foo3() { >foo3 : () => any @@ -52,21 +55,28 @@ var r4 = foo4(1); >r4 : number >foo4(1) : number >foo4 : (x: T) => T +>1 : number function foo5(x) { >foo5 : (x: any) => number >x : any if (true) { +>true : boolean + return 1; +>1 : number + } else { return 2; +>2 : number } } var r5 = foo5(1); >r5 : number >foo5(1) : number >foo5 : (x: any) => number +>1 : number function foo6(x) { >foo6 : (x: any) => any[] @@ -89,6 +99,7 @@ var r6 = foo6(1); >r6 : any[] >foo6(1) : any[] >foo6 : (x: any) => any[] +>1 : number function foo7(x) { >foo7 : (x: any) => string @@ -102,6 +113,7 @@ var r7 = foo7(1); >r7 : string >foo7(1) : string >foo7 : (x: any) => string +>1 : number // object types function foo8(x: number) { @@ -117,6 +129,7 @@ var r8 = foo8(1); >r8 : { x: number; } >foo8(1) : { x: number; } >foo8 : (x: number) => { x: number; } +>1 : number interface I { >I : I @@ -139,6 +152,7 @@ var r9 = foo9(1); >r9 : I >foo9(1) : I >foo9 : (x: number) => I +>1 : number class C { >C : C @@ -161,12 +175,14 @@ var r10 = foo10(1); >r10 : C >foo10(1) : C >foo10 : (x: number) => C +>1 : number module M { >M : typeof M export var x = 1; >x : number +>1 : number export class C { foo: string } >C : C @@ -213,10 +229,12 @@ var r12 = foo12(); function m1() { return 1; } >m1 : typeof m1 +>1 : number module m1 { export var y = 2; } >m1 : typeof m1 >y : number +>2 : number function foo13() { >foo13 : () => typeof m1 @@ -243,6 +261,7 @@ module c1 { export var x = 1; >x : number +>1 : number } function foo14() { >foo14 : () => typeof c1 @@ -262,6 +281,7 @@ enum e1 { A } module e1 { export var y = 1; } >e1 : typeof e1 >y : number +>1 : number function foo15() { >foo15 : () => typeof e1 diff --git a/tests/baselines/reference/callSignaturesWithOptionalParameters.types b/tests/baselines/reference/callSignaturesWithOptionalParameters.types index 818c52f79d0..4ade0e8afe4 100644 --- a/tests/baselines/reference/callSignaturesWithOptionalParameters.types +++ b/tests/baselines/reference/callSignaturesWithOptionalParameters.types @@ -20,6 +20,7 @@ var f2 = (x: number, y?: number) => { } foo(1); >foo(1) : void >foo : (x?: number) => void +>1 : number foo(); >foo() : void @@ -28,6 +29,7 @@ foo(); f(1); >f(1) : void >f : (x?: number) => void +>1 : number f(); >f() : void @@ -36,10 +38,13 @@ f(); f2(1); >f2(1) : void >f2 : (x: number, y?: number) => void +>1 : number f2(1, 2); >f2(1, 2) : void >f2 : (x: number, y?: number) => void +>1 : number +>2 : number class C { >C : C @@ -64,6 +69,7 @@ c.foo(1); >c.foo : (x?: number) => void >c : C >foo : (x?: number) => void +>1 : number interface I { >I : I @@ -88,18 +94,22 @@ i(); i(1); >i(1) : any >i : I +>1 : number i.foo(1); >i.foo(1) : any >i.foo : (x: number, y?: number) => any >i : I >foo : (x: number, y?: number) => any +>1 : number i.foo(1, 2); >i.foo(1, 2) : any >i.foo : (x: number, y?: number) => any >i : I >foo : (x: number, y?: number) => any +>1 : number +>2 : number var a: { >a : { (x?: number): any; foo(x?: number): any; } @@ -119,6 +129,7 @@ a(); a(1); >a(1) : any >a : { (x?: number): any; foo(x?: number): any; } +>1 : number a.foo(); >a.foo() : any @@ -131,6 +142,7 @@ a.foo(1); >a.foo : (x?: number) => any >a : { (x?: number): any; foo(x?: number): any; } >foo : (x?: number) => any +>1 : number var b = { >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } @@ -164,18 +176,22 @@ b.foo(1); >b.foo : (x?: number) => void >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } >foo : (x?: number) => void +>1 : number b.a(1); >b.a(1) : void >b.a : (x: number, y?: number) => void >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } >a : (x: number, y?: number) => void +>1 : number b.a(1, 2); >b.a(1, 2) : void >b.a : (x: number, y?: number) => void >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } >a : (x: number, y?: number) => void +>1 : number +>2 : number b.b(); >b.b() : void @@ -188,4 +204,5 @@ b.b(1); >b.b : (x?: number) => void >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } >b : (x?: number) => void +>1 : number diff --git a/tests/baselines/reference/callSignaturesWithOptionalParameters2.types b/tests/baselines/reference/callSignaturesWithOptionalParameters2.types index 602edd911fe..f726840752e 100644 --- a/tests/baselines/reference/callSignaturesWithOptionalParameters2.types +++ b/tests/baselines/reference/callSignaturesWithOptionalParameters2.types @@ -12,6 +12,7 @@ function foo(x?: number) { } foo(1); >foo(1) : any >foo : (x?: number) => any +>1 : number foo(); >foo() : any @@ -34,10 +35,13 @@ function foo2(x: number, y?: number) { } foo2(1); >foo2(1) : any >foo2 : { (x: number): any; (x: number, y?: number): any; } +>1 : number foo2(1, 2); >foo2(1, 2) : any >foo2 : { (x: number): any; (x: number, y?: number): any; } +>1 : number +>2 : number class C { >C : C @@ -80,18 +84,22 @@ c.foo(1); >c.foo : (x?: number) => any >c : C >foo : (x?: number) => any +>1 : number c.foo2(1); >c.foo2(1) : any >c.foo2 : { (x: number): any; (x: number, y?: number): any; } >c : C >foo2 : { (x: number): any; (x: number, y?: number): any; } +>1 : number c.foo2(1, 2); >c.foo2(1, 2) : any >c.foo2 : { (x: number): any; (x: number, y?: number): any; } >c : C >foo2 : { (x: number): any; (x: number, y?: number): any; } +>1 : number +>2 : number interface I { >I : I @@ -126,28 +134,37 @@ i(); i(1); >i(1) : any >i : I +>1 : number i(1, 2); >i(1, 2) : any >i : I +>1 : number +>2 : number i.foo(1); >i.foo(1) : any >i.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } >i : I >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } +>1 : number i.foo(1, 2); >i.foo(1, 2) : any >i.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } >i : I >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } +>1 : number +>2 : number i.foo(1, 2, 3); >i.foo(1, 2, 3) : any >i.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } >i : I >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } +>1 : number +>2 : number +>3 : number var a: { >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } @@ -178,26 +195,35 @@ a(); a(1); >a(1) : any >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } +>1 : number a(1, 2); >a(1, 2) : any >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } +>1 : number +>2 : number a.foo(1); >a.foo(1) : any >a.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } +>1 : number a.foo(1, 2); >a.foo(1, 2) : any >a.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } +>1 : number +>2 : number a.foo(1, 2, 3); >a.foo(1, 2, 3) : any >a.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } +>1 : number +>2 : number +>3 : number diff --git a/tests/baselines/reference/callWithSpreadES6.types b/tests/baselines/reference/callWithSpreadES6.types index 10dd611d213..71d3cf9b2df 100644 --- a/tests/baselines/reference/callWithSpreadES6.types +++ b/tests/baselines/reference/callWithSpreadES6.types @@ -34,30 +34,43 @@ var xa: X[]; foo(1, 2, "abc"); >foo(1, 2, "abc") : void >foo : (x: number, y: number, ...z: string[]) => void +>1 : number +>2 : number +>"abc" : string foo(1, 2, ...a); >foo(1, 2, ...a) : void >foo : (x: number, y: number, ...z: string[]) => void +>1 : number +>2 : number >...a : string >a : string[] foo(1, 2, ...a, "abc"); >foo(1, 2, ...a, "abc") : void >foo : (x: number, y: number, ...z: string[]) => void +>1 : number +>2 : number >...a : string >a : string[] +>"abc" : string obj.foo(1, 2, "abc"); >obj.foo(1, 2, "abc") : any >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number +>"abc" : string obj.foo(1, 2, ...a); >obj.foo(1, 2, ...a) : any >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number >...a : string >a : string[] @@ -66,8 +79,11 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number >...a : string >a : string[] +>"abc" : string (obj.foo)(1, 2, "abc"); >(obj.foo)(1, 2, "abc") : any @@ -75,6 +91,9 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number +>"abc" : string (obj.foo)(1, 2, ...a); >(obj.foo)(1, 2, ...a) : any @@ -82,6 +101,8 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number >...a : string >a : string[] @@ -91,22 +112,32 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number >...a : string >a : string[] +>"abc" : string xa[1].foo(1, 2, "abc"); >xa[1].foo(1, 2, "abc") : any >xa[1].foo : (x: number, y: number, ...z: string[]) => any >xa[1] : X >xa : X[] +>1 : number >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number +>"abc" : string xa[1].foo(1, 2, ...a); >xa[1].foo(1, 2, ...a) : any >xa[1].foo : (x: number, y: number, ...z: string[]) => any >xa[1] : X >xa : X[] +>1 : number >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number >...a : string >a : string[] @@ -115,9 +146,13 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1].foo : (x: number, y: number, ...z: string[]) => any >xa[1] : X >xa : X[] +>1 : number >foo : (x: number, y: number, ...z: string[]) => any +>1 : number +>2 : number >...a : string >a : string[] +>"abc" : string (xa[1].foo)(...[1, 2, "abc"]); >(xa[1].foo)(...[1, 2, "abc"]) : any @@ -127,9 +162,13 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1].foo : (x: number, y: number, ...z: string[]) => any >xa[1] : X >xa : X[] +>1 : number >foo : (x: number, y: number, ...z: string[]) => any >...[1, 2, "abc"] : string | number >[1, 2, "abc"] : (string | number)[] +>1 : number +>2 : number +>"abc" : string class C { >C : C @@ -173,10 +212,14 @@ class D extends C { super(1, 2); >super(1, 2) : void >super : typeof C +>1 : number +>2 : number super(1, 2, ...a); >super(1, 2, ...a) : void >super : typeof C +>1 : number +>2 : number >...a : string >a : string[] } @@ -188,12 +231,16 @@ class D extends C { >super.foo : (x: number, y: number, ...z: string[]) => void >super : C >foo : (x: number, y: number, ...z: string[]) => void +>1 : number +>2 : number super.foo(1, 2, ...a); >super.foo(1, 2, ...a) : void >super.foo : (x: number, y: number, ...z: string[]) => void >super : C >foo : (x: number, y: number, ...z: string[]) => void +>1 : number +>2 : number >...a : string >a : string[] } @@ -204,6 +251,8 @@ var c = new C(1, 2, ...a); >c : C >new C(1, 2, ...a) : C >C : typeof C +>1 : number +>2 : number >...a : string >a : string[] diff --git a/tests/baselines/reference/castExpressionParentheses.types b/tests/baselines/reference/castExpressionParentheses.types index 7004aef9c95..ab563a4e8b7 100644 --- a/tests/baselines/reference/castExpressionParentheses.types +++ b/tests/baselines/reference/castExpressionParentheses.types @@ -9,35 +9,44 @@ declare var a; >{a:0} : any >{a:0} : { a: number; } >a : number +>0 : number ([1,3,]); >([1,3,]) : any >[1,3,] : any >[1,3,] : number[] +>1 : number +>3 : number ("string"); >("string") : any >"string" : any +>"string" : string (23.0); >(23.0) : any >23.0 : any +>23.0 : number (/regexp/g); >(/regexp/g) : any >/regexp/g : any +>/regexp/g : RegExp (false); >(false) : any >false : any +>false : boolean (true); >(true) : any >true : any +>true : boolean (null); >(null) : any >null : any +>null : null // names and dotted names (this); @@ -72,6 +81,7 @@ declare var a; >a[0] : any >a[0] : any >a : any +>0 : number (a.b["0"]); >(a.b["0"]) : any @@ -80,6 +90,7 @@ declare var a; >a.b : any >a : any >b : any +>"0" : string (a()).x; >(a()).x : any diff --git a/tests/baselines/reference/castTest.types b/tests/baselines/reference/castTest.types index 8250bec362d..35698219fd4 100644 --- a/tests/baselines/reference/castTest.types +++ b/tests/baselines/reference/castTest.types @@ -2,6 +2,7 @@ var x : any = 0; >x : any +>0 : number var z = x; >z : number @@ -17,23 +18,28 @@ var y = x + z; var a = 0; >a : any >0 : any +>0 : number var b = true; >b : boolean >true : boolean +>true : boolean var s = ""; >s : string >"" : string +>"" : string var ar = null; >ar : any[] >null : any[] +>null : null var f = <(res : number) => void>null; >f : (res: number) => void ><(res : number) => void>null : (res: number) => void >res : number +>null : null declare class Point >Point : Point @@ -70,9 +76,11 @@ var p_cast = ({ x: 0, >x : number +>0 : number y: 0, >y : number +>0 : number add: function(dx, dy) { >add : (dx: number, dy: number) => Point diff --git a/tests/baselines/reference/cf.types b/tests/baselines/reference/cf.types index 62dcba0ba9a..72b12ed5378 100644 --- a/tests/baselines/reference/cf.types +++ b/tests/baselines/reference/cf.types @@ -7,29 +7,39 @@ function f() { var x=10; >x : number +>10 : number var y=3; >y : number +>3 : number L1: for (var i=0;i<19;i++) { +>L1 : unknown >i : number +>0 : number >i<19 : boolean >i : number +>19 : number >i++ : number >i : number if (y==7) { >y==7 : boolean >y : number +>7 : number continue L1; +>L1 : unknown + x=11; >x=11 : number >x : number +>11 : number } if (y==3) { >y==3 : boolean >y : number +>3 : number y++; >y++ : number @@ -44,19 +54,23 @@ function f() { y+=2; >y+=2 : number >y : number +>2 : number if (y==20) { >y==20 : boolean >y : number +>20 : number break; x=12; >x=12 : number >x : number +>12 : number } } while (y<41); >y<41 : boolean >y : number +>41 : number y++; >y++ : number @@ -65,29 +79,40 @@ function f() { while (y>2) { >y>2 : boolean >y : number +>2 : number y=y>>1; >y=y>>1 : number >y : number >y>>1 : number >y : number +>1 : number } L2: try { +>L2 : unknown + L3: if (xL3 : unknown >xx : number >y : number break L2; +>L2 : unknown + x=13; >x=13 : number >x : number +>13 : number } else { break L3; +>L3 : unknown + x=14; >x=14 : number >x : number +>14 : number } } catch (e) { @@ -101,6 +126,7 @@ function f() { x+=3; >x+=3 : number >x : number +>3 : number } y++; >y++ : number @@ -108,8 +134,10 @@ function f() { for (var k=0;k<10;k++) { >k : number +>0 : number >k<10 : boolean >k : number +>10 : number >k++ : number >k : number @@ -121,14 +149,17 @@ function f() { for (k=0;k<10;k++) { >k=0 : number >k : number +>0 : number >k<10 : boolean >k : number +>10 : number >k++ : number >k : number if (k==6) { >k==6 : boolean >k : number +>6 : number continue; } diff --git a/tests/baselines/reference/chainedAssignment2.types b/tests/baselines/reference/chainedAssignment2.types index 3ddd7412b9c..c53c64143d9 100644 --- a/tests/baselines/reference/chainedAssignment2.types +++ b/tests/baselines/reference/chainedAssignment2.types @@ -27,5 +27,6 @@ a = b = c = d = e = null; >d : Date >e = null : null >e : RegExp +>null : null diff --git a/tests/baselines/reference/circularImportAlias.types b/tests/baselines/reference/circularImportAlias.types index b61f91d460e..352db72cbdd 100644 --- a/tests/baselines/reference/circularImportAlias.types +++ b/tests/baselines/reference/circularImportAlias.types @@ -10,6 +10,7 @@ module B { export class D extends a.C { >D : D +>a.C : unknown >a : typeof a >C : a.C diff --git a/tests/baselines/reference/classAppearsToHaveMembersOfObject.types b/tests/baselines/reference/classAppearsToHaveMembersOfObject.types index fe4079bbfcf..65c37e7dfeb 100644 --- a/tests/baselines/reference/classAppearsToHaveMembersOfObject.types +++ b/tests/baselines/reference/classAppearsToHaveMembersOfObject.types @@ -20,6 +20,7 @@ var r2 = c.hasOwnProperty(''); >c.hasOwnProperty : (v: string) => boolean >c : C >hasOwnProperty : (v: string) => boolean +>'' : string var o: Object = c; >o : Object diff --git a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types index 623515a7ec0..62969888bce 100644 --- a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types +++ b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types @@ -10,6 +10,7 @@ module M { export var v = 0; >v : number +>0 : number } } @@ -18,6 +19,7 @@ module M { export class O extends M.N { >O : O +>M.N : unknown >M : typeof M >N : N } diff --git a/tests/baselines/reference/classExtendingClass.types b/tests/baselines/reference/classExtendingClass.types index 7eaaaecf17f..f91493e97fd 100644 --- a/tests/baselines/reference/classExtendingClass.types +++ b/tests/baselines/reference/classExtendingClass.types @@ -102,6 +102,7 @@ var r7 = d2.thing(''); >d2.thing : (x: string) => void >d2 : D2 >thing : (x: string) => void +>'' : string var r8 = D2.other(1); >r8 : void @@ -109,4 +110,5 @@ var r8 = D2.other(1); >D2.other : (x: T) => void >D2 : typeof D2 >other : (x: T) => void +>1 : number diff --git a/tests/baselines/reference/classExtendingQualifiedName2.types b/tests/baselines/reference/classExtendingQualifiedName2.types index ba96058d9b2..8f7688e2172 100644 --- a/tests/baselines/reference/classExtendingQualifiedName2.types +++ b/tests/baselines/reference/classExtendingQualifiedName2.types @@ -8,6 +8,7 @@ module M { class D extends M.C { >D : D +>M.C : unknown >M : typeof M >C : C } diff --git a/tests/baselines/reference/classImplementsClass3.types b/tests/baselines/reference/classImplementsClass3.types index 182ac535966..6f97a96a56e 100644 --- a/tests/baselines/reference/classImplementsClass3.types +++ b/tests/baselines/reference/classImplementsClass3.types @@ -2,6 +2,7 @@ class A { foo(): number { return 1; } } >A : A >foo : () => number +>1 : number class C implements A { >C : C @@ -11,6 +12,7 @@ class C implements A { >foo : () => number return 1; +>1 : number } } diff --git a/tests/baselines/reference/classWithEmptyBody.types b/tests/baselines/reference/classWithEmptyBody.types index ccf3c8556e0..1ac111796e8 100644 --- a/tests/baselines/reference/classWithEmptyBody.types +++ b/tests/baselines/reference/classWithEmptyBody.types @@ -14,12 +14,14 @@ var o: {} = c; c = 1; >c = 1 : number >c : C +>1 : number c = { foo: '' } >c = { foo: '' } : { foo: string; } >c : C >{ foo: '' } : { foo: string; } >foo : string +>'' : string c = () => { } >c = () => { } : () => void @@ -31,6 +33,7 @@ class D { constructor() { return 1; +>1 : number } } @@ -45,12 +48,14 @@ var o: {} = d; d = 1; >d = 1 : number >d : D +>1 : number d = { foo: '' } >d = { foo: '' } : { foo: string; } >d : D >{ foo: '' } : { foo: string; } >foo : string +>'' : string d = () => { } >d = () => { } : () => void diff --git a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.types b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.types index 9f6d031bf20..94460dfdeaf 100644 --- a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.types +++ b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface.types @@ -10,9 +10,11 @@ class C { public y(a: number): number { return null; } >y : (a: number) => number >a : number +>null : null public get z() { return 1; } >z : number +>1 : number public set z(v) { } >z : number diff --git a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.types b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.types index be504f895fd..b359713f292 100644 --- a/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.types +++ b/tests/baselines/reference/classWithOnlyPublicMembersEquivalentToInterface2.types @@ -10,9 +10,11 @@ class C { public y(a: number): number { return null; } >y : (a: number) => number >a : number +>null : null public get z() { return 1; } >z : number +>1 : number public set z(v) { } >z : number diff --git a/tests/baselines/reference/classWithProtectedProperty.types b/tests/baselines/reference/classWithProtectedProperty.types index a091206cde0..1f53ea2aad9 100644 --- a/tests/baselines/reference/classWithProtectedProperty.types +++ b/tests/baselines/reference/classWithProtectedProperty.types @@ -9,26 +9,32 @@ class C { protected a = ''; >a : string +>'' : string protected b: string = ''; >b : string +>'' : string protected c() { return '' } >c : () => string +>'' : string protected d = () => ''; >d : () => string >() => '' : () => string +>'' : string protected static e; >e : any protected static f() { return '' } >f : () => string +>'' : string protected static g = () => ''; >g : () => string >() => '' : () => string +>'' : string } class D extends C { diff --git a/tests/baselines/reference/classWithPublicProperty.types b/tests/baselines/reference/classWithPublicProperty.types index a5bdeb95f1a..09d3c0668d1 100644 --- a/tests/baselines/reference/classWithPublicProperty.types +++ b/tests/baselines/reference/classWithPublicProperty.types @@ -7,26 +7,32 @@ class C { public a = ''; >a : string +>'' : string public b: string = ''; >b : string +>'' : string public c() { return '' } >c : () => string +>'' : string public d = () => ''; >d : () => string >() => '' : () => string +>'' : string public static e; >e : any public static f() { return '' } >f : () => string +>'' : string public static g = () => ''; >g : () => string >() => '' : () => string +>'' : string } // all of these are valid diff --git a/tests/baselines/reference/cloduleAcrossModuleDefinitions.types b/tests/baselines/reference/cloduleAcrossModuleDefinitions.types index cda79f73734..e3dcfff2cbd 100644 --- a/tests/baselines/reference/cloduleAcrossModuleDefinitions.types +++ b/tests/baselines/reference/cloduleAcrossModuleDefinitions.types @@ -21,6 +21,7 @@ module A { export var x = 1; >x : number +>1 : number } } diff --git a/tests/baselines/reference/cloduleTest1.types b/tests/baselines/reference/cloduleTest1.types index a92355b483a..67c1fd6120f 100644 --- a/tests/baselines/reference/cloduleTest1.types +++ b/tests/baselines/reference/cloduleTest1.types @@ -30,5 +30,7 @@ >$('.foo').addClass : (className: string) => $ >$('.foo') : $ >$ : typeof $ +>'.foo' : string >addClass : (className: string) => $ +>'bar' : string diff --git a/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.types b/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.types index f63f7eeb4f2..9c6fbac1539 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.types +++ b/tests/baselines/reference/collisionCodeGenModuleWithConstructorChildren.types @@ -4,6 +4,7 @@ module M { export var x = 3; >x : number +>3 : number class c { >c : c @@ -39,6 +40,7 @@ module M { constructor() { var M = 10; >M : number +>10 : number var p = x; >p : number diff --git a/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.types b/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.types index 07ef123f642..5c99bc7b40b 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.types +++ b/tests/baselines/reference/collisionCodeGenModuleWithFunctionChildren.types @@ -4,6 +4,7 @@ module M { export var x = 3; >x : number +>3 : number function fn(M, p = x) { } >fn : (M: any, p?: number) => void diff --git a/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.types b/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.types index 86f0767959d..651ba5344ad 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.types +++ b/tests/baselines/reference/collisionCodeGenModuleWithMemberVariable.types @@ -4,6 +4,7 @@ module m1 { export var m1 = 10; >m1 : number +>10 : number var b = m1; >b : number diff --git a/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.types b/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.types index 3632806e9b3..e7c6d9021eb 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.types +++ b/tests/baselines/reference/collisionCodeGenModuleWithMethodChildren.types @@ -4,6 +4,7 @@ module M { export var x = 3; >x : number +>3 : number class c { >c : c diff --git a/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.types b/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.types index 7853bcbdb32..4ffaf6dad04 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.types +++ b/tests/baselines/reference/collisionCodeGenModuleWithModuleChildren.types @@ -4,12 +4,14 @@ module M { export var x = 3; >x : number +>3 : number module m1 { >m1 : typeof m1 var M = 10; >M : number +>10 : number var p = x; >p : number diff --git a/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.types b/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.types index 27520618366..b71eeb621d0 100644 --- a/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.types +++ b/tests/baselines/reference/collisionCodeGenModuleWithModuleReopening.types @@ -44,6 +44,7 @@ module m2 { } export var b10 = 10; >b10 : number +>10 : number var x = new c1(); >x : c1 diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types b/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types index 8212c6ffc61..0db9958d533 100644 --- a/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientClass.types @@ -54,4 +54,5 @@ module m4 { } var a = 10; >a : number +>10 : number } diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types b/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types index 024bdff8ea3..76210f7dda0 100644 --- a/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientFunction.types @@ -25,4 +25,5 @@ module m2 { var a = 10; >a : number +>10 : number } diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types b/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types index 0ecde7f429f..9804380fd7a 100644 --- a/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientFunctionInGlobalFile.types @@ -25,4 +25,5 @@ module m4 { var a = 10; >a : number +>10 : number } diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types b/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types index 7e41093daaa..491728ad3c4 100644 --- a/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientModule.types @@ -15,6 +15,7 @@ export function foo(): require.I { >I : require.I return null; +>null : null } export declare module exports { >exports : typeof exports @@ -32,6 +33,7 @@ export function foo2(): exports.I { >I : exports.I return null; +>null : null } declare module m1 { >m1 : typeof m1 @@ -82,6 +84,7 @@ module m2 { } var a = 10; >a : number +>10 : number } === tests/cases/compiler/collisionExportsRequireAndAmbientModule_globalFile.ts === @@ -155,5 +158,6 @@ module m4 { var a = 10; >a : number +>10 : number } diff --git a/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types b/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types index 1419df3504b..90a9b8968e5 100644 --- a/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types +++ b/tests/baselines/reference/collisionExportsRequireAndAmbientVar.types @@ -25,6 +25,7 @@ module m2 { var a = 10; >a : number +>10 : number } === tests/cases/compiler/collisionExportsRequireAndAmbientVar_globalFile.ts === @@ -54,4 +55,5 @@ module m4 { var a = 10; >a : number +>10 : number } diff --git a/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types b/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types index ba804feb91a..3cc08359508 100644 --- a/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types +++ b/tests/baselines/reference/collisionExportsRequireAndFunctionInGlobalFile.types @@ -3,11 +3,13 @@ function exports() { >exports : () => number return 1; +>1 : number } function require() { >require : () => string return "require"; +>"require" : string } module m3 { >m3 : typeof m3 @@ -16,11 +18,13 @@ module m3 { >exports : () => number return 1; +>1 : number } function require() { >require : () => string return "require"; +>"require" : string } } module m4 { @@ -30,10 +34,12 @@ module m4 { >exports : () => number return 1; +>1 : number } export function require() { >require : () => string return "require"; +>"require" : string } } diff --git a/tests/baselines/reference/collisionExportsRequireAndUninstantiatedModule.types b/tests/baselines/reference/collisionExportsRequireAndUninstantiatedModule.types index 59d90feda46..eb0bc031431 100644 --- a/tests/baselines/reference/collisionExportsRequireAndUninstantiatedModule.types +++ b/tests/baselines/reference/collisionExportsRequireAndUninstantiatedModule.types @@ -12,6 +12,7 @@ export function foo(): require.I { >I : require.I return null; +>null : null } export module exports { // no error >exports : unknown @@ -26,4 +27,5 @@ export function foo2(): exports.I { >I : exports.I return null; +>null : null } diff --git a/tests/baselines/reference/collisionRestParameterArrowFunctions.types b/tests/baselines/reference/collisionRestParameterArrowFunctions.types index f2316c99583..dcd52e5f766 100644 --- a/tests/baselines/reference/collisionRestParameterArrowFunctions.types +++ b/tests/baselines/reference/collisionRestParameterArrowFunctions.types @@ -7,6 +7,7 @@ var f1 = (_i: number, ...restParameters) => { //_i is error var _i = 10; // no error >_i : number +>10 : number } var f1NoError = (_i: number) => { // no error >f1NoError : (_i: number) => void @@ -15,6 +16,7 @@ var f1NoError = (_i: number) => { // no error var _i = 10; // no error >_i : number +>10 : number } var f2 = (...restParameters) => { @@ -24,6 +26,7 @@ var f2 = (...restParameters) => { var _i = 10; // No Error >_i : number +>10 : number } var f2NoError = () => { >f2NoError : () => void @@ -31,4 +34,5 @@ var f2NoError = () => { var _i = 10; // no error >_i : number +>10 : number } diff --git a/tests/baselines/reference/collisionRestParameterClassConstructor.types b/tests/baselines/reference/collisionRestParameterClassConstructor.types index d0ceb9e0749..f86d6d80d21 100644 --- a/tests/baselines/reference/collisionRestParameterClassConstructor.types +++ b/tests/baselines/reference/collisionRestParameterClassConstructor.types @@ -9,6 +9,7 @@ class c1 { var _i = 10; // no error >_i : number +>10 : number } } class c1NoError { @@ -19,6 +20,7 @@ class c1NoError { var _i = 10; // no error >_i : number +>10 : number } } @@ -30,6 +32,7 @@ class c2 { var _i = 10; // no error >_i : number +>10 : number } } class c2NoError { @@ -38,6 +41,7 @@ class c2NoError { constructor() { var _i = 10; // no error >_i : number +>10 : number } } @@ -50,6 +54,7 @@ class c3 { var _i = 10; // no error >_i : number +>10 : number } } class c3NoError { @@ -60,6 +65,7 @@ class c3NoError { var _i = 10; // no error >_i : number +>10 : number } } diff --git a/tests/baselines/reference/collisionRestParameterClassMethod.types b/tests/baselines/reference/collisionRestParameterClassMethod.types index 2a4c23ae5a9..bc6b09dd795 100644 --- a/tests/baselines/reference/collisionRestParameterClassMethod.types +++ b/tests/baselines/reference/collisionRestParameterClassMethod.types @@ -9,6 +9,7 @@ class c1 { var _i = 10; // no error >_i : number +>10 : number } public fooNoError(_i: number) { // no error >fooNoError : (_i: number) => void @@ -16,6 +17,7 @@ class c1 { var _i = 10; // no error >_i : number +>10 : number } public f4(_i: number, ...rest); // no codegen no error >f4 : { (_i: number, ...rest: any[]): any; (_i: string, ...rest: any[]): any; } @@ -93,11 +95,13 @@ class c3 { var _i = 10; // no error >_i : number +>10 : number } public fooNoError() { >fooNoError : () => void var _i = 10; // no error >_i : number +>10 : number } } diff --git a/tests/baselines/reference/collisionRestParameterFunction.types b/tests/baselines/reference/collisionRestParameterFunction.types index f0d8abeac9d..d988f74c928 100644 --- a/tests/baselines/reference/collisionRestParameterFunction.types +++ b/tests/baselines/reference/collisionRestParameterFunction.types @@ -7,6 +7,7 @@ function f1(_i: number, ...restParameters) { //_i is error var _i = 10; // no error >_i : number +>10 : number } function f1NoError(_i: number) { // no error >f1NoError : (_i: number) => void @@ -14,6 +15,7 @@ function f1NoError(_i: number) { // no error var _i = 10; // no error >_i : number +>10 : number } declare function f2(_i: number, ...restParameters); // no error - no code gen @@ -31,12 +33,14 @@ function f3(...restParameters) { var _i = 10; // no error >_i : number +>10 : number } function f3NoError() { >f3NoError : () => void var _i = 10; // no error >_i : number +>10 : number } function f4(_i: number, ...rest); // no codegen no error diff --git a/tests/baselines/reference/collisionRestParameterFunctionExpressions.types b/tests/baselines/reference/collisionRestParameterFunctionExpressions.types index c6c52390894..f8ca0c18ed8 100644 --- a/tests/baselines/reference/collisionRestParameterFunctionExpressions.types +++ b/tests/baselines/reference/collisionRestParameterFunctionExpressions.types @@ -9,6 +9,7 @@ function foo() { var _i = 10; // no error >_i : number +>10 : number } function f1NoError(_i: number) { // no error >f1NoError : (_i: number) => void @@ -16,6 +17,7 @@ function foo() { var _i = 10; // no error >_i : number +>10 : number } function f3(...restParameters) { >f3 : (...restParameters: any[]) => void @@ -23,12 +25,14 @@ function foo() { var _i = 10; // no error >_i : number +>10 : number } function f3NoError() { >f3NoError : () => void var _i = 10; // no error >_i : number +>10 : number } function f4(_i: number, ...rest); // no codegen no error diff --git a/tests/baselines/reference/collisionRestParameterUnderscoreIUsage.types b/tests/baselines/reference/collisionRestParameterUnderscoreIUsage.types index c700f50aca4..fadc27dfa6c 100644 --- a/tests/baselines/reference/collisionRestParameterUnderscoreIUsage.types +++ b/tests/baselines/reference/collisionRestParameterUnderscoreIUsage.types @@ -6,6 +6,7 @@ declare var console: { log(msg?: string): void; }; var _i = "This is what I'd expect to see"; >_i : string +>"This is what I'd expect to see" : string class Foo { >Foo : Foo diff --git a/tests/baselines/reference/commaOperator1.types b/tests/baselines/reference/commaOperator1.types index 52a36e33024..8116fec8328 100644 --- a/tests/baselines/reference/commaOperator1.types +++ b/tests/baselines/reference/commaOperator1.types @@ -8,14 +8,22 @@ var v1 = ((1, 2, 3), 4, 5, (6, 7)); >(1, 2, 3) : number >1, 2, 3 : number >1, 2 : number +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number >(6, 7) : number >6, 7 : number +>6 : number +>7 : number function f1() { >f1 : () => number var a = 1; >a : number +>1 : number return a, v1, a; >a, v1, a : number diff --git a/tests/baselines/reference/commaOperatorOtherValidOperation.types b/tests/baselines/reference/commaOperatorOtherValidOperation.types index e42991e7b5a..bc7bdd81157 100644 --- a/tests/baselines/reference/commaOperatorOtherValidOperation.types +++ b/tests/baselines/reference/commaOperatorOtherValidOperation.types @@ -2,7 +2,9 @@ //Comma operator in for loop for (var i = 0, j = 10; i < j; i++, j--) >i : number +>0 : number >j : number +>10 : number >i < j : boolean >i : number >j : number @@ -29,6 +31,8 @@ var resultIsString = foo(1, "123"); >resultIsString : string >foo(1, "123") : string >foo : (x: number, y: string) => string +>1 : number +>"123" : string //TypeParameters function foo1() diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandAnyType.types b/tests/baselines/reference/commaOperatorWithSecondOperandAnyType.types index a63e20cf673..a8217c2d248 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandAnyType.types +++ b/tests/baselines/reference/commaOperatorWithSecondOperandAnyType.types @@ -83,6 +83,7 @@ var x: any; 1, ANY; >1, ANY : any +>1 : number >ANY : any ++NUMBER, ANY; @@ -93,19 +94,28 @@ var x: any; "string", [null, 1]; >"string", [null, 1] : number[] +>"string" : string >[null, 1] : number[] +>null : null +>1 : number "string".charAt(0), [null, 1]; >"string".charAt(0), [null, 1] : number[] >"string".charAt(0) : string >"string".charAt : (pos: number) => string +>"string" : string >charAt : (pos: number) => string +>0 : number >[null, 1] : number[] +>null : null +>1 : number true, x("any"); >true, x("any") : any +>true : boolean >x("any") : any >x : any +>"any" : string !BOOLEAN, x.doSomeThing(); >!BOOLEAN, x.doSomeThing() : any @@ -120,6 +130,7 @@ var resultIsAny6 = (1, ANY); >resultIsAny6 : any >(1, ANY) : any >1, ANY : any +>1 : number >ANY : any var resultIsAny7 = (++NUMBER, ANY); @@ -134,6 +145,8 @@ var resultIsAny8 = ("string", null); >resultIsAny8 : any >("string", null) : null >"string", null : null +>"string" : string +>null : null var resultIsAny9 = ("string".charAt(0), undefined); >resultIsAny9 : any @@ -141,15 +154,19 @@ var resultIsAny9 = ("string".charAt(0), undefined); >"string".charAt(0), undefined : undefined >"string".charAt(0) : string >"string".charAt : (pos: number) => string +>"string" : string >charAt : (pos: number) => string +>0 : number >undefined : undefined var resultIsAny10 = (true, x("any")); >resultIsAny10 : any >(true, x("any")) : any >true, x("any") : any +>true : boolean >x("any") : any >x : any +>"any" : string var resultIsAny11 = (!BOOLEAN, x.doSomeThing()); >resultIsAny11 : any diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandBooleanType.types b/tests/baselines/reference/commaOperatorWithSecondOperandBooleanType.types index 49a3fdc4cc5..dba5285d880 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandBooleanType.types +++ b/tests/baselines/reference/commaOperatorWithSecondOperandBooleanType.types @@ -80,6 +80,7 @@ var resultIsBoolean5 = (OBJECT, BOOLEAN); //Literal and expression null, BOOLEAN; >null, BOOLEAN : boolean +>null : null >BOOLEAN : boolean ANY = undefined, BOOLEAN; @@ -91,15 +92,21 @@ ANY = undefined, BOOLEAN; 1, true; >1, true : boolean +>1 : number +>true : boolean ++NUMBER, true; >++NUMBER, true : boolean >++NUMBER : number >NUMBER : number +>true : boolean [1, 2, 3], !BOOLEAN; >[1, 2, 3], !BOOLEAN : boolean >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >!BOOLEAN : boolean >BOOLEAN : boolean @@ -108,13 +115,18 @@ OBJECT = [1, 2, 3], BOOLEAN = false; >OBJECT = [1, 2, 3] : number[] >OBJECT : Object >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >BOOLEAN = false : boolean >BOOLEAN : boolean +>false : boolean var resultIsBoolean6 = (null, BOOLEAN); >resultIsBoolean6 : boolean >(null, BOOLEAN) : boolean >null, BOOLEAN : boolean +>null : null >BOOLEAN : boolean var resultIsBoolean7 = (ANY = undefined, BOOLEAN); @@ -130,6 +142,8 @@ var resultIsBoolean8 = (1, true); >resultIsBoolean8 : boolean >(1, true) : boolean >1, true : boolean +>1 : number +>true : boolean var resultIsBoolean9 = (++NUMBER, true); >resultIsBoolean9 : boolean @@ -137,12 +151,16 @@ var resultIsBoolean9 = (++NUMBER, true); >++NUMBER, true : boolean >++NUMBER : number >NUMBER : number +>true : boolean var resultIsBoolean10 = ([1, 2, 3], !BOOLEAN); >resultIsBoolean10 : boolean >([1, 2, 3], !BOOLEAN) : boolean >[1, 2, 3], !BOOLEAN : boolean >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >!BOOLEAN : boolean >BOOLEAN : boolean @@ -153,6 +171,10 @@ var resultIsBoolean11 = (OBJECT = [1, 2, 3], BOOLEAN = false); >OBJECT = [1, 2, 3] : number[] >OBJECT : Object >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >BOOLEAN = false : boolean >BOOLEAN : boolean +>false : boolean diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandNumberType.types b/tests/baselines/reference/commaOperatorWithSecondOperandNumberType.types index a144466d4c8..13aae51e0cb 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandNumberType.types +++ b/tests/baselines/reference/commaOperatorWithSecondOperandNumberType.types @@ -80,6 +80,7 @@ var resultIsNumber5 = (OBJECT, NUMBER); //Literal and expression null, NUMBER; >null, NUMBER : number +>null : null >NUMBER : number ANY = undefined, NUMBER; @@ -91,16 +92,22 @@ ANY = undefined, NUMBER; true, 1; >true, 1 : number +>true : boolean +>1 : number BOOLEAN = false, 1; >BOOLEAN = false, 1 : number >BOOLEAN = false : boolean >BOOLEAN : boolean +>false : boolean +>1 : number "", NUMBER = 1; >"", NUMBER = 1 : number +>"" : string >NUMBER = 1 : number >NUMBER : number +>1 : number STRING.trim(), NUMBER = 1; >STRING.trim(), NUMBER = 1 : number @@ -110,11 +117,13 @@ STRING.trim(), NUMBER = 1; >trim : () => string >NUMBER = 1 : number >NUMBER : number +>1 : number var resultIsNumber6 = (null, NUMBER); >resultIsNumber6 : number >(null, NUMBER) : number >null, NUMBER : number +>null : null >NUMBER : number var resultIsNumber7 = (ANY = undefined, NUMBER); @@ -130,6 +139,8 @@ var resultIsNumber8 = (true, 1); >resultIsNumber8 : number >(true, 1) : number >true, 1 : number +>true : boolean +>1 : number var resultIsNumber9 = (BOOLEAN = false, 1); >resultIsNumber9 : number @@ -137,13 +148,17 @@ var resultIsNumber9 = (BOOLEAN = false, 1); >BOOLEAN = false, 1 : number >BOOLEAN = false : boolean >BOOLEAN : boolean +>false : boolean +>1 : number var resultIsNumber10 = ("", NUMBER = 1); >resultIsNumber10 : number >("", NUMBER = 1) : number >"", NUMBER = 1 : number +>"" : string >NUMBER = 1 : number >NUMBER : number +>1 : number var resultIsNumber11 = (STRING.trim(), NUMBER = 1); >resultIsNumber11 : number @@ -155,4 +170,5 @@ var resultIsNumber11 = (STRING.trim(), NUMBER = 1); >trim : () => string >NUMBER = 1 : number >NUMBER : number +>1 : number diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.types b/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.types index ba2663dd271..9c948da9699 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.types +++ b/tests/baselines/reference/commaOperatorWithSecondOperandObjectType.types @@ -87,16 +87,19 @@ var resultIsObject5 = (OBJECT, OBJECT); //Literal and expression null, OBJECT >null, OBJECT : Object +>null : null >OBJECT : Object ANY = null, OBJECT >ANY = null, OBJECT : Object >ANY = null : null >ANY : any +>null : null >OBJECT : Object true, {} >true, {} : {} +>true : boolean >{} : {} !BOOLEAN, [] @@ -107,6 +110,7 @@ true, {} "string", new Date() >"string", new Date() : Date +>"string" : string >new Date() : Date >Date : DateConstructor @@ -123,6 +127,7 @@ var resultIsObject6 = (null, OBJECT); >resultIsObject6 : Object >(null, OBJECT) : Object >null, OBJECT : Object +>null : null >OBJECT : Object var resultIsObject7 = (ANY = null, OBJECT); @@ -131,12 +136,14 @@ var resultIsObject7 = (ANY = null, OBJECT); >ANY = null, OBJECT : Object >ANY = null : null >ANY : any +>null : null >OBJECT : Object var resultIsObject8 = (true, {}); >resultIsObject8 : {} >(true, {}) : {} >true, {} : {} +>true : boolean >{} : {} var resultIsObject9 = (!BOOLEAN, { a: 1, b: "s" }); @@ -147,12 +154,15 @@ var resultIsObject9 = (!BOOLEAN, { a: 1, b: "s" }); >BOOLEAN : boolean >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string var resultIsObject10 = ("string", new Date()); >resultIsObject10 : Date >("string", new Date()) : Date >"string", new Date() : Date +>"string" : string >new Date() : Date >Date : DateConstructor diff --git a/tests/baselines/reference/commaOperatorWithSecondOperandStringType.types b/tests/baselines/reference/commaOperatorWithSecondOperandStringType.types index d5b2f50ca33..a28202876d2 100644 --- a/tests/baselines/reference/commaOperatorWithSecondOperandStringType.types +++ b/tests/baselines/reference/commaOperatorWithSecondOperandStringType.types @@ -83,6 +83,7 @@ var resultIsString5 = (OBJECT, STRING); //Literal and expression null, STRING; >null, STRING : string +>null : null >STRING : string ANY = new Date(), STRING; @@ -95,16 +96,21 @@ ANY = new Date(), STRING; true, ""; >true, "" : string +>true : boolean +>"" : string BOOLEAN == undefined, ""; >BOOLEAN == undefined, "" : string >BOOLEAN == undefined : boolean >BOOLEAN : boolean >undefined : undefined +>"" : string ["a", "b"], NUMBER.toString(); >["a", "b"], NUMBER.toString() : string >["a", "b"] : string[] +>"a" : string +>"b" : string >NUMBER.toString() : string >NUMBER.toString : (radix?: number) => string >NUMBER : number @@ -118,11 +124,13 @@ OBJECT = new Object, STRING + "string"; >Object : ObjectConstructor >STRING + "string" : string >STRING : string +>"string" : string var resultIsString6 = (null, STRING); >resultIsString6 : string >(null, STRING) : string >null, STRING : string +>null : null >STRING : string var resultIsString7 = (ANY = new Date(), STRING); @@ -139,6 +147,8 @@ var resultIsString8 = (true, ""); >resultIsString8 : string >(true, "") : string >true, "" : string +>true : boolean +>"" : string var resultIsString9 = (BOOLEAN == undefined, ""); >resultIsString9 : string @@ -147,12 +157,15 @@ var resultIsString9 = (BOOLEAN == undefined, ""); >BOOLEAN == undefined : boolean >BOOLEAN : boolean >undefined : undefined +>"" : string var resultIsString10 = (["a", "b"], NUMBER.toString()); >resultIsString10 : string >(["a", "b"], NUMBER.toString()) : string >["a", "b"], NUMBER.toString() : string >["a", "b"] : string[] +>"a" : string +>"b" : string >NUMBER.toString() : string >NUMBER.toString : (radix?: number) => string >NUMBER : number @@ -166,4 +179,5 @@ var resultIsString11 = (new Object, STRING + "string"); >Object : ObjectConstructor >STRING + "string" : string >STRING : string +>"string" : string diff --git a/tests/baselines/reference/commaOperatorsMultipleOperators.types b/tests/baselines/reference/commaOperatorsMultipleOperators.types index 12b90e8ec77..9a2c7c7e5c5 100644 --- a/tests/baselines/reference/commaOperatorsMultipleOperators.types +++ b/tests/baselines/reference/commaOperatorsMultipleOperators.types @@ -101,6 +101,9 @@ var resultIsObject1 = (NUMBER, STRING, OBJECT); null, true, 1; >null, true, 1 : number >null, true : boolean +>null : null +>true : boolean +>1 : number ++NUMBER, STRING.charAt(0), new Object(); >++NUMBER, STRING.charAt(0), new Object() : Object @@ -111,6 +114,7 @@ null, true, 1; >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number >new Object() : Object >Object : ObjectConstructor @@ -119,6 +123,9 @@ var resultIsNumber2 = (null, true, 1); >(null, true, 1) : number >null, true, 1 : number >null, true : boolean +>null : null +>true : boolean +>1 : number var resultIsObject2 = (++NUMBER, STRING.charAt(0), new Object()); >resultIsObject2 : Object @@ -131,6 +138,7 @@ var resultIsObject2 = (++NUMBER, STRING.charAt(0), new Object()); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number >new Object() : Object >Object : ObjectConstructor diff --git a/tests/baselines/reference/commentBeforeStaticMethod1.types b/tests/baselines/reference/commentBeforeStaticMethod1.types index db674324306..1b16709a701 100644 --- a/tests/baselines/reference/commentBeforeStaticMethod1.types +++ b/tests/baselines/reference/commentBeforeStaticMethod1.types @@ -9,5 +9,6 @@ class C { >foo : () => string return "bar"; +>"bar" : string } } diff --git a/tests/baselines/reference/commentEmitAtEndOfFile1.types b/tests/baselines/reference/commentEmitAtEndOfFile1.types index 76b5c868cb6..43d144e7922 100644 --- a/tests/baselines/reference/commentEmitAtEndOfFile1.types +++ b/tests/baselines/reference/commentEmitAtEndOfFile1.types @@ -2,6 +2,7 @@ // test var f = '' >f : string +>'' : string // test #2 module foo { diff --git a/tests/baselines/reference/commentOnAmbientModule.types b/tests/baselines/reference/commentOnAmbientModule.types index f0056decc29..79008ae07c4 100644 --- a/tests/baselines/reference/commentOnAmbientModule.types +++ b/tests/baselines/reference/commentOnAmbientModule.types @@ -5,6 +5,7 @@ declare module E { class foobar extends D.bar { >foobar : foobar +>D.bar : unknown >D : typeof D >bar : D.bar diff --git a/tests/baselines/reference/commentOnAmbientVariable2.types b/tests/baselines/reference/commentOnAmbientVariable2.types index 68ca1459575..28760dca1ec 100644 --- a/tests/baselines/reference/commentOnAmbientVariable2.types +++ b/tests/baselines/reference/commentOnAmbientVariable2.types @@ -6,8 +6,10 @@ declare var x: number; x = 2; >x = 2 : number >x : number +>2 : number === tests/cases/compiler/commentOnAmbientVariable2_1.ts === var y = 1; >y : number +>1 : number diff --git a/tests/baselines/reference/commentOnExpressionStatement1.types b/tests/baselines/reference/commentOnExpressionStatement1.types index c39689ed381..11d5fe1c6b5 100644 --- a/tests/baselines/reference/commentOnExpressionStatement1.types +++ b/tests/baselines/reference/commentOnExpressionStatement1.types @@ -2,4 +2,6 @@ 1 + 1; // Comment. >1 + 1 : number +>1 : number +>1 : number diff --git a/tests/baselines/reference/commentOnIfStatement1.types b/tests/baselines/reference/commentOnIfStatement1.types index 03f357c8ccf..7b983156f4d 100644 --- a/tests/baselines/reference/commentOnIfStatement1.types +++ b/tests/baselines/reference/commentOnIfStatement1.types @@ -1,6 +1,6 @@ === tests/cases/compiler/commentOnIfStatement1.ts === -No type information for this code.// Test -No type information for this code.if (true) { -No type information for this code.} -No type information for this code. \ No newline at end of file +// Test +if (true) { +>true : boolean +} diff --git a/tests/baselines/reference/commentOnSimpleArrowFunctionBody1.types b/tests/baselines/reference/commentOnSimpleArrowFunctionBody1.types index 916a03eb65e..6dd530e438b 100644 --- a/tests/baselines/reference/commentOnSimpleArrowFunctionBody1.types +++ b/tests/baselines/reference/commentOnSimpleArrowFunctionBody1.types @@ -12,4 +12,5 @@ Foo(() => // do something 127); +>127 : number diff --git a/tests/baselines/reference/commentsAtEndOfFile1.types b/tests/baselines/reference/commentsAtEndOfFile1.types index c09a435f1a7..b9d3dd3913d 100644 --- a/tests/baselines/reference/commentsAtEndOfFile1.types +++ b/tests/baselines/reference/commentsAtEndOfFile1.types @@ -1,6 +1,7 @@ === tests/cases/compiler/commentsAtEndOfFile1.ts === Input: -No type information for this code.; -No type information for this code.//Testing two -No type information for this code. -No type information for this code. \ No newline at end of file +>Input : unknown + +; +//Testing two + diff --git a/tests/baselines/reference/commentsBeforeFunctionExpression1.types b/tests/baselines/reference/commentsBeforeFunctionExpression1.types index 4580ca9ceeb..a057918a74d 100644 --- a/tests/baselines/reference/commentsBeforeFunctionExpression1.types +++ b/tests/baselines/reference/commentsBeforeFunctionExpression1.types @@ -7,5 +7,6 @@ var v = { >f : (a: any) => number >(a) => 0 : (a: any) => number >a : any +>0 : number } diff --git a/tests/baselines/reference/commentsClassMembers.types b/tests/baselines/reference/commentsClassMembers.types index d71ccd2e1e8..fbd514bf77b 100644 --- a/tests/baselines/reference/commentsClassMembers.types +++ b/tests/baselines/reference/commentsClassMembers.types @@ -574,6 +574,7 @@ var i1_r = i1.p2(20); >i1.p2 : (b: number) => number >i1 : c1 >p2 : (b: number) => number +>20 : number var i1_prop = i1.p3; >i1_prop : number @@ -606,6 +607,7 @@ var i1_ncr = i1.nc_p2(20); >i1.nc_p2 : (b: number) => number >i1 : c1 >nc_p2 : (b: number) => number +>20 : number var i1_ncprop = i1.nc_p3; >i1_ncprop : number @@ -638,6 +640,7 @@ var i1_s_r = c1.s2(20); >c1.s2 : (b: number) => number >c1 : typeof c1 >s2 : (b: number) => number +>20 : number var i1_s_prop = c1.s3; >i1_s_prop : number @@ -670,6 +673,7 @@ var i1_s_ncr = c1.nc_s2(20); >c1.nc_s2 : (b: number) => number >c1 : typeof c1 >nc_s2 : (b: number) => number +>20 : number var i1_s_ncprop = c1.nc_s3; >i1_s_ncprop : number @@ -739,9 +743,11 @@ class cProperties { public x = 10; /*trailing comment for property*/ >x : number +>10 : number private y = 10; // trailing comment of // style >y : number +>10 : number } var cProperties_i = new cProperties(); >cProperties_i : cProperties diff --git a/tests/baselines/reference/commentsCommentParsing.types b/tests/baselines/reference/commentsCommentParsing.types index a9194f9a63a..a6e24609642 100644 --- a/tests/baselines/reference/commentsCommentParsing.types +++ b/tests/baselines/reference/commentsCommentParsing.types @@ -151,6 +151,8 @@ function sum(a: number, b: number) { sum(10, 20); >sum(10, 20) : number >sum : (a: number, b: number) => number +>10 : number +>20 : number /** This is multiplication function*/ /** @param */ diff --git a/tests/baselines/reference/commentsFunction.types b/tests/baselines/reference/commentsFunction.types index 6d37e1732e0..db5e518339d 100644 --- a/tests/baselines/reference/commentsFunction.types +++ b/tests/baselines/reference/commentsFunction.types @@ -26,6 +26,8 @@ function fooWithParameters(/** this is comment about a*/a: string, fooWithParameters("a", 10); >fooWithParameters("a", 10) : void >fooWithParameters : (a: string, b: number) => void +>"a" : string +>10 : number /** fooFunc * comment @@ -62,10 +64,14 @@ var lambddaNoVarComment = /** this is lambda multiplication*/ (/**param a*/a: nu lambdaFoo(10, 20); >lambdaFoo(10, 20) : number >lambdaFoo : (a: number, b: number) => number +>10 : number +>20 : number lambddaNoVarComment(10, 20); >lambddaNoVarComment(10, 20) : number >lambddaNoVarComment : (a: number, b: number) => number +>10 : number +>20 : number function blah(a: string /* multiline trailing comment >blah : (a: string) => void @@ -98,10 +104,12 @@ lambdaFoo = (a, b) => a * b; // This is trailing comment /*leading comment*/() => 0; // Needs to be wrapped in parens to be a valid expression (not declaration) >() => 0 : () => number +>0 : number /*leading comment*/(() => 0); //trailing comment >(() => 0) : () => number >() => 0 : () => number +>0 : number function blah4(/*1*/a: string/*2*/,/*3*/b: string/*4*/) { >blah4 : (a: string, b: string) => void diff --git a/tests/baselines/reference/commentsInheritance.types b/tests/baselines/reference/commentsInheritance.types index b4db5767107..1c25f13937b 100644 --- a/tests/baselines/reference/commentsInheritance.types +++ b/tests/baselines/reference/commentsInheritance.types @@ -122,6 +122,7 @@ class c2 { >c2_prop : number return 10; +>10 : number } public c2_nc_p1: number; >c2_nc_p1 : number @@ -133,6 +134,7 @@ class c2 { >c2_nc_prop : number return 10; +>10 : number } /** c2 p1*/ public p1: number; @@ -147,6 +149,7 @@ class c2 { >prop : number return 10; +>10 : number } public nc_p1: number; >nc_p1 : number @@ -158,6 +161,7 @@ class c2 { >nc_prop : number return 10; +>10 : number } /** c2 constructor*/ constructor(a: number) { @@ -179,6 +183,7 @@ class c3 extends c2 { super(10); >super(10) : void >super : typeof c2 +>10 : number } /** c3 p1*/ public p1: number; @@ -193,6 +198,7 @@ class c3 extends c2 { >prop : number return 10; +>10 : number } public nc_p1: number; >nc_p1 : number @@ -204,12 +210,14 @@ class c3 extends c2 { >nc_prop : number return 10; +>10 : number } } var c2_i = new c2(10); >c2_i : c2 >new c2(10) : c2 >c2 : typeof c2 +>10 : number var c3_i = new c3(); >c3_i : c3 @@ -230,6 +238,7 @@ var c4_i = new c4(10); >c4_i : c4 >new c4(10) : c4 >c4 : typeof c4 +>10 : number interface i2 { >i2 : i2 diff --git a/tests/baselines/reference/commentsInterface.types b/tests/baselines/reference/commentsInterface.types index 68d552882e2..13cc2b19f60 100644 --- a/tests/baselines/reference/commentsInterface.types +++ b/tests/baselines/reference/commentsInterface.types @@ -86,16 +86,19 @@ var i2_i_foo_r = i2_i.foo(30); >i2_i.foo : (b: number) => string >i2_i : i2 >foo : (b: number) => string +>30 : number var i2_i_i2_si = i2_i["hello"]; >i2_i_i2_si : any >i2_i["hello"] : any >i2_i : i2 +>"hello" : string var i2_i_i2_ii = i2_i[30]; >i2_i_i2_ii : number >i2_i[30] : number >i2_i : i2 +>30 : number var i2_i_n = new i2_i(i1_i); >i2_i_n : any @@ -121,11 +124,14 @@ var i2_i_nc_foo_r = i2_i.nc_foo(30); >i2_i.nc_foo : (b: number) => string >i2_i : i2 >nc_foo : (b: number) => string +>30 : number var i2_i_r = i2_i(10, 20); >i2_i_r : number >i2_i(10, 20) : number >i2_i : i2 +>10 : number +>20 : number var i2_i_fnfoo = i2_i.fnfoo; >i2_i_fnfoo : (b: number) => string @@ -139,6 +145,7 @@ var i2_i_fnfoo_r = i2_i.fnfoo(10); >i2_i.fnfoo : (b: number) => string >i2_i : i2 >fnfoo : (b: number) => string +>10 : number var i2_i_nc_fnfoo = i2_i.nc_fnfoo; >i2_i_nc_fnfoo : (b: number) => string @@ -152,6 +159,7 @@ var i2_i_nc_fnfoo_r = i2_i.nc_fnfoo(10); >i2_i.nc_fnfoo : (b: number) => string >i2_i : i2 >nc_fnfoo : (b: number) => string +>10 : number interface i3 { >i3 : i3 @@ -195,6 +203,7 @@ i3_i = { >(/**i3_i a*/a: number) => "Hello" + a : (a: number) => string >a : number >"Hello" + a : string +>"Hello" : string >a : number l: this.f, @@ -210,6 +219,7 @@ i3_i = { >this.f : any >this : any >f : any +>10 : number nc_x: this.l(this.x), >nc_x : any @@ -239,22 +249,26 @@ i3_i.f(10); >i3_i.f : (a: number) => string >i3_i : i3 >f : (a: number) => string +>10 : number i3_i.l(10); >i3_i.l(10) : string >i3_i.l : (b: number) => string >i3_i : i3 >l : (b: number) => string +>10 : number i3_i.nc_f(10); >i3_i.nc_f(10) : string >i3_i.nc_f : (a: number) => string >i3_i : i3 >nc_f : (a: number) => string +>10 : number i3_i.nc_l(10); >i3_i.nc_l(10) : string >i3_i.nc_l : (b: number) => string >i3_i : i3 >nc_l : (b: number) => string +>10 : number diff --git a/tests/baselines/reference/commentsOnObjectLiteral3.types b/tests/baselines/reference/commentsOnObjectLiteral3.types index e81bd646b5a..a63920fce0f 100644 --- a/tests/baselines/reference/commentsOnObjectLiteral3.types +++ b/tests/baselines/reference/commentsOnObjectLiteral3.types @@ -7,6 +7,7 @@ var v = { //property prop: 1 /* multiple trailing comments */ /*trailing comments*/, >prop : number +>1 : number //property func: function () { diff --git a/tests/baselines/reference/commentsOnReturnStatement1.types b/tests/baselines/reference/commentsOnReturnStatement1.types index 0d447b6536f..d44c91c0a8c 100644 --- a/tests/baselines/reference/commentsOnReturnStatement1.types +++ b/tests/baselines/reference/commentsOnReturnStatement1.types @@ -8,8 +8,10 @@ class DebugClass { // Start Debugger Test Code var i = 0; >i : number +>0 : number // End Debugger Test Code return true; +>true : boolean } } diff --git a/tests/baselines/reference/commentsOnStaticMembers.types b/tests/baselines/reference/commentsOnStaticMembers.types index 5c201c7709a..46a1ca211ff 100644 --- a/tests/baselines/reference/commentsOnStaticMembers.types +++ b/tests/baselines/reference/commentsOnStaticMembers.types @@ -8,6 +8,7 @@ class test { */ public static p1: string = ""; >p1 : string +>"" : string /** * p2 comment does not appear in output @@ -20,6 +21,7 @@ class test { */ private static p3: string = ""; >p3 : string +>"" : string /** * p4 comment does not appear in output diff --git a/tests/baselines/reference/commentsOverloads.types b/tests/baselines/reference/commentsOverloads.types index 9984c1b5b26..3281ab83ab6 100644 --- a/tests/baselines/reference/commentsOverloads.types +++ b/tests/baselines/reference/commentsOverloads.types @@ -13,14 +13,17 @@ function f1(aOrb: any) { >aOrb : any return 10; +>10 : number } f1("hello"); >f1("hello") : number >f1 : { (a: number): number; (b: string): number; } +>"hello" : string f1(10); >f1(10) : number >f1 : { (a: number): number; (b: string): number; } +>10 : number function f2(a: number): number; >f2 : { (a: number): number; (b: string): number; } @@ -37,14 +40,17 @@ function f2(aOrb: any) { >aOrb : any return 10; +>10 : number } f2("hello"); >f2("hello") : number >f2 : { (a: number): number; (b: string): number; } +>"hello" : string f2(10); >f2(10) : number >f2 : { (a: number): number; (b: string): number; } +>10 : number function f3(a: number): number; >f3 : { (a: number): number; (b: string): number; } @@ -59,14 +65,17 @@ function f3(aOrb: any) { >aOrb : any return 10; +>10 : number } f3("hello"); >f3("hello") : number >f3 : { (a: number): number; (b: string): number; } +>"hello" : string f3(10); >f3(10) : number >f3 : { (a: number): number; (b: string): number; } +>10 : number /** this is signature 4 - with number parameter*/ function f4(/**param a*/a: number): number; @@ -83,14 +92,17 @@ function f4(aOrb: any) { >aOrb : any return 10; +>10 : number } f4("hello"); >f4("hello") : number >f4 : { (a: number): number; (b: string): number; } +>"hello" : string f4(10); >f4(10) : number >f4 : { (a: number): number; (b: string): number; } +>10 : number interface i1 { >i1 : i1 @@ -240,6 +252,7 @@ class c { >aorb : any return 10; +>10 : number } /** prop2 1*/ public prop2(a: number): number; @@ -255,6 +268,7 @@ class c { >aorb : any return 10; +>10 : number } public prop3(a: number): number; >prop3 : { (a: number): number; (b: string): number; } @@ -270,6 +284,7 @@ class c { >aorb : any return 10; +>10 : number } /** prop4 1*/ public prop4(a: number): number; @@ -286,6 +301,7 @@ class c { >aorb : any return 10; +>10 : number } /** prop5 1*/ public prop5(a: number): number; @@ -303,6 +319,7 @@ class c { >aorb : any return 10; +>10 : number } } class c1 { @@ -388,49 +405,59 @@ var c1_i_1 = new c1(10); >c1_i_1 : c1 >new c1(10) : c1 >c1 : typeof c1 +>10 : number var c1_i_2 = new c1("hello"); >c1_i_2 : c1 >new c1("hello") : c1 >c1 : typeof c1 +>"hello" : string var c2_i_1 = new c2(10); >c2_i_1 : c2 >new c2(10) : c2 >c2 : typeof c2 +>10 : number var c2_i_2 = new c2("hello"); >c2_i_2 : c2 >new c2("hello") : c2 >c2 : typeof c2 +>"hello" : string var c3_i_1 = new c3(10); >c3_i_1 : c3 >new c3(10) : c3 >c3 : typeof c3 +>10 : number var c3_i_2 = new c3("hello"); >c3_i_2 : c3 >new c3("hello") : c3 >c3 : typeof c3 +>"hello" : string var c4_i_1 = new c4(10); >c4_i_1 : c4 >new c4(10) : c4 >c4 : typeof c4 +>10 : number var c4_i_2 = new c4("hello"); >c4_i_2 : c4 >new c4("hello") : c4 >c4 : typeof c4 +>"hello" : string var c5_i_1 = new c5(10); >c5_i_1 : c5 >new c5(10) : c5 >c5 : typeof c5 +>10 : number var c5_i_2 = new c5("hello"); >c5_i_2 : c5 >new c5("hello") : c5 >c5 : typeof c5 +>"hello" : string diff --git a/tests/baselines/reference/commentsPropertySignature1.types b/tests/baselines/reference/commentsPropertySignature1.types index 857b0c98ee5..09dad1eaefb 100644 --- a/tests/baselines/reference/commentsPropertySignature1.types +++ b/tests/baselines/reference/commentsPropertySignature1.types @@ -6,6 +6,7 @@ var a = { /** own x*/ x: 0 >x : number +>0 : number }; diff --git a/tests/baselines/reference/commentsVarDecl.types b/tests/baselines/reference/commentsVarDecl.types index 50db8984b1b..033590b3445 100644 --- a/tests/baselines/reference/commentsVarDecl.types +++ b/tests/baselines/reference/commentsVarDecl.types @@ -3,25 +3,30 @@ /** Variable comments*/ var myVariable = 10; // This trailing Comment1 >myVariable : number +>10 : number /** This is another variable comment*/ var anotherVariable = 30; >anotherVariable : number +>30 : number // shouldn't appear var aVar = ""; >aVar : string +>"" : string /** this is multiline comment * All these variables are of number type */ var anotherAnotherVariable = 70; /* these are multiple trailing comments */ /* multiple trailing comments */ >anotherAnotherVariable : number +>70 : number /** Triple slash multiline comment*/ /** another line in the comment*/ /** comment line 2*/ var x = 70; /* multiline trailing comment >x : number +>70 : number this is multiline trailing comment */ /** Triple slash comment on the assignement shouldnt be in .d.ts file*/ @@ -34,10 +39,12 @@ x = myVariable; /** jsdocstyle comment - only this comment should be in .d.ts file*/ var n = 30; >n : number +>30 : number /** var deckaration with comment on type as well*/ var y = /** value comment */ 20; >y : number +>20 : number /// var deckaration with comment on type as well var yy = @@ -45,6 +52,7 @@ var yy = /// value comment 20; +>20 : number /** comment2 */ var z = /** lambda comment */ (x: number, y: number) => x + y; diff --git a/tests/baselines/reference/commentsVariableStatement1.types b/tests/baselines/reference/commentsVariableStatement1.types index 7717be4a2a1..4bb6753db8a 100644 --- a/tests/baselines/reference/commentsVariableStatement1.types +++ b/tests/baselines/reference/commentsVariableStatement1.types @@ -3,4 +3,5 @@ /** Comment */ var v = 1; >v : number +>1 : number diff --git a/tests/baselines/reference/commentsdoNotEmitComments.types b/tests/baselines/reference/commentsdoNotEmitComments.types index bbe3a685ca1..60e130a3fc4 100644 --- a/tests/baselines/reference/commentsdoNotEmitComments.types +++ b/tests/baselines/reference/commentsdoNotEmitComments.types @@ -3,6 +3,7 @@ /** Variable comments*/ var myVariable = 10; >myVariable : number +>10 : number /** function comments*/ function foo(/** parameter comment*/p: number) { @@ -17,6 +18,7 @@ var fooVar: () => void; foo(50); >foo(50) : void >foo : (p: number) => void +>50 : number fooVar(); >fooVar() : void @@ -33,6 +35,7 @@ class c { /** property comment */ public b = 10; >b : number +>10 : number /** function comment */ public myFoo() { diff --git a/tests/baselines/reference/commentsemitComments.types b/tests/baselines/reference/commentsemitComments.types index b87ef5ad6fd..cb142216445 100644 --- a/tests/baselines/reference/commentsemitComments.types +++ b/tests/baselines/reference/commentsemitComments.types @@ -3,6 +3,7 @@ /** Variable comments*/ var myVariable = 10; >myVariable : number +>10 : number /** function comments*/ function foo(/** parameter comment*/p: number) { @@ -17,6 +18,7 @@ var fooVar: () => void; foo(50); >foo(50) : void >foo : (p: number) => void +>50 : number fooVar(); >fooVar() : void @@ -33,6 +35,7 @@ class c { /** property comment */ public b = 10; >b : number +>10 : number /** function comment */ public myFoo() { diff --git a/tests/baselines/reference/commonJSImportAsPrimaryExpression.types b/tests/baselines/reference/commonJSImportAsPrimaryExpression.types index 0d2e96afaa2..01d96b31fc7 100644 --- a/tests/baselines/reference/commonJSImportAsPrimaryExpression.types +++ b/tests/baselines/reference/commonJSImportAsPrimaryExpression.types @@ -18,8 +18,10 @@ export class C1 { m1 = 42; >m1 : number +>42 : number static s1 = true; >s1 : boolean +>true : boolean } diff --git a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.types b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.types index bde0cb02b1e..4f3b58768c6 100644 --- a/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.types +++ b/tests/baselines/reference/commonJSImportNotAsPrimaryExpression.types @@ -23,9 +23,12 @@ var x: foo.C1 = <{m1: number}>{}; var y: typeof foo.C1.s1 = false; >y : boolean +>foo.C1.s1 : boolean +>foo.C1 : typeof foo.C1 >foo : typeof foo >C1 : typeof foo.C1 >s1 : boolean +>false : boolean var z: foo.M1.I2; >z : f.I2 @@ -38,6 +41,7 @@ var e: number = 0; >0 : foo.E1 >foo : unknown >E1 : foo.E1 +>0 : number === tests/cases/conformance/externalModules/foo_0.ts === export class C1 { @@ -45,9 +49,11 @@ export class C1 { m1 = 42; >m1 : number +>42 : number static s1 = true; >s1 : boolean +>true : boolean } export interface I1 { diff --git a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types index 02316f94e54..7f202c38d3a 100644 --- a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types +++ b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types @@ -23,6 +23,7 @@ class A1 { >a : string return null; +>null : null } } class B1 { @@ -49,6 +50,7 @@ class B1 { >b : string return null; +>null : null } } @@ -63,6 +65,7 @@ class Base { >b : string return null; +>null : null } } class A2 extends Base { } diff --git a/tests/baselines/reference/comparisonOperatorWithIdenticalPrimitiveType.types b/tests/baselines/reference/comparisonOperatorWithIdenticalPrimitiveType.types index 8c823072ac3..a21af43e9c7 100644 --- a/tests/baselines/reference/comparisonOperatorWithIdenticalPrimitiveType.types +++ b/tests/baselines/reference/comparisonOperatorWithIdenticalPrimitiveType.types @@ -55,6 +55,8 @@ var ra5 = e < e; var ra6 = null < null; >ra6 : boolean >null < null : boolean +>null : null +>null : null var ra7 = undefined < undefined; >ra7 : boolean @@ -96,6 +98,8 @@ var rb5 = e > e; var rb6 = null > null; >rb6 : boolean >null > null : boolean +>null : null +>null : null var rb7 = undefined > undefined; >rb7 : boolean @@ -137,6 +141,8 @@ var rc5 = e <= e; var rc6 = null <= null; >rc6 : boolean >null <= null : boolean +>null : null +>null : null var rc7 = undefined <= undefined; >rc7 : boolean @@ -178,6 +184,8 @@ var rd5 = e >= e; var rd6 = null >= null; >rd6 : boolean >null >= null : boolean +>null : null +>null : null var rd7 = undefined >= undefined; >rd7 : boolean @@ -219,6 +227,8 @@ var re5 = e == e; var re6 = null == null; >re6 : boolean >null == null : boolean +>null : null +>null : null var re7 = undefined == undefined; >re7 : boolean @@ -260,6 +270,8 @@ var rf5 = e != e; var rf6 = null != null; >rf6 : boolean >null != null : boolean +>null : null +>null : null var rf7 = undefined != undefined; >rf7 : boolean @@ -301,6 +313,8 @@ var rg5 = e === e; var rg6 = null === null; >rg6 : boolean >null === null : boolean +>null : null +>null : null var rg7 = undefined === undefined; >rg7 : boolean @@ -342,6 +356,8 @@ var rh5 = e !== e; var rh6 = null !== null; >rh6 : boolean >null !== null : boolean +>null : null +>null : null var rh7 = undefined !== undefined; >rh7 : boolean diff --git a/tests/baselines/reference/comparisonOperatorWithOneOperandIsNull.types b/tests/baselines/reference/comparisonOperatorWithOneOperandIsNull.types index d1b30eb7f6a..12d9235d44b 100644 --- a/tests/baselines/reference/comparisonOperatorWithOneOperandIsNull.types +++ b/tests/baselines/reference/comparisonOperatorWithOneOperandIsNull.types @@ -15,80 +15,96 @@ function foo(t: T) { >foo_r1 : boolean >t < null : boolean >t : T +>null : null var foo_r2 = t > null; >foo_r2 : boolean >t > null : boolean >t : T +>null : null var foo_r3 = t <= null; >foo_r3 : boolean >t <= null : boolean >t : T +>null : null var foo_r4 = t >= null; >foo_r4 : boolean >t >= null : boolean >t : T +>null : null var foo_r5 = t == null; >foo_r5 : boolean >t == null : boolean >t : T +>null : null var foo_r6 = t != null; >foo_r6 : boolean >t != null : boolean >t : T +>null : null var foo_r7 = t === null; >foo_r7 : boolean >t === null : boolean >t : T +>null : null var foo_r8 = t !== null; >foo_r8 : boolean >t !== null : boolean >t : T +>null : null var foo_r1 = null < t; >foo_r1 : boolean >null < t : boolean +>null : null >t : T var foo_r2 = null > t; >foo_r2 : boolean >null > t : boolean +>null : null >t : T var foo_r3 = null <= t; >foo_r3 : boolean >null <= t : boolean +>null : null >t : T var foo_r4 = null >= t; >foo_r4 : boolean >null >= t : boolean +>null : null >t : T var foo_r5 = null == t; >foo_r5 : boolean >null == t : boolean +>null : null >t : T var foo_r6 = null != t; >foo_r6 : boolean >null != t : boolean +>null : null >t : T var foo_r7 = null === t; >foo_r7 : boolean >null === t : boolean +>null : null >t : T var foo_r8 = null !== t; >foo_r8 : boolean >null !== t : boolean +>null : null >t : T } @@ -118,567 +134,679 @@ var g: string[]; var r1a1 = null < a; >r1a1 : boolean >null < a : boolean +>null : null >a : boolean var r1a2 = null < b; >r1a2 : boolean >null < b : boolean +>null : null >b : number var r1a3 = null < c; >r1a3 : boolean >null < c : boolean +>null : null >c : string var r1a4 = null < d; >r1a4 : boolean >null < d : boolean +>null : null >d : void var r1a5 = null < e; >r1a5 : boolean >null < e : boolean +>null : null >e : E var r1a6 = null < f; >r1a6 : boolean >null < f : boolean +>null : null >f : {} var r1a7 = null < g; >r1a7 : boolean >null < g : boolean +>null : null >g : string[] var r1b1 = a < null; >r1b1 : boolean >a < null : boolean >a : boolean +>null : null var r1b2 = b < null; >r1b2 : boolean >b < null : boolean >b : number +>null : null var r1b3 = c < null; >r1b3 : boolean >c < null : boolean >c : string +>null : null var r1b4 = d < null; >r1b4 : boolean >d < null : boolean >d : void +>null : null var r1b5 = e < null; >r1b5 : boolean >e < null : boolean >e : E +>null : null var r1b6 = f < null; >r1b6 : boolean >f < null : boolean >f : {} +>null : null var r1b7 = g < null; >r1b7 : boolean >g < null : boolean >g : string[] +>null : null // operator > var r2a1 = null > a; >r2a1 : boolean >null > a : boolean +>null : null >a : boolean var r2a2 = null > b; >r2a2 : boolean >null > b : boolean +>null : null >b : number var r2a3 = null > c; >r2a3 : boolean >null > c : boolean +>null : null >c : string var r2a4 = null > d; >r2a4 : boolean >null > d : boolean +>null : null >d : void var r2a5 = null > e; >r2a5 : boolean >null > e : boolean +>null : null >e : E var r2a6 = null > f; >r2a6 : boolean >null > f : boolean +>null : null >f : {} var r2a7 = null > g; >r2a7 : boolean >null > g : boolean +>null : null >g : string[] var r2b1 = a > null; >r2b1 : boolean >a > null : boolean >a : boolean +>null : null var r2b2 = b > null; >r2b2 : boolean >b > null : boolean >b : number +>null : null var r2b3 = c > null; >r2b3 : boolean >c > null : boolean >c : string +>null : null var r2b4 = d > null; >r2b4 : boolean >d > null : boolean >d : void +>null : null var r2b5 = e > null; >r2b5 : boolean >e > null : boolean >e : E +>null : null var r2b6 = f > null; >r2b6 : boolean >f > null : boolean >f : {} +>null : null var r2b7 = g > null; >r2b7 : boolean >g > null : boolean >g : string[] +>null : null // operator <= var r3a1 = null <= a; >r3a1 : boolean >null <= a : boolean +>null : null >a : boolean var r3a2 = null <= b; >r3a2 : boolean >null <= b : boolean +>null : null >b : number var r3a3 = null <= c; >r3a3 : boolean >null <= c : boolean +>null : null >c : string var r3a4 = null <= d; >r3a4 : boolean >null <= d : boolean +>null : null >d : void var r3a5 = null <= e; >r3a5 : boolean >null <= e : boolean +>null : null >e : E var r3a6 = null <= f; >r3a6 : boolean >null <= f : boolean +>null : null >f : {} var r3a7 = null <= g; >r3a7 : boolean >null <= g : boolean +>null : null >g : string[] var r3b1 = a <= null; >r3b1 : boolean >a <= null : boolean >a : boolean +>null : null var r3b2 = b <= null; >r3b2 : boolean >b <= null : boolean >b : number +>null : null var r3b3 = c <= null; >r3b3 : boolean >c <= null : boolean >c : string +>null : null var r3b4 = d <= null; >r3b4 : boolean >d <= null : boolean >d : void +>null : null var r3b5 = e <= null; >r3b5 : boolean >e <= null : boolean >e : E +>null : null var r3b6 = f <= null; >r3b6 : boolean >f <= null : boolean >f : {} +>null : null var r3b7 = g <= null; >r3b7 : boolean >g <= null : boolean >g : string[] +>null : null // operator >= var r4a1 = null >= a; >r4a1 : boolean >null >= a : boolean +>null : null >a : boolean var r4a2 = null >= b; >r4a2 : boolean >null >= b : boolean +>null : null >b : number var r4a3 = null >= c; >r4a3 : boolean >null >= c : boolean +>null : null >c : string var r4a4 = null >= d; >r4a4 : boolean >null >= d : boolean +>null : null >d : void var r4a5 = null >= e; >r4a5 : boolean >null >= e : boolean +>null : null >e : E var r4a6 = null >= f; >r4a6 : boolean >null >= f : boolean +>null : null >f : {} var r4a7 = null >= g; >r4a7 : boolean >null >= g : boolean +>null : null >g : string[] var r4b1 = a >= null; >r4b1 : boolean >a >= null : boolean >a : boolean +>null : null var r4b2 = b >= null; >r4b2 : boolean >b >= null : boolean >b : number +>null : null var r4b3 = c >= null; >r4b3 : boolean >c >= null : boolean >c : string +>null : null var r4b4 = d >= null; >r4b4 : boolean >d >= null : boolean >d : void +>null : null var r4b5 = e >= null; >r4b5 : boolean >e >= null : boolean >e : E +>null : null var r4b6 = f >= null; >r4b6 : boolean >f >= null : boolean >f : {} +>null : null var r4b7 = g >= null; >r4b7 : boolean >g >= null : boolean >g : string[] +>null : null // operator == var r5a1 = null == a; >r5a1 : boolean >null == a : boolean +>null : null >a : boolean var r5a2 = null == b; >r5a2 : boolean >null == b : boolean +>null : null >b : number var r5a3 = null == c; >r5a3 : boolean >null == c : boolean +>null : null >c : string var r5a4 = null == d; >r5a4 : boolean >null == d : boolean +>null : null >d : void var r5a5 = null == e; >r5a5 : boolean >null == e : boolean +>null : null >e : E var r5a6 = null == f; >r5a6 : boolean >null == f : boolean +>null : null >f : {} var r5a7 = null == g; >r5a7 : boolean >null == g : boolean +>null : null >g : string[] var r5b1 = a == null; >r5b1 : boolean >a == null : boolean >a : boolean +>null : null var r5b2 = b == null; >r5b2 : boolean >b == null : boolean >b : number +>null : null var r5b3 = c == null; >r5b3 : boolean >c == null : boolean >c : string +>null : null var r5b4 = d == null; >r5b4 : boolean >d == null : boolean >d : void +>null : null var r5b5 = e == null; >r5b5 : boolean >e == null : boolean >e : E +>null : null var r5b6 = f == null; >r5b6 : boolean >f == null : boolean >f : {} +>null : null var r5b7 = g == null; >r5b7 : boolean >g == null : boolean >g : string[] +>null : null // operator != var r6a1 = null != a; >r6a1 : boolean >null != a : boolean +>null : null >a : boolean var r6a2 = null != b; >r6a2 : boolean >null != b : boolean +>null : null >b : number var r6a3 = null != c; >r6a3 : boolean >null != c : boolean +>null : null >c : string var r6a4 = null != d; >r6a4 : boolean >null != d : boolean +>null : null >d : void var r6a5 = null != e; >r6a5 : boolean >null != e : boolean +>null : null >e : E var r6a6 = null != f; >r6a6 : boolean >null != f : boolean +>null : null >f : {} var r6a7 = null != g; >r6a7 : boolean >null != g : boolean +>null : null >g : string[] var r6b1 = a != null; >r6b1 : boolean >a != null : boolean >a : boolean +>null : null var r6b2 = b != null; >r6b2 : boolean >b != null : boolean >b : number +>null : null var r6b3 = c != null; >r6b3 : boolean >c != null : boolean >c : string +>null : null var r6b4 = d != null; >r6b4 : boolean >d != null : boolean >d : void +>null : null var r6b5 = e != null; >r6b5 : boolean >e != null : boolean >e : E +>null : null var r6b6 = f != null; >r6b6 : boolean >f != null : boolean >f : {} +>null : null var r6b7 = g != null; >r6b7 : boolean >g != null : boolean >g : string[] +>null : null // operator === var r7a1 = null === a; >r7a1 : boolean >null === a : boolean +>null : null >a : boolean var r7a2 = null === b; >r7a2 : boolean >null === b : boolean +>null : null >b : number var r7a3 = null === c; >r7a3 : boolean >null === c : boolean +>null : null >c : string var r7a4 = null === d; >r7a4 : boolean >null === d : boolean +>null : null >d : void var r7a5 = null === e; >r7a5 : boolean >null === e : boolean +>null : null >e : E var r7a6 = null === f; >r7a6 : boolean >null === f : boolean +>null : null >f : {} var r7a7 = null === g; >r7a7 : boolean >null === g : boolean +>null : null >g : string[] var r7b1 = a === null; >r7b1 : boolean >a === null : boolean >a : boolean +>null : null var r7b2 = b === null; >r7b2 : boolean >b === null : boolean >b : number +>null : null var r7b3 = c === null; >r7b3 : boolean >c === null : boolean >c : string +>null : null var r7b4 = d === null; >r7b4 : boolean >d === null : boolean >d : void +>null : null var r7b5 = e === null; >r7b5 : boolean >e === null : boolean >e : E +>null : null var r7b6 = f === null; >r7b6 : boolean >f === null : boolean >f : {} +>null : null var r7b7 = g === null; >r7b7 : boolean >g === null : boolean >g : string[] +>null : null // operator !== var r8a1 = null !== a; >r8a1 : boolean >null !== a : boolean +>null : null >a : boolean var r8a2 = null !== b; >r8a2 : boolean >null !== b : boolean +>null : null >b : number var r8a3 = null !== c; >r8a3 : boolean >null !== c : boolean +>null : null >c : string var r8a4 = null !== d; >r8a4 : boolean >null !== d : boolean +>null : null >d : void var r8a5 = null !== e; >r8a5 : boolean >null !== e : boolean +>null : null >e : E var r8a6 = null !== f; >r8a6 : boolean >null !== f : boolean +>null : null >f : {} var r8a7 = null !== g; >r8a7 : boolean >null !== g : boolean +>null : null >g : string[] var r8b1 = a !== null; >r8b1 : boolean >a !== null : boolean >a : boolean +>null : null var r8b2 = b !== null; >r8b2 : boolean >b !== null : boolean >b : number +>null : null var r8b3 = c !== null; >r8b3 : boolean >c !== null : boolean >c : string +>null : null var r8b4 = d !== null; >r8b4 : boolean >d !== null : boolean >d : void +>null : null var r8b5 = e !== null; >r8b5 : boolean >e !== null : boolean >e : E +>null : null var r8b6 = f !== null; >r8b6 : boolean >f !== null : boolean >f : {} +>null : null var r8b7 = g !== null; >r8b7 : boolean >g !== null : boolean >g : string[] +>null : null diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.types b/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.types index 2dfe5913a24..67077683d87 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeEnumAndNumber.types @@ -47,10 +47,12 @@ var ra5 = E.a < 0; >E.a : E >E : typeof E >a : E +>0 : number var ra6 = 0 < E.a; >ra6 : boolean >0 < E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -90,10 +92,12 @@ var rb5 = E.a > 0; >E.a : E >E : typeof E >a : E +>0 : number var rb6 = 0 > E.a; >rb6 : boolean >0 > E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -133,10 +137,12 @@ var rc5 = E.a <= 0; >E.a : E >E : typeof E >a : E +>0 : number var rc6 = 0 <= E.a; >rc6 : boolean >0 <= E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -176,10 +182,12 @@ var rd5 = E.a >= 0; >E.a : E >E : typeof E >a : E +>0 : number var rd6 = 0 >= E.a; >rd6 : boolean >0 >= E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -219,10 +227,12 @@ var re5 = E.a == 0; >E.a : E >E : typeof E >a : E +>0 : number var re6 = 0 == E.a; >re6 : boolean >0 == E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -262,10 +272,12 @@ var rf5 = E.a != 0; >E.a : E >E : typeof E >a : E +>0 : number var rf6 = 0 != E.a; >rf6 : boolean >0 != E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -305,10 +317,12 @@ var rg5 = E.a === 0; >E.a : E >E : typeof E >a : E +>0 : number var rg6 = 0 === E.a; >rg6 : boolean >0 === E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E @@ -348,10 +362,12 @@ var rh5 = E.a !== 0; >E.a : E >E : typeof E >a : E +>0 : number var rh6 = 0 !== E.a; >rh6 : boolean >0 !== E.a : boolean +>0 : number >E.a : E >E : typeof E >a : E diff --git a/tests/baselines/reference/complexClassRelationships.types b/tests/baselines/reference/complexClassRelationships.types index 69bee9caade..43d0232e30a 100644 --- a/tests/baselines/reference/complexClassRelationships.types +++ b/tests/baselines/reference/complexClassRelationships.types @@ -51,6 +51,7 @@ class Thing { public get Components(): ComponentCollection { return null } >Components : ComponentCollection >ComponentCollection : ComponentCollection +>null : null } class ComponentCollection { diff --git a/tests/baselines/reference/compositeGenericFunction.types b/tests/baselines/reference/compositeGenericFunction.types index 421b7bbe514..1957c3bb62d 100644 --- a/tests/baselines/reference/compositeGenericFunction.types +++ b/tests/baselines/reference/compositeGenericFunction.types @@ -13,6 +13,7 @@ function h(func: (x: number) => R): R { return null; } >x : number >R : R >R : R +>null : null var z: number = h(f); >z : number diff --git a/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.types b/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.types index 7b776389335..e40422450b4 100644 --- a/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.types +++ b/tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.types @@ -26,14 +26,17 @@ x1 += b; x1 += true; >x1 += true : any >x1 : any +>true : boolean x1 += 0; >x1 += 0 : any >x1 : any +>0 : number x1 += ''; >x1 += '' : string >x1 : any +>'' : string x1 += E.a; >x1 += E.a : any @@ -50,6 +53,7 @@ x1 += {}; x1 += null; >x1 += null : any >x1 : any +>null : null x1 += undefined; >x1 += undefined : any @@ -72,14 +76,17 @@ x2 += b; x2 += true; >x2 += true : string >x2 : string +>true : boolean x2 += 0; >x2 += 0 : string >x2 : string +>0 : number x2 += ''; >x2 += '' : string >x2 : string +>'' : string x2 += E.a; >x2 += E.a : string @@ -96,6 +103,7 @@ x2 += {}; x2 += null; >x2 += null : string >x2 : string +>null : null x2 += undefined; >x2 += undefined : string @@ -113,6 +121,7 @@ x3 += a; x3 += 0; >x3 += 0 : number >x3 : number +>0 : number x3 += E.a; >x3 += E.a : number @@ -124,6 +133,7 @@ x3 += E.a; x3 += null; >x3 += null : number >x3 : number +>null : null x3 += undefined; >x3 += undefined : number @@ -142,6 +152,7 @@ x4 += a; x4 += 0; >x4 += 0 : number >x4 : E +>0 : number x4 += E.a; >x4 += E.a : number @@ -153,6 +164,7 @@ x4 += E.a; x4 += null; >x4 += null : number >x4 : E +>null : null x4 += undefined; >x4 += undefined : number @@ -178,6 +190,7 @@ x6 += a; x6 += ''; >x6 += '' : string >x6 : {} +>'' : string var x7: void; >x7 : void diff --git a/tests/baselines/reference/compoundArithmeticAssignmentLHSCanBeAssigned.types b/tests/baselines/reference/compoundArithmeticAssignmentLHSCanBeAssigned.types index c4345b97413..3b346bac53b 100644 --- a/tests/baselines/reference/compoundArithmeticAssignmentLHSCanBeAssigned.types +++ b/tests/baselines/reference/compoundArithmeticAssignmentLHSCanBeAssigned.types @@ -36,6 +36,7 @@ x1 *= c; x1 *= null; >x1 *= null : number >x1 : any +>null : null x1 *= undefined; >x1 *= undefined : number @@ -63,6 +64,7 @@ x2 *= c; x2 *= null; >x2 *= null : number >x2 : number +>null : null x2 *= undefined; >x2 *= undefined : number @@ -91,6 +93,7 @@ x3 *= c; x3 *= null; >x3 *= null : number >x3 : E +>null : null x3 *= undefined; >x3 *= undefined : number diff --git a/tests/baselines/reference/compoundAssignmentLHSIsReference.types b/tests/baselines/reference/compoundAssignmentLHSIsReference.types index e30cf19f3e3..12c601d377f 100644 --- a/tests/baselines/reference/compoundAssignmentLHSIsReference.types +++ b/tests/baselines/reference/compoundAssignmentLHSIsReference.types @@ -54,12 +54,14 @@ x3['a'] *= value; >x3['a'] *= value : number >x3['a'] : number >x3 : { a: number; } +>'a' : string >value : any x3['a'] += value; >x3['a'] += value : any >x3['a'] : number >x3 : { a: number; } +>'a' : string >value : any // parentheses, the contained expression is reference @@ -113,6 +115,7 @@ function fn2(x4: number) { >(x3['a']) : number >x3['a'] : number >x3 : { a: number; } +>'a' : string >value : any (x3['a']) += value; @@ -120,5 +123,6 @@ function fn2(x4: number) { >(x3['a']) : number >x3['a'] : number >x3 : { a: number; } +>'a' : string >value : any diff --git a/tests/baselines/reference/compoundVarDecl1.types b/tests/baselines/reference/compoundVarDecl1.types index e9a04bff9b2..40f12ea52c0 100644 --- a/tests/baselines/reference/compoundVarDecl1.types +++ b/tests/baselines/reference/compoundVarDecl1.types @@ -2,13 +2,18 @@ module Foo { var a = 1, b = 1; a = b + 2; } >Foo : typeof Foo >a : number +>1 : number >b : number +>1 : number >a = b + 2 : number >a : number >b + 2 : number >b : number +>2 : number var foo = 4, bar = 5; >foo : number +>4 : number >bar : number +>5 : number diff --git a/tests/baselines/reference/computedPropertyNames10_ES5.types b/tests/baselines/reference/computedPropertyNames10_ES5.types index cb49d5c3384..87648c1ed80 100644 --- a/tests/baselines/reference/computedPropertyNames10_ES5.types +++ b/tests/baselines/reference/computedPropertyNames10_ES5.types @@ -33,14 +33,22 @@ var v = { >s : string [""]() { }, +>"" : string + [0]() { }, +>0 : number + [a]() { }, >a : any [true]() { }, >true : any +>true : boolean [`hello bye`]() { }, +>`hello bye` : string + [`hello ${a} bye`]() { } +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames10_ES6.types b/tests/baselines/reference/computedPropertyNames10_ES6.types index 5dcc4783b5e..996dfc99fe9 100644 --- a/tests/baselines/reference/computedPropertyNames10_ES6.types +++ b/tests/baselines/reference/computedPropertyNames10_ES6.types @@ -33,14 +33,22 @@ var v = { >s : string [""]() { }, +>"" : string + [0]() { }, +>0 : number + [a]() { }, >a : any [true]() { }, >true : any +>true : boolean [`hello bye`]() { }, +>`hello bye` : string + [`hello ${a} bye`]() { } +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames11_ES5.types b/tests/baselines/reference/computedPropertyNames11_ES5.types index ed3c51302b7..c3c59c2eb9c 100644 --- a/tests/baselines/reference/computedPropertyNames11_ES5.types +++ b/tests/baselines/reference/computedPropertyNames11_ES5.types @@ -14,6 +14,7 @@ var v = { get [s]() { return 0; }, >s : string +>0 : number set [n](v) { }, >n : number @@ -23,6 +24,7 @@ var v = { >s + s : string >s : string >s : string +>0 : number set [s + n](v) { }, >s + n : string @@ -33,21 +35,31 @@ var v = { get [+s]() { return 0; }, >+s : number >s : string +>0 : number set [""](v) { }, +>"" : string >v : any get [0]() { return 0; }, +>0 : number +>0 : number + set [a](v) { }, >a : any >v : any get [true]() { return 0; }, >true : any +>true : boolean +>0 : number set [`hello bye`](v) { }, +>`hello bye` : string >v : any get [`hello ${a} bye`]() { return 0; } +>`hello ${a} bye` : string >a : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames11_ES6.types b/tests/baselines/reference/computedPropertyNames11_ES6.types index a0b9e6eb99e..ef11511baae 100644 --- a/tests/baselines/reference/computedPropertyNames11_ES6.types +++ b/tests/baselines/reference/computedPropertyNames11_ES6.types @@ -14,6 +14,7 @@ var v = { get [s]() { return 0; }, >s : string +>0 : number set [n](v) { }, >n : number @@ -23,6 +24,7 @@ var v = { >s + s : string >s : string >s : string +>0 : number set [s + n](v) { }, >s + n : string @@ -33,21 +35,31 @@ var v = { get [+s]() { return 0; }, >+s : number >s : string +>0 : number set [""](v) { }, +>"" : string >v : any get [0]() { return 0; }, +>0 : number +>0 : number + set [a](v) { }, >a : any >v : any get [true]() { return 0; }, >true : any +>true : boolean +>0 : number set [`hello bye`](v) { }, +>`hello bye` : string >v : any get [`hello ${a} bye`]() { return 0; } +>`hello ${a} bye` : string >a : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames13_ES5.types b/tests/baselines/reference/computedPropertyNames13_ES5.types index ff98a3189a7..59694df32a7 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES5.types +++ b/tests/baselines/reference/computedPropertyNames13_ES5.types @@ -32,14 +32,22 @@ class C { >s : string static [""]() { } +>"" : string + [0]() { } +>0 : number + [a]() { } >a : any static [true]() { } >true : any +>true : boolean [`hello bye`]() { } +>`hello bye` : string + static [`hello ${a} bye`]() { } +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames13_ES6.types b/tests/baselines/reference/computedPropertyNames13_ES6.types index 78b2f3afc4a..a2d0f14e72c 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES6.types +++ b/tests/baselines/reference/computedPropertyNames13_ES6.types @@ -32,14 +32,22 @@ class C { >s : string static [""]() { } +>"" : string + [0]() { } +>0 : number + [a]() { } >a : any static [true]() { } >true : any +>true : boolean [`hello bye`]() { } +>`hello bye` : string + static [`hello ${a} bye`]() { } +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames16_ES5.types b/tests/baselines/reference/computedPropertyNames16_ES5.types index 3914093c766..ab7ea23cffe 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES5.types +++ b/tests/baselines/reference/computedPropertyNames16_ES5.types @@ -13,6 +13,7 @@ class C { get [s]() { return 0;} >s : string +>0 : number set [n](v) { } >n : number @@ -22,6 +23,7 @@ class C { >s + s : string >s : string >s : string +>0 : number set [s + n](v) { } >s + n : string @@ -32,21 +34,31 @@ class C { get [+s]() { return 0; } >+s : number >s : string +>0 : number static set [""](v) { } +>"" : string >v : any get [0]() { return 0; } +>0 : number +>0 : number + set [a](v) { } >a : any >v : any static get [true]() { return 0; } >true : any +>true : boolean +>0 : number set [`hello bye`](v) { } +>`hello bye` : string >v : any get [`hello ${a} bye`]() { return 0; } +>`hello ${a} bye` : string >a : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames16_ES6.types b/tests/baselines/reference/computedPropertyNames16_ES6.types index 6503c75037d..c7286e6640e 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES6.types +++ b/tests/baselines/reference/computedPropertyNames16_ES6.types @@ -13,6 +13,7 @@ class C { get [s]() { return 0;} >s : string +>0 : number set [n](v) { } >n : number @@ -22,6 +23,7 @@ class C { >s + s : string >s : string >s : string +>0 : number set [s + n](v) { } >s + n : string @@ -32,21 +34,31 @@ class C { get [+s]() { return 0; } >+s : number >s : string +>0 : number static set [""](v) { } +>"" : string >v : any get [0]() { return 0; } +>0 : number +>0 : number + set [a](v) { } >a : any >v : any static get [true]() { return 0; } >true : any +>true : boolean +>0 : number set [`hello bye`](v) { } +>`hello bye` : string >v : any get [`hello ${a} bye`]() { return 0; } +>`hello ${a} bye` : string >a : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames18_ES5.types b/tests/baselines/reference/computedPropertyNames18_ES5.types index 732de08e2d6..c60ab32d3f8 100644 --- a/tests/baselines/reference/computedPropertyNames18_ES5.types +++ b/tests/baselines/reference/computedPropertyNames18_ES5.types @@ -10,5 +10,6 @@ function foo() { >this.bar : any >this : any >bar : any +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames18_ES6.types b/tests/baselines/reference/computedPropertyNames18_ES6.types index af7081fa2ad..33a15b6c5a9 100644 --- a/tests/baselines/reference/computedPropertyNames18_ES6.types +++ b/tests/baselines/reference/computedPropertyNames18_ES6.types @@ -10,5 +10,6 @@ function foo() { >this.bar : any >this : any >bar : any +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames1_ES5.types b/tests/baselines/reference/computedPropertyNames1_ES5.types index 6627d53d1da..6c94c846f30 100644 --- a/tests/baselines/reference/computedPropertyNames1_ES5.types +++ b/tests/baselines/reference/computedPropertyNames1_ES5.types @@ -5,8 +5,13 @@ var v = { get [0 + 1]() { return 0 }, >0 + 1 : number +>0 : number +>1 : number +>0 : number set [0 + 1](v: string) { } //No error >0 + 1 : number +>0 : number +>1 : number >v : string } diff --git a/tests/baselines/reference/computedPropertyNames1_ES6.types b/tests/baselines/reference/computedPropertyNames1_ES6.types index 966cfef579d..95e5a011ea2 100644 --- a/tests/baselines/reference/computedPropertyNames1_ES6.types +++ b/tests/baselines/reference/computedPropertyNames1_ES6.types @@ -5,8 +5,13 @@ var v = { get [0 + 1]() { return 0 }, >0 + 1 : number +>0 : number +>1 : number +>0 : number set [0 + 1](v: string) { } //No error >0 + 1 : number +>0 : number +>1 : number >v : string } diff --git a/tests/baselines/reference/computedPropertyNames20_ES5.types b/tests/baselines/reference/computedPropertyNames20_ES5.types index eb2bbf34b7e..91cc2c42963 100644 --- a/tests/baselines/reference/computedPropertyNames20_ES5.types +++ b/tests/baselines/reference/computedPropertyNames20_ES5.types @@ -7,4 +7,5 @@ var obj = { >this.bar : any >this : any >bar : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames20_ES6.types b/tests/baselines/reference/computedPropertyNames20_ES6.types index 2280c7c4820..4ef6f675cce 100644 --- a/tests/baselines/reference/computedPropertyNames20_ES6.types +++ b/tests/baselines/reference/computedPropertyNames20_ES6.types @@ -7,4 +7,5 @@ var obj = { >this.bar : any >this : any >bar : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames22_ES5.types b/tests/baselines/reference/computedPropertyNames22_ES5.types index 7afeeb75fa3..d3008669b4d 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES5.types +++ b/tests/baselines/reference/computedPropertyNames22_ES5.types @@ -17,5 +17,6 @@ class C { }; return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames22_ES6.types b/tests/baselines/reference/computedPropertyNames22_ES6.types index b65f276881f..0936eab29ab 100644 --- a/tests/baselines/reference/computedPropertyNames22_ES6.types +++ b/tests/baselines/reference/computedPropertyNames22_ES6.types @@ -17,5 +17,6 @@ class C { }; return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames25_ES5.types b/tests/baselines/reference/computedPropertyNames25_ES5.types index 6f34ce35b44..6ca67cce410 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES5.types +++ b/tests/baselines/reference/computedPropertyNames25_ES5.types @@ -6,6 +6,7 @@ class Base { >bar : () => number return 0; +>0 : number } } class C extends Base { @@ -27,5 +28,6 @@ class C extends Base { }; return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames25_ES6.types b/tests/baselines/reference/computedPropertyNames25_ES6.types index c008a6173cf..1c093ebc59f 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES6.types +++ b/tests/baselines/reference/computedPropertyNames25_ES6.types @@ -6,6 +6,7 @@ class Base { >bar : () => number return 0; +>0 : number } } class C extends Base { @@ -27,5 +28,6 @@ class C extends Base { }; return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames28_ES5.types b/tests/baselines/reference/computedPropertyNames28_ES5.types index 278576ab1ca..273dcd426d8 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES5.types +++ b/tests/baselines/reference/computedPropertyNames28_ES5.types @@ -20,6 +20,7 @@ class C extends Base { >super(), "prop" : string >super() : void >super : typeof Base +>"prop" : string }; } diff --git a/tests/baselines/reference/computedPropertyNames28_ES6.types b/tests/baselines/reference/computedPropertyNames28_ES6.types index 842cdbd32e0..a34fb33f6c7 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES6.types +++ b/tests/baselines/reference/computedPropertyNames28_ES6.types @@ -20,6 +20,7 @@ class C extends Base { >super(), "prop" : string >super() : void >super : typeof Base +>"prop" : string }; } diff --git a/tests/baselines/reference/computedPropertyNames29_ES5.types b/tests/baselines/reference/computedPropertyNames29_ES5.types index e0da4b10da8..674343b3a1a 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES5.types +++ b/tests/baselines/reference/computedPropertyNames29_ES5.types @@ -21,5 +21,6 @@ class C { }; } return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames29_ES6.types b/tests/baselines/reference/computedPropertyNames29_ES6.types index d520418749e..52f06bb9d88 100644 --- a/tests/baselines/reference/computedPropertyNames29_ES6.types +++ b/tests/baselines/reference/computedPropertyNames29_ES6.types @@ -21,5 +21,6 @@ class C { }; } return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames31_ES5.types b/tests/baselines/reference/computedPropertyNames31_ES5.types index eb14b223ed3..6c0f2572a06 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES5.types +++ b/tests/baselines/reference/computedPropertyNames31_ES5.types @@ -6,6 +6,7 @@ class Base { >bar : () => number return 0; +>0 : number } } class C extends Base { @@ -31,5 +32,6 @@ class C extends Base { }; } return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames31_ES6.types b/tests/baselines/reference/computedPropertyNames31_ES6.types index 9d835a1fac1..eaddc036812 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES6.types +++ b/tests/baselines/reference/computedPropertyNames31_ES6.types @@ -6,6 +6,7 @@ class Base { >bar : () => number return 0; +>0 : number } } class C extends Base { @@ -31,5 +32,6 @@ class C extends Base { }; } return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames33_ES5.types b/tests/baselines/reference/computedPropertyNames33_ES5.types index a0d99ec8615..f44ac3ca769 100644 --- a/tests/baselines/reference/computedPropertyNames33_ES5.types +++ b/tests/baselines/reference/computedPropertyNames33_ES5.types @@ -2,6 +2,7 @@ function foo() { return '' } >foo : () => string >T : T +>'' : string class C { >C : C @@ -21,5 +22,6 @@ class C { }; return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames33_ES6.types b/tests/baselines/reference/computedPropertyNames33_ES6.types index 331bd2b3e09..3081337c8bb 100644 --- a/tests/baselines/reference/computedPropertyNames33_ES6.types +++ b/tests/baselines/reference/computedPropertyNames33_ES6.types @@ -2,6 +2,7 @@ function foo() { return '' } >foo : () => string >T : T +>'' : string class C { >C : C @@ -21,5 +22,6 @@ class C { }; return 0; +>0 : number } } diff --git a/tests/baselines/reference/computedPropertyNames37_ES5.types b/tests/baselines/reference/computedPropertyNames37_ES5.types index a12324003bf..21b68c7c12c 100644 --- a/tests/baselines/reference/computedPropertyNames37_ES5.types +++ b/tests/baselines/reference/computedPropertyNames37_ES5.types @@ -17,10 +17,12 @@ class C { // Computed properties get ["get1"]() { return new Foo } +>"get1" : string >new Foo : Foo >Foo : typeof Foo set ["set1"](p: Foo2) { } +>"set1" : string >p : Foo2 >Foo2 : Foo2 } diff --git a/tests/baselines/reference/computedPropertyNames37_ES6.types b/tests/baselines/reference/computedPropertyNames37_ES6.types index 288685f0e02..e436a54172b 100644 --- a/tests/baselines/reference/computedPropertyNames37_ES6.types +++ b/tests/baselines/reference/computedPropertyNames37_ES6.types @@ -17,10 +17,12 @@ class C { // Computed properties get ["get1"]() { return new Foo } +>"get1" : string >new Foo : Foo >Foo : typeof Foo set ["set1"](p: Foo2) { } +>"set1" : string >p : Foo2 >Foo2 : Foo2 } diff --git a/tests/baselines/reference/computedPropertyNames41_ES5.types b/tests/baselines/reference/computedPropertyNames41_ES5.types index aac087ee958..5aa7ae44404 100644 --- a/tests/baselines/reference/computedPropertyNames41_ES5.types +++ b/tests/baselines/reference/computedPropertyNames41_ES5.types @@ -17,6 +17,7 @@ class C { // Computed properties static [""]() { return new Foo } +>"" : string >new Foo : Foo >Foo : typeof Foo } diff --git a/tests/baselines/reference/computedPropertyNames41_ES6.types b/tests/baselines/reference/computedPropertyNames41_ES6.types index ffb3387d161..70bfcf12a75 100644 --- a/tests/baselines/reference/computedPropertyNames41_ES6.types +++ b/tests/baselines/reference/computedPropertyNames41_ES6.types @@ -17,6 +17,7 @@ class C { // Computed properties static [""]() { return new Foo } +>"" : string >new Foo : Foo >Foo : typeof Foo } diff --git a/tests/baselines/reference/computedPropertyNames46_ES5.types b/tests/baselines/reference/computedPropertyNames46_ES5.types index bdc2f2cf644..394b22bd904 100644 --- a/tests/baselines/reference/computedPropertyNames46_ES5.types +++ b/tests/baselines/reference/computedPropertyNames46_ES5.types @@ -5,5 +5,8 @@ var o = { ["" || 0]: 0 >"" || 0 : string | number +>"" : string +>0 : number +>0 : number }; diff --git a/tests/baselines/reference/computedPropertyNames46_ES6.types b/tests/baselines/reference/computedPropertyNames46_ES6.types index 7abb10f1ba5..864fd81321d 100644 --- a/tests/baselines/reference/computedPropertyNames46_ES6.types +++ b/tests/baselines/reference/computedPropertyNames46_ES6.types @@ -5,5 +5,8 @@ var o = { ["" || 0]: 0 >"" || 0 : string | number +>"" : string +>0 : number +>0 : number }; diff --git a/tests/baselines/reference/computedPropertyNames47_ES5.types b/tests/baselines/reference/computedPropertyNames47_ES5.types index c79f2b20946..6aa841ffd62 100644 --- a/tests/baselines/reference/computedPropertyNames47_ES5.types +++ b/tests/baselines/reference/computedPropertyNames47_ES5.types @@ -19,5 +19,6 @@ var o = { >E2.x : E2 >E2 : typeof E2 >x : E2 +>0 : number }; diff --git a/tests/baselines/reference/computedPropertyNames47_ES6.types b/tests/baselines/reference/computedPropertyNames47_ES6.types index 840d77754cf..f038b172ca1 100644 --- a/tests/baselines/reference/computedPropertyNames47_ES6.types +++ b/tests/baselines/reference/computedPropertyNames47_ES6.types @@ -19,5 +19,6 @@ var o = { >E2.x : E2 >E2 : typeof E2 >x : E2 +>0 : number }; diff --git a/tests/baselines/reference/computedPropertyNames48_ES5.types b/tests/baselines/reference/computedPropertyNames48_ES5.types index 3ff4c966e89..2b9131a11c8 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES5.types +++ b/tests/baselines/reference/computedPropertyNames48_ES5.types @@ -21,6 +21,7 @@ extractIndexer({ [a]: "" >a : any +>"" : string }); // Should return string @@ -33,6 +34,7 @@ extractIndexer({ >E.x : E >E : typeof E >x : E +>"" : string }); // Should return string @@ -43,5 +45,8 @@ extractIndexer({ ["" || 0]: "" >"" || 0 : string | number +>"" : string +>0 : number +>"" : string }); // Should return any (widened form of undefined) diff --git a/tests/baselines/reference/computedPropertyNames48_ES6.types b/tests/baselines/reference/computedPropertyNames48_ES6.types index e10f078d11f..2b803b19bd6 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES6.types +++ b/tests/baselines/reference/computedPropertyNames48_ES6.types @@ -21,6 +21,7 @@ extractIndexer({ [a]: "" >a : any +>"" : string }); // Should return string @@ -33,6 +34,7 @@ extractIndexer({ >E.x : E >E : typeof E >x : E +>"" : string }); // Should return string @@ -43,5 +45,8 @@ extractIndexer({ ["" || 0]: "" >"" || 0 : string | number +>"" : string +>0 : number +>"" : string }); // Should return any (widened form of undefined) diff --git a/tests/baselines/reference/computedPropertyNames4_ES5.types b/tests/baselines/reference/computedPropertyNames4_ES5.types index 7c26cae6444..51baca26586 100644 --- a/tests/baselines/reference/computedPropertyNames4_ES5.types +++ b/tests/baselines/reference/computedPropertyNames4_ES5.types @@ -14,6 +14,7 @@ var v = { [s]: 0, >s : string +>0 : number [n]: n, >n : number @@ -23,11 +24,13 @@ var v = { >s + s : string >s : string >s : string +>1 : number [s + n]: 2, >s + n : string >s : string >n : number +>2 : number [+s]: s, >+s : number @@ -35,14 +38,28 @@ var v = { >s : string [""]: 0, +>"" : string +>0 : number + [0]: 0, +>0 : number +>0 : number + [a]: 1, >a : any +>1 : number [true]: 0, >true : any +>true : boolean +>0 : number [`hello bye`]: 0, +>`hello bye` : string +>0 : number + [`hello ${a} bye`]: 0 +>`hello ${a} bye` : string >a : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames4_ES6.types b/tests/baselines/reference/computedPropertyNames4_ES6.types index 973dfbec3a5..05267049517 100644 --- a/tests/baselines/reference/computedPropertyNames4_ES6.types +++ b/tests/baselines/reference/computedPropertyNames4_ES6.types @@ -14,6 +14,7 @@ var v = { [s]: 0, >s : string +>0 : number [n]: n, >n : number @@ -23,11 +24,13 @@ var v = { >s + s : string >s : string >s : string +>1 : number [s + n]: 2, >s + n : string >s : string >n : number +>2 : number [+s]: s, >+s : number @@ -35,14 +38,28 @@ var v = { >s : string [""]: 0, +>"" : string +>0 : number + [0]: 0, +>0 : number +>0 : number + [a]: 1, >a : any +>1 : number [true]: 0, >true : any +>true : boolean +>0 : number [`hello bye`]: 0, +>`hello bye` : string +>0 : number + [`hello ${a} bye`]: 0 +>`hello ${a} bye` : string >a : any +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames7_ES5.types b/tests/baselines/reference/computedPropertyNames7_ES5.types index 209e07769c0..8ebd4d75668 100644 --- a/tests/baselines/reference/computedPropertyNames7_ES5.types +++ b/tests/baselines/reference/computedPropertyNames7_ES5.types @@ -13,4 +13,5 @@ var v = { >E.member : E >E : typeof E >member : E +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNames7_ES6.types b/tests/baselines/reference/computedPropertyNames7_ES6.types index 371176acc16..3a78b9c0ec6 100644 --- a/tests/baselines/reference/computedPropertyNames7_ES6.types +++ b/tests/baselines/reference/computedPropertyNames7_ES6.types @@ -13,4 +13,5 @@ var v = { >E.member : E >E : typeof E >member : E +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType1_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType1_ES5.types index ad7ddc30567..bea7267d7d1 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType1_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType1_ES5.types @@ -18,6 +18,8 @@ var o: I = { ["" + 0](y) { return y.length; }, >"" + 0 : string +>"" : string +>0 : number >y : string >y.length : number >y : string @@ -25,6 +27,8 @@ var o: I = { ["" + 1]: y => y.length >"" + 1 : string +>"" : string +>1 : number >y => y.length : (y: string) => number >y : string >y.length : number diff --git a/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.types index 44bc8a51113..c8d0be6e833 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType1_ES6.types @@ -18,6 +18,8 @@ var o: I = { ["" + 0](y) { return y.length; }, >"" + 0 : string +>"" : string +>0 : number >y : string >y.length : number >y : string @@ -25,6 +27,8 @@ var o: I = { ["" + 1]: y => y.length >"" + 1 : string +>"" : string +>1 : number >y => y.length : (y: string) => number >y : string >y.length : number diff --git a/tests/baselines/reference/computedPropertyNamesContextualType2_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType2_ES5.types index 0c1b9490abe..52de216b803 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType2_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType2_ES5.types @@ -18,6 +18,7 @@ var o: I = { [+"foo"](y) { return y.length; }, >+"foo" : number +>"foo" : string >y : string >y.length : number >y : string @@ -25,6 +26,7 @@ var o: I = { [+"bar"]: y => y.length >+"bar" : number +>"bar" : string >y => y.length : (y: string) => number >y : string >y.length : number diff --git a/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.types index 222004cf8e3..cbbe0edc6a1 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType2_ES6.types @@ -18,6 +18,7 @@ var o: I = { [+"foo"](y) { return y.length; }, >+"foo" : number +>"foo" : string >y : string >y.length : number >y : string @@ -25,6 +26,7 @@ var o: I = { [+"bar"]: y => y.length >+"bar" : number +>"bar" : string >y => y.length : (y: string) => number >y : string >y.length : number diff --git a/tests/baselines/reference/computedPropertyNamesContextualType3_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType3_ES5.types index 482d58c3ee0..5f647fb4c1b 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType3_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType3_ES5.types @@ -14,6 +14,7 @@ var o: I = { [+"foo"](y) { return y.length; }, >+"foo" : number +>"foo" : string >y : string >y.length : number >y : string @@ -21,6 +22,7 @@ var o: I = { [+"bar"]: y => y.length >+"bar" : number +>"bar" : string >y => y.length : (y: string) => number >y : string >y.length : number diff --git a/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.types index bc36ad8ae2c..e872df6f1b2 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType3_ES6.types @@ -14,6 +14,7 @@ var o: I = { [+"foo"](y) { return y.length; }, >+"foo" : number +>"foo" : string >y : string >y.length : number >y : string @@ -21,6 +22,7 @@ var o: I = { [+"bar"]: y => y.length >+"bar" : number +>"bar" : string >y => y.length : (y: string) => number >y : string >y.length : number diff --git a/tests/baselines/reference/computedPropertyNamesContextualType4_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType4_ES5.types index c1662397527..e5a57363ca0 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType4_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType4_ES5.types @@ -16,7 +16,13 @@ var o: I = { [""+"foo"]: "", >""+"foo" : string +>"" : string +>"foo" : string +>"" : string [""+"bar"]: 0 >""+"bar" : string +>"" : string +>"bar" : string +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType4_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType4_ES6.types index 82424f9410c..bdfa569752b 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType4_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType4_ES6.types @@ -16,7 +16,13 @@ var o: I = { [""+"foo"]: "", >""+"foo" : string +>"" : string +>"foo" : string +>"" : string [""+"bar"]: 0 >""+"bar" : string +>"" : string +>"bar" : string +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType5_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType5_ES5.types index bb382ca136e..e142fe937b9 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType5_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType5_ES5.types @@ -16,7 +16,11 @@ var o: I = { [+"foo"]: "", >+"foo" : number +>"foo" : string +>"" : string [+"bar"]: 0 >+"bar" : number +>"bar" : string +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType5_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType5_ES6.types index 6ab28f9583d..7b385b36770 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType5_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType5_ES6.types @@ -16,7 +16,11 @@ var o: I = { [+"foo"]: "", >+"foo" : number +>"foo" : string +>"" : string [+"bar"]: 0 >+"bar" : number +>"bar" : string +>0 : number } diff --git a/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types index 2e16c7cb140..52ff0c1001d 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types.pull b/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types.pull index ce7a4c0d026..d6c97b5db81 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types.pull +++ b/tests/baselines/reference/computedPropertyNamesContextualType6_ES5.types.pull @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types index 1684bfc573f..6998c9523cc 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types.pull b/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types.pull index 6722edacd64..72a1d5ba04f 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types.pull +++ b/tests/baselines/reference/computedPropertyNamesContextualType6_ES6.types.pull @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types b/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types index 80ba2b9224f..1845d145966 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types.pull b/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types.pull index 3511e913585..5674f6aa393 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types.pull +++ b/tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types.pull @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types b/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types index c9ed4437760..54d2afe4f61 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types.pull b/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types.pull index c548aed2bae..93558c075e7 100644 --- a/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types.pull +++ b/tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types.pull @@ -23,18 +23,27 @@ foo({ p: "", >p : string +>"" : string 0: () => { }, >() => { } : () => void ["hi" + "bye"]: true, >"hi" + "bye" : string +>"hi" : string +>"bye" : string +>true : boolean [0 + 1]: 0, >0 + 1 : number +>0 : number +>1 : number +>0 : number [+"hi"]: [0] >+"hi" : number +>"hi" : string >[0] : number[] +>0 : number }); diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES5.types b/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES5.types index a5fe3dc0fa1..a05d5556495 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES5.types @@ -4,11 +4,18 @@ class C { ["" + ""]() { } >"" + "" : string +>"" : string +>"" : string get ["" + ""]() { return 0; } >"" + "" : string +>"" : string +>"" : string +>0 : number set ["" + ""](x) { } >"" + "" : string +>"" : string +>"" : string >x : any } diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.types b/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.types index a48c85f8602..8b635956dcd 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit1_ES6.types @@ -4,11 +4,18 @@ class C { ["" + ""]() { } >"" + "" : string +>"" : string +>"" : string get ["" + ""]() { return 0; } >"" + "" : string +>"" : string +>"" : string +>0 : number set ["" + ""](x) { } >"" + "" : string +>"" : string +>"" : string >x : any } diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES5.types b/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES5.types index 949d82596c7..c49010b2c09 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES5.types @@ -4,11 +4,18 @@ class C { static ["" + ""]() { } >"" + "" : string +>"" : string +>"" : string static get ["" + ""]() { return 0; } >"" + "" : string +>"" : string +>"" : string +>0 : number static set ["" + ""](x) { } >"" + "" : string +>"" : string +>"" : string >x : any } diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.types b/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.types index eec55608a08..0b0083b9a1a 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit2_ES6.types @@ -4,11 +4,18 @@ class C { static ["" + ""]() { } >"" + "" : string +>"" : string +>"" : string static get ["" + ""]() { return 0; } >"" + "" : string +>"" : string +>"" : string +>0 : number static set ["" + ""](x) { } >"" + "" : string +>"" : string +>"" : string >x : any } diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES5.types b/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES5.types index 3f5a7355a20..62faa5c2716 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES5.types @@ -5,14 +5,24 @@ var v = { ["" + ""]: 0, >"" + "" : string +>"" : string +>"" : string +>0 : number ["" + ""]() { }, >"" + "" : string +>"" : string +>"" : string get ["" + ""]() { return 0; }, >"" + "" : string +>"" : string +>"" : string +>0 : number set ["" + ""](x) { } >"" + "" : string +>"" : string +>"" : string >x : any } diff --git a/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES6.types b/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES6.types index 10b70587e32..3eb313d2687 100644 --- a/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesDeclarationEmit5_ES6.types @@ -5,14 +5,24 @@ var v = { ["" + ""]: 0, >"" + "" : string +>"" : string +>"" : string +>0 : number ["" + ""]() { }, >"" + "" : string +>"" : string +>"" : string get ["" + ""]() { return 0; }, >"" + "" : string +>"" : string +>"" : string +>0 : number set ["" + ""](x) { } >"" + "" : string +>"" : string +>"" : string >x : any } diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.types b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.types index 1c57d97a7e8..7f467698a62 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES5.types @@ -3,6 +3,8 @@ class C { >C : C ["hello"]() { +>"hello" : string + debugger; } } diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.types b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.types index d5dc8a857a0..4a78685e8a9 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesSourceMap1_ES6.types @@ -3,6 +3,8 @@ class C { >C : C ["hello"]() { +>"hello" : string + debugger; } } diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.types b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.types index 1dcc49a8fae..9470aee8eb6 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.types +++ b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES5.types @@ -4,6 +4,8 @@ var v = { >{ ["hello"]() { debugger; }} : {} ["hello"]() { +>"hello" : string + debugger; } } diff --git a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES6.types b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES6.types index 9a1c71364a2..c4f02155a95 100644 --- a/tests/baselines/reference/computedPropertyNamesSourceMap2_ES6.types +++ b/tests/baselines/reference/computedPropertyNamesSourceMap2_ES6.types @@ -4,6 +4,8 @@ var v = { >{ ["hello"]() { debugger; }} : {} ["hello"]() { +>"hello" : string + debugger; } } diff --git a/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types b/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types index b23d986f894..d003b6b32f1 100644 --- a/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types +++ b/tests/baselines/reference/computedPropertyNamesWithStaticProperty.types @@ -4,6 +4,7 @@ class C { static staticProp = 10; >staticProp : number +>10 : number get [C.staticProp]() { >C.staticProp : number @@ -11,6 +12,7 @@ class C { >staticProp : number return "hello"; +>"hello" : string } set [C.staticProp](x: string) { >C.staticProp : number diff --git a/tests/baselines/reference/concatError.types b/tests/baselines/reference/concatError.types index 46d74cfb6ec..c264e0b0204 100644 --- a/tests/baselines/reference/concatError.types +++ b/tests/baselines/reference/concatError.types @@ -20,6 +20,7 @@ fa = fa.concat([0]); >fa : number[] >concat : { (...items: U[]): number[]; (...items: number[]): number[]; } >[0] : number[] +>0 : number fa = fa.concat(0); >fa = fa.concat(0) : number[] @@ -28,6 +29,7 @@ fa = fa.concat(0); >fa.concat : { (...items: U[]): number[]; (...items: number[]): number[]; } >fa : number[] >concat : { (...items: U[]): number[]; (...items: number[]): number[]; } +>0 : number diff --git a/tests/baselines/reference/conditionalExpressions2.types b/tests/baselines/reference/conditionalExpressions2.types index 7fa483ad348..5f49410b1e4 100644 --- a/tests/baselines/reference/conditionalExpressions2.types +++ b/tests/baselines/reference/conditionalExpressions2.types @@ -2,43 +2,67 @@ var a = false ? 1 : null; >a : number >false ? 1 : null : number +>false : boolean +>1 : number +>null : null var b = false ? undefined : 0; >b : number >false ? undefined : 0 : number +>false : boolean >undefined : undefined +>0 : number var c = false ? 1 : 0; >c : number >false ? 1 : 0 : number +>false : boolean +>1 : number +>0 : number var d = false ? false : true; >d : boolean >false ? false : true : boolean +>false : boolean +>false : boolean +>true : boolean var e = false ? "foo" : "bar"; >e : string >false ? "foo" : "bar" : string +>false : boolean +>"foo" : string +>"bar" : string var f = false ? null : undefined; >f : any >false ? null : undefined : null +>false : boolean +>null : null >undefined : undefined var g = true ? {g:5} : null; >g : { g: number; } >true ? {g:5} : null : { g: number; } +>true : boolean >{g:5} : { g: number; } >g : number +>5 : number +>null : null var h = [{h:5}, null]; >h : { h: number; }[] >[{h:5}, null] : { h: number; }[] >{h:5} : { h: number; } >h : number +>5 : number +>null : null function i() { if (true) { return { x: 5 }; } else { return null; } } >i : () => { x: number; } +>true : boolean >{ x: 5 } : { x: number; } >x : number +>5 : number +>null : null diff --git a/tests/baselines/reference/conditionalOperatorConditionIsBooleanType.types b/tests/baselines/reference/conditionalOperatorConditionIsBooleanType.types index 44fc9f5ed7b..4d28939b696 100644 --- a/tests/baselines/reference/conditionalOperatorConditionIsBooleanType.types +++ b/tests/baselines/reference/conditionalOperatorConditionIsBooleanType.types @@ -75,31 +75,37 @@ condBoolean ? exprString1 : exprBoolean1; // union //Cond is a boolean type literal true ? exprAny1 : exprAny2; >true ? exprAny1 : exprAny2 : any +>true : boolean >exprAny1 : any >exprAny2 : any false ? exprBoolean1 : exprBoolean2; >false ? exprBoolean1 : exprBoolean2 : boolean +>false : boolean >exprBoolean1 : boolean >exprBoolean2 : boolean true ? exprNumber1 : exprNumber2; >true ? exprNumber1 : exprNumber2 : number +>true : boolean >exprNumber1 : number >exprNumber2 : number false ? exprString1 : exprString2; >false ? exprString1 : exprString2 : string +>false : boolean >exprString1 : string >exprString2 : string true ? exprIsObject1 : exprIsObject2; >true ? exprIsObject1 : exprIsObject2 : Object +>true : boolean >exprIsObject1 : Object >exprIsObject2 : Object true ? exprString1 : exprBoolean1; // union >true ? exprString1 : exprBoolean1 : string | boolean +>true : boolean >exprString1 : string >exprBoolean1 : boolean @@ -107,6 +113,7 @@ true ? exprString1 : exprBoolean1; // union !true ? exprAny1 : exprAny2; >!true ? exprAny1 : exprAny2 : any >!true : boolean +>true : boolean >exprAny1 : any >exprAny2 : any @@ -114,18 +121,23 @@ typeof "123" == "string" ? exprBoolean1 : exprBoolean2; >typeof "123" == "string" ? exprBoolean1 : exprBoolean2 : boolean >typeof "123" == "string" : boolean >typeof "123" : string +>"123" : string +>"string" : string >exprBoolean1 : boolean >exprBoolean2 : boolean 2 > 1 ? exprNumber1 : exprNumber2; >2 > 1 ? exprNumber1 : exprNumber2 : number >2 > 1 : boolean +>2 : number +>1 : number >exprNumber1 : number >exprNumber2 : number null === undefined ? exprString1 : exprString2; >null === undefined ? exprString1 : exprString2 : string >null === undefined : boolean +>null : null >undefined : undefined >exprString1 : string >exprString2 : string @@ -133,12 +145,15 @@ null === undefined ? exprString1 : exprString2; true || false ? exprIsObject1 : exprIsObject2; >true || false ? exprIsObject1 : exprIsObject2 : Object >true || false : boolean +>true : boolean +>false : boolean >exprIsObject1 : Object >exprIsObject2 : Object null === undefined ? exprString1 : exprBoolean1; // union >null === undefined ? exprString1 : exprBoolean1 : string | boolean >null === undefined : boolean +>null : null >undefined : undefined >exprString1 : string >exprBoolean1 : boolean @@ -189,42 +204,49 @@ var resultIsStringOrBoolean1 = condBoolean ? exprString1 : exprBoolean1; // unio var resultIsAny2 = true ? exprAny1 : exprAny2; >resultIsAny2 : any >true ? exprAny1 : exprAny2 : any +>true : boolean >exprAny1 : any >exprAny2 : any var resultIsBoolean2 = false ? exprBoolean1 : exprBoolean2; >resultIsBoolean2 : boolean >false ? exprBoolean1 : exprBoolean2 : boolean +>false : boolean >exprBoolean1 : boolean >exprBoolean2 : boolean var resultIsNumber2 = true ? exprNumber1 : exprNumber2; >resultIsNumber2 : number >true ? exprNumber1 : exprNumber2 : number +>true : boolean >exprNumber1 : number >exprNumber2 : number var resultIsString2 = false ? exprString1 : exprString2; >resultIsString2 : string >false ? exprString1 : exprString2 : string +>false : boolean >exprString1 : string >exprString2 : string var resultIsObject2 = true ? exprIsObject1 : exprIsObject2; >resultIsObject2 : Object >true ? exprIsObject1 : exprIsObject2 : Object +>true : boolean >exprIsObject1 : Object >exprIsObject2 : Object var resultIsStringOrBoolean2 = true ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean2 : string | boolean >true ? exprString1 : exprBoolean1 : string | boolean +>true : boolean >exprString1 : string >exprBoolean1 : boolean var resultIsStringOrBoolean3 = false ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean3 : string | boolean >false ? exprString1 : exprBoolean1 : string | boolean +>false : boolean >exprString1 : string >exprBoolean1 : boolean @@ -232,6 +254,7 @@ var resultIsAny3 = !true ? exprAny1 : exprAny2; >resultIsAny3 : any >!true ? exprAny1 : exprAny2 : any >!true : boolean +>true : boolean >exprAny1 : any >exprAny2 : any @@ -240,6 +263,8 @@ var resultIsBoolean3 = typeof "123" == "string" ? exprBoolean1 : exprBoolean2; >typeof "123" == "string" ? exprBoolean1 : exprBoolean2 : boolean >typeof "123" == "string" : boolean >typeof "123" : string +>"123" : string +>"string" : string >exprBoolean1 : boolean >exprBoolean2 : boolean @@ -247,6 +272,8 @@ var resultIsNumber3 = 2 > 1 ? exprNumber1 : exprNumber2; >resultIsNumber3 : number >2 > 1 ? exprNumber1 : exprNumber2 : number >2 > 1 : boolean +>2 : number +>1 : number >exprNumber1 : number >exprNumber2 : number @@ -254,6 +281,7 @@ var resultIsString3 = null === undefined ? exprString1 : exprString2; >resultIsString3 : string >null === undefined ? exprString1 : exprString2 : string >null === undefined : boolean +>null : null >undefined : undefined >exprString1 : string >exprString2 : string @@ -262,6 +290,8 @@ var resultIsObject3 = true || false ? exprIsObject1 : exprIsObject2; >resultIsObject3 : Object >true || false ? exprIsObject1 : exprIsObject2 : Object >true || false : boolean +>true : boolean +>false : boolean >exprIsObject1 : Object >exprIsObject2 : Object @@ -270,6 +300,8 @@ var resultIsStringOrBoolean4 = typeof "123" === "string" ? exprString1 : exprBoo >typeof "123" === "string" ? exprString1 : exprBoolean1 : string | boolean >typeof "123" === "string" : boolean >typeof "123" : string +>"123" : string +>"string" : string >exprString1 : string >exprBoolean1 : boolean diff --git a/tests/baselines/reference/conditionalOperatorConditionIsNumberType.types b/tests/baselines/reference/conditionalOperatorConditionIsNumberType.types index 99a81081d6b..5951dc07350 100644 --- a/tests/baselines/reference/conditionalOperatorConditionIsNumberType.types +++ b/tests/baselines/reference/conditionalOperatorConditionIsNumberType.types @@ -75,58 +75,73 @@ condNumber ? exprString1 : exprBoolean1; // Union //Cond is a number type literal 1 ? exprAny1 : exprAny2; >1 ? exprAny1 : exprAny2 : any +>1 : number >exprAny1 : any >exprAny2 : any 0 ? exprBoolean1 : exprBoolean2; >0 ? exprBoolean1 : exprBoolean2 : boolean +>0 : number >exprBoolean1 : boolean >exprBoolean2 : boolean 0.123456789 ? exprNumber1 : exprNumber2; >0.123456789 ? exprNumber1 : exprNumber2 : number +>0.123456789 : number >exprNumber1 : number >exprNumber2 : number - 10000000000000 ? exprString1 : exprString2; >- 10000000000000 ? exprString1 : exprString2 : string >- 10000000000000 : number +>10000000000000 : number >exprString1 : string >exprString2 : string 1000000000000 ? exprIsObject1 : exprIsObject2; >1000000000000 ? exprIsObject1 : exprIsObject2 : Object +>1000000000000 : number >exprIsObject1 : Object >exprIsObject2 : Object 10000 ? exprString1 : exprBoolean1; // Union >10000 ? exprString1 : exprBoolean1 : string | boolean +>10000 : number >exprString1 : string >exprBoolean1 : boolean //Cond is a number type expression function foo() { return 1 }; >foo : () => number +>1 : number var array = [1, 2, 3]; >array : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number 1 * 0 ? exprAny1 : exprAny2; >1 * 0 ? exprAny1 : exprAny2 : any >1 * 0 : number +>1 : number +>0 : number >exprAny1 : any >exprAny2 : any 1 + 1 ? exprBoolean1 : exprBoolean2; >1 + 1 ? exprBoolean1 : exprBoolean2 : boolean >1 + 1 : number +>1 : number +>1 : number >exprBoolean1 : boolean >exprBoolean2 : boolean "string".length ? exprNumber1 : exprNumber2; >"string".length ? exprNumber1 : exprNumber2 : number >"string".length : number +>"string" : string >length : number >exprNumber1 : number >exprNumber2 : number @@ -145,6 +160,7 @@ foo() / array[1] ? exprIsObject1 : exprIsObject2; >foo : () => number >array[1] : number >array : number[] +>1 : number >exprIsObject1 : Object >exprIsObject2 : Object @@ -201,18 +217,21 @@ var resultIsStringOrBoolean1 = condNumber ? exprString1 : exprBoolean1; // Union var resultIsAny2 = 1 ? exprAny1 : exprAny2; >resultIsAny2 : any >1 ? exprAny1 : exprAny2 : any +>1 : number >exprAny1 : any >exprAny2 : any var resultIsBoolean2 = 0 ? exprBoolean1 : exprBoolean2; >resultIsBoolean2 : boolean >0 ? exprBoolean1 : exprBoolean2 : boolean +>0 : number >exprBoolean1 : boolean >exprBoolean2 : boolean var resultIsNumber2 = 0.123456789 ? exprNumber1 : exprNumber2; >resultIsNumber2 : number >0.123456789 ? exprNumber1 : exprNumber2 : number +>0.123456789 : number >exprNumber1 : number >exprNumber2 : number @@ -220,18 +239,21 @@ var resultIsString2 = - 10000000000000 ? exprString1 : exprString2; >resultIsString2 : string >- 10000000000000 ? exprString1 : exprString2 : string >- 10000000000000 : number +>10000000000000 : number >exprString1 : string >exprString2 : string var resultIsObject2 = 1000000000000 ? exprIsObject1 : exprIsObject2; >resultIsObject2 : Object >1000000000000 ? exprIsObject1 : exprIsObject2 : Object +>1000000000000 : number >exprIsObject1 : Object >exprIsObject2 : Object var resultIsStringOrBoolean2 = 10000 ? exprString1 : exprBoolean1; // Union >resultIsStringOrBoolean2 : string | boolean >10000 ? exprString1 : exprBoolean1 : string | boolean +>10000 : number >exprString1 : string >exprBoolean1 : boolean @@ -239,6 +261,8 @@ var resultIsAny3 = 1 * 0 ? exprAny1 : exprAny2; >resultIsAny3 : any >1 * 0 ? exprAny1 : exprAny2 : any >1 * 0 : number +>1 : number +>0 : number >exprAny1 : any >exprAny2 : any @@ -246,6 +270,8 @@ var resultIsBoolean3 = 1 + 1 ? exprBoolean1 : exprBoolean2; >resultIsBoolean3 : boolean >1 + 1 ? exprBoolean1 : exprBoolean2 : boolean >1 + 1 : number +>1 : number +>1 : number >exprBoolean1 : boolean >exprBoolean2 : boolean @@ -253,6 +279,7 @@ var resultIsNumber3 = "string".length ? exprNumber1 : exprNumber2; >resultIsNumber3 : number >"string".length ? exprNumber1 : exprNumber2 : number >"string".length : number +>"string" : string >length : number >exprNumber1 : number >exprNumber2 : number @@ -273,6 +300,7 @@ var resultIsObject3 = foo() / array[1] ? exprIsObject1 : exprIsObject2; >foo : () => number >array[1] : number >array : number[] +>1 : number >exprIsObject1 : Object >exprIsObject2 : Object @@ -284,6 +312,7 @@ var resultIsStringOrBoolean3 = foo() / array[1] ? exprString1 : exprBoolean1; // >foo : () => number >array[1] : number >array : number[] +>1 : number >exprString1 : string >exprBoolean1 : boolean diff --git a/tests/baselines/reference/conditionalOperatorConditionIsObjectType.types b/tests/baselines/reference/conditionalOperatorConditionIsObjectType.types index f99c591b593..14a0f375ead 100644 --- a/tests/baselines/reference/conditionalOperatorConditionIsObjectType.types +++ b/tests/baselines/reference/conditionalOperatorConditionIsObjectType.types @@ -115,7 +115,9 @@ condObject ? exprString1 : exprBoolean1; // union >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string >exprString1 : string >exprString2 : string @@ -124,7 +126,9 @@ condObject ? exprString1 : exprBoolean1; // union >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string >exprIsObject1 : Object >exprIsObject2 : Object @@ -133,7 +137,9 @@ condObject ? exprString1 : exprBoolean1; // union >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string >exprString1 : string >exprBoolean1 : boolean @@ -265,7 +271,9 @@ var resultIsString2 = ({ a: 1, b: "s" }) ? exprString1 : exprString2; >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string >exprString1 : string >exprString2 : string @@ -275,7 +283,9 @@ var resultIsObject2 = ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2; >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string >exprIsObject1 : Object >exprIsObject2 : Object @@ -285,7 +295,9 @@ var resultIsStringOrBoolean2 = ({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number +>1 : number >b : string +>"s" : string >exprString1 : string >exprBoolean1 : boolean diff --git a/tests/baselines/reference/conditionalOperatorConditoinIsAnyType.types b/tests/baselines/reference/conditionalOperatorConditoinIsAnyType.types index 6542377795f..d79e570ec42 100644 --- a/tests/baselines/reference/conditionalOperatorConditoinIsAnyType.types +++ b/tests/baselines/reference/conditionalOperatorConditoinIsAnyType.types @@ -78,11 +78,13 @@ condAny ? exprString1 : exprBoolean1; // union //Cond is an any type literal null ? exprAny1 : exprAny2; >null ? exprAny1 : exprAny2 : any +>null : null >exprAny1 : any >exprAny2 : any null ? exprBoolean1 : exprBoolean2; >null ? exprBoolean1 : exprBoolean2 : boolean +>null : null >exprBoolean1 : boolean >exprBoolean2 : boolean @@ -95,6 +97,7 @@ undefined ? exprNumber1 : exprNumber2; [null, undefined] ? exprString1 : exprString2; >[null, undefined] ? exprString1 : exprString2 : string >[null, undefined] : null[] +>null : null >undefined : undefined >exprString1 : string >exprString2 : string @@ -102,6 +105,7 @@ undefined ? exprNumber1 : exprNumber2; [null, undefined] ? exprIsObject1 : exprIsObject2; >[null, undefined] ? exprIsObject1 : exprIsObject2 : Object >[null, undefined] : null[] +>null : null >undefined : undefined >exprIsObject1 : Object >exprIsObject2 : Object @@ -126,6 +130,7 @@ x("x") ? exprBoolean1 : exprBoolean2; >x("x") ? exprBoolean1 : exprBoolean2 : boolean >x("x") : any >x : any +>"x" : string >exprBoolean1 : boolean >exprBoolean2 : boolean @@ -141,6 +146,7 @@ x("x") ? exprString1 : exprString2; >x("x") ? exprString1 : exprString2 : string >x("x") : any >x : any +>"x" : string >exprString1 : string >exprString2 : string @@ -208,12 +214,14 @@ var resultIsStringOrBoolean1 = condAny ? exprString1 : exprBoolean1; // union var resultIsAny2 = null ? exprAny1 : exprAny2; >resultIsAny2 : any >null ? exprAny1 : exprAny2 : any +>null : null >exprAny1 : any >exprAny2 : any var resultIsBoolean2 = null ? exprBoolean1 : exprBoolean2; >resultIsBoolean2 : boolean >null ? exprBoolean1 : exprBoolean2 : boolean +>null : null >exprBoolean1 : boolean >exprBoolean2 : boolean @@ -228,6 +236,7 @@ var resultIsString2 = [null, undefined] ? exprString1 : exprString2; >resultIsString2 : string >[null, undefined] ? exprString1 : exprString2 : string >[null, undefined] : null[] +>null : null >undefined : undefined >exprString1 : string >exprString2 : string @@ -236,6 +245,7 @@ var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2; >resultIsObject2 : Object >[null, undefined] ? exprIsObject1 : exprIsObject2 : Object >[null, undefined] : null[] +>null : null >undefined : undefined >exprIsObject1 : Object >exprIsObject2 : Object @@ -243,6 +253,7 @@ var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2; var resultIsStringOrBoolean2 = null ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean2 : string | boolean >null ? exprString1 : exprBoolean1 : string | boolean +>null : null >exprString1 : string >exprBoolean1 : boolean @@ -257,6 +268,7 @@ var resultIsStringOrBoolean4 = [null, undefined] ? exprString1 : exprBoolean1; / >resultIsStringOrBoolean4 : string | boolean >[null, undefined] ? exprString1 : exprBoolean1 : string | boolean >[null, undefined] : null[] +>null : null >undefined : undefined >exprString1 : string >exprBoolean1 : boolean @@ -276,6 +288,7 @@ var resultIsBoolean3 = x("x") ? exprBoolean1 : exprBoolean2; >x("x") ? exprBoolean1 : exprBoolean2 : boolean >x("x") : any >x : any +>"x" : string >exprBoolean1 : boolean >exprBoolean2 : boolean @@ -293,6 +306,7 @@ var resultIsString3 = x("x") ? exprString1 : exprString2; >x("x") ? exprString1 : exprString2 : string >x("x") : any >x : any +>"x" : string >exprString1 : string >exprString2 : string diff --git a/tests/baselines/reference/conditionalOperatorConditoinIsStringType.types b/tests/baselines/reference/conditionalOperatorConditoinIsStringType.types index 45a4db8d295..af5abb25063 100644 --- a/tests/baselines/reference/conditionalOperatorConditoinIsStringType.types +++ b/tests/baselines/reference/conditionalOperatorConditoinIsStringType.types @@ -75,41 +75,51 @@ condString ? exprString1 : exprBoolean1; // union //Cond is a string type literal "" ? exprAny1 : exprAny2; >"" ? exprAny1 : exprAny2 : any +>"" : string >exprAny1 : any >exprAny2 : any "string" ? exprBoolean1 : exprBoolean2; >"string" ? exprBoolean1 : exprBoolean2 : boolean +>"string" : string >exprBoolean1 : boolean >exprBoolean2 : boolean 'c' ? exprNumber1 : exprNumber2; >'c' ? exprNumber1 : exprNumber2 : number +>'c' : string >exprNumber1 : number >exprNumber2 : number 'string' ? exprString1 : exprString2; >'string' ? exprString1 : exprString2 : string +>'string' : string >exprString1 : string >exprString2 : string " " ? exprIsObject1 : exprIsObject2; >" " ? exprIsObject1 : exprIsObject2 : Object +>" " : string >exprIsObject1 : Object >exprIsObject2 : Object "hello " ? exprString1 : exprBoolean1; // union >"hello " ? exprString1 : exprBoolean1 : string | boolean +>"hello " : string >exprString1 : string >exprBoolean1 : boolean //Cond is a string type expression function foo() { return "string" }; >foo : () => string +>"string" : string var array = ["1", "2", "3"]; >array : string[] >["1", "2", "3"] : string[] +>"1" : string +>"2" : string +>"3" : string typeof condString ? exprAny1 : exprAny2; >typeof condString ? exprAny1 : exprAny2 : any @@ -130,6 +140,7 @@ condString + "string" ? exprNumber1 : exprNumber2; >condString + "string" ? exprNumber1 : exprNumber2 : number >condString + "string" : string >condString : string +>"string" : string >exprNumber1 : number >exprNumber2 : number @@ -144,6 +155,7 @@ array[1] ? exprIsObject1 : exprIsObject2; >array[1] ? exprIsObject1 : exprIsObject2 : Object >array[1] : string >array : string[] +>1 : number >exprIsObject1 : Object >exprIsObject2 : Object @@ -200,36 +212,42 @@ var resultIsStringOrBoolean1 = condString ? exprString1 : exprBoolean1; // union var resultIsAny2 = "" ? exprAny1 : exprAny2; >resultIsAny2 : any >"" ? exprAny1 : exprAny2 : any +>"" : string >exprAny1 : any >exprAny2 : any var resultIsBoolean2 = "string" ? exprBoolean1 : exprBoolean2; >resultIsBoolean2 : boolean >"string" ? exprBoolean1 : exprBoolean2 : boolean +>"string" : string >exprBoolean1 : boolean >exprBoolean2 : boolean var resultIsNumber2 = 'c' ? exprNumber1 : exprNumber2; >resultIsNumber2 : number >'c' ? exprNumber1 : exprNumber2 : number +>'c' : string >exprNumber1 : number >exprNumber2 : number var resultIsString2 = 'string' ? exprString1 : exprString2; >resultIsString2 : string >'string' ? exprString1 : exprString2 : string +>'string' : string >exprString1 : string >exprString2 : string var resultIsObject2 = " " ? exprIsObject1 : exprIsObject2; >resultIsObject2 : Object >" " ? exprIsObject1 : exprIsObject2 : Object +>" " : string >exprIsObject1 : Object >exprIsObject2 : Object var resultIsStringOrBoolean2 = "hello" ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean2 : string | boolean >"hello" ? exprString1 : exprBoolean1 : string | boolean +>"hello" : string >exprString1 : string >exprBoolean1 : boolean @@ -255,6 +273,7 @@ var resultIsNumber3 = condString + "string" ? exprNumber1 : exprNumber2; >condString + "string" ? exprNumber1 : exprNumber2 : number >condString + "string" : string >condString : string +>"string" : string >exprNumber1 : number >exprNumber2 : number @@ -271,6 +290,7 @@ var resultIsObject3 = array[1] ? exprIsObject1 : exprIsObject2; >array[1] ? exprIsObject1 : exprIsObject2 : Object >array[1] : string >array : string[] +>1 : number >exprIsObject1 : Object >exprIsObject2 : Object diff --git a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types index f925f7f1db6..722ec13c684 100644 --- a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types +++ b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types @@ -32,47 +32,62 @@ var b: B; //Be Not contextually typed true ? x : a; >true ? x : a : X +>true : boolean >x : X >a : A var result1 = true ? x : a; >result1 : X >true ? x : a : X +>true : boolean >x : X >a : A //Expr1 and Expr2 are literals true ? {} : 1; >true ? {} : 1 : {} +>true : boolean >{} : {} +>1 : number true ? { a: 1 } : { a: 2, b: 'string' }; >true ? { a: 1 } : { a: 2, b: 'string' } : { a: number; } +>true : boolean >{ a: 1 } : { a: number; } >a : number +>1 : number >{ a: 2, b: 'string' } : { a: number; b: string; } >a : number +>2 : number >b : string +>'string' : string var result2 = true ? {} : 1; >result2 : {} >true ? {} : 1 : {} +>true : boolean >{} : {} +>1 : number var result3 = true ? { a: 1 } : { a: 2, b: 'string' }; >result3 : { a: number; } >true ? { a: 1 } : { a: 2, b: 'string' } : { a: number; } +>true : boolean >{ a: 1 } : { a: number; } >a : number +>1 : number >{ a: 2, b: 'string' } : { a: number; b: string; } >a : number +>2 : number >b : string +>'string' : string //Contextually typed var resultIsX1: X = true ? x : a; >resultIsX1 : X >X : X >true ? x : a : X +>true : boolean >x : X >a : A @@ -81,6 +96,7 @@ var result4: (t: A) => any = true ? (m) => m.propertyX : (n) => n.propertyA; >t : A >A : A >true ? (m) => m.propertyX : (n) => n.propertyA : (m: A) => any +>true : boolean >(m) => m.propertyX : (m: A) => any >m : A >m.propertyX : any @@ -96,47 +112,62 @@ var result4: (t: A) => any = true ? (m) => m.propertyX : (n) => n.propertyA; //Be Not contextually typed true ? a : x; >true ? a : x : X +>true : boolean >a : A >x : X var result5 = true ? a : x; >result5 : X >true ? a : x : X +>true : boolean >a : A >x : X //Expr1 and Expr2 are literals true ? 1 : {}; >true ? 1 : {} : {} +>true : boolean +>1 : number >{} : {} true ? { a: 2, b: 'string' } : { a: 1 }; >true ? { a: 2, b: 'string' } : { a: 1 } : { a: number; } +>true : boolean >{ a: 2, b: 'string' } : { a: number; b: string; } >a : number +>2 : number >b : string +>'string' : string >{ a: 1 } : { a: number; } >a : number +>1 : number var result6 = true ? 1 : {}; >result6 : {} >true ? 1 : {} : {} +>true : boolean +>1 : number >{} : {} var result7 = true ? { a: 2, b: 'string' } : { a: 1 }; >result7 : { a: number; } >true ? { a: 2, b: 'string' } : { a: 1 } : { a: number; } +>true : boolean >{ a: 2, b: 'string' } : { a: number; b: string; } >a : number +>2 : number >b : string +>'string' : string >{ a: 1 } : { a: number; } >a : number +>1 : number //Contextually typed var resultIsX2: X = true ? x : a; >resultIsX2 : X >X : X >true ? x : a : X +>true : boolean >x : X >a : A @@ -145,6 +176,7 @@ var result8: (t: A) => any = true ? (m) => m.propertyA : (n) => n.propertyX; >t : A >A : A >true ? (m) => m.propertyA : (n) => n.propertyX : (n: A) => any +>true : boolean >(m) => m.propertyA : (m: A) => number >m : A >m.propertyA : number @@ -162,6 +194,7 @@ var resultIsX3: X = true ? a : b; >resultIsX3 : X >X : X >true ? a : b : A | B +>true : boolean >a : A >b : B @@ -170,6 +203,7 @@ var result10: (t: X) => any = true ? (m) => m.propertyX1 : (n) => n.propertyX2; >t : X >X : X >true ? (m) => m.propertyX1 : (n) => n.propertyX2 : ((m: X) => number) | ((n: X) => string) +>true : boolean >(m) => m.propertyX1 : (m: X) => number >m : X >m.propertyX1 : number @@ -185,4 +219,7 @@ var result10: (t: X) => any = true ? (m) => m.propertyX1 : (n) => n.propertyX2; var result11: any = true ? 1 : 'string'; >result11 : any >true ? 1 : 'string' : string | number +>true : boolean +>1 : number +>'string' : string diff --git a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration2.types b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration2.types index 4217db45509..a5a7dd1d0cd 100644 --- a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration2.types +++ b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration2.types @@ -6,11 +6,13 @@ function outer() { const x = 0; >x : number +>0 : number function inner() { >inner : () => void var x = "inner"; >x : string +>"inner" : string } } diff --git a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types index 8241b319d84..c5b9ec9a6f2 100644 --- a/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types +++ b/tests/baselines/reference/constDeclarationShadowedByVarDeclaration3.types @@ -8,9 +8,11 @@ class Rule { >RegExp : RegExp >new RegExp('') : RegExp >RegExp : RegExpConstructor +>'' : string public name: string = ''; >name : string +>'' : string constructor(name: string) { >name : string diff --git a/tests/baselines/reference/constDeclarations-es5.types b/tests/baselines/reference/constDeclarations-es5.types index be55dc0febc..a897c3f9cd0 100644 --- a/tests/baselines/reference/constDeclarations-es5.types +++ b/tests/baselines/reference/constDeclarations-es5.types @@ -2,12 +2,17 @@ const z7 = false; >z7 : boolean +>false : boolean const z8: number = 23; >z8 : number +>23 : number const z9 = 0, z10 :string = "", z11 = null; >z9 : number +>0 : number >z10 : string +>"" : string >z11 : any +>null : null diff --git a/tests/baselines/reference/constDeclarations-scopes2.types b/tests/baselines/reference/constDeclarations-scopes2.types index 9609ef8f44b..a6bbdee7612 100644 --- a/tests/baselines/reference/constDeclarations-scopes2.types +++ b/tests/baselines/reference/constDeclarations-scopes2.types @@ -3,6 +3,7 @@ // global const c = "string"; >c : string +>"string" : string var n: number; >n : number @@ -13,8 +14,10 @@ var b: boolean; // for scope for (const c = 0; c < 10; n = c ) { >c : number +>0 : number >c < 10 : boolean >c : number +>10 : number >n = c : number >n : number >c : number @@ -22,6 +25,7 @@ for (const c = 0; c < 10; n = c ) { // for block const c = false; >c : boolean +>false : boolean b = c; >b = c : boolean diff --git a/tests/baselines/reference/constDeclarations.types b/tests/baselines/reference/constDeclarations.types index e82a2f0035f..efdc534ef1c 100644 --- a/tests/baselines/reference/constDeclarations.types +++ b/tests/baselines/reference/constDeclarations.types @@ -3,25 +3,34 @@ // No error const c1 = false; >c1 : boolean +>false : boolean const c2: number = 23; >c2 : number +>23 : number const c3 = 0, c4 :string = "", c5 = null; >c3 : number +>0 : number >c4 : string +>"" : string >c5 : any +>null : null for(const c4 = 0; c4 < 9; ) { break; } >c4 : number +>0 : number >c4 < 9 : boolean >c4 : number +>9 : number for(const c5 = 0, c6 = 0; c5 < c6; ) { break; } >c5 : number +>0 : number >c6 : number +>0 : number >c5 < c6 : boolean >c5 : number >c6 : number diff --git a/tests/baselines/reference/constDeclarations2.types b/tests/baselines/reference/constDeclarations2.types index c81eca96b0d..f8184b8f8e0 100644 --- a/tests/baselines/reference/constDeclarations2.types +++ b/tests/baselines/reference/constDeclarations2.types @@ -6,13 +6,18 @@ module M { export const c1 = false; >c1 : boolean +>false : boolean export const c2: number = 23; >c2 : number +>23 : number export const c3 = 0, c4 :string = "", c5 = null; >c3 : number +>0 : number >c4 : string +>"" : string >c5 : any +>null : null } diff --git a/tests/baselines/reference/constEnumDeclarations.types b/tests/baselines/reference/constEnumDeclarations.types index 9dc87eadef7..481c2673660 100644 --- a/tests/baselines/reference/constEnumDeclarations.types +++ b/tests/baselines/reference/constEnumDeclarations.types @@ -5,9 +5,11 @@ const enum E { A = 1, >A : E +>1 : number B = 2, >B : E +>2 : number C = A | B >C : E @@ -21,6 +23,7 @@ const enum E2 { A = 1, >A : E2 +>1 : number B, >B : E2 diff --git a/tests/baselines/reference/constEnumExternalModule.types b/tests/baselines/reference/constEnumExternalModule.types index 9c7b43a24d4..5d03b77b1b7 100644 --- a/tests/baselines/reference/constEnumExternalModule.types +++ b/tests/baselines/reference/constEnumExternalModule.types @@ -14,6 +14,7 @@ const enum E { V = 100 >V : E +>100 : number } export = E diff --git a/tests/baselines/reference/constEnumOnlyModuleMerging.types b/tests/baselines/reference/constEnumOnlyModuleMerging.types index 30426e3fa4c..452c0f46add 100644 --- a/tests/baselines/reference/constEnumOnlyModuleMerging.types +++ b/tests/baselines/reference/constEnumOnlyModuleMerging.types @@ -4,6 +4,7 @@ module Outer { export var x = 1; >x : number +>1 : number } module Outer { diff --git a/tests/baselines/reference/constEnums.types b/tests/baselines/reference/constEnums.types index 396b2e1c32b..3b6abbff22e 100644 --- a/tests/baselines/reference/constEnums.types +++ b/tests/baselines/reference/constEnums.types @@ -4,6 +4,7 @@ const enum Enum1 { A0 = 100, >A0 : Enum1 +>100 : number } const enum Enum1 { @@ -18,6 +19,7 @@ const enum Enum1 { C = 10, >C : Enum1 +>10 : number D = A | B, >D : Enum1 @@ -29,16 +31,20 @@ const enum Enum1 { >E : Enum1 >A | 1 : number >A : Enum1 +>1 : number F = 1 | A, >F : Enum1 >1 | A : number +>1 : number >A : Enum1 G = (1 & 1), >G : Enum1 >(1 & 1) : number >1 & 1 : number +>1 : number +>1 : number H = ~(A | B), >H : Enum1 @@ -52,10 +58,12 @@ const enum Enum1 { >I : Enum1 >A >>> 1 : number >A : Enum1 +>1 : number J = 1 & A, >J : Enum1 >1 & A : number +>1 : number >A : Enum1 K = ~(1 | 5), @@ -63,6 +71,8 @@ const enum Enum1 { >~(1 | 5) : number >(1 | 5) : number >1 | 5 : number +>1 : number +>5 : number L = ~D, >L : Enum1 @@ -79,6 +89,7 @@ const enum Enum1 { >N : Enum1 >E << 1 : number >E : Enum1 +>1 : number O = E >> B, >O : Enum1 @@ -90,6 +101,7 @@ const enum Enum1 { >P : Enum1 >E >> 1 : number >E : Enum1 +>1 : number Q = -D, >Q : Enum1 @@ -100,10 +112,12 @@ const enum Enum1 { >R : Enum1 >C & 5 : number >C : Enum1 +>5 : number S = 5 & C, >S : Enum1 >5 & C : number +>5 : number >C : Enum1 T = C | D, @@ -116,10 +130,12 @@ const enum Enum1 { >U : Enum1 >C | 1 : number >C : Enum1 +>1 : number V = 10 | D, >V : Enum1 >10 | D : number +>10 : number >D : Enum1 W = Enum1.V, @@ -143,11 +159,13 @@ const enum Enum1 { >W3 : Enum1 >Enum1["A0"] : Enum1 >Enum1 : typeof Enum1 +>"A0" : string W4 = Enum1["W"], >W4 : Enum1 >Enum1["W"] : Enum1 >Enum1 : typeof Enum1 +>"W" : string } @@ -165,6 +183,7 @@ module A { V1 = 1, >V1 : E +>1 : number V2 = A.B.C.E.V1 | 100 >V2 : E @@ -178,6 +197,7 @@ module A { >C : typeof C >E : typeof E >V1 : E +>100 : number } } } @@ -206,6 +226,8 @@ module A { >B : typeof B >C : typeof C >E : typeof E +>"V2" : string +>200 : number } } } @@ -225,9 +247,11 @@ module A1 { V1 = 10, >V1 : E +>10 : number V2 = 110, >V2 : E +>110 : number } } } @@ -247,9 +271,11 @@ module A2 { V1 = 10, >V1 : E +>10 : number V2 = 110, >V2 : E +>110 : number } } // module C will be classified as value @@ -258,6 +284,7 @@ module A2 { var x = 1 >x : number +>1 : number } } } @@ -469,6 +496,7 @@ function foo(x: Enum1) { case Enum1["T"]: >Enum1["T"] : Enum1 >Enum1 : typeof Enum1 +>"T" : string case Enum1.U: >Enum1.U : Enum1 @@ -530,6 +558,7 @@ function bar(e: A.B.C.E): number { >C : typeof A.B.C >E : typeof I >V1 : I +>1 : number case A.B.C.E.V2: return 1; >A.B.C.E.V2 : I @@ -541,6 +570,7 @@ function bar(e: A.B.C.E): number { >C : typeof A.B.C >E : typeof I >V2 : I +>1 : number case A.B.C.E.V3: return 1; >A.B.C.E.V3 : I @@ -552,5 +582,6 @@ function bar(e: A.B.C.E): number { >C : typeof A.B.C >E : typeof I >V3 : I +>1 : number } } diff --git a/tests/baselines/reference/constantOverloadFunction.types b/tests/baselines/reference/constantOverloadFunction.types index 1e74486cb32..d643d3a726d 100644 --- a/tests/baselines/reference/constantOverloadFunction.types +++ b/tests/baselines/reference/constantOverloadFunction.types @@ -44,5 +44,6 @@ function foo(tagName: any): Base { >Base : Base return null; +>null : null } diff --git a/tests/baselines/reference/constraintSatisfactionWithAny.types b/tests/baselines/reference/constraintSatisfactionWithAny.types index e007d3cec73..f3363fe1a90 100644 --- a/tests/baselines/reference/constraintSatisfactionWithAny.types +++ b/tests/baselines/reference/constraintSatisfactionWithAny.types @@ -8,6 +8,7 @@ function foo(x: T): T { return null; } >x : T >T : T >T : T +>null : null function foo2(x: T): T { return null; } >foo2 : (x: T) => T @@ -16,6 +17,7 @@ function foo2(x: T): T { return null; } >x : T >T : T >T : T +>null : null //function foo3(x: T): T { return null; } function foo4(x: T) => void>(x: T): T { return null; } @@ -27,6 +29,7 @@ function foo4(x: T) => void>(x: T): T { return null; } >x : T >T : T >T : T +>null : null var a; >a : any diff --git a/tests/baselines/reference/constructSignaturesWithIdenticalOverloads.types b/tests/baselines/reference/constructSignaturesWithIdenticalOverloads.types index a34c5365f2d..ca2cb6fefb7 100644 --- a/tests/baselines/reference/constructSignaturesWithIdenticalOverloads.types +++ b/tests/baselines/reference/constructSignaturesWithIdenticalOverloads.types @@ -20,6 +20,8 @@ var r1 = new C(1, ''); >r1 : C >new C(1, '') : C >C : typeof C +>1 : number +>'' : string class C2 { >C2 : C2 @@ -44,6 +46,8 @@ var r2 = new C2(1, ''); >r2 : C2 >new C2(1, '') : C2 >C2 : typeof C2 +>1 : number +>'' : string interface I { >I : I @@ -67,6 +71,8 @@ var r3 = new i(1, ''); >r3 : C >new i(1, '') : C >i : I +>1 : number +>'' : string interface I2 { >I2 : I2 @@ -111,6 +117,8 @@ var r4 = new i2(1, ''); >r4 : C2 >new i2(1, '') : C2 >i2 : I2 +>1 : number +>'' : string var a: { >a : { new (x: number, y: string): C; new (x: number, y: string): C; } @@ -130,6 +138,8 @@ var r5 = new a(1, ''); >r5 : C >new a(1, '') : C >a : { new (x: number, y: string): C; new (x: number, y: string): C; } +>1 : number +>'' : string var b: { >b : { new (x: T, y: string): C2; new (x: T, y: string): C2; } @@ -155,4 +165,6 @@ var r6 = new b(1, ''); >r6 : C2 >new b(1, '') : C2 >b : { new (x: T, y: string): C2; new (x: T, y: string): C2; } +>1 : number +>'' : string diff --git a/tests/baselines/reference/constructSignaturesWithOverloads.types b/tests/baselines/reference/constructSignaturesWithOverloads.types index 0cd9b744ee7..8ff678c5de8 100644 --- a/tests/baselines/reference/constructSignaturesWithOverloads.types +++ b/tests/baselines/reference/constructSignaturesWithOverloads.types @@ -20,6 +20,8 @@ var r1 = new C(1, ''); >r1 : C >new C(1, '') : C >C : typeof C +>1 : number +>'' : string class C2 { >C2 : C2 @@ -44,6 +46,8 @@ var r2 = new C2(1, ''); >r2 : C2 >new C2(1, '') : C2 >C2 : typeof C2 +>1 : number +>'' : string interface I { >I : I @@ -67,6 +71,8 @@ var r3 = new i(1, ''); >r3 : C >new i(1, '') : C >i : I +>1 : number +>'' : string interface I2 { >I2 : I2 @@ -112,6 +118,8 @@ var r4 = new i2(1, ''); >r4 : C2 >new i2(1, '') : C2 >i2 : I2 +>1 : number +>'' : string var a: { >a : { new (x: number, y?: string): C; new (x: number, y: string): C; } @@ -131,6 +139,8 @@ var r5 = new a(1, ''); >r5 : C >new a(1, '') : C >a : { new (x: number, y?: string): C; new (x: number, y: string): C; } +>1 : number +>'' : string var b: { >b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } @@ -156,4 +166,6 @@ var r6 = new b(1, ''); >r6 : C2 >new b(1, '') : C2 >b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } +>1 : number +>'' : string diff --git a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types index 53853163827..e0e86df4a26 100644 --- a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types +++ b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types @@ -60,5 +60,6 @@ class Derived2 extends Base { >x : any return 1; +>1 : number } } diff --git a/tests/baselines/reference/constructorImplementationWithDefaultValues.types b/tests/baselines/reference/constructorImplementationWithDefaultValues.types index 6dc2b4f285b..fa99cc17fe0 100644 --- a/tests/baselines/reference/constructorImplementationWithDefaultValues.types +++ b/tests/baselines/reference/constructorImplementationWithDefaultValues.types @@ -7,6 +7,7 @@ class C { constructor(x = 1) { >x : number +>1 : number var y = x; >y : number @@ -24,6 +25,7 @@ class D { constructor(x:T = null) { >x : T >T : T +>null : null var y = x; >y : T @@ -42,6 +44,7 @@ class E { constructor(x: T = null) { >x : T >T : T +>null : null var y = x; >y : T diff --git a/tests/baselines/reference/constructorOverloads2.types b/tests/baselines/reference/constructorOverloads2.types index 65da67f04fe..dde032c0fd2 100644 --- a/tests/baselines/reference/constructorOverloads2.types +++ b/tests/baselines/reference/constructorOverloads2.types @@ -45,11 +45,13 @@ var f1 = new Foo("hey"); >f1 : Foo >new Foo("hey") : Foo >Foo : typeof Foo +>"hey" : string var f2 = new Foo(0); >f2 : Foo >new Foo(0) : Foo >Foo : typeof Foo +>0 : number var f3 = new Foo(f1); >f3 : Foo diff --git a/tests/baselines/reference/constructorReturningAPrimitive.types b/tests/baselines/reference/constructorReturningAPrimitive.types index c4ca2ba7078..4b431cfb36b 100644 --- a/tests/baselines/reference/constructorReturningAPrimitive.types +++ b/tests/baselines/reference/constructorReturningAPrimitive.types @@ -7,6 +7,7 @@ class A { constructor() { return 1; +>1 : number } } diff --git a/tests/baselines/reference/contextualSignatureInstantiation.types b/tests/baselines/reference/contextualSignatureInstantiation.types index 4363272622a..e7be6da51c5 100644 --- a/tests/baselines/reference/contextualSignatureInstantiation.types +++ b/tests/baselines/reference/contextualSignatureInstantiation.types @@ -74,12 +74,16 @@ var a = bar(1, 1, g); // Should be number >a : number >bar(1, 1, g) : number >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>1 : number +>1 : number >g : (x: T, y: T) => T var a = baz(1, 1, g); // Should be number >a : number >baz(1, 1, g) : number >baz : (x: T, y: T, cb: (x: T, y: T) => U) => U +>1 : number +>1 : number >g : (x: T, y: T) => T var b: number | string; @@ -95,12 +99,16 @@ var b = bar(1, "one", g); // Should be number | string >b : string | number >bar(1, "one", g) : string | number >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>1 : number +>"one" : string >g : (x: T, y: T) => T var b = bar("one", 1, g); // Should be number | string >b : string | number >bar("one", 1, g) : string | number >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>"one" : string +>1 : number >g : (x: T, y: T) => T var b = baz(b, b, g); // Should be number | string @@ -124,12 +132,16 @@ var d = bar(1, "one", h); // Should be number[] | string[] >d : string[] | number[] >bar(1, "one", h) : string[] | number[] >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>1 : number +>"one" : string >h : (x: T, y: U) => T[] | U[] var d = bar("one", 1, h); // Should be number[] | string[] >d : string[] | number[] >bar("one", 1, h) : string[] | number[] >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>"one" : string +>1 : number >h : (x: T, y: U) => T[] | U[] var d = baz(d, d, g); // Should be number[] | string[] diff --git a/tests/baselines/reference/contextualSignatureInstantiation.types.pull b/tests/baselines/reference/contextualSignatureInstantiation.types.pull index d7246ab79aa..49d6871804c 100644 --- a/tests/baselines/reference/contextualSignatureInstantiation.types.pull +++ b/tests/baselines/reference/contextualSignatureInstantiation.types.pull @@ -74,12 +74,16 @@ var a = bar(1, 1, g); // Should be number >a : number >bar(1, 1, g) : number >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>1 : number +>1 : number >g : (x: T, y: T) => T var a = baz(1, 1, g); // Should be number >a : number >baz(1, 1, g) : number >baz : (x: T, y: T, cb: (x: T, y: T) => U) => U +>1 : number +>1 : number >g : (x: T, y: T) => T var b: number | string; @@ -95,12 +99,16 @@ var b = bar(1, "one", g); // Should be number | string >b : string | number >bar(1, "one", g) : string | number >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>1 : number +>"one" : string >g : (x: T, y: T) => T var b = bar("one", 1, g); // Should be number | string >b : string | number >bar("one", 1, g) : string | number >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>"one" : string +>1 : number >g : (x: T, y: T) => T var b = baz(b, b, g); // Should be number | string @@ -124,12 +132,16 @@ var d = bar(1, "one", h); // Should be number[] | string[] >d : number[] | string[] >bar(1, "one", h) : number[] | string[] >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>1 : number +>"one" : string >h : (x: T, y: U) => T[] | U[] var d = bar("one", 1, h); // Should be number[] | string[] >d : number[] | string[] >bar("one", 1, h) : number[] | string[] >bar : (x: T, y: U, cb: (x: T, y: U) => V) => V +>"one" : string +>1 : number >h : (x: T, y: U) => T[] | U[] var d = baz(d, d, g); // Should be number[] | string[] diff --git a/tests/baselines/reference/contextualSignatureInstantiation3.types b/tests/baselines/reference/contextualSignatureInstantiation3.types index c6ed5a7e97d..d01b2b1f8e4 100644 --- a/tests/baselines/reference/contextualSignatureInstantiation3.types +++ b/tests/baselines/reference/contextualSignatureInstantiation3.types @@ -43,6 +43,9 @@ function singleton(x: T) { var xs = [1, 2, 3]; >xs : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number // Have compiler check that we get the correct types var v1: number[]; diff --git a/tests/baselines/reference/contextualSignatureInstantiationWithTypeParameterConstrainedToOuterTypeParameter.types b/tests/baselines/reference/contextualSignatureInstantiationWithTypeParameterConstrainedToOuterTypeParameter.types index 89ea3028d94..d0a6d49487b 100644 --- a/tests/baselines/reference/contextualSignatureInstantiationWithTypeParameterConstrainedToOuterTypeParameter.types +++ b/tests/baselines/reference/contextualSignatureInstantiationWithTypeParameterConstrainedToOuterTypeParameter.types @@ -10,6 +10,7 @@ function f() { >u : U >U : U >U : U +>null : null return g; >g : (u: U) => U @@ -30,6 +31,7 @@ var x = h("", f()); // Call should succeed and x should be string. All t >x : string >h("", f()) : string >h : (v: V, func: (v: V) => W) => W +>"" : string >f() : (u: U) => U >f : () => (u: U) => U diff --git a/tests/baselines/reference/contextualTypeAny.types b/tests/baselines/reference/contextualTypeAny.types index b21c3748eda..cace92d6567 100644 --- a/tests/baselines/reference/contextualTypeAny.types +++ b/tests/baselines/reference/contextualTypeAny.types @@ -7,11 +7,13 @@ var obj: { [s: string]: number } = { p: "", q: x }; >s : string >{ p: "", q: x } : { [x: string]: any; p: string; q: any; } >p : string +>"" : string >q : any >x : any var arr: number[] = ["", x]; >arr : number[] >["", x] : any[] +>"" : string >x : any diff --git a/tests/baselines/reference/contextualTypeArrayReturnType.types b/tests/baselines/reference/contextualTypeArrayReturnType.types index ceb7aa53f67..f270b33f568 100644 --- a/tests/baselines/reference/contextualTypeArrayReturnType.types +++ b/tests/baselines/reference/contextualTypeArrayReturnType.types @@ -38,6 +38,7 @@ var style: IBookStyle = { {'ry': null } >{'ry': null } : { [x: string]: null; 'ry': null; } +>null : null ]; } diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.types b/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.types index 8a91fe18698..2f24ad08227 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.types +++ b/tests/baselines/reference/contextualTypeWithUnionTypeIndexSignatures.types @@ -91,6 +91,7 @@ var x: IWithNoStringIndexSignature | IWithStringIndexSignature1 = { foo: "hello" >IWithStringIndexSignature1 : IWithStringIndexSignature1 >{ foo: "hello" } : { [x: string]: string; foo: string; } >foo : string +>"hello" : string var x2: IWithStringIndexSignature1 | IWithStringIndexSignature2 = { z: a => a.toString() }; // a should be number >x2 : IWithStringIndexSignature1 | IWithStringIndexSignature2 @@ -142,6 +143,7 @@ var x3: IWithNoNumberIndexSignature | IWithNumberIndexSignature1 = { 0: "hello" >IWithNoNumberIndexSignature : IWithNoNumberIndexSignature >IWithNumberIndexSignature1 : IWithNumberIndexSignature1 >{ 0: "hello" } : { [x: number]: string; 0: string; } +>"hello" : string var x4: IWithNumberIndexSignature1 | IWithNumberIndexSignature2 = { 1: a => a.toString() }; // a should be number >x4 : IWithNumberIndexSignature1 | IWithNumberIndexSignature2 diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeMembers.types b/tests/baselines/reference/contextualTypeWithUnionTypeMembers.types index 522d4a4a555..c51227fd13a 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeMembers.types +++ b/tests/baselines/reference/contextualTypeWithUnionTypeMembers.types @@ -80,6 +80,7 @@ var i1Ori2: I1 | I2 = { // Like i1 commonPropertyType: "hello", >commonPropertyType : string +>"hello" : string commonMethodType: a=> a, >commonMethodType : (a: string) => string @@ -101,6 +102,7 @@ var i1Ori2: I1 | I2 = { // Like i1 propertyOnlyInI1: "Hello", >propertyOnlyInI1 : string +>"Hello" : string }; var i1Ori2: I1 | I2 = { // Like i2 @@ -111,6 +113,7 @@ var i1Ori2: I1 | I2 = { // Like i2 commonPropertyType: "hello", >commonPropertyType : string +>"hello" : string commonMethodType: a=> a, >commonMethodType : (a: string) => string @@ -132,6 +135,7 @@ var i1Ori2: I1 | I2 = { // Like i2 propertyOnlyInI2: "Hello", >propertyOnlyInI2 : string +>"Hello" : string }; var i1Ori2: I1 | I2 = { // Like i1 and i2 both @@ -142,6 +146,7 @@ var i1Ori2: I1 | I2 = { // Like i1 and i2 both commonPropertyType: "hello", >commonPropertyType : string +>"hello" : string commonMethodType: a=> a, >commonMethodType : (a: string) => string @@ -163,6 +168,7 @@ var i1Ori2: I1 | I2 = { // Like i1 and i2 both propertyOnlyInI1: "Hello", >propertyOnlyInI1 : string +>"Hello" : string methodOnlyInI2: a => a, >methodOnlyInI2 : (a: string) => string @@ -172,6 +178,7 @@ var i1Ori2: I1 | I2 = { // Like i1 and i2 both propertyOnlyInI2: "Hello", >propertyOnlyInI2 : string +>"Hello" : string }; @@ -187,6 +194,7 @@ var arrayI1OrI2: Array | I2> = [i1, i2, { // Like i1 commonPropertyType: "hello", >commonPropertyType : string +>"hello" : string commonMethodType: a=> a, >commonMethodType : (a: string) => string @@ -208,6 +216,7 @@ var arrayI1OrI2: Array | I2> = [i1, i2, { // Like i1 propertyOnlyInI1: "Hello", >propertyOnlyInI1 : string +>"Hello" : string }, { // Like i2 @@ -215,6 +224,7 @@ var arrayI1OrI2: Array | I2> = [i1, i2, { // Like i1 commonPropertyType: "hello", >commonPropertyType : string +>"hello" : string commonMethodType: a=> a, >commonMethodType : (a: string) => string @@ -236,12 +246,14 @@ var arrayI1OrI2: Array | I2> = [i1, i2, { // Like i1 propertyOnlyInI2: "Hello", >propertyOnlyInI2 : string +>"Hello" : string }, { // Like i1 and i2 both >{ // Like i1 and i2 both commonPropertyType: "hello", commonMethodType: a=> a, commonMethodWithTypeParameter: a => a, methodOnlyInI1: a => a, propertyOnlyInI1: "Hello", methodOnlyInI2: a => a, propertyOnlyInI2: "Hello", } : { commonPropertyType: string; commonMethodType: (a: string) => string; commonMethodWithTypeParameter: (a: number) => number; methodOnlyInI1: (a: string) => string; propertyOnlyInI1: string; methodOnlyInI2: (a: string) => string; propertyOnlyInI2: string; } commonPropertyType: "hello", >commonPropertyType : string +>"hello" : string commonMethodType: a=> a, >commonMethodType : (a: string) => string @@ -263,6 +275,7 @@ var arrayI1OrI2: Array | I2> = [i1, i2, { // Like i1 propertyOnlyInI1: "Hello", >propertyOnlyInI1 : string +>"Hello" : string methodOnlyInI2: a => a, >methodOnlyInI2 : (a: string) => string @@ -272,6 +285,7 @@ var arrayI1OrI2: Array | I2> = [i1, i2, { // Like i1 propertyOnlyInI2: "Hello", >propertyOnlyInI2 : string +>"Hello" : string }]; @@ -344,6 +358,7 @@ var i11Ori21: I11 | I21 = { }, commonPropertyDifferentType: "hello", >commonPropertyDifferentType : string +>"hello" : string }; var i11Ori21: I11 | I21 = { @@ -373,6 +388,7 @@ var i11Ori21: I11 | I21 = { }, commonPropertyDifferentType: 10, >commonPropertyDifferentType : number +>10 : number }; var arrayOrI11OrI21: Array = [i11, i21, i11 || i21, { @@ -409,6 +425,7 @@ var arrayOrI11OrI21: Array = [i11, i21, i11 || i21, { }, commonPropertyDifferentType: "hello", >commonPropertyDifferentType : string +>"hello" : string }, { >{ // Like i2 commonMethodDifferentReturnType: (a, b) => { var z = a.charCodeAt(b); return z; }, commonPropertyDifferentType: 10, } : { commonMethodDifferentReturnType: (a: string, b: number) => number; commonPropertyDifferentType: number; } @@ -434,5 +451,6 @@ var arrayOrI11OrI21: Array = [i11, i21, i11 || i21, { }, commonPropertyDifferentType: 10, >commonPropertyDifferentType : number +>10 : number }]; diff --git a/tests/baselines/reference/contextualTyping1.types b/tests/baselines/reference/contextualTyping1.types index a9d2f982569..6b2a794f987 100644 --- a/tests/baselines/reference/contextualTyping1.types +++ b/tests/baselines/reference/contextualTyping1.types @@ -4,4 +4,5 @@ var foo: {id:number;} = {id:4}; >id : number >{id:4} : { id: number; } >id : number +>4 : number diff --git a/tests/baselines/reference/contextualTyping10.types b/tests/baselines/reference/contextualTyping10.types index e3a6c2bcf4a..938f2731a30 100644 --- a/tests/baselines/reference/contextualTyping10.types +++ b/tests/baselines/reference/contextualTyping10.types @@ -6,6 +6,8 @@ class foo { public bar:{id:number;}[] = [{id:1}, {id:2}]; } >[{id:1}, {id:2}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >{id:2} : { id: number; } >id : number +>2 : number diff --git a/tests/baselines/reference/contextualTyping12.types b/tests/baselines/reference/contextualTyping12.types index 31d4e990938..68e2663fb6a 100644 --- a/tests/baselines/reference/contextualTyping12.types +++ b/tests/baselines/reference/contextualTyping12.types @@ -6,7 +6,10 @@ class foo { public bar:{id:number;}[] = [{id:1}, {id:2, name:"foo"}]; } >[{id:1}, {id:2, name:"foo"}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >{id:2, name:"foo"} : { id: number; name: string; } >id : number +>2 : number >name : string +>"foo" : string diff --git a/tests/baselines/reference/contextualTyping15.types b/tests/baselines/reference/contextualTyping15.types index c039504efbe..ed4fdad3bfc 100644 --- a/tests/baselines/reference/contextualTyping15.types +++ b/tests/baselines/reference/contextualTyping15.types @@ -4,4 +4,5 @@ class foo { public bar: { (): number; (i: number): number; } = function() { retu >bar : { (): number; (i: number): number; } >i : number >function() { return 1 } : () => number +>1 : number diff --git a/tests/baselines/reference/contextualTyping16.types b/tests/baselines/reference/contextualTyping16.types index 9e11cd5bf3b..63f93649208 100644 --- a/tests/baselines/reference/contextualTyping16.types +++ b/tests/baselines/reference/contextualTyping16.types @@ -4,8 +4,10 @@ var foo: {id:number;} = {id:4}; foo = {id:5}; >id : number >{id:4} : { id: number; } >id : number +>4 : number >foo = {id:5} : { id: number; } >foo : { id: number; } >{id:5} : { id: number; } >id : number +>5 : number diff --git a/tests/baselines/reference/contextualTyping17.types b/tests/baselines/reference/contextualTyping17.types index 63b18af94ab..649bc339ba1 100644 --- a/tests/baselines/reference/contextualTyping17.types +++ b/tests/baselines/reference/contextualTyping17.types @@ -4,9 +4,12 @@ var foo: {id:number;} = {id:4}; foo = {id: 5, name:"foo"}; >id : number >{id:4} : { id: number; } >id : number +>4 : number >foo = {id: 5, name:"foo"} : { id: number; name: string; } >foo : { id: number; } >{id: 5, name:"foo"} : { id: number; name: string; } >id : number +>5 : number >name : string +>"foo" : string diff --git a/tests/baselines/reference/contextualTyping18.types b/tests/baselines/reference/contextualTyping18.types index 0c3cd5fd963..0bef546022d 100644 --- a/tests/baselines/reference/contextualTyping18.types +++ b/tests/baselines/reference/contextualTyping18.types @@ -10,4 +10,5 @@ var foo: {id:number;} = <{id:number;}>({ }); foo = {id: 5}; >foo : { id: number; } >{id: 5} : { id: number; } >id : number +>5 : number diff --git a/tests/baselines/reference/contextualTyping19.types b/tests/baselines/reference/contextualTyping19.types index 6b07986e6e6..d384a68749a 100644 --- a/tests/baselines/reference/contextualTyping19.types +++ b/tests/baselines/reference/contextualTyping19.types @@ -5,11 +5,14 @@ var foo:{id:number;}[] = [{id:1}]; foo = [{id:1}, {id:2}]; >[{id:1}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >foo = [{id:1}, {id:2}] : { id: number; }[] >foo : { id: number; }[] >[{id:1}, {id:2}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >{id:2} : { id: number; } >id : number +>2 : number diff --git a/tests/baselines/reference/contextualTyping2.types b/tests/baselines/reference/contextualTyping2.types index 3474a284982..0658247c089 100644 --- a/tests/baselines/reference/contextualTyping2.types +++ b/tests/baselines/reference/contextualTyping2.types @@ -4,5 +4,7 @@ var foo: {id:number;} = {id:4, name:"foo"}; >id : number >{id:4, name:"foo"} : { id: number; name: string; } >id : number +>4 : number >name : string +>"foo" : string diff --git a/tests/baselines/reference/contextualTyping20.types b/tests/baselines/reference/contextualTyping20.types index e233e745cc6..be863db836b 100644 --- a/tests/baselines/reference/contextualTyping20.types +++ b/tests/baselines/reference/contextualTyping20.types @@ -5,12 +5,16 @@ var foo:{id:number;}[] = [{id:1}]; foo = [{id:1}, {id:2, name:"foo"}]; >[{id:1}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >foo = [{id:1}, {id:2, name:"foo"}] : { id: number; }[] >foo : { id: number; }[] >[{id:1}, {id:2, name:"foo"}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >{id:2, name:"foo"} : { id: number; name: string; } >id : number +>2 : number >name : string +>"foo" : string diff --git a/tests/baselines/reference/contextualTyping23.types b/tests/baselines/reference/contextualTyping23.types index 7e0d86920ea..0bb8b7a58e7 100644 --- a/tests/baselines/reference/contextualTyping23.types +++ b/tests/baselines/reference/contextualTyping23.types @@ -7,4 +7,5 @@ var foo:(a:{():number; (i:number):number; })=>number; foo = function(a){return 5 >foo : (a: { (): number; (i: number): number; }) => number >function(a){return 5} : (a: { (): number; (i: number): number; }) => number >a : { (): number; (i: number): number; } +>5 : number diff --git a/tests/baselines/reference/contextualTyping28.types b/tests/baselines/reference/contextualTyping28.types index 6019fde4a6b..e4833fd8838 100644 --- a/tests/baselines/reference/contextualTyping28.types +++ b/tests/baselines/reference/contextualTyping28.types @@ -5,4 +5,5 @@ function foo(param:number[]){}; foo([1]); >foo([1]) : void >foo : (param: number[]) => void >[1] : number[] +>1 : number diff --git a/tests/baselines/reference/contextualTyping29.types b/tests/baselines/reference/contextualTyping29.types index 9666e60e959..96695a6d0ba 100644 --- a/tests/baselines/reference/contextualTyping29.types +++ b/tests/baselines/reference/contextualTyping29.types @@ -5,4 +5,6 @@ function foo(param:number[]){}; foo([1, 3]); >foo([1, 3]) : void >foo : (param: number[]) => void >[1, 3] : number[] +>1 : number +>3 : number diff --git a/tests/baselines/reference/contextualTyping3.types b/tests/baselines/reference/contextualTyping3.types index ef00a78f5b4..81c201ee572 100644 --- a/tests/baselines/reference/contextualTyping3.types +++ b/tests/baselines/reference/contextualTyping3.types @@ -5,4 +5,5 @@ class foo { public bar:{id:number;} = {id:5}; } >id : number >{id:5} : { id: number; } >id : number +>5 : number diff --git a/tests/baselines/reference/contextualTyping31.types b/tests/baselines/reference/contextualTyping31.types index e37bacd33f3..22a8f08cf90 100644 --- a/tests/baselines/reference/contextualTyping31.types +++ b/tests/baselines/reference/contextualTyping31.types @@ -5,4 +5,5 @@ function foo(param:number[]){}; foo([1]); >foo([1]) : void >foo : (param: number[]) => void >[1] : number[] +>1 : number diff --git a/tests/baselines/reference/contextualTyping32.types b/tests/baselines/reference/contextualTyping32.types index c273be967e3..59f6040cf7f 100644 --- a/tests/baselines/reference/contextualTyping32.types +++ b/tests/baselines/reference/contextualTyping32.types @@ -7,5 +7,7 @@ function foo(param: {():number; (i:number):number; }[]) { }; foo([function(){ret >foo : (param: { (): number; (i: number): number; }[]) => void >[function(){return 1;}, function(){return 4}] : (() => number)[] >function(){return 1;} : () => number +>1 : number >function(){return 4} : () => number +>4 : number diff --git a/tests/baselines/reference/contextualTyping34.types b/tests/baselines/reference/contextualTyping34.types index dde11b7d4b1..6bc6b622fc8 100644 --- a/tests/baselines/reference/contextualTyping34.types +++ b/tests/baselines/reference/contextualTyping34.types @@ -6,4 +6,5 @@ var foo = <{ id: number;}> ({id:4}); >({id:4}) : { id: number; } >{id:4} : { id: number; } >id : number +>4 : number diff --git a/tests/baselines/reference/contextualTyping35.types b/tests/baselines/reference/contextualTyping35.types index ea07f429176..08bb6b27b8e 100644 --- a/tests/baselines/reference/contextualTyping35.types +++ b/tests/baselines/reference/contextualTyping35.types @@ -5,5 +5,7 @@ var foo = <{ id: number;}> {id:4, name: "as"}; >id : number >{id:4, name: "as"} : { id: number; name: string; } >id : number +>4 : number >name : string +>"as" : string diff --git a/tests/baselines/reference/contextualTyping36.types b/tests/baselines/reference/contextualTyping36.types index 8fb3f147f0a..6c93ed30a9f 100644 --- a/tests/baselines/reference/contextualTyping36.types +++ b/tests/baselines/reference/contextualTyping36.types @@ -6,6 +6,7 @@ var foo = <{ id: number; }[]>[{ id: 4 }, <{ id: number; }>({ })]; >[{ id: 4 }, <{ id: number; }>({ })] : { id: number; }[] >{ id: 4 } : { id: number; } >id : number +>4 : number ><{ id: number; }>({ }) : { id: number; } >id : number >({ }) : {} diff --git a/tests/baselines/reference/contextualTyping37.types b/tests/baselines/reference/contextualTyping37.types index 2180e74b5a1..299b4400137 100644 --- a/tests/baselines/reference/contextualTyping37.types +++ b/tests/baselines/reference/contextualTyping37.types @@ -6,5 +6,6 @@ var foo = <{ id: number; }[]>[{ foo: "s" }, { }]; >[{ foo: "s" }, { }] : {}[] >{ foo: "s" } : { foo: string; } >foo : string +>"s" : string >{ } : {} diff --git a/tests/baselines/reference/contextualTyping4.types b/tests/baselines/reference/contextualTyping4.types index 6af7adb86f3..757c67745f1 100644 --- a/tests/baselines/reference/contextualTyping4.types +++ b/tests/baselines/reference/contextualTyping4.types @@ -5,5 +5,7 @@ class foo { public bar:{id:number;} = {id:5, name:"foo"}; } >id : number >{id:5, name:"foo"} : { id: number; name: string; } >id : number +>5 : number >name : string +>"foo" : string diff --git a/tests/baselines/reference/contextualTyping40.types b/tests/baselines/reference/contextualTyping40.types index f659cdc8c92..1889d79f139 100644 --- a/tests/baselines/reference/contextualTyping40.types +++ b/tests/baselines/reference/contextualTyping40.types @@ -4,4 +4,5 @@ var foo = <{():number; (i:number):number; }> function(){return 1;}; ><{():number; (i:number):number; }> function(){return 1;} : { (): number; (i: number): number; } >i : number >function(){return 1;} : () => number +>1 : number diff --git a/tests/baselines/reference/contextualTyping6.types b/tests/baselines/reference/contextualTyping6.types index ab63159924f..b79811a948a 100644 --- a/tests/baselines/reference/contextualTyping6.types +++ b/tests/baselines/reference/contextualTyping6.types @@ -5,6 +5,8 @@ var foo:{id:number;}[] = [{id:1}, {id:2}]; >[{id:1}, {id:2}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >{id:2} : { id: number; } >id : number +>2 : number diff --git a/tests/baselines/reference/contextualTyping9.types b/tests/baselines/reference/contextualTyping9.types index 9d63203583d..46480d64b30 100644 --- a/tests/baselines/reference/contextualTyping9.types +++ b/tests/baselines/reference/contextualTyping9.types @@ -5,7 +5,10 @@ var foo:{id:number;}[] = [{id:1}, {id:2, name:"foo"}]; >[{id:1}, {id:2, name:"foo"}] : { id: number; }[] >{id:1} : { id: number; } >id : number +>1 : number >{id:2, name:"foo"} : { id: number; name: string; } >id : number +>2 : number >name : string +>"foo" : string diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression.types b/tests/baselines/reference/contextualTypingOfConditionalExpression.types index 2cd2b671b40..a2e29a0e66b 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression.types +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression.types @@ -3,6 +3,7 @@ var x: (a: number) => void = true ? (a) => a.toExponential() : (b) => b.toFixed( >x : (a: number) => void >a : number >true ? (a) => a.toExponential() : (b) => b.toFixed() : (a: number) => string +>true : boolean >(a) => a.toExponential() : (a: number) => string >a : number >a.toExponential() : string @@ -42,6 +43,7 @@ var x2: (a: A) => void = true ? (a) => a.foo : (b) => b.foo; >a : A >A : A >true ? (a) => a.foo : (b) => b.foo : (a: A) => number +>true : boolean >(a) => a.foo : (a: A) => number >a : A >a.foo : number diff --git a/tests/baselines/reference/contextualTypingTwoInstancesOfSameTypeParameter.types b/tests/baselines/reference/contextualTypingTwoInstancesOfSameTypeParameter.types index 0e5c25a9282..264735a995a 100644 --- a/tests/baselines/reference/contextualTypingTwoInstancesOfSameTypeParameter.types +++ b/tests/baselines/reference/contextualTypingTwoInstancesOfSameTypeParameter.types @@ -8,6 +8,7 @@ function f6(x: (a: T) => T) { >T : T return null; +>null : null } f6(x => f6(y => x = y)); >f6(x => f6(y => x = y)) : any diff --git a/tests/baselines/reference/contextuallyTypedFunctionExpressionsAndReturnAnnotations.types b/tests/baselines/reference/contextuallyTypedFunctionExpressionsAndReturnAnnotations.types index 09c317c64a0..94b184f65da 100644 --- a/tests/baselines/reference/contextuallyTypedFunctionExpressionsAndReturnAnnotations.types +++ b/tests/baselines/reference/contextuallyTypedFunctionExpressionsAndReturnAnnotations.types @@ -19,8 +19,11 @@ foo((y): (y2: number) => void => { >y.charAt : (pos: number) => string >y : string >charAt : (pos: number) => string +>0 : number return null; +>null : null + }); foo((y: string) => { @@ -41,5 +44,7 @@ foo((y: string) => { >toFixed : (fractionDigits?: number) => string return 0; +>0 : number + }; }); diff --git a/tests/baselines/reference/contextuallyTypingOrOperator.types b/tests/baselines/reference/contextuallyTypingOrOperator.types index 47b78f5691d..676ad04bfa9 100644 --- a/tests/baselines/reference/contextuallyTypingOrOperator.types +++ b/tests/baselines/reference/contextuallyTypingOrOperator.types @@ -15,6 +15,7 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; >a : (s: string) => number >s => 1 : (s: string) => number >s : string +>1 : number var v2 = (s: string) => s.length || function (s) { s.length }; >v2 : (s: string) => number | ((s: any) => void) @@ -40,12 +41,14 @@ var v3 = (s: string) => s.length || function (s: number) { return 1 }; >length : number >function (s: number) { return 1 } : (s: number) => number >s : number +>1 : number var v4 = (s: number) => 1 || function (s: string) { return s.length }; >v4 : (s: number) => number | ((s: string) => number) >(s: number) => 1 || function (s: string) { return s.length } : (s: number) => number | ((s: string) => number) >s : number >1 || function (s: string) { return s.length } : number | ((s: string) => number) +>1 : number >function (s: string) { return s.length } : (s: string) => number >s : string >s.length : number diff --git a/tests/baselines/reference/contextuallyTypingOrOperator2.types b/tests/baselines/reference/contextuallyTypingOrOperator2.types index 65ed442d5e9..2a73ccc9c9d 100644 --- a/tests/baselines/reference/contextuallyTypingOrOperator2.types +++ b/tests/baselines/reference/contextuallyTypingOrOperator2.types @@ -15,6 +15,7 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; >a : (s: string) => number >s => 1 : (s: string) => number >s : string +>1 : number var v2 = (s: string) => s.length || function (s) { s.aaa }; >v2 : (s: string) => number | ((s: any) => void) diff --git a/tests/baselines/reference/continueInIterationStatement1.types b/tests/baselines/reference/continueInIterationStatement1.types index 210de69f6bb..4fcf3794844 100644 --- a/tests/baselines/reference/continueInIterationStatement1.types +++ b/tests/baselines/reference/continueInIterationStatement1.types @@ -1,5 +1,6 @@ === tests/cases/compiler/continueInIterationStatement1.ts === while (true) { -No type information for this code. continue; -No type information for this code.} -No type information for this code. \ No newline at end of file +>true : boolean + + continue; +} diff --git a/tests/baselines/reference/continueInIterationStatement2.types b/tests/baselines/reference/continueInIterationStatement2.types index 5cb4b62f39a..4a3d50c7501 100644 --- a/tests/baselines/reference/continueInIterationStatement2.types +++ b/tests/baselines/reference/continueInIterationStatement2.types @@ -1,6 +1,7 @@ === tests/cases/compiler/continueInIterationStatement2.ts === do { -No type information for this code. continue; -No type information for this code.} -No type information for this code.while (true); -No type information for this code. \ No newline at end of file + continue; +} +while (true); +>true : boolean + diff --git a/tests/baselines/reference/continueLabel.types b/tests/baselines/reference/continueLabel.types index 79c5381f08a..4bda5684a0f 100644 --- a/tests/baselines/reference/continueLabel.types +++ b/tests/baselines/reference/continueLabel.types @@ -1,10 +1,14 @@ === tests/cases/compiler/continueLabel.ts === label1: for(var i = 0; i < 1; i++) { +>label1 : unknown >i : number +>0 : number >i < 1 : boolean >i : number +>1 : number >i++ : number >i : number continue label1; +>label1 : unknown } diff --git a/tests/baselines/reference/continueTarget2.types b/tests/baselines/reference/continueTarget2.types index 16f45c402cd..bb91d1a9c12 100644 --- a/tests/baselines/reference/continueTarget2.types +++ b/tests/baselines/reference/continueTarget2.types @@ -1,6 +1,10 @@ === tests/cases/compiler/continueTarget2.ts === target: -No type information for this code.while (true) { -No type information for this code. continue target; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target : unknown + +while (true) { +>true : boolean + + continue target; +>target : unknown +} diff --git a/tests/baselines/reference/continueTarget3.types b/tests/baselines/reference/continueTarget3.types index a1b930f2f5a..216a0f29a9f 100644 --- a/tests/baselines/reference/continueTarget3.types +++ b/tests/baselines/reference/continueTarget3.types @@ -1,7 +1,13 @@ === tests/cases/compiler/continueTarget3.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. continue target1; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + continue target1; +>target1 : unknown +} diff --git a/tests/baselines/reference/continueTarget4.types b/tests/baselines/reference/continueTarget4.types index ea1989a3e4d..1640d786b3a 100644 --- a/tests/baselines/reference/continueTarget4.types +++ b/tests/baselines/reference/continueTarget4.types @@ -1,7 +1,13 @@ === tests/cases/compiler/continueTarget4.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. continue target2; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + continue target2; +>target2 : unknown +} diff --git a/tests/baselines/reference/crashInresolveReturnStatement.types b/tests/baselines/reference/crashInresolveReturnStatement.types index 6d31f15569b..5a43d916edc 100644 --- a/tests/baselines/reference/crashInresolveReturnStatement.types +++ b/tests/baselines/reference/crashInresolveReturnStatement.types @@ -19,6 +19,7 @@ class CreateCopyOfWorkItemDialog { >getDialogResult : () => any return null; +>null : null } } function createWorkItemDialog(dialogType: P0) { diff --git a/tests/baselines/reference/declFileAccessors.types b/tests/baselines/reference/declFileAccessors.types index 2d8524a21c3..00b10f7bf40 100644 --- a/tests/baselines/reference/declFileAccessors.types +++ b/tests/baselines/reference/declFileAccessors.types @@ -9,6 +9,7 @@ export class c1 { >p3 : number return 10; +>10 : number } /** setter property*/ public set p3(/** this is value*/value: number) { @@ -20,6 +21,7 @@ export class c1 { >pp3 : number return 10; +>10 : number } /** private setter property*/ private set pp3(/** this is value*/value: number) { @@ -31,6 +33,7 @@ export class c1 { >s3 : number return 10; +>10 : number } /** setter property*/ static set s3( /** this is value*/value: number) { @@ -41,6 +44,7 @@ export class c1 { >nc_p3 : number return 10; +>10 : number } public set nc_p3(value: number) { >nc_p3 : number @@ -50,6 +54,7 @@ export class c1 { >nc_pp3 : number return 10; +>10 : number } private set nc_pp3(value: number) { >nc_pp3 : number @@ -59,6 +64,7 @@ export class c1 { >nc_s3 : string return ""; +>"" : string } static set nc_s3(value: string) { >nc_s3 : string @@ -70,6 +76,7 @@ export class c1 { >onlyGetter : number return 10; +>10 : number } // Only setter property @@ -89,6 +96,7 @@ class c2 { >p3 : number return 10; +>10 : number } /** setter property*/ public set p3(/** this is value*/value: number) { @@ -100,6 +108,7 @@ class c2 { >pp3 : number return 10; +>10 : number } /** private setter property*/ private set pp3(/** this is value*/value: number) { @@ -111,6 +120,7 @@ class c2 { >s3 : number return 10; +>10 : number } /** setter property*/ static set s3( /** this is value*/value: number) { @@ -121,6 +131,7 @@ class c2 { >nc_p3 : number return 10; +>10 : number } public set nc_p3(value: number) { >nc_p3 : number @@ -130,6 +141,7 @@ class c2 { >nc_pp3 : number return 10; +>10 : number } private set nc_pp3(value: number) { >nc_pp3 : number @@ -139,6 +151,7 @@ class c2 { >nc_s3 : string return ""; +>"" : string } static set nc_s3(value: string) { >nc_s3 : string @@ -150,6 +163,7 @@ class c2 { >onlyGetter : number return 10; +>10 : number } // Only setter property diff --git a/tests/baselines/reference/declFileConstructors.types b/tests/baselines/reference/declFileConstructors.types index 723830bdeea..68782eb3617 100644 --- a/tests/baselines/reference/declFileConstructors.types +++ b/tests/baselines/reference/declFileConstructors.types @@ -38,6 +38,7 @@ export class ConstructorWithRestParamters { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } } @@ -84,6 +85,7 @@ export class ConstructorWithParameterInitializer { constructor(public x = "hello") { >x : string +>"hello" : string } } @@ -126,6 +128,7 @@ class GlobalConstructorWithRestParamters { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } } @@ -172,5 +175,6 @@ class GlobalConstructorWithParameterInitializer { constructor(public x = "hello") { >x : string +>"hello" : string } } diff --git a/tests/baselines/reference/declFileEnums.types b/tests/baselines/reference/declFileEnums.types index d4d7230e930..5fb0d0736be 100644 --- a/tests/baselines/reference/declFileEnums.types +++ b/tests/baselines/reference/declFileEnums.types @@ -18,14 +18,17 @@ enum e2 { a = 10, >a : e2 +>10 : number b = a + 2, >b : e2 >a + 2 : number >a : e2 +>2 : number c = 10, >c : e2 +>10 : number } enum e3 { @@ -33,6 +36,7 @@ enum e3 { a = 10, >a : e3 +>10 : number b = Math.PI, >b : e3 @@ -44,6 +48,7 @@ enum e3 { >c : e3 >a + 3 : number >a : e3 +>3 : number } enum e4 { @@ -60,6 +65,7 @@ enum e4 { d = 10, >d : e4 +>10 : number e >e : e4 diff --git a/tests/baselines/reference/declFileForVarList.types b/tests/baselines/reference/declFileForVarList.types index 6e148efa1c2..5e55104666b 100644 --- a/tests/baselines/reference/declFileForVarList.types +++ b/tests/baselines/reference/declFileForVarList.types @@ -4,9 +4,13 @@ var x, y, z = 1; >x : any >y : any >z : number +>1 : number var x1 = 1, y2 = 2, z2 = 3; >x1 : number +>1 : number >y2 : number +>2 : number >z2 : number +>3 : number diff --git a/tests/baselines/reference/declFileFunctions.types b/tests/baselines/reference/declFileFunctions.types index bfbe658a758..b9e94f7ffcd 100644 --- a/tests/baselines/reference/declFileFunctions.types +++ b/tests/baselines/reference/declFileFunctions.types @@ -29,6 +29,7 @@ export function fooWithRestParameters(a: string, ...rests: string[]) { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } export function fooWithOverloads(a: string): string; @@ -88,6 +89,7 @@ function nonExportedFooWithRestParameters(a: string, ...rests: string[]) { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } function nonExportedFooWithOverloads(a: string): string; @@ -136,6 +138,7 @@ function globalfooWithRestParameters(a: string, ...rests: string[]) { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } function globalfooWithOverloads(a: string): string; >globalfooWithOverloads : { (a: string): string; (a: number): number; } diff --git a/tests/baselines/reference/declFileGenericType.types b/tests/baselines/reference/declFileGenericType.types index 50026cc3aeb..6890c2a07e9 100644 --- a/tests/baselines/reference/declFileGenericType.types +++ b/tests/baselines/reference/declFileGenericType.types @@ -16,6 +16,7 @@ export module C { >T : T >A : A >B : B +>null : null export function F2(x: T): C.A { return null; } >F2 : (x: T) => A @@ -26,6 +27,7 @@ export module C { >A : A >C : unknown >B : B +>null : null export function F3(x: T): C.A[] { return null; } >F3 : (x: T) => A[] @@ -36,6 +38,7 @@ export module C { >A : A >C : unknown >B : B +>null : null export function F4>(x: T): Array> { return null; } >F4 : >(x: T) => A[] @@ -49,11 +52,13 @@ export module C { >A : A >C : unknown >B : B +>null : null export function F5(): T { return null; } >F5 : () => T >T : T >T : T +>null : null export function F6>(x: T): T { return null; } >F6 : >(x: T) => T @@ -63,6 +68,7 @@ export module C { >x : T >T : T >T : T +>null : null export class D{ >D : D @@ -147,6 +153,7 @@ export var g = C.F5>(); export class h extends C.A{ } >h : h +>C.A : unknown >C : typeof C >A : C.A >C : unknown @@ -154,6 +161,7 @@ export class h extends C.A{ } export interface i extends C.A { } >i : i +>C.A : unknown >C : typeof C >A : C.A >C : unknown diff --git a/tests/baselines/reference/declFileGenericType2.types b/tests/baselines/reference/declFileGenericType2.types index fed2caca7ac..8dab50a5e3d 100644 --- a/tests/baselines/reference/declFileGenericType2.types +++ b/tests/baselines/reference/declFileGenericType2.types @@ -30,6 +30,7 @@ declare module templa.mvc { >templa : unknown >mvc : unknown >IModel : IModel +>mvc.IController : unknown >mvc : typeof mvc >IController : IController >ModelType : ModelType @@ -42,6 +43,7 @@ declare module templa.mvc.composite { interface ICompositeControllerModel extends mvc.IModel { >ICompositeControllerModel : ICompositeControllerModel +>mvc.IModel : unknown >mvc : typeof mvc >IModel : IModel @@ -64,6 +66,8 @@ module templa.dom.mvc { >templa : unknown >mvc : unknown >IModel : templa.mvc.IModel +>templa.mvc.IController : unknown +>templa.mvc : typeof templa.mvc >templa : typeof templa >mvc : typeof templa.mvc >IController : templa.mvc.IController @@ -82,6 +86,8 @@ module templa.dom.mvc { >templa : unknown >mvc : unknown >IModel : templa.mvc.IModel +>templa.mvc.AbstractController : unknown +>templa.mvc : typeof templa.mvc >templa : typeof templa >mvc : typeof templa.mvc >AbstractController : templa.mvc.AbstractController @@ -110,6 +116,9 @@ module templa.dom.mvc.composite { >mvc : unknown >composite : unknown >ICompositeControllerModel : templa.mvc.composite.ICompositeControllerModel +>templa.dom.mvc.AbstractElementController : unknown +>templa.dom.mvc : typeof mvc +>templa.dom : typeof dom >templa : typeof templa >dom : typeof dom >mvc : typeof mvc diff --git a/tests/baselines/reference/declFileImportModuleWithExportAssignment.types b/tests/baselines/reference/declFileImportModuleWithExportAssignment.types index 15201baa487..9ab5fc735f0 100644 --- a/tests/baselines/reference/declFileImportModuleWithExportAssignment.types +++ b/tests/baselines/reference/declFileImportModuleWithExportAssignment.types @@ -12,6 +12,9 @@ a.test1(null, null, null); >a.test1 : a1.connectModule >a : { (): a1.connectExport; test1: a1.connectModule; test2(): a1.connectModule; } >test1 : a1.connectModule +>null : null +>null : null +>null : null === tests/cases/compiler/declFileImportModuleWithExportAssignment_0.ts === diff --git a/tests/baselines/reference/declFileMethods.types b/tests/baselines/reference/declFileMethods.types index 6432540f5a4..ecd7b8e0cff 100644 --- a/tests/baselines/reference/declFileMethods.types +++ b/tests/baselines/reference/declFileMethods.types @@ -32,6 +32,7 @@ export class c1 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } public fooWithOverloads(a: string): string; @@ -80,6 +81,7 @@ export class c1 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } private privateFooWithOverloads(a: string): string; >privateFooWithOverloads : { (a: string): string; (a: number): number; } @@ -127,6 +129,7 @@ export class c1 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } static staticFooWithOverloads(a: string): string; >staticFooWithOverloads : { (a: string): string; (a: number): number; } @@ -174,6 +177,7 @@ export class c1 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } private static privateStaticFooWithOverloads(a: string): string; >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; } @@ -255,6 +259,7 @@ class c2 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } public fooWithOverloads(a: string): string; @@ -303,6 +308,7 @@ class c2 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } private privateFooWithOverloads(a: string): string; >privateFooWithOverloads : { (a: string): string; (a: number): number; } @@ -350,6 +356,7 @@ class c2 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } static staticFooWithOverloads(a: string): string; >staticFooWithOverloads : { (a: string): string; (a: number): number; } @@ -397,6 +404,7 @@ class c2 { >rests.join : (separator?: string) => string >rests : string[] >join : (separator?: string) => string +>"" : string } private static privateStaticFooWithOverloads(a: string): string; >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; } diff --git a/tests/baselines/reference/declFileModuleContinuation.types b/tests/baselines/reference/declFileModuleContinuation.types index 0080d7cbbf3..c7bf5fcffe6 100644 --- a/tests/baselines/reference/declFileModuleContinuation.types +++ b/tests/baselines/reference/declFileModuleContinuation.types @@ -15,6 +15,8 @@ module A.B.C { export class W implements A.C.Z { >W : W +>A.C.Z : unknown +>A.C : unknown >A : typeof A >C : unknown >Z : A.C.Z diff --git a/tests/baselines/reference/declFileRegressionTests.types b/tests/baselines/reference/declFileRegressionTests.types index 8d058769c0a..7b8933e1def 100644 --- a/tests/baselines/reference/declFileRegressionTests.types +++ b/tests/baselines/reference/declFileRegressionTests.types @@ -5,9 +5,12 @@ var n = { w: null, x: '', y: () => { }, z: 32 }; >n : { w: any; x: string; y: () => void; z: number; } >{ w: null, x: '', y: () => { }, z: 32 } : { w: null; x: string; y: () => void; z: number; } >w : null +>null : null >x : string +>'' : string >y : () => void >() => { } : () => void >z : number +>32 : number diff --git a/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types b/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types index ecb7c002089..0bfa5b6312c 100644 --- a/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types +++ b/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types @@ -29,6 +29,7 @@ var f6 = () => { return [10]; } >() => { return [10]; } : () => any[] >[10] : any[] >10 : any +>10 : number diff --git a/tests/baselines/reference/declFileTypeAnnotationBuiltInType.types b/tests/baselines/reference/declFileTypeAnnotationBuiltInType.types index ce4f5654a89..a1b2d9edd43 100644 --- a/tests/baselines/reference/declFileTypeAnnotationBuiltInType.types +++ b/tests/baselines/reference/declFileTypeAnnotationBuiltInType.types @@ -5,11 +5,13 @@ function foo(): string { >foo : () => string return ""; +>"" : string } function foo2() { >foo2 : () => string return ""; +>"" : string } // number @@ -17,11 +19,13 @@ function foo3(): number { >foo3 : () => number return 10; +>10 : number } function foo4() { >foo4 : () => number return 10; +>10 : number } // boolean @@ -29,11 +33,13 @@ function foo5(): boolean { >foo5 : () => boolean return true; +>true : boolean } function foo6() { >foo6 : () => boolean return false; +>false : boolean } // void diff --git a/tests/baselines/reference/declFileTypeAnnotationParenType.types b/tests/baselines/reference/declFileTypeAnnotationParenType.types index c904f1b3e5a..31b6ad03751 100644 --- a/tests/baselines/reference/declFileTypeAnnotationParenType.types +++ b/tests/baselines/reference/declFileTypeAnnotationParenType.types @@ -30,6 +30,7 @@ var k: (() => c) | string = (() => new c()) || ""; >() => new c() : () => c >new c() : c >c : typeof c +>"" : string var l = (() => new c()) || ""; >l : string | (() => c) @@ -38,4 +39,5 @@ var l = (() => new c()) || ""; >() => new c() : () => c >new c() : c >c : typeof c +>"" : string diff --git a/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types b/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types index d50d95f988b..3041b92cf6d 100644 --- a/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types +++ b/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types @@ -19,6 +19,7 @@ function foo(a: string): string | number { if (a === "hello") { >a === "hello" : boolean >a : string +>"hello" : string return a.length; >a.length : number diff --git a/tests/baselines/reference/declFileTypeAnnotationTypeQuery.types b/tests/baselines/reference/declFileTypeAnnotationTypeQuery.types index c7b5c421de1..01fce150ab8 100644 --- a/tests/baselines/reference/declFileTypeAnnotationTypeQuery.types +++ b/tests/baselines/reference/declFileTypeAnnotationTypeQuery.types @@ -37,6 +37,7 @@ function foo2() { // Qualified name function foo3(): typeof m.c { >foo3 : () => typeof m.c +>m.c : typeof m.c >m : typeof m >c : typeof m.c @@ -72,6 +73,7 @@ function foo6() { // Qualified name with type arguments function foo7(): typeof m.g { >foo7 : () => typeof m.g +>m.g : typeof m.g >m : typeof m >g : typeof m.g diff --git a/tests/baselines/reference/declFileTypeofFunction.types b/tests/baselines/reference/declFileTypeofFunction.types index bede9ba254b..b47b07035d1 100644 --- a/tests/baselines/reference/declFileTypeofFunction.types +++ b/tests/baselines/reference/declFileTypeofFunction.types @@ -44,6 +44,7 @@ function foo(): typeof foo { >foo : () => typeof foo return null; +>null : null } var foo1: typeof foo; >foo1 : () => typeof foo diff --git a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types index 818a31b26d5..d4ac7416bc7 100644 --- a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types +++ b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types @@ -19,6 +19,9 @@ module X.Y.base { export class W extends A.B.Base.W { >W : W +>A.B.Base.W : unknown +>A.B.Base : typeof A.B.Base +>A.B : typeof A.B >A : typeof A >B : typeof A.B >Base : typeof A.B.Base @@ -38,6 +41,9 @@ module X.Y.base.Z { export class W extends X.Y.base.W { >W : W >TValue : TValue +>X.Y.base.W : unknown +>X.Y.base : typeof base +>X.Y : typeof Y >X : typeof X >Y : typeof Y >base : typeof base diff --git a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types index b2a1c154412..116b3f1294c 100644 --- a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types +++ b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause1.types @@ -20,6 +20,9 @@ module X.A.B.C { } export class W implements X.A.C.Z { // This needs to be refered as X.A.C.Z as A has conflict >W : W +>X.A.C.Z : unknown +>X.A.C : unknown +>X.A : typeof A >X : typeof X >A : typeof A >C : unknown diff --git a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types index e43d0b78f57..a3fd7092378 100644 --- a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types +++ b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause2.types @@ -17,6 +17,8 @@ module X.A.B.C { export class W implements A.C.Z { // This can refer to it as A.C.Z >W : W +>A.C.Z : unknown +>A.C : unknown >A : typeof A >C : unknown >Z : A.C.Z diff --git a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types index d45c2cf0523..4b79113283b 100644 --- a/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types +++ b/tests/baselines/reference/declFileWithInternalModuleNameConflictsInExtendsClause3.types @@ -17,6 +17,9 @@ module X.A.B.C { export class W implements X.A.C.Z { // This needs to be refered as X.A.C.Z as A has conflict >W : W +>X.A.C.Z : unknown +>X.A.C : unknown +>X.A : typeof A >X : typeof X >A : typeof A >C : unknown diff --git a/tests/baselines/reference/declInput3.types b/tests/baselines/reference/declInput3.types index df69422f55b..0dcbc6bd3cd 100644 --- a/tests/baselines/reference/declInput3.types +++ b/tests/baselines/reference/declInput3.types @@ -9,6 +9,7 @@ class bar { public f() { return ''; } >f : () => string +>'' : string public g() { return {a: null, b: undefined, c: void 4 }; } >g : () => { a: bar; b: any; c: any; } @@ -16,16 +17,21 @@ class bar { >a : bar >null : bar >bar : bar +>null : null >b : undefined >undefined : undefined >c : undefined >void 4 : undefined +>4 : number public h(x = 4, y = null, z = '') { x++; } >h : (x?: number, y?: any, z?: string) => void >x : number +>4 : number >y : any +>null : null >z : string +>'' : string >x++ : number >x : number } diff --git a/tests/baselines/reference/declInput4.types b/tests/baselines/reference/declInput4.types index 7f5c5a81197..dd6915c162d 100644 --- a/tests/baselines/reference/declInput4.types +++ b/tests/baselines/reference/declInput4.types @@ -34,10 +34,12 @@ module M { public m232(): E { return null;} >m232 : () => E >E : E +>null : null public m242(): I1 { return null; } >m242 : () => I1 >I1 : I1 +>null : null public m26(i:I1) {} >m26 : (i: I1) => void diff --git a/tests/baselines/reference/declarationEmitDefaultExport3.types b/tests/baselines/reference/declarationEmitDefaultExport3.types index 0bde6eff915..91ee71f61ac 100644 --- a/tests/baselines/reference/declarationEmitDefaultExport3.types +++ b/tests/baselines/reference/declarationEmitDefaultExport3.types @@ -3,4 +3,5 @@ export default function foo() { >foo : () => string return "" +>"" : string } diff --git a/tests/baselines/reference/declarationEmitDefaultExport4.types b/tests/baselines/reference/declarationEmitDefaultExport4.types index 8043af36b76..ab97484176d 100644 --- a/tests/baselines/reference/declarationEmitDefaultExport4.types +++ b/tests/baselines/reference/declarationEmitDefaultExport4.types @@ -1,5 +1,5 @@ === tests/cases/compiler/declarationEmitDefaultExport4.ts === export default function () { -No type information for this code. return 1; -No type information for this code.} -No type information for this code. \ No newline at end of file + return 1; +>1 : number +} diff --git a/tests/baselines/reference/declarationEmitDefaultExport5.types b/tests/baselines/reference/declarationEmitDefaultExport5.types index 702cc51f71e..d2b177cc084 100644 --- a/tests/baselines/reference/declarationEmitDefaultExport5.types +++ b/tests/baselines/reference/declarationEmitDefaultExport5.types @@ -1,4 +1,6 @@ === tests/cases/compiler/declarationEmitDefaultExport5.ts === export default 1 + 2; >1 + 2 : number +>1 : number +>2 : number diff --git a/tests/baselines/reference/declarationEmitDefaultExport8.types b/tests/baselines/reference/declarationEmitDefaultExport8.types index b33fdc901f9..bd99ee14530 100644 --- a/tests/baselines/reference/declarationEmitDefaultExport8.types +++ b/tests/baselines/reference/declarationEmitDefaultExport8.types @@ -2,6 +2,7 @@ var _default = 1; >_default : number +>1 : number export {_default as d} >_default : number @@ -9,4 +10,6 @@ export {_default as d} export default 1 + 2; >1 + 2 : number +>1 : number +>2 : number diff --git a/tests/baselines/reference/declarationEmitDestructuring2.types b/tests/baselines/reference/declarationEmitDestructuring2.types index 3368d4e72fd..0ab3de87fa8 100644 --- a/tests/baselines/reference/declarationEmitDestructuring2.types +++ b/tests/baselines/reference/declarationEmitDestructuring2.types @@ -2,16 +2,26 @@ function f({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]} = { x: 10, y: [2, 4, 6, 8] }) { } >f : ({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]}?: { x: number; y: [number, number, number, number]; }) => void >x : number +>10 : number >y : unknown >a : number >b : number >c : number >d : number >[1, 2, 3, 4] : [number, number, number, number] +>1 : number +>2 : number +>3 : number +>4 : number >{ x: 10, y: [2, 4, 6, 8] } : { x: number; y: [number, number, number, number]; } >x : number +>10 : number >y : [number, number, number, number] >[2, 4, 6, 8] : [number, number, number, number] +>2 : number +>4 : number +>6 : number +>8 : number function g([a, b, c, d] = [1, 2, 3, 4]) { } >g : ([a, b, c, d]?: [number, number, number, number]) => void @@ -20,6 +30,10 @@ function g([a, b, c, d] = [1, 2, 3, 4]) { } >c : number >d : number >[1, 2, 3, 4] : [number, number, number, number] +>1 : number +>2 : number +>3 : number +>4 : number function h([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]){ } >h : ([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]: [any, [any], [[any]], { x?: number; y: [any, any, any]; z: { a1: any; b1: any; }; }]) => void @@ -27,6 +41,7 @@ function h([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]){ } >b : any >c : any >x : number +>10 : number >y : unknown >a : any >b : any @@ -41,8 +56,12 @@ function h1([a, [b], [[c]], {x = 10, y = [1, 2, 3], z: {a1, b1}}]){ } >b : any >c : any >x : number +>10 : number >y : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >z : unknown >a1 : any >b1 : any diff --git a/tests/baselines/reference/declarationEmitDestructuring3.types b/tests/baselines/reference/declarationEmitDestructuring3.types index 57764f53eee..da9fc6d6606 100644 --- a/tests/baselines/reference/declarationEmitDestructuring3.types +++ b/tests/baselines/reference/declarationEmitDestructuring3.types @@ -10,5 +10,8 @@ function foo([x, ...y] = [1, "string", true]) { } >x : string | number | boolean >y : (string | number | boolean)[] >[1, "string", true] : (string | number | boolean)[] +>1 : number +>"string" : string +>true : boolean diff --git a/tests/baselines/reference/declarationEmitDestructuring4.types b/tests/baselines/reference/declarationEmitDestructuring4.types index 6a90eda1702..9621d61e02b 100644 --- a/tests/baselines/reference/declarationEmitDestructuring4.types +++ b/tests/baselines/reference/declarationEmitDestructuring4.types @@ -8,11 +8,17 @@ function baz([]) { } function baz1([] = [1,2,3]) { } >baz1 : ([]?: number[]) => void >[1,2,3] : number[] +>1 : number +>2 : number +>3 : number function baz2([[]] = [[1,2,3]]) { } >baz2 : ([[]]?: [number[]]) => void >[[1,2,3]] : [number[]] >[1,2,3] : number[] +>1 : number +>2 : number +>3 : number function baz3({}) { } >baz3 : ({}: {}) => void @@ -21,5 +27,6 @@ function baz4({} = { x: 10 }) { } >baz4 : ({}?: { x: number; }) => void >{ x: 10 } : { x: number; } >x : number +>10 : number diff --git a/tests/baselines/reference/declarationEmitDestructuring5.types b/tests/baselines/reference/declarationEmitDestructuring5.types index 375440bea0b..f09b1ebf50c 100644 --- a/tests/baselines/reference/declarationEmitDestructuring5.types +++ b/tests/baselines/reference/declarationEmitDestructuring5.types @@ -1,22 +1,38 @@ === tests/cases/compiler/declarationEmitDestructuring5.ts === function baz([, z, , ]) { } >baz : ([, z, , ]: [any, any, any]) => void +> : undefined >z : any +> : undefined function foo([, b, ]: [any, any]): void { } >foo : ([, b, ]: [any, any]) => void +> : undefined >b : any function bar([z, , , ]) { } >bar : ([z, , , ]: [any, any, any]) => void >z : any +> : undefined +> : undefined function bar1([z, , , ] = [1, 3, 4, 6, 7]) { } >bar1 : ([z, , , ]?: [number, number, number, number, number]) => void >z : number +> : undefined +> : undefined >[1, 3, 4, 6, 7] : [number, number, number, number, number] +>1 : number +>3 : number +>4 : number +>6 : number +>7 : number function bar2([,,z, , , ]) { } >bar2 : ([,,z, , , ]: [any, any, any, any, any]) => void +> : undefined +> : undefined >z : any +> : undefined +> : undefined diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types index 9f6f4c9857d..0feeaf2db1a 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern1.types @@ -2,23 +2,36 @@ var [] = [1, "hello"]; // Dont emit anything >[1, "hello"] : (string | number)[] +>1 : number +>"hello" : string var [x] = [1, "hello"]; // emit x: number >x : number >[1, "hello"] : [number, string] +>1 : number +>"hello" : string var [x1, y1] = [1, "hello"]; // emit x1: number, y1: string >x1 : number >y1 : string >[1, "hello"] : [number, string] +>1 : number +>"hello" : string var [, , z1] = [0, 1, 2]; // emit z1: number +> : undefined +> : undefined >z1 : number >[0, 1, 2] : [number, number, number] +>0 : number +>1 : number +>2 : number var a = [1, "hello"]; >a : (string | number)[] >[1, "hello"] : (string | number)[] +>1 : number +>"hello" : string var [x2] = a; // emit x2: number | string >x2 : string | number diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types index 2b40a388e3b..a30fbab6e59 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types @@ -4,13 +4,20 @@ var [x10, [y10, [z10]]] = [1, ["hello", [true]]]; >y10 : string >z10 : boolean >[1, ["hello", [true]]] : [number, [string, [boolean]]] +>1 : number >["hello", [true]] : [string, [boolean]] +>"hello" : string >[true] : [boolean] +>true : boolean var [x11 = 0, y11 = ""] = [1, "hello"]; >x11 : number +>0 : number >y11 : string +>"" : string >[1, "hello"] : [number, string] +>1 : number +>"hello" : string var [a11, b11, c11] = []; >a11 : any @@ -25,19 +32,28 @@ var [a2, [b2, { x12, y12: c2 }]=["abc", { x12: 10, y12: false }]] = [1, ["hello" >y12 : unknown >c2 : boolean >["abc", { x12: 10, y12: false }] : [string, { x12: number; y12: boolean; }] +>"abc" : string >{ x12: 10, y12: false } : { x12: number; y12: boolean; } >x12 : number +>10 : number >y12 : boolean +>false : boolean >[1, ["hello", { x12: 5, y12: true }]] : [number, [string, { x12: number; y12: boolean; }]] +>1 : number >["hello", { x12: 5, y12: true }] : [string, { x12: number; y12: boolean; }] +>"hello" : string >{ x12: 5, y12: true } : { x12: number; y12: boolean; } >x12 : number +>5 : number >y12 : boolean +>true : boolean var [x13, y13] = [1, "hello"]; >x13 : number >y13 : string >[1, "hello"] : [number, string] +>1 : number +>"hello" : string var [a3, b3] = [[x13, y13], { x: x13, y: y13 }]; >a3 : (string | number)[] diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types index 4852a7e37fb..406494aa13b 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern3.types @@ -6,4 +6,6 @@ module M { >a : number >b : number >[1, 2] : [number, number] +>1 : number +>2 : number } diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types index d6d0fa758d7..2cc56abcb05 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types @@ -2,17 +2,26 @@ var [...a5] = [1, 2, 3]; >a5 : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number var [x14, ...a6] = [1, 2, 3]; >x14 : number >a6 : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number var [x15, y15, ...a7] = [1, 2, 3]; >x15 : number >y15 : number >a7 : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number var [x16, y16, z16, ...a8] = [1, 2, 3]; >x16 : number @@ -20,21 +29,33 @@ var [x16, y16, z16, ...a8] = [1, 2, 3]; >z16 : number >a8 : number[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number var [...a9] = [1, "hello", true]; >a9 : (string | number | boolean)[] >[1, "hello", true] : (string | number | boolean)[] +>1 : number +>"hello" : string +>true : boolean var [x17, ...a10] = [1, "hello", true]; >x17 : string | number | boolean >a10 : (string | number | boolean)[] >[1, "hello", true] : (string | number | boolean)[] +>1 : number +>"hello" : string +>true : boolean var [x18, y18, ...a12] = [1, "hello", true]; >x18 : string | number | boolean >y18 : string | number | boolean >a12 : (string | number | boolean)[] >[1, "hello", true] : (string | number | boolean)[] +>1 : number +>"hello" : string +>true : boolean var [x19, y19, z19, ...a13] = [1, "hello", true]; >x19 : string | number | boolean @@ -42,4 +63,7 @@ var [x19, y19, z19, ...a13] = [1, "hello", true]; >z19 : string | number | boolean >a13 : (string | number | boolean)[] >[1, "hello", true] : (string | number | boolean)[] +>1 : number +>"hello" : string +>true : boolean diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types index 6352917682e..fa5720f4da7 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern5.types @@ -1,14 +1,31 @@ === tests/cases/compiler/declarationEmitDestructuringArrayPattern5.ts === var [, , z] = [1, 2, 4]; +> : undefined +> : undefined >z : number >[1, 2, 4] : [number, number, number] +>1 : number +>2 : number +>4 : number var [, a, , ] = [3, 4, 5]; +> : undefined >a : number +> : undefined >[3, 4, 5] : [number, number, number] +>3 : number +>4 : number +>5 : number var [, , [, b, ]] = [3,5,[0, 1]]; +> : undefined +> : undefined +> : undefined >b : number >[3,5,[0, 1]] : [number, number, [number, number]] +>3 : number +>5 : number >[0, 1] : [number, number] +>0 : number +>1 : number diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types index b3c422e4958..7ba42f8eb50 100644 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern.types @@ -3,40 +3,52 @@ var { } = { x: 5, y: "hello" }; >{ x: 5, y: "hello" } : { x: number; y: string; } >x : number +>5 : number >y : string +>"hello" : string var { x4 } = { x4: 5, y4: "hello" }; >x4 : number >{ x4: 5, y4: "hello" } : { x4: number; y4: string; } >x4 : number +>5 : number >y4 : string +>"hello" : string var { y5 } = { x5: 5, y5: "hello" }; >y5 : string >{ x5: 5, y5: "hello" } : { x5: number; y5: string; } >x5 : number +>5 : number >y5 : string +>"hello" : string var { x6, y6 } = { x6: 5, y6: "hello" }; >x6 : number >y6 : string >{ x6: 5, y6: "hello" } : { x6: number; y6: string; } >x6 : number +>5 : number >y6 : string +>"hello" : string var { x7: a1 } = { x7: 5, y7: "hello" }; >x7 : unknown >a1 : number >{ x7: 5, y7: "hello" } : { x7: number; y7: string; } >x7 : number +>5 : number >y7 : string +>"hello" : string var { y8: b1 } = { x8: 5, y8: "hello" }; >y8 : unknown >b1 : string >{ x8: 5, y8: "hello" } : { x8: number; y8: string; } >x8 : number +>5 : number >y8 : string +>"hello" : string var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; >x9 : unknown @@ -45,7 +57,9 @@ var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; >b2 : string >{ x9: 5, y9: "hello" } : { x9: number; y9: string; } >x9 : number +>5 : number >y9 : string +>"hello" : string var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: true } } }; >a : unknown @@ -58,24 +72,30 @@ var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: tr >z11 : boolean >{ a: 1, b: { a: "hello", b: { a: true } } } : { a: number; b: { a: string; b: { a: boolean; }; }; } >a : number +>1 : number >b : { a: string; b: { a: boolean; }; } >{ a: "hello", b: { a: true } } : { a: string; b: { a: boolean; }; } >a : string +>"hello" : string >b : { a: boolean; } >{ a: true } : { a: boolean; } >a : boolean +>true : boolean function f15() { >f15 : () => { a4: string; b4: number; c4: boolean; } var a4 = "hello"; >a4 : string +>"hello" : string var b4 = 1; >b4 : number +>1 : number var c4 = true; >c4 : boolean +>true : boolean return { a4, b4, c4 }; >{ a4, b4, c4 } : { a4: string; b4: number; c4: boolean; } diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types index cc2094c68f4..92e22ff6b5f 100644 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern1.types @@ -3,40 +3,52 @@ var { } = { x: 5, y: "hello" }; >{ x: 5, y: "hello" } : { x: number; y: string; } >x : number +>5 : number >y : string +>"hello" : string var { x4 } = { x4: 5, y4: "hello" }; >x4 : number >{ x4: 5, y4: "hello" } : { x4: number; y4: string; } >x4 : number +>5 : number >y4 : string +>"hello" : string var { y5 } = { x5: 5, y5: "hello" }; >y5 : string >{ x5: 5, y5: "hello" } : { x5: number; y5: string; } >x5 : number +>5 : number >y5 : string +>"hello" : string var { x6, y6 } = { x6: 5, y6: "hello" }; >x6 : number >y6 : string >{ x6: 5, y6: "hello" } : { x6: number; y6: string; } >x6 : number +>5 : number >y6 : string +>"hello" : string var { x7: a1 } = { x7: 5, y7: "hello" }; >x7 : unknown >a1 : number >{ x7: 5, y7: "hello" } : { x7: number; y7: string; } >x7 : number +>5 : number >y7 : string +>"hello" : string var { y8: b1 } = { x8: 5, y8: "hello" }; >y8 : unknown >b1 : string >{ x8: 5, y8: "hello" } : { x8: number; y8: string; } >x8 : number +>5 : number >y8 : string +>"hello" : string var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; >x9 : unknown @@ -45,5 +57,7 @@ var { x9: a2, y9: b2 } = { x9: 5, y9: "hello" }; >b2 : string >{ x9: 5, y9: "hello" } : { x9: number; y9: string; } >x9 : number +>5 : number >y9 : string +>"hello" : string diff --git a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types index 68394686e31..2d90e33c103 100644 --- a/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types +++ b/tests/baselines/reference/declarationEmitDestructuringObjectLiteralPattern2.types @@ -11,24 +11,30 @@ var { a: x11, b: { a: y11, b: { a: z11 }}} = { a: 1, b: { a: "hello", b: { a: tr >z11 : boolean >{ a: 1, b: { a: "hello", b: { a: true } } } : { a: number; b: { a: string; b: { a: boolean; }; }; } >a : number +>1 : number >b : { a: string; b: { a: boolean; }; } >{ a: "hello", b: { a: true } } : { a: string; b: { a: boolean; }; } >a : string +>"hello" : string >b : { a: boolean; } >{ a: true } : { a: boolean; } >a : boolean +>true : boolean function f15() { >f15 : () => { a4: string; b4: number; c4: boolean; } var a4 = "hello"; >a4 : string +>"hello" : string var b4 = 1; >b4 : number +>1 : number var c4 = true; >c4 : boolean +>true : boolean return { a4, b4, c4 }; >{ a4, b4, c4 } : { a4: string; b4: number; c4: boolean; } diff --git a/tests/baselines/reference/declarationEmit_invalidReference.types b/tests/baselines/reference/declarationEmit_invalidReference.types index 1fe465887ed..35d623c3c05 100644 --- a/tests/baselines/reference/declarationEmit_invalidReference.types +++ b/tests/baselines/reference/declarationEmit_invalidReference.types @@ -2,4 +2,5 @@ /// var x = 0; >x : number +>0 : number diff --git a/tests/baselines/reference/declarationEmit_nameConflicts.types b/tests/baselines/reference/declarationEmit_nameConflicts.types index e38c831493d..77f235186eb 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts.types +++ b/tests/baselines/reference/declarationEmit_nameConflicts.types @@ -119,11 +119,14 @@ export module M.Q { } export interface b extends M.b { } // ok >b : b +>M.b : unknown >M : typeof M >b : M.C export interface I extends M.c.I { } // ok >I : I +>M.c.I : unknown +>M.c : typeof M.N >M : typeof M >c : typeof M.N >I : M.c.I @@ -133,6 +136,8 @@ export module M.Q { export interface I extends M.c.I { } // ok >I : I +>M.c.I : unknown +>M.c : typeof M.N >M : typeof M >c : typeof M.N >I : M.c.I diff --git a/tests/baselines/reference/declarationEmit_protectedMembers.types b/tests/baselines/reference/declarationEmit_protectedMembers.types index 28217b0c070..89aa3f56332 100644 --- a/tests/baselines/reference/declarationEmit_protectedMembers.types +++ b/tests/baselines/reference/declarationEmit_protectedMembers.types @@ -22,6 +22,7 @@ class C1 { protected get accessor() { return 0; } >accessor : number +>0 : number protected static sx: number; >sx : number @@ -41,6 +42,7 @@ class C1 { protected static get staticGetter() { return 0; } >staticGetter : number +>0 : number } // Derived class overriding protected members @@ -108,6 +110,7 @@ class C3 extends C2 { static get staticGetter() { return 1; } >staticGetter : number +>1 : number } // Protected properties in constructors diff --git a/tests/baselines/reference/declareDottedExtend.types b/tests/baselines/reference/declareDottedExtend.types index 6b529b5e00d..05a891b843b 100644 --- a/tests/baselines/reference/declareDottedExtend.types +++ b/tests/baselines/reference/declareDottedExtend.types @@ -14,11 +14,14 @@ import ab = A.B; class D extends ab.C{ } >D : D +>ab.C : unknown >ab : typeof ab >C : ab.C class E extends A.B.C{ } >E : E +>A.B.C : unknown +>A.B : typeof ab >A : typeof A >B : typeof ab >C : ab.C diff --git a/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types b/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types index 675dc38c869..101e7435b25 100644 --- a/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types +++ b/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types @@ -28,6 +28,7 @@ module m2 { var x = 10, m2: { >x : number +>10 : number >m2 : { (): m2.connectExport; test1: m2.connectModule; test2(): m2.connectModule; } (): m2.connectExport; diff --git a/tests/baselines/reference/decoratorOnClassAccessor1.types b/tests/baselines/reference/decoratorOnClassAccessor1.types index 602faf1fd22..e5ba5149d7a 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor1.types +++ b/tests/baselines/reference/decoratorOnClassAccessor1.types @@ -16,4 +16,5 @@ class C { @dec get accessor() { return 1; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor >accessor : number +>1 : number } diff --git a/tests/baselines/reference/decoratorOnClassAccessor2.types b/tests/baselines/reference/decoratorOnClassAccessor2.types index e43733db132..32902ce7ca0 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor2.types +++ b/tests/baselines/reference/decoratorOnClassAccessor2.types @@ -16,4 +16,5 @@ class C { @dec public get accessor() { return 1; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor >accessor : number +>1 : number } diff --git a/tests/baselines/reference/decoratorOnClassMethod13.types b/tests/baselines/reference/decoratorOnClassMethod13.types index 1390f5750e6..2858f8877bd 100644 --- a/tests/baselines/reference/decoratorOnClassMethod13.types +++ b/tests/baselines/reference/decoratorOnClassMethod13.types @@ -15,7 +15,9 @@ class C { @dec ["1"]() { } >dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>"1" : string @dec ["b"]() { } >dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>"b" : string } diff --git a/tests/baselines/reference/decoratorOnClassMethod4.types b/tests/baselines/reference/decoratorOnClassMethod4.types index 5b48b267e1d..026508257a5 100644 --- a/tests/baselines/reference/decoratorOnClassMethod4.types +++ b/tests/baselines/reference/decoratorOnClassMethod4.types @@ -15,4 +15,5 @@ class C { @dec ["method"]() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>"method" : string } diff --git a/tests/baselines/reference/decoratorOnClassMethod5.types b/tests/baselines/reference/decoratorOnClassMethod5.types index d87de2b351a..d55ddd832b9 100644 --- a/tests/baselines/reference/decoratorOnClassMethod5.types +++ b/tests/baselines/reference/decoratorOnClassMethod5.types @@ -16,4 +16,5 @@ class C { @dec() ["method"]() {} >dec() : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor >dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>"method" : string } diff --git a/tests/baselines/reference/decoratorOnClassMethod6.types b/tests/baselines/reference/decoratorOnClassMethod6.types index 8b167b5fb0f..9da71791763 100644 --- a/tests/baselines/reference/decoratorOnClassMethod6.types +++ b/tests/baselines/reference/decoratorOnClassMethod6.types @@ -15,4 +15,5 @@ class C { @dec ["method"]() {} >dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>"method" : string } diff --git a/tests/baselines/reference/decoratorOnClassMethod7.types b/tests/baselines/reference/decoratorOnClassMethod7.types index 038d3ca7df5..8a72e24bd5b 100644 --- a/tests/baselines/reference/decoratorOnClassMethod7.types +++ b/tests/baselines/reference/decoratorOnClassMethod7.types @@ -15,4 +15,5 @@ class C { @dec public ["method"]() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor +>"method" : string } diff --git a/tests/baselines/reference/decrementOperatorWithAnyOtherType.types b/tests/baselines/reference/decrementOperatorWithAnyOtherType.types index ab21dd9db5c..65eea6d1a71 100644 --- a/tests/baselines/reference/decrementOperatorWithAnyOtherType.types +++ b/tests/baselines/reference/decrementOperatorWithAnyOtherType.types @@ -10,12 +10,16 @@ var ANY1; var ANY2: any[] = ["", ""]; >ANY2 : any[] >["", ""] : string[] +>"" : string +>"" : string var obj = {x:1,y:null}; >obj : { x: number; y: any; } >{x:1,y:null} : { x: number; y: null; } >x : number +>1 : number >y : null +>null : null class A { >A : A @@ -61,6 +65,7 @@ var ResultIsNumber5 = --ANY2[0]; >--ANY2[0] : number >ANY2[0] : any >ANY2 : any[] +>0 : number var ResultIsNumber6 = --obj.x; >ResultIsNumber6 : number @@ -95,6 +100,7 @@ var ResultIsNumber9 = ANY2[0]--; >ANY2[0]-- : number >ANY2[0] : any >ANY2 : any[] +>0 : number var ResultIsNumber10 = obj.x--; >ResultIsNumber10 : number @@ -137,6 +143,7 @@ var ResultIsNumber13 = M.n--; >--ANY2[0] : number >ANY2[0] : any >ANY2 : any[] +>0 : number --ANY, --ANY1; >--ANY, --ANY1 : number @@ -169,6 +176,7 @@ ANY2[0]--; >ANY2[0]-- : number >ANY2[0] : any >ANY2 : any[] +>0 : number ANY--, ANY1--; >ANY--, ANY1-- : number diff --git a/tests/baselines/reference/decrementOperatorWithNumberType.types b/tests/baselines/reference/decrementOperatorWithNumberType.types index d619db84e46..f990ad18fc7 100644 --- a/tests/baselines/reference/decrementOperatorWithNumberType.types +++ b/tests/baselines/reference/decrementOperatorWithNumberType.types @@ -6,6 +6,8 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number class A { >A : A @@ -70,6 +72,7 @@ var ResultIsNumber7 = NUMBER1[0]--; >NUMBER1[0]-- : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number // miss assignment operators --NUMBER; @@ -80,6 +83,7 @@ var ResultIsNumber7 = NUMBER1[0]--; >--NUMBER1[0] : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number --objA.a; >--objA.a : number @@ -111,6 +115,7 @@ NUMBER1[0]--; >NUMBER1[0]-- : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number objA.a--; >objA.a-- : number diff --git a/tests/baselines/reference/defaultIndexProps1.types b/tests/baselines/reference/defaultIndexProps1.types index 9bb9c4a32c2..0b188a40c20 100644 --- a/tests/baselines/reference/defaultIndexProps1.types +++ b/tests/baselines/reference/defaultIndexProps1.types @@ -4,6 +4,7 @@ class Foo { public v = "Yo"; >v : string +>"Yo" : string } var f = new Foo(); @@ -15,14 +16,17 @@ var q = f["v"]; >q : string >f["v"] : string >f : Foo +>"v" : string var o = {v:"Yo2"}; >o : { v: string; } >{v:"Yo2"} : { v: string; } >v : string +>"Yo2" : string var q2 = o["v"]; >q2 : string >o["v"] : string >o : { v: string; } +>"v" : string diff --git a/tests/baselines/reference/defaultIndexProps2.types b/tests/baselines/reference/defaultIndexProps2.types index 26850bd1456..3b0d8278966 100644 --- a/tests/baselines/reference/defaultIndexProps2.types +++ b/tests/baselines/reference/defaultIndexProps2.types @@ -4,6 +4,7 @@ class Foo { public v = "Yo"; >v : string +>"Yo" : string } var f = new Foo(); @@ -17,13 +18,18 @@ var o = {v:"Yo2"}; >o : { v: string; } >{v:"Yo2"} : { v: string; } >v : string +>"Yo2" : string // WScript.Echo(o[0]); 1[0]; >1[0] : any +>1 : number +>0 : number var q = "s"[0]; >q : string >"s"[0] : string +>"s" : string +>0 : number diff --git a/tests/baselines/reference/deleteOperatorWithBooleanType.types b/tests/baselines/reference/deleteOperatorWithBooleanType.types index fa8c375b0a5..068c67031ef 100644 --- a/tests/baselines/reference/deleteOperatorWithBooleanType.types +++ b/tests/baselines/reference/deleteOperatorWithBooleanType.types @@ -5,6 +5,7 @@ var BOOLEAN: boolean; function foo(): boolean { return true; } >foo : () => boolean +>true : boolean class A { >A : A @@ -14,6 +15,7 @@ class A { static foo() { return false; } >foo : () => boolean +>false : boolean } module M { >M : typeof M @@ -37,13 +39,16 @@ var ResultIsBoolean1 = delete BOOLEAN; var ResultIsBoolean2 = delete true; >ResultIsBoolean2 : boolean >delete true : boolean +>true : boolean var ResultIsBoolean3 = delete { x: true, y: false }; >ResultIsBoolean3 : boolean >delete { x: true, y: false } : boolean >{ x: true, y: false } : { x: boolean; y: boolean; } >x : boolean +>true : boolean >y : boolean +>false : boolean // boolean type expressions var ResultIsBoolean4 = delete objA.a; @@ -84,6 +89,7 @@ var ResultIsBoolean8 = delete delete BOOLEAN; // miss assignment operators delete true; >delete true : boolean +>true : boolean delete BOOLEAN; >delete BOOLEAN : boolean @@ -97,6 +103,8 @@ delete foo(); delete true, false; >delete true, false : boolean >delete true : boolean +>true : boolean +>false : boolean delete objA.a; >delete objA.a : boolean diff --git a/tests/baselines/reference/deleteOperatorWithEnumType.types b/tests/baselines/reference/deleteOperatorWithEnumType.types index e436ac3373f..d3266a6aa6c 100644 --- a/tests/baselines/reference/deleteOperatorWithEnumType.types +++ b/tests/baselines/reference/deleteOperatorWithEnumType.types @@ -26,6 +26,7 @@ var ResultIsBoolean3 = delete ENUM1["A"]; >delete ENUM1["A"] : boolean >ENUM1["A"] : ENUM1 >ENUM1 : typeof ENUM1 +>"A" : string var ResultIsBoolean4 = delete (ENUM[0] + ENUM1["B"]); >ResultIsBoolean4 : boolean @@ -34,8 +35,10 @@ var ResultIsBoolean4 = delete (ENUM[0] + ENUM1["B"]); >ENUM[0] + ENUM1["B"] : string >ENUM[0] : string >ENUM : typeof ENUM +>0 : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string // multiple delete operators var ResultIsBoolean5 = delete delete ENUM; @@ -53,8 +56,10 @@ var ResultIsBoolean6 = delete delete delete (ENUM[0] + ENUM1["B"]); >ENUM[0] + ENUM1["B"] : string >ENUM[0] : string >ENUM : typeof ENUM +>0 : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string // miss assignment operators delete ENUM; diff --git a/tests/baselines/reference/deleteOperatorWithNumberType.types b/tests/baselines/reference/deleteOperatorWithNumberType.types index 542efe04c34..e631745d089 100644 --- a/tests/baselines/reference/deleteOperatorWithNumberType.types +++ b/tests/baselines/reference/deleteOperatorWithNumberType.types @@ -6,9 +6,12 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number function foo(): number { return 1; } >foo : () => number +>1 : number class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return 1; } >foo : () => number +>1 : number } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsBoolean2 = delete NUMBER1; var ResultIsBoolean3 = delete 1; >ResultIsBoolean3 : boolean >delete 1 : boolean +>1 : number var ResultIsBoolean4 = delete { x: 1, y: 2}; >ResultIsBoolean4 : boolean >delete { x: 1, y: 2} : boolean >{ x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number var ResultIsBoolean5 = delete { x: 1, y: (n: number) => { return n; } }; >ResultIsBoolean5 : boolean >delete { x: 1, y: (n: number) => { return n; } } : boolean >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } >x : number +>1 : number >y : (n: number) => number >(n: number) => { return n; } : (n: number) => number >n : number @@ -84,6 +92,7 @@ var ResultIsBoolean8 = delete NUMBER1[0]; >delete NUMBER1[0] : boolean >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number var ResultIsBoolean9 = delete foo(); >ResultIsBoolean9 : boolean @@ -127,6 +136,7 @@ var ResultIsBoolean13 = delete delete delete (NUMBER + NUMBER); // miss assignment operators delete 1; >delete 1 : boolean +>1 : number delete NUMBER; >delete NUMBER : boolean diff --git a/tests/baselines/reference/deleteOperatorWithStringType.types b/tests/baselines/reference/deleteOperatorWithStringType.types index f86afc39c49..0492aeff176 100644 --- a/tests/baselines/reference/deleteOperatorWithStringType.types +++ b/tests/baselines/reference/deleteOperatorWithStringType.types @@ -6,9 +6,12 @@ var STRING: string; var STRING1: string[] = ["", "abc"]; >STRING1 : string[] >["", "abc"] : string[] +>"" : string +>"abc" : string function foo(): string { return "abc"; } >foo : () => string +>"abc" : string class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return ""; } >foo : () => string +>"" : string } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsBoolean2 = delete STRING1; var ResultIsBoolean3 = delete ""; >ResultIsBoolean3 : boolean >delete "" : boolean +>"" : string var ResultIsBoolean4 = delete { x: "", y: "" }; >ResultIsBoolean4 : boolean >delete { x: "", y: "" } : boolean >{ x: "", y: "" } : { x: string; y: string; } >x : string +>"" : string >y : string +>"" : string var ResultIsBoolean5 = delete { x: "", y: (s: string) => { return s; } }; >ResultIsBoolean5 : boolean >delete { x: "", y: (s: string) => { return s; } } : boolean >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } >x : string +>"" : string >y : (s: string) => string >(s: string) => { return s; } : (s: string) => string >s : string @@ -84,6 +92,7 @@ var ResultIsBoolean8 = delete STRING1[0]; >delete STRING1[0] : boolean >STRING1[0] : string >STRING1 : string[] +>0 : number var ResultIsBoolean9 = delete foo(); >ResultIsBoolean9 : boolean @@ -114,6 +123,7 @@ var ResultIsBoolean12 = delete STRING.charAt(0); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number // multiple delete operator var ResultIsBoolean13 = delete delete STRING; @@ -135,6 +145,7 @@ var ResultIsBoolean14 = delete delete delete (STRING + STRING); // miss assignment operators delete ""; >delete "" : boolean +>"" : string delete STRING; >delete STRING : boolean diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types index 3b6eb55256e..2799555a3a2 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types @@ -227,10 +227,12 @@ var r7 = d2['']; >r7 : { foo: string; } >d2[''] : { foo: string; } >d2 : Derived2 +>'' : string var r8 = d2[1]; >r8 : { foo: string; bar: string; } >d2[1] : { foo: string; bar: string; } >d2 : Derived2 +>1 : number diff --git a/tests/baselines/reference/derivedClasses.types b/tests/baselines/reference/derivedClasses.types index ce054b99223..906cfb2741c 100644 --- a/tests/baselines/reference/derivedClasses.types +++ b/tests/baselines/reference/derivedClasses.types @@ -18,6 +18,7 @@ class Red extends Color { >getHue() + " red" : string >getHue() : string >getHue : () => string +>" red" : string } } @@ -26,9 +27,11 @@ class Color { public shade() { return "some shade"; } >shade : () => string +>"some shade" : string public hue() { return "some hue"; } >hue : () => string +>"some hue" : string } class Blue extends Color { @@ -50,6 +53,7 @@ class Blue extends Color { >getHue() + " blue" : string >getHue() : string >getHue : () => string +>" blue" : string } } diff --git a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types index 4f1ff1780dc..d8d9f657255 100644 --- a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types +++ b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types @@ -9,6 +9,7 @@ class Base { >a : number return null; +>null : null } } @@ -25,6 +26,7 @@ class Derived extends Base { >b : number return null; +>null : null } bar() { @@ -38,6 +40,7 @@ class Derived extends Base { >foo : (x: { a: number; }) => { a: number; } >{ a: 1 } : { a: number; } >a : number +>1 : number var r2 = super.foo({ a: 1, b: 2 }); // { a: number } >r2 : { a: number; } @@ -47,7 +50,9 @@ class Derived extends Base { >foo : (x: { a: number; }) => { a: number; } >{ a: 1, b: 2 } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number var r3 = this.foo({ a: 1, b: 2 }); // { a: number; b: number; } >r3 : { a: number; b: number; } @@ -57,6 +62,8 @@ class Derived extends Base { >foo : (x: { a: number; b: number; }) => { a: number; b: number; } >{ a: 1, b: 2 } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number } } diff --git a/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.types b/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.types index cd8c03fd6a6..f151b5841c0 100644 --- a/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.types +++ b/tests/baselines/reference/doNotWidenAtObjectLiteralPropertyAssignment.types @@ -26,5 +26,7 @@ var test: IIntervalTreeNode[] = [{ interval: { begin: 0 }, children: null }]; // >interval : { begin: number; } >{ begin: 0 } : { begin: number; } >begin : number +>0 : number >children : null +>null : null diff --git a/tests/baselines/reference/doWhileBreakStatements.types b/tests/baselines/reference/doWhileBreakStatements.types index c32adda7f4b..e725e0d5849 100644 --- a/tests/baselines/reference/doWhileBreakStatements.types +++ b/tests/baselines/reference/doWhileBreakStatements.types @@ -2,41 +2,79 @@ do { break; } while(true) +>true : boolean ONE: +>ONE : unknown + do { break ONE; +>ONE : unknown } while (true) +>true : boolean TWO: +>TWO : unknown + THREE: +>THREE : unknown + do { break THREE; +>THREE : unknown + }while (true) +>true : boolean FOUR: +>FOUR : unknown + do { FIVE: +>FIVE : unknown + do { break FOUR; +>FOUR : unknown + }while (true) +>true : boolean + }while (true) +>true : boolean do { SIX: +>SIX : unknown + do break SIX; while(true) +>SIX : unknown +>true : boolean + }while (true) +>true : boolean SEVEN: +>SEVEN : unknown + do do do break SEVEN; while (true) while (true) while (true) +>SEVEN : unknown +>true : boolean +>true : boolean +>true : boolean EIGHT: +>EIGHT : unknown + do{ var fn = function () { } >fn : () => void >function () { } : () => void break EIGHT; +>EIGHT : unknown + }while(true) +>true : boolean diff --git a/tests/baselines/reference/doWhileContinueStatements.types b/tests/baselines/reference/doWhileContinueStatements.types index 398a8508e31..a50d9c5db29 100644 --- a/tests/baselines/reference/doWhileContinueStatements.types +++ b/tests/baselines/reference/doWhileContinueStatements.types @@ -2,41 +2,79 @@ do { continue; } while(true) +>true : boolean ONE: +>ONE : unknown + do { continue ONE; +>ONE : unknown } while (true) +>true : boolean TWO: +>TWO : unknown + THREE: +>THREE : unknown + do { continue THREE; +>THREE : unknown + }while (true) +>true : boolean FOUR: +>FOUR : unknown + do { FIVE: +>FIVE : unknown + do { continue FOUR; +>FOUR : unknown + }while (true) +>true : boolean + }while (true) +>true : boolean do { SIX: +>SIX : unknown + do continue SIX; while(true) +>SIX : unknown +>true : boolean + }while (true) +>true : boolean SEVEN: +>SEVEN : unknown + do do do continue SEVEN; while (true) while (true) while (true) +>SEVEN : unknown +>true : boolean +>true : boolean +>true : boolean EIGHT: +>EIGHT : unknown + do{ var fn = function () { } >fn : () => void >function () { } : () => void continue EIGHT; +>EIGHT : unknown + }while(true) +>true : boolean diff --git a/tests/baselines/reference/doWhileLoop.types b/tests/baselines/reference/doWhileLoop.types index 93f17659c64..9d1767b45aa 100644 --- a/tests/baselines/reference/doWhileLoop.types +++ b/tests/baselines/reference/doWhileLoop.types @@ -1,5 +1,7 @@ === tests/cases/compiler/doWhileLoop.ts === do { } while (false); +>false : boolean + var n; >n : any diff --git a/tests/baselines/reference/dottedModuleName2.types b/tests/baselines/reference/dottedModuleName2.types index e5a9806dd11..8f068c85d16 100644 --- a/tests/baselines/reference/dottedModuleName2.types +++ b/tests/baselines/reference/dottedModuleName2.types @@ -5,6 +5,7 @@ module A.B { export var x = 1; >x : number +>1 : number } @@ -16,6 +17,7 @@ module AA { export module B { export var x = 1; >x : number +>1 : number } } @@ -47,6 +49,7 @@ module A.B.C export var x = 1; >x : number +>1 : number } diff --git a/tests/baselines/reference/dottedSymbolResolution1.types b/tests/baselines/reference/dottedSymbolResolution1.types index 776b9704e73..cf5a5e3ba9d 100644 --- a/tests/baselines/reference/dottedSymbolResolution1.types +++ b/tests/baselines/reference/dottedSymbolResolution1.types @@ -49,6 +49,7 @@ function each(collection: any, callback: (indexInArray: any, valueOfElement: any >valueOfElement : any return null; +>null : null } function _setBarAndText(): void { @@ -67,6 +68,7 @@ function _setBarAndText(): void { >x.find : (selector: string) => JQuery >x : JQuery >find : (selector: string) => JQuery +>" " : string >function () { var $this: JQuery = $(''), thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here } : () => void var $this: JQuery = $(''), @@ -74,6 +76,7 @@ function _setBarAndText(): void { >JQuery : JQuery >$('') : JQuery >$ : JQueryStatic +>'' : string thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here >thisBar : JQuery @@ -81,6 +84,7 @@ function _setBarAndText(): void { >$this.find : (selector: string) => JQuery >$this : JQuery >find : (selector: string) => JQuery +>".fx-usagebars-calloutbar-this" : string } ); } diff --git a/tests/baselines/reference/downlevelLetConst10.types b/tests/baselines/reference/downlevelLetConst10.types index 05fe3029455..3d700b0694d 100644 --- a/tests/baselines/reference/downlevelLetConst10.types +++ b/tests/baselines/reference/downlevelLetConst10.types @@ -1,4 +1,5 @@ === tests/cases/compiler/downlevelLetConst10.ts === let a: number = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/downlevelLetConst12.types b/tests/baselines/reference/downlevelLetConst12.types index 90a814e0753..5661df58a7e 100644 --- a/tests/baselines/reference/downlevelLetConst12.types +++ b/tests/baselines/reference/downlevelLetConst12.types @@ -1,12 +1,15 @@ === tests/cases/compiler/downlevelLetConst12.ts === 'use strict' +>'use strict' : string + // top level let\const should not be renamed let foo; >foo : any const bar = 1; >bar : number +>1 : number let [baz] = []; >baz : any @@ -17,6 +20,7 @@ let {a: baz2} = { a: 1 }; >baz2 : number >{ a: 1 } : { a: number; } >a : number +>1 : number const [baz3] = [] >baz3 : any @@ -27,4 +31,5 @@ const {a: baz4} = { a: 1 }; >baz4 : number >{ a: 1 } : { a: number; } >a : number +>1 : number diff --git a/tests/baselines/reference/downlevelLetConst13.types b/tests/baselines/reference/downlevelLetConst13.types index e72e3936f43..19e54b3e0d3 100644 --- a/tests/baselines/reference/downlevelLetConst13.types +++ b/tests/baselines/reference/downlevelLetConst13.types @@ -1,60 +1,74 @@ === tests/cases/compiler/downlevelLetConst13.ts === 'use strict' +>'use strict' : string + // exported let\const bindings should not be renamed export let foo = 10; >foo : number +>10 : number export const bar = "123" >bar : string +>"123" : string export let [bar1] = [1]; >bar1 : number >[1] : [number] +>1 : number export const [bar2] = [2]; >bar2 : number >[2] : [number] +>2 : number export let {a: bar3} = { a: 1 }; >a : unknown >bar3 : number >{ a: 1 } : { a: number; } >a : number +>1 : number export const {a: bar4} = { a: 1 }; >a : unknown >bar4 : number >{ a: 1 } : { a: number; } >a : number +>1 : number export module M { >M : typeof M export let baz = 100; >baz : number +>100 : number export const baz2 = true; >baz2 : boolean +>true : boolean export let [bar5] = [1]; >bar5 : number >[1] : [number] +>1 : number export const [bar6] = [2]; >bar6 : number >[2] : [number] +>2 : number export let {a: bar7} = { a: 1 }; >a : unknown >bar7 : number >{ a: 1 } : { a: number; } >a : number +>1 : number export const {a: bar8} = { a: 1 }; >a : unknown >bar8 : number >{ a: 1 } : { a: number; } >a : number +>1 : number } diff --git a/tests/baselines/reference/downlevelLetConst14.types b/tests/baselines/reference/downlevelLetConst14.types index 05b66948830..2f06f236f4c 100644 --- a/tests/baselines/reference/downlevelLetConst14.types +++ b/tests/baselines/reference/downlevelLetConst14.types @@ -1,11 +1,14 @@ === tests/cases/compiler/downlevelLetConst14.ts === 'use strict' +>'use strict' : string + declare function use(a: any); >use : (a: any) => any >a : any var x = 10; >x : number +>10 : number var z0, z1, z2, z3; >z0 : any @@ -15,6 +18,7 @@ var z0, z1, z2, z3; { let x = 20; >x : number +>20 : number use(x); >use(x) : any @@ -24,6 +28,7 @@ var z0, z1, z2, z3; let [z0] = [1]; >z0 : number >[1] : [number] +>1 : number use(z0); >use(z0) : any @@ -33,6 +38,7 @@ var z0, z1, z2, z3; let [z1] = [1] >z1 : number >[1] : [number] +>1 : number use(z1); >use(z1) : any @@ -44,6 +50,7 @@ var z0, z1, z2, z3; >z2 : number >{ a: 1 } : { a: number; } >a : number +>1 : number use(z2); >use(z2) : any @@ -55,6 +62,7 @@ var z0, z1, z2, z3; >z3 : number >{ a: 1 } : { a: number; } >a : number +>1 : number use(z3); >use(z3) : any @@ -91,22 +99,27 @@ var z6; var y = true; >y : boolean +>true : boolean { let y = ""; >y : string +>"" : string let [z6] = [true] >z6 : boolean >[true] : [boolean] +>true : boolean { let y = 1; >y : number +>1 : number let {a: z6} = {a: 1} >a : unknown >z6 : number >{a: 1} : { a: number; } >a : number +>1 : number use(y); >use(y) : any @@ -140,25 +153,31 @@ use(z6); var z = false; >z : boolean +>false : boolean var z5 = 1; >z5 : number +>1 : number { let z = ""; >z : string +>"" : string let [z5] = [5]; >z5 : number >[5] : [number] +>5 : number { let _z = 1; >_z : number +>1 : number let {a: _z5} = { a: 1 }; >a : unknown >_z5 : number >{ a: 1 } : { a: number; } >a : number +>1 : number // try to step on generated name use(_z); diff --git a/tests/baselines/reference/downlevelLetConst15.types b/tests/baselines/reference/downlevelLetConst15.types index 008d132ab70..d0887b73d6b 100644 --- a/tests/baselines/reference/downlevelLetConst15.types +++ b/tests/baselines/reference/downlevelLetConst15.types @@ -1,11 +1,14 @@ === tests/cases/compiler/downlevelLetConst15.ts === 'use strict' +>'use strict' : string + declare function use(a: any); >use : (a: any) => any >a : any var x = 10; >x : number +>10 : number var z0, z1, z2, z3; >z0 : any @@ -15,6 +18,7 @@ var z0, z1, z2, z3; { const x = 20; >x : number +>20 : number use(x); >use(x) : any @@ -24,6 +28,7 @@ var z0, z1, z2, z3; const [z0] = [1]; >z0 : number >[1] : [number] +>1 : number use(z0); >use(z0) : any @@ -36,6 +41,7 @@ var z0, z1, z2, z3; >[{a: 1}] : [{ a: number; }] >{a: 1} : { a: number; } >a : number +>1 : number use(z1); >use(z1) : any @@ -47,6 +53,7 @@ var z0, z1, z2, z3; >z2 : number >{ a: 1 } : { a: number; } >a : number +>1 : number use(z2); >use(z2) : any @@ -61,6 +68,7 @@ var z0, z1, z2, z3; >a : { b: number; } >{b: 1} : { b: number; } >b : number +>1 : number use(z3); >use(z3) : any @@ -97,22 +105,27 @@ var z6; var y = true; >y : boolean +>true : boolean { const y = ""; >y : string +>"" : string const [z6] = [true] >z6 : boolean >[true] : [boolean] +>true : boolean { const y = 1; >y : number +>1 : number const {a: z6} = { a: 1 } >a : unknown >z6 : number >{ a: 1 } : { a: number; } >a : number +>1 : number use(y); >use(y) : any @@ -146,25 +159,31 @@ use(z6); var z = false; >z : boolean +>false : boolean var z5 = 1; >z5 : number +>1 : number { const z = ""; >z : string +>"" : string const [z5] = [5]; >z5 : number >[5] : [number] +>5 : number { const _z = 1; >_z : number +>1 : number const {a: _z5} = { a: 1 }; >a : unknown >_z5 : number >{ a: 1 } : { a: number; } >a : number +>1 : number // try to step on generated name use(_z); diff --git a/tests/baselines/reference/downlevelLetConst17.types b/tests/baselines/reference/downlevelLetConst17.types index 0c5a8eaa86b..824abcc76be 100644 --- a/tests/baselines/reference/downlevelLetConst17.types +++ b/tests/baselines/reference/downlevelLetConst17.types @@ -1,5 +1,6 @@ === tests/cases/compiler/downlevelLetConst17.ts === 'use strict' +>'use strict' : string declare function use(a: any); >use : (a: any) => any @@ -10,6 +11,7 @@ var x; for (let x = 10; ;) { >x : number +>10 : number use(x); >use(x) : any @@ -23,6 +25,7 @@ use(x); for (const x = 10; ;) { >x : number +>10 : number use(x); >use(x) : any @@ -33,6 +36,7 @@ for (const x = 10; ;) { for (; ;) { let x = 10; >x : number +>10 : number use(x); >use(x) : any @@ -42,11 +46,13 @@ for (; ;) { x = 1; >x = 1 : number >x : number +>1 : number } for (; ;) { const x = 10; >x : number +>10 : number use(x); >use(x) : any @@ -65,6 +71,7 @@ for (let x; ;) { x = 1; >x = 1 : number >x : any +>1 : number } for (; ;) { @@ -79,9 +86,12 @@ for (; ;) { x = 1; >x = 1 : number >x : any +>1 : number } while (true) { +>true : boolean + let x; >x : any @@ -92,8 +102,11 @@ while (true) { } while (true) { +>true : boolean + const x = true; >x : boolean +>true : boolean use(x); >use(x) : any @@ -111,6 +124,7 @@ do { >x : any } while (true); +>true : boolean do { let x; @@ -122,6 +136,7 @@ do { >x : any } while (true); +>true : boolean for (let x in []) { >x : any diff --git a/tests/baselines/reference/downlevelLetConst19.types b/tests/baselines/reference/downlevelLetConst19.types index 492d10b59c9..687033c195a 100644 --- a/tests/baselines/reference/downlevelLetConst19.types +++ b/tests/baselines/reference/downlevelLetConst19.types @@ -1,5 +1,7 @@ === tests/cases/compiler/downlevelLetConst19.ts === 'use strict' +>'use strict' : string + declare function use(a: any); >use : (a: any) => any >a : any diff --git a/tests/baselines/reference/downlevelLetConst3.types b/tests/baselines/reference/downlevelLetConst3.types index 6cd3f85e074..cf8def45e3c 100644 --- a/tests/baselines/reference/downlevelLetConst3.types +++ b/tests/baselines/reference/downlevelLetConst3.types @@ -1,4 +1,5 @@ === tests/cases/compiler/downlevelLetConst3.ts === const a = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/downlevelLetConst5.types b/tests/baselines/reference/downlevelLetConst5.types index dd8cdf9fcdd..2cdf6ff53cc 100644 --- a/tests/baselines/reference/downlevelLetConst5.types +++ b/tests/baselines/reference/downlevelLetConst5.types @@ -1,4 +1,5 @@ === tests/cases/compiler/downlevelLetConst5.ts === const a: number = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/downlevelLetConst8.types b/tests/baselines/reference/downlevelLetConst8.types index a3b9986bbc8..c941d673503 100644 --- a/tests/baselines/reference/downlevelLetConst8.types +++ b/tests/baselines/reference/downlevelLetConst8.types @@ -1,4 +1,5 @@ === tests/cases/compiler/downlevelLetConst8.ts === let a = 1 >a : number +>1 : number diff --git a/tests/baselines/reference/duplicateAnonymousInners1.types b/tests/baselines/reference/duplicateAnonymousInners1.types index 7c63fb4163b..6840e5a14f6 100644 --- a/tests/baselines/reference/duplicateAnonymousInners1.types +++ b/tests/baselines/reference/duplicateAnonymousInners1.types @@ -14,6 +14,7 @@ module Foo { export var Outer=0; >Outer : number +>0 : number } diff --git a/tests/baselines/reference/duplicateLabel3.types b/tests/baselines/reference/duplicateLabel3.types index d4a26fa22a0..30d414ab791 100644 --- a/tests/baselines/reference/duplicateLabel3.types +++ b/tests/baselines/reference/duplicateLabel3.types @@ -1,11 +1,18 @@ === tests/cases/compiler/duplicateLabel3.ts === target: +>target : unknown + while (true) { +>true : boolean + function f() { >f : () => void target: +>target : unknown + while (true) { +>true : boolean } } } diff --git a/tests/baselines/reference/duplicateLabel4.types b/tests/baselines/reference/duplicateLabel4.types index c671abcef35..d651a5162bd 100644 --- a/tests/baselines/reference/duplicateLabel4.types +++ b/tests/baselines/reference/duplicateLabel4.types @@ -1,9 +1,14 @@ === tests/cases/compiler/duplicateLabel4.ts === target: -No type information for this code.while (true) { -No type information for this code.} -No type information for this code. -No type information for this code.target: -No type information for this code.while (true) { -No type information for this code.} -No type information for this code. \ No newline at end of file +>target : unknown + +while (true) { +>true : boolean +} + +target: +>target : unknown + +while (true) { +>true : boolean +} diff --git a/tests/baselines/reference/duplicateVariablesByScope.types b/tests/baselines/reference/duplicateVariablesByScope.types index ec20d665ad8..42d8cae2a3c 100644 --- a/tests/baselines/reference/duplicateVariablesByScope.types +++ b/tests/baselines/reference/duplicateVariablesByScope.types @@ -6,16 +6,20 @@ module M { for (var j = 0; j < 10; j++) { >j : number +>0 : number >j < 10 : boolean >j : number +>10 : number >j++ : number >j : number } for (var j = 0; j < 10; j++) { >j : number +>0 : number >j < 10 : boolean >j : number +>10 : number >j++ : number >j : number } @@ -26,17 +30,23 @@ function foo() { var x = 2; >x : number +>2 : number var x = 1; >x : number +>1 : number if (true) { +>true : boolean + var result = 1; >result : number +>1 : number } else { var result = 2; >result : number +>2 : number } } @@ -49,12 +59,14 @@ class C { try { var x = 1; >x : number +>1 : number } catch (e) { >e : any var x = 2; >x : number +>2 : number } } } diff --git a/tests/baselines/reference/dynamicModuleTypecheckError.types b/tests/baselines/reference/dynamicModuleTypecheckError.types index c7d213d1661..e50107f328b 100644 --- a/tests/baselines/reference/dynamicModuleTypecheckError.types +++ b/tests/baselines/reference/dynamicModuleTypecheckError.types @@ -1,11 +1,14 @@ === tests/cases/compiler/dynamicModuleTypecheckError.ts === export var x = 1; >x : number +>1 : number for(var i = 0; i < 30; i++) { >i : number +>0 : number >i < 30 : boolean >i : number +>30 : number >i++ : number >i : number @@ -14,6 +17,7 @@ for(var i = 0; i < 30; i++) { >x : number >i * 1000 : number >i : number +>1000 : number } diff --git a/tests/baselines/reference/elidingImportNames.types b/tests/baselines/reference/elidingImportNames.types index ad93c72860b..65bd16a6d97 100644 --- a/tests/baselines/reference/elidingImportNames.types +++ b/tests/baselines/reference/elidingImportNames.types @@ -22,8 +22,10 @@ var b2 = a2; === tests/cases/compiler/elidingImportNames_main.ts === export var main = 10; >main : number +>10 : number === tests/cases/compiler/elidingImportNames_main1.ts === export var main = 10; >main : number +>10 : number diff --git a/tests/baselines/reference/emitArrowFunction.types b/tests/baselines/reference/emitArrowFunction.types index 030ed0cde60..2ac9ef07af4 100644 --- a/tests/baselines/reference/emitArrowFunction.types +++ b/tests/baselines/reference/emitArrowFunction.types @@ -22,6 +22,7 @@ var f4 = (x: string, y: number, z = 10) => { } >x : string >y : number >z : number +>10 : number function foo(func: () => boolean) { } >foo : (func: () => boolean) => void @@ -31,9 +32,11 @@ foo(() => true); >foo(() => true) : void >foo : (func: () => boolean) => void >() => true : () => boolean +>true : boolean foo(() => { return false; }); >foo(() => { return false; }) : void >foo : (func: () => boolean) => void >() => { return false; } : () => boolean +>false : boolean diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index 6f47b51a167..21cc38a067c 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -22,6 +22,7 @@ var f4 = (x: string, y: number, z=10) => { } >x : string >y : number >z : number +>10 : number function foo(func: () => boolean) { } >foo : (func: () => boolean) => void @@ -31,11 +32,13 @@ foo(() => true); >foo(() => true) : void >foo : (func: () => boolean) => void >() => true : () => boolean +>true : boolean foo(() => { return false; }); >foo(() => { return false; }) : void >foo : (func: () => boolean) => void >() => { return false; } : () => boolean +>false : boolean // Binding patterns in arrow functions var p1 = ([a]) => { }; @@ -51,17 +54,20 @@ var p2 = ([...a]) => { }; var p3 = ([, a]) => { }; >p3 : ([, a]: [any, any]) => void >([, a]) => { } : ([, a]: [any, any]) => void +> : undefined >a : any var p4 = ([, ...a]) => { }; >p4 : ([, ...a]: Iterable) => void >([, ...a]) => { } : ([, ...a]: Iterable) => void +> : undefined >a : any[] var p5 = ([a = 1]) => { }; >p5 : ([a = 1]: [number]) => void >([a = 1]) => { } : ([a = 1]: [number]) => void >a : number +>1 : number var p6 = ({ a }) => { }; >p6 : ({ a }: { a: any; }) => void @@ -78,14 +84,17 @@ var p8 = ({ a = 1 }) => { }; >p8 : ({ a = 1 }: { a?: number; }) => void >({ a = 1 }) => { } : ({ a = 1 }: { a?: number; }) => void >a : number +>1 : number var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; >p9 : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void >({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b = 1 } = { b: 1 } }: { a?: { b: number; }; }) => void >a : unknown >b : number +>1 : number >{ b: 1 } : { b: number; } >b : number +>1 : number var p10 = ([{ value, done }]) => { }; >p10 : ([{ value, done }]: [{ value: any; done: any; }]) => void diff --git a/tests/baselines/reference/emitArrowFunctionThisCapturing.types b/tests/baselines/reference/emitArrowFunctionThisCapturing.types index 433f38e5ecc..2cfe06579af 100644 --- a/tests/baselines/reference/emitArrowFunctionThisCapturing.types +++ b/tests/baselines/reference/emitArrowFunctionThisCapturing.types @@ -8,6 +8,7 @@ var f1 = () => { >this.age : any >this : any >age : any +>10 : number }; @@ -38,7 +39,10 @@ foo(() => { >this.age : any >this : any >age : any +>100 : number return true; +>true : boolean + }); diff --git a/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types b/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types index 989130ef280..cc5405cebb4 100644 --- a/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types +++ b/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types @@ -8,6 +8,7 @@ var f1 = () => { >this.age : any >this : any >age : any +>10 : number }; @@ -38,7 +39,10 @@ foo(() => { >this.age : any >this : any >age : any +>100 : number return true; +>true : boolean + }); diff --git a/tests/baselines/reference/emitClassDeclarationOverloadInES6.types b/tests/baselines/reference/emitClassDeclarationOverloadInES6.types index 850a5aa5456..94cc2c88ddc 100644 --- a/tests/baselines/reference/emitClassDeclarationOverloadInES6.types +++ b/tests/baselines/reference/emitClassDeclarationOverloadInES6.types @@ -19,4 +19,5 @@ class D { constructor(x: number, z="hello") {} >x : number >z : string +>"hello" : string } diff --git a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types index 10244bf6170..ecb48cb3047 100644 --- a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types @@ -24,6 +24,7 @@ class B { x: string = "hello"; >x : string +>"hello" : string _bar: string; >_bar : string @@ -31,6 +32,7 @@ class B { constructor(x: number, z = "hello", ...args) { >x : number >z : string +>"hello" : string >args : any[] this.y = 10; @@ -38,6 +40,7 @@ class B { >this.y : number >this : B >y : number +>10 : number } baz(...args): string; >baz : (...args: any[]) => string diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types index a1549be5df4..7267af2fde0 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types @@ -6,6 +6,7 @@ class B { >baz : (a: string, y?: number) => void >a : string >y : number +>10 : number } class C extends B { >C : C @@ -56,6 +57,8 @@ class D extends C { >super.baz : (a: string, y: number) => void >super : C >baz : (a: string, y: number) => void +>"hello" : string +>10 : number } } diff --git a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types index 83d4fcd0d80..b26d6b3dd81 100644 --- a/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithGetterSetterInES6.types @@ -17,21 +17,33 @@ class C { >name2 : string return "BYE"; +>"BYE" : string } static get ["computedname"]() { +>"computedname" : string + return ""; +>"" : string } get ["computedname"]() { +>"computedname" : string + return ""; +>"" : string } get ["computedname"]() { +>"computedname" : string + return ""; +>"" : string } set ["computedname"](x: any) { +>"computedname" : string >x : any } set ["computedname"](y: string) { +>"computedname" : string >y : string } @@ -44,5 +56,6 @@ class C { >b : number static set ["computedname"](b: string) { } +>"computedname" : string >b : string } diff --git a/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types index 65ba8f7d2b9..d4bc18539dd 100644 --- a/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithLiteralPropertyNameInES6.types @@ -3,9 +3,17 @@ class B { >B : B "hello" = 10; +>10 : number + 0b110 = "world"; +>"world" : string + 0o23534 = "WORLD"; +>"WORLD" : string + 20 = "twenty"; +>"twenty" : string + "foo"() { } 0b1110() {} 11() { } @@ -13,7 +21,14 @@ class B { >interface : () => void static "hi" = 10000; +>10000 : number + static 22 = "twenty-two"; +>"twenty-two" : string + static 0b101 = "binary"; +>"binary" : string + static 0o3235 = "octal"; +>"octal" : string } diff --git a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types index f26a9f87e6d..d3e75c9235c 100644 --- a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types @@ -9,11 +9,16 @@ class D { >foo : () => void ["computedName"]() { } +>"computedName" : string + ["computedName"](a: string) { } +>"computedName" : string >a : string ["computedName"](a: string): number { return 1; } +>"computedName" : string >a : string +>1 : number bar(): string { >bar : () => string @@ -29,13 +34,19 @@ class D { >x : string return "HELLO"; +>"HELLO" : string } static ["computedname"]() { } +>"computedname" : string + static ["computedname"](a: string) { } +>"computedname" : string >a : string static ["computedname"](a: string): boolean { return true; } +>"computedname" : string >a : string +>true : boolean static staticMethod() { >staticMethod : () => number @@ -43,6 +54,8 @@ class D { var x = 1 + 2; >x : number >1 + 2 : number +>1 : number +>2 : number return x >x : number @@ -54,4 +67,5 @@ class D { static bar(a: string): number { return 1; } >bar : (a: string) => number >a : string +>1 : number } diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types index 5e7ebbc167c..f3504d655ed 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types @@ -4,6 +4,7 @@ class C { x: string = "Hello world"; >x : string +>"Hello world" : string } class D { @@ -11,6 +12,7 @@ class D { x: string = "Hello world"; >x : string +>"Hello world" : string y: number; >y : number @@ -21,6 +23,7 @@ class D { >this.y : number >this : D >y : number +>10 : number } } @@ -30,6 +33,7 @@ class E extends D{ z: boolean = true; >z : boolean +>true : boolean } class F extends D{ @@ -38,6 +42,7 @@ class F extends D{ z: boolean = true; >z : boolean +>true : boolean j: string; >j : string @@ -52,5 +57,6 @@ class F extends D{ >this.j : string >this : F >j : string +>"HI" : string } } diff --git a/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types index 6003b85b590..58d328e3e5d 100644 --- a/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithStaticPropertyAssignmentInES6.types @@ -4,6 +4,7 @@ class C { static z: string = "Foo"; >z : string +>"Foo" : string } class D { @@ -11,8 +12,10 @@ class D { x = 20000; >x : number +>20000 : number static b = true; >b : boolean +>true : boolean } diff --git a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types index bb0f7e99939..14c57a60bc4 100644 --- a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types @@ -4,6 +4,7 @@ class B { x = 10; >x : number +>10 : number constructor() { this.x = 10; @@ -11,6 +12,7 @@ class B { >this.x : number >this : B >x : number +>10 : number } static log(a: number) { } >log : (a: number) => void diff --git a/tests/baselines/reference/emitDefaultParametersFunction.types b/tests/baselines/reference/emitDefaultParametersFunction.types index a8dec6335a9..5c27d3ddf3d 100644 --- a/tests/baselines/reference/emitDefaultParametersFunction.types +++ b/tests/baselines/reference/emitDefaultParametersFunction.types @@ -3,19 +3,23 @@ function foo(x: string, y = 10) { } >foo : (x: string, y?: number) => void >x : string >y : number +>10 : number function baz(x: string, y = 5, ...rest) { } >baz : (x: string, y?: number, ...rest: any[]) => void >x : string >y : number +>5 : number >rest : any[] function bar(y = 10) { } >bar : (y?: number) => void >y : number +>10 : number function bar1(y = 10, ...rest) { } >bar1 : (y?: number, ...rest: any[]) => void >y : number +>10 : number >rest : any[] diff --git a/tests/baselines/reference/emitDefaultParametersFunctionES6.types b/tests/baselines/reference/emitDefaultParametersFunctionES6.types index 1c67032264f..e3124c75333 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionES6.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionES6.types @@ -3,19 +3,23 @@ function foo(x: string, y = 10) { } >foo : (x: string, y?: number) => void >x : string >y : number +>10 : number function baz(x: string, y = 5, ...rest) { } >baz : (x: string, y?: number, ...rest: any[]) => void >x : string >y : number +>5 : number >rest : any[] function bar(y = 10) { } >bar : (y?: number) => void >y : number +>10 : number function bar1(y = 10, ...rest) { } >bar1 : (y?: number, ...rest: any[]) => void >y : number +>10 : number >rest : any[] diff --git a/tests/baselines/reference/emitDefaultParametersFunctionExpression.types b/tests/baselines/reference/emitDefaultParametersFunctionExpression.types index 5c223ff1344..61ba3200e36 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionExpression.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionExpression.types @@ -3,30 +3,35 @@ var lambda1 = (y = "hello") => { } >lambda1 : (y?: string) => void >(y = "hello") => { } : (y?: string) => void >y : string +>"hello" : string var lambda2 = (x: number, y = "hello") => { } >lambda2 : (x: number, y?: string) => void >(x: number, y = "hello") => { } : (x: number, y?: string) => void >x : number >y : string +>"hello" : string var lambda3 = (x: number, y = "hello", ...rest) => { } >lambda3 : (x: number, y?: string, ...rest: any[]) => void >(x: number, y = "hello", ...rest) => { } : (x: number, y?: string, ...rest: any[]) => void >x : number >y : string +>"hello" : string >rest : any[] var lambda4 = (y = "hello", ...rest) => { } >lambda4 : (y?: string, ...rest: any[]) => void >(y = "hello", ...rest) => { } : (y?: string, ...rest: any[]) => void >y : string +>"hello" : string >rest : any[] var x = function (str = "hello", ...rest) { } >x : (str?: string, ...rest: any[]) => void >function (str = "hello", ...rest) { } : (str?: string, ...rest: any[]) => void >str : string +>"hello" : string >rest : any[] var y = (function (num = 10, boo = false, ...rest) { })() @@ -35,7 +40,9 @@ var y = (function (num = 10, boo = false, ...rest) { })() >(function (num = 10, boo = false, ...rest) { }) : (num?: number, boo?: boolean, ...rest: any[]) => void >function (num = 10, boo = false, ...rest) { } : (num?: number, boo?: boolean, ...rest: any[]) => void >num : number +>10 : number >boo : boolean +>false : boolean >rest : any[] var z = (function (num: number, boo = false, ...rest) { })(10) @@ -45,5 +52,7 @@ var z = (function (num: number, boo = false, ...rest) { })(10) >function (num: number, boo = false, ...rest) { } : (num: number, boo?: boolean, ...rest: any[]) => void >num : number >boo : boolean +>false : boolean >rest : any[] +>10 : number diff --git a/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types b/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types index 9b8805dfa2b..76f2c863a26 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types @@ -3,30 +3,35 @@ var lambda1 = (y = "hello") => { } >lambda1 : (y?: string) => void >(y = "hello") => { } : (y?: string) => void >y : string +>"hello" : string var lambda2 = (x: number, y = "hello") => { } >lambda2 : (x: number, y?: string) => void >(x: number, y = "hello") => { } : (x: number, y?: string) => void >x : number >y : string +>"hello" : string var lambda3 = (x: number, y = "hello", ...rest) => { } >lambda3 : (x: number, y?: string, ...rest: any[]) => void >(x: number, y = "hello", ...rest) => { } : (x: number, y?: string, ...rest: any[]) => void >x : number >y : string +>"hello" : string >rest : any[] var lambda4 = (y = "hello", ...rest) => { } >lambda4 : (y?: string, ...rest: any[]) => void >(y = "hello", ...rest) => { } : (y?: string, ...rest: any[]) => void >y : string +>"hello" : string >rest : any[] var x = function (str = "hello", ...rest) { } >x : (str?: string, ...rest: any[]) => void >function (str = "hello", ...rest) { } : (str?: string, ...rest: any[]) => void >str : string +>"hello" : string >rest : any[] var y = (function (num = 10, boo = false, ...rest) { })() @@ -35,7 +40,9 @@ var y = (function (num = 10, boo = false, ...rest) { })() >(function (num = 10, boo = false, ...rest) { }) : (num?: number, boo?: boolean, ...rest: any[]) => void >function (num = 10, boo = false, ...rest) { } : (num?: number, boo?: boolean, ...rest: any[]) => void >num : number +>10 : number >boo : boolean +>false : boolean >rest : any[] var z = (function (num: number, boo = false, ...rest) { })(10) @@ -45,5 +52,7 @@ var z = (function (num: number, boo = false, ...rest) { })(10) >function (num: number, boo = false, ...rest) { } : (num: number, boo?: boolean, ...rest: any[]) => void >num : number >boo : boolean +>false : boolean >rest : any[] +>10 : number diff --git a/tests/baselines/reference/emitDefaultParametersFunctionProperty.types b/tests/baselines/reference/emitDefaultParametersFunctionProperty.types index 7c1ea6a5da3..8a703fd114f 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionProperty.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionProperty.types @@ -6,23 +6,27 @@ var obj2 = { func1(y = 10, ...rest) { }, >func1 : (y?: number, ...rest: any[]) => void >y : number +>10 : number >rest : any[] func2(x = "hello") { }, >func2 : (x?: string) => void >x : string +>"hello" : string func3(x: string, z: number, y = "hello") { }, >func3 : (x: string, z: number, y?: string) => void >x : string >z : number >y : string +>"hello" : string func4(x: string, z: number, y = "hello", ...rest) { }, >func4 : (x: string, z: number, y?: string, ...rest: any[]) => void >x : string >z : number >y : string +>"hello" : string >rest : any[] } diff --git a/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types b/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types index ed80158ffd1..1edd505c0b5 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types @@ -6,22 +6,26 @@ var obj2 = { func1(y = 10, ...rest) { }, >func1 : (y?: number, ...rest: any[]) => void >y : number +>10 : number >rest : any[] func2(x = "hello") { }, >func2 : (x?: string) => void >x : string +>"hello" : string func3(x: string, z: number, y = "hello") { }, >func3 : (x: string, z: number, y?: string) => void >x : string >z : number >y : string +>"hello" : string func4(x: string, z: number, y = "hello", ...rest) { }, >func4 : (x: string, z: number, y?: string, ...rest: any[]) => void >x : string >z : number >y : string +>"hello" : string >rest : any[] } diff --git a/tests/baselines/reference/emitDefaultParametersMethod.types b/tests/baselines/reference/emitDefaultParametersMethod.types index 5b2f08d4f70..ce7dd2542fa 100644 --- a/tests/baselines/reference/emitDefaultParametersMethod.types +++ b/tests/baselines/reference/emitDefaultParametersMethod.types @@ -7,25 +7,30 @@ class C { >z : string >x : number >y : string +>"hello" : string public foo(x: string, t = false) { } >foo : (x: string, t?: boolean) => void >x : string >t : boolean +>false : boolean public foo1(x: string, t = false, ...rest) { } >foo1 : (x: string, t?: boolean, ...rest: any[]) => void >x : string >t : boolean +>false : boolean >rest : any[] public bar(t = false) { } >bar : (t?: boolean) => void >t : boolean +>false : boolean public boo(t = false, ...rest) { } >boo : (t?: boolean, ...rest: any[]) => void >t : boolean +>false : boolean >rest : any[] } @@ -34,6 +39,7 @@ class D { constructor(y = "hello") { } >y : string +>"hello" : string } class E { @@ -41,6 +47,7 @@ class E { constructor(y = "hello", ...rest) { } >y : string +>"hello" : string >rest : any[] } diff --git a/tests/baselines/reference/emitDefaultParametersMethodES6.types b/tests/baselines/reference/emitDefaultParametersMethodES6.types index 54312714b1d..09096d153bf 100644 --- a/tests/baselines/reference/emitDefaultParametersMethodES6.types +++ b/tests/baselines/reference/emitDefaultParametersMethodES6.types @@ -7,25 +7,30 @@ class C { >z : string >x : number >y : string +>"hello" : string public foo(x: string, t = false) { } >foo : (x: string, t?: boolean) => void >x : string >t : boolean +>false : boolean public foo1(x: string, t = false, ...rest) { } >foo1 : (x: string, t?: boolean, ...rest: any[]) => void >x : string >t : boolean +>false : boolean >rest : any[] public bar(t = false) { } >bar : (t?: boolean) => void >t : boolean +>false : boolean public boo(t = false, ...rest) { } >boo : (t?: boolean, ...rest: any[]) => void >t : boolean +>false : boolean >rest : any[] } @@ -34,6 +39,7 @@ class D { constructor(y = "hello") { } >y : string +>"hello" : string } class E { @@ -41,5 +47,6 @@ class E { constructor(y = "hello", ...rest) { } >y : string +>"hello" : string >rest : any[] } diff --git a/tests/baselines/reference/emitMemberAccessExpression.types b/tests/baselines/reference/emitMemberAccessExpression.types index 9f7c98332e9..7a32e452aec 100644 --- a/tests/baselines/reference/emitMemberAccessExpression.types +++ b/tests/baselines/reference/emitMemberAccessExpression.types @@ -15,11 +15,14 @@ module Microsoft.PeopleAtWork.Model { } === tests/cases/compiler/emitMemberAccessExpression_file1.ts === /// -No type information for this code."use strict"; -No type information for this code. -No type information for this code.=== tests/cases/compiler/emitMemberAccessExpression_file2.ts === +"use strict"; +>"use strict" : string + +=== tests/cases/compiler/emitMemberAccessExpression_file2.ts === /// "use strict"; +>"use strict" : string + module Microsoft.PeopleAtWork.Model { >Microsoft : typeof Microsoft >PeopleAtWork : typeof PeopleAtWork diff --git a/tests/baselines/reference/emitPostComments.types b/tests/baselines/reference/emitPostComments.types index 4173e584031..5b5a05931d4 100644 --- a/tests/baselines/reference/emitPostComments.types +++ b/tests/baselines/reference/emitPostComments.types @@ -2,6 +2,7 @@ var y = 10; >y : number +>10 : number /** * @name Foo diff --git a/tests/baselines/reference/emitPreComments.types b/tests/baselines/reference/emitPreComments.types index 6ab0c7b1bf9..c0378350de3 100644 --- a/tests/baselines/reference/emitPreComments.types +++ b/tests/baselines/reference/emitPreComments.types @@ -3,6 +3,7 @@ // This is pre comment var y = 10; >y : number +>10 : number /** * @name Foo diff --git a/tests/baselines/reference/emptyIndexer.types b/tests/baselines/reference/emptyIndexer.types index 949e7370e78..5361ed4d7f4 100644 --- a/tests/baselines/reference/emptyIndexer.types +++ b/tests/baselines/reference/emptyIndexer.types @@ -25,5 +25,6 @@ var n = x[''].m(); // should not crash compiler >x[''].m : () => number >x[''] : I1 >x : I2 +>'' : string >m : () => number diff --git a/tests/baselines/reference/enumBasics.types b/tests/baselines/reference/enumBasics.types index c0d7fb9bed1..6a147f01062 100644 --- a/tests/baselines/reference/enumBasics.types +++ b/tests/baselines/reference/enumBasics.types @@ -67,8 +67,11 @@ enum E2 { A = 1, B = 2, C = 3 >A : E2 +>1 : number >B : E2 +>2 : number >C : E2 +>3 : number } // Enum with only computed members @@ -78,11 +81,15 @@ enum E3 { X = 'foo'.length, Y = 4 + 3, Z = +'foo' >X : E3 >'foo'.length : number +>'foo' : string >length : number >Y : E3 >4 + 3 : number +>4 : number +>3 : number >Z : E3 >+'foo' : number +>'foo' : string } // Enum with constant members followed by computed members @@ -91,9 +98,11 @@ enum E4 { X = 0, Y, Z = 'foo'.length >X : E4 +>0 : number >Y : E4 >Z : E4 >'foo'.length : number +>'foo' : string >length : number } @@ -106,6 +115,7 @@ enum E5 { B = 3, >B : E5 +>3 : number C // 4 >C : E5 @@ -119,6 +129,7 @@ enum E6 { B = 0, >B : E6 +>0 : number C // 1 >C : E6 @@ -131,6 +142,8 @@ enum E7 { A = 'foo'['foo'] >A : E7 >'foo'['foo'] : any +>'foo' : string +>'foo' : string } // Enum with computed member initializer of type number @@ -140,6 +153,8 @@ enum E8 { B = 'foo'['foo'] >B : E8 >'foo'['foo'] : any +>'foo' : string +>'foo' : string } //Enum with computed member intializer of same enum type diff --git a/tests/baselines/reference/enumCodeGenNewLines1.types b/tests/baselines/reference/enumCodeGenNewLines1.types index 51c09daa0ff..6321511ef2d 100644 --- a/tests/baselines/reference/enumCodeGenNewLines1.types +++ b/tests/baselines/reference/enumCodeGenNewLines1.types @@ -4,11 +4,14 @@ enum foo { b = 1, >b : foo +>1 : number c = 2, >c : foo +>2 : number d = 3 >d : foo +>3 : number } diff --git a/tests/baselines/reference/enumIndexer.types b/tests/baselines/reference/enumIndexer.types index cbd7c3274a6..cbc43176b01 100644 --- a/tests/baselines/reference/enumIndexer.types +++ b/tests/baselines/reference/enumIndexer.types @@ -11,8 +11,10 @@ var _arr = [{ key: 'foo' }, { key: 'bar' }] >[{ key: 'foo' }, { key: 'bar' }] : { key: string; }[] >{ key: 'foo' } : { key: string; } >key : string +>'foo' : string >{ key: 'bar' } : { key: string; } >key : string +>'bar' : string var enumValue = MyEnumType.foo; >enumValue : MyEnumType diff --git a/tests/baselines/reference/enumMapBackIntoItself.types b/tests/baselines/reference/enumMapBackIntoItself.types index d97dbcf85db..ab26094512b 100644 --- a/tests/baselines/reference/enumMapBackIntoItself.types +++ b/tests/baselines/reference/enumMapBackIntoItself.types @@ -27,4 +27,5 @@ var test = TShirtSize[mySize]; test + '' >test + '' : string >test : string +>'' : string diff --git a/tests/baselines/reference/enumMerging.types b/tests/baselines/reference/enumMerging.types index c61f9e17739..85eb360249f 100644 --- a/tests/baselines/reference/enumMerging.types +++ b/tests/baselines/reference/enumMerging.types @@ -18,6 +18,7 @@ module M1 { D = 1, E, F >D : EImpl1 +>1 : number >E : EImpl1 >F : EImpl1 } @@ -27,8 +28,11 @@ module M1 { A = 3, B = 2, C = 1 >A : EConst1 +>3 : number >B : EConst1 +>2 : number >C : EConst1 +>1 : number } export enum EConst1 { @@ -36,8 +40,11 @@ module M1 { D = 7, E = 9, F = 8 >D : EConst1 +>7 : number >E : EConst1 +>9 : number >F : EConst1 +>8 : number } var x = [EConst1.A, EConst1.B, EConst1.C, EConst1.D, EConst1.E, EConst1.F]; @@ -73,12 +80,15 @@ module M2 { A = 'foo'.length, B = 'foo'.length, C = 'foo'.length >A : EComp2 >'foo'.length : number +>'foo' : string >length : number >B : EComp2 >'foo'.length : number +>'foo' : string >length : number >C : EComp2 >'foo'.length : number +>'foo' : string >length : number } @@ -88,12 +98,15 @@ module M2 { D = 'foo'.length, E = 'foo'.length, F = 'foo'.length >D : EComp2 >'foo'.length : number +>'foo' : string >length : number >E : EComp2 >'foo'.length : number +>'foo' : string >length : number >F : EComp2 >'foo'.length : number +>'foo' : string >length : number } @@ -139,6 +152,7 @@ module M3 { C = 1, D, E >C : EInit +>1 : number >D : EInit >E : EInit } @@ -183,6 +197,7 @@ module M6 { export enum Color { Yellow = 1 } >Color : Color >Yellow : Color +>1 : number } var t = A.Color.Yellow; >t : A.Color diff --git a/tests/baselines/reference/enumNegativeLiteral1.types b/tests/baselines/reference/enumNegativeLiteral1.types index 329c54e276b..31ecbc11aa2 100644 --- a/tests/baselines/reference/enumNegativeLiteral1.types +++ b/tests/baselines/reference/enumNegativeLiteral1.types @@ -5,6 +5,7 @@ enum E { a = -5, b, c >a : E >-5 : number +>5 : number >b : E >c : E } diff --git a/tests/baselines/reference/enumNumbering1.types b/tests/baselines/reference/enumNumbering1.types index 00e8eb95da9..81bb0325b7a 100644 --- a/tests/baselines/reference/enumNumbering1.types +++ b/tests/baselines/reference/enumNumbering1.types @@ -19,9 +19,11 @@ enum Test { >Math.random : () => number >Math : Math >random : () => number +>1000 : number D = 10, >D : Test +>10 : number E // Error but shouldn't be >E : Test diff --git a/tests/baselines/reference/enumOperations.types b/tests/baselines/reference/enumOperations.types index df36d293cf3..232ecc5e71b 100644 --- a/tests/baselines/reference/enumOperations.types +++ b/tests/baselines/reference/enumOperations.types @@ -2,6 +2,7 @@ enum Enum { None = 0 } >Enum : Enum >None : Enum +>0 : number var enumType: Enum = Enum.None; >enumType : Enum @@ -12,9 +13,11 @@ var enumType: Enum = Enum.None; var numberType: number = 0; >numberType : number +>0 : number var anyType: any = 0; >anyType : any +>0 : number enumType ^ numberType; >enumType ^ numberType : number diff --git a/tests/baselines/reference/es3-amd.types b/tests/baselines/reference/es3-amd.types index c43d29ac6dc..1e9fdbd582f 100644 --- a/tests/baselines/reference/es3-amd.types +++ b/tests/baselines/reference/es3-amd.types @@ -12,5 +12,6 @@ class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es3-declaration-amd.types b/tests/baselines/reference/es3-declaration-amd.types index 0ee63040166..daf0bb5d74e 100644 --- a/tests/baselines/reference/es3-declaration-amd.types +++ b/tests/baselines/reference/es3-declaration-amd.types @@ -12,5 +12,6 @@ class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es3-sourcemap-amd.types b/tests/baselines/reference/es3-sourcemap-amd.types index 5301120e2df..d3f712211e4 100644 --- a/tests/baselines/reference/es3-sourcemap-amd.types +++ b/tests/baselines/reference/es3-sourcemap-amd.types @@ -12,5 +12,6 @@ class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es5-amd.types b/tests/baselines/reference/es5-amd.types index 289289d3c0b..7dd9e8b281a 100644 --- a/tests/baselines/reference/es5-amd.types +++ b/tests/baselines/reference/es5-amd.types @@ -12,5 +12,6 @@ class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es5-declaration-amd.types b/tests/baselines/reference/es5-declaration-amd.types index 50815e8e6bc..ead96c35de1 100644 --- a/tests/baselines/reference/es5-declaration-amd.types +++ b/tests/baselines/reference/es5-declaration-amd.types @@ -12,5 +12,6 @@ class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es5-souremap-amd.types b/tests/baselines/reference/es5-souremap-amd.types index 242e6508026..67606d7f1ff 100644 --- a/tests/baselines/reference/es5-souremap-amd.types +++ b/tests/baselines/reference/es5-souremap-amd.types @@ -12,5 +12,6 @@ class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es5ExportDefaultExpression.types b/tests/baselines/reference/es5ExportDefaultExpression.types index 2f4e2b57284..6b371a2fc73 100644 --- a/tests/baselines/reference/es5ExportDefaultExpression.types +++ b/tests/baselines/reference/es5ExportDefaultExpression.types @@ -3,4 +3,6 @@ export default (1 + 2); >(1 + 2) : number >1 + 2 : number +>1 : number +>2 : number diff --git a/tests/baselines/reference/es5ModuleWithModuleGenAmd.types b/tests/baselines/reference/es5ModuleWithModuleGenAmd.types index e3453587a12..4ae6698d06a 100644 --- a/tests/baselines/reference/es5ModuleWithModuleGenAmd.types +++ b/tests/baselines/reference/es5ModuleWithModuleGenAmd.types @@ -10,5 +10,6 @@ export class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types index 721df9afe58..425afed82d2 100644 --- a/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types +++ b/tests/baselines/reference/es5ModuleWithModuleGenCommonjs.types @@ -10,5 +10,6 @@ export class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es6ClassSuperCodegenBug.types b/tests/baselines/reference/es6ClassSuperCodegenBug.types index 7b8a4abadfe..bdf8ebde8f2 100644 --- a/tests/baselines/reference/es6ClassSuperCodegenBug.types +++ b/tests/baselines/reference/es6ClassSuperCodegenBug.types @@ -12,14 +12,20 @@ class B extends A { constructor() { if (true) { +>true : boolean + super('a1', 'b1'); >super('a1', 'b1') : void >super : typeof A +>'a1' : string +>'b1' : string } else { super('a2', 'b2'); >super('a2', 'b2') : void >super : typeof A +>'a2' : string +>'b2' : string } } } diff --git a/tests/baselines/reference/es6ClassTest3.types b/tests/baselines/reference/es6ClassTest3.types index ba0f2036f0e..d73007f211b 100644 --- a/tests/baselines/reference/es6ClassTest3.types +++ b/tests/baselines/reference/es6ClassTest3.types @@ -26,12 +26,14 @@ module M { >this.x : number >this : Visibility >x : number +>1 : number this.y = 2; >this.y = 2 : number >this.y : number >this : Visibility >y : number +>2 : number } } } diff --git a/tests/baselines/reference/es6ClassTest5.types b/tests/baselines/reference/es6ClassTest5.types index e04be3e8c43..e74ee846051 100644 --- a/tests/baselines/reference/es6ClassTest5.types +++ b/tests/baselines/reference/es6ClassTest5.types @@ -23,5 +23,6 @@ class bigClass { public break = 1; >break : number +>1 : number } diff --git a/tests/baselines/reference/es6ClassTest7.types b/tests/baselines/reference/es6ClassTest7.types index 2ad5e88179c..664984986ef 100644 --- a/tests/baselines/reference/es6ClassTest7.types +++ b/tests/baselines/reference/es6ClassTest7.types @@ -9,6 +9,7 @@ declare module M { class Bar extends M.Foo { >Bar : Bar +>M.Foo : unknown >M : typeof M >Foo : M.Foo } diff --git a/tests/baselines/reference/es6ClassTest8.types b/tests/baselines/reference/es6ClassTest8.types index e5133c88d7e..622f81f1d10 100644 --- a/tests/baselines/reference/es6ClassTest8.types +++ b/tests/baselines/reference/es6ClassTest8.types @@ -36,6 +36,7 @@ class Vector { >v : Vector >Vector : Vector >Vector : Vector +>null : null static minus(v1:Vector, v2:Vector):Vector {return null;} >minus : (v1: Vector, v2: Vector) => Vector @@ -44,6 +45,7 @@ class Vector { >v2 : Vector >Vector : Vector >Vector : Vector +>null : null static times(v1:Vector, v2:Vector):Vector {return null;} >times : (v1: Vector, v2: Vector) => Vector @@ -52,6 +54,7 @@ class Vector { >v2 : Vector >Vector : Vector >Vector : Vector +>null : null static cross(v1:Vector, v2:Vector):Vector {return null;} >cross : (v1: Vector, v2: Vector) => Vector @@ -60,6 +63,7 @@ class Vector { >v2 : Vector >Vector : Vector >Vector : Vector +>null : null constructor(public x: number, >x : number @@ -78,6 +82,7 @@ class Vector { >v2 : Vector >Vector : Vector >Vector : Vector +>null : null } @@ -106,7 +111,10 @@ class Camera { >down : Vector >new Vector(0.0, -1.0, 0.0) : Vector >Vector : typeof Vector +>0.0 : number >-1.0 : number +>1.0 : number +>0.0 : number this.forward = Vector.norm(Vector.minus(lookAt,this.pos)); >this.forward = Vector.norm(Vector.minus(lookAt,this.pos)) : Vector diff --git a/tests/baselines/reference/es6ExportAll.types b/tests/baselines/reference/es6ExportAll.types index 99e8fde9d40..60c4663d022 100644 --- a/tests/baselines/reference/es6ExportAll.types +++ b/tests/baselines/reference/es6ExportAll.types @@ -11,9 +11,11 @@ export module m { export var x = 10; >x : number +>10 : number } export var x = 10; >x : number +>10 : number export module uninstantiated { >uninstantiated : unknown diff --git a/tests/baselines/reference/es6ExportAllInEs5.types b/tests/baselines/reference/es6ExportAllInEs5.types index 99e8fde9d40..60c4663d022 100644 --- a/tests/baselines/reference/es6ExportAllInEs5.types +++ b/tests/baselines/reference/es6ExportAllInEs5.types @@ -11,9 +11,11 @@ export module m { export var x = 10; >x : number +>10 : number } export var x = 10; >x : number +>10 : number export module uninstantiated { >uninstantiated : unknown diff --git a/tests/baselines/reference/es6ExportClause.types b/tests/baselines/reference/es6ExportClause.types index 24b9859e0e8..32ba02c6833 100644 --- a/tests/baselines/reference/es6ExportClause.types +++ b/tests/baselines/reference/es6ExportClause.types @@ -11,9 +11,11 @@ module m { export var x = 10; >x : number +>10 : number } var x = 10; >x : number +>10 : number module uninstantiated { >uninstantiated : unknown diff --git a/tests/baselines/reference/es6ExportClauseInEs5.types b/tests/baselines/reference/es6ExportClauseInEs5.types index 8caedfa5ceb..13568d9d514 100644 --- a/tests/baselines/reference/es6ExportClauseInEs5.types +++ b/tests/baselines/reference/es6ExportClauseInEs5.types @@ -11,9 +11,11 @@ module m { export var x = 10; >x : number +>10 : number } var x = 10; >x : number +>10 : number module uninstantiated { >uninstantiated : unknown diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types index c0087dccd94..a06c824a3f0 100644 --- a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.types @@ -11,9 +11,11 @@ export module m { export var x = 10; >x : number +>10 : number } export var x = 10; >x : number +>10 : number export module uninstantiated { >uninstantiated : unknown diff --git a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types index c0087dccd94..a06c824a3f0 100644 --- a/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types +++ b/tests/baselines/reference/es6ExportClauseWithoutModuleSpecifierInEs5.types @@ -11,9 +11,11 @@ export module m { export var x = 10; >x : number +>10 : number } export var x = 10; >x : number +>10 : number export module uninstantiated { >uninstantiated : unknown diff --git a/tests/baselines/reference/es6ExportDefaultExpression.types b/tests/baselines/reference/es6ExportDefaultExpression.types index 3b056b8d9f9..6f7665c2800 100644 --- a/tests/baselines/reference/es6ExportDefaultExpression.types +++ b/tests/baselines/reference/es6ExportDefaultExpression.types @@ -3,4 +3,6 @@ export default (1 + 2); >(1 + 2) : number >1 + 2 : number +>1 : number +>2 : number diff --git a/tests/baselines/reference/es6ImportDefaultBinding.types b/tests/baselines/reference/es6ImportDefaultBinding.types index 13504101a2c..6aa71ddf6ff 100644 --- a/tests/baselines/reference/es6ImportDefaultBinding.types +++ b/tests/baselines/reference/es6ImportDefaultBinding.types @@ -2,6 +2,7 @@ var a = 10; >a : number +>10 : number export default a; >a : number diff --git a/tests/baselines/reference/es6ImportDefaultBindingAmd.types b/tests/baselines/reference/es6ImportDefaultBindingAmd.types index 323ed557d8b..740ff2c0e14 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingAmd.types +++ b/tests/baselines/reference/es6ImportDefaultBindingAmd.types @@ -2,6 +2,7 @@ var a = 10; >a : number +>10 : number export default a; >a : number diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types index c0c3f891c9e..6d3f015c783 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1.types @@ -2,6 +2,7 @@ var a = 10; >a : number +>10 : number export default a; >a : number diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types index ad2b865bc01..4a05b57e304 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamespaceBinding1InEs5.types @@ -2,6 +2,7 @@ var a = 10; >a : number +>10 : number export default a; >a : number diff --git a/tests/baselines/reference/es6ImportNameSpaceImportAmd.types b/tests/baselines/reference/es6ImportNameSpaceImportAmd.types index 623a7e8e160..beb6860c73e 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportAmd.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportAmd.types @@ -2,6 +2,7 @@ export var a = 10; >a : number +>10 : number === tests/cases/compiler/es6ImportNameSpaceImportAmd_1.ts === import * as nameSpaceBinding from "es6ImportNameSpaceImportAmd_0"; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types index 6ba725f2494..01531cd233d 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportInEs5.types @@ -2,6 +2,7 @@ export var a = 10; >a : number +>10 : number === tests/cases/compiler/es6ImportNameSpaceImportInEs5_1.ts === import * as nameSpaceBinding from "es6ImportNameSpaceImportInEs5_0"; diff --git a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types index e1f2e89bbd8..2cc4844dd42 100644 --- a/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types +++ b/tests/baselines/reference/es6ImportNameSpaceImportNoNamedExports.types @@ -2,6 +2,7 @@ var a = 10; >a : number +>10 : number export = a; >a : number diff --git a/tests/baselines/reference/es6ImportNamedImportAmd.types b/tests/baselines/reference/es6ImportNamedImportAmd.types index 4a0abe853e0..45ca9c08547 100644 --- a/tests/baselines/reference/es6ImportNamedImportAmd.types +++ b/tests/baselines/reference/es6ImportNamedImportAmd.types @@ -2,6 +2,7 @@ export var a = 10; >a : number +>10 : number export var x = a; >x : number @@ -13,18 +14,23 @@ export var m = a; export var a1 = 10; >a1 : number +>10 : number export var x1 = 10; >x1 : number +>10 : number export var z1 = 10; >z1 : number +>10 : number export var z2 = 10; >z2 : number +>10 : number export var aaaa = 10; >aaaa : number +>10 : number === tests/cases/compiler/es6ImportNamedImportAmd_1.ts === import { } from "es6ImportNamedImportAmd_0"; diff --git a/tests/baselines/reference/es6ImportNamedImportInEs5.types b/tests/baselines/reference/es6ImportNamedImportInEs5.types index f60644b2621..95f784c5eac 100644 --- a/tests/baselines/reference/es6ImportNamedImportInEs5.types +++ b/tests/baselines/reference/es6ImportNamedImportInEs5.types @@ -2,6 +2,7 @@ export var a = 10; >a : number +>10 : number export var x = a; >x : number @@ -13,18 +14,23 @@ export var m = a; export var a1 = 10; >a1 : number +>10 : number export var x1 = 10; >x1 : number +>10 : number export var z1 = 10; >z1 : number +>10 : number export var z2 = 10; >z2 : number +>10 : number export var aaaa = 10; >aaaa : number +>10 : number === tests/cases/compiler/es6ImportNamedImportInEs5_1.ts === import { } from "es6ImportNamedImportInEs5_0"; diff --git a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types index 62917e5ff36..1c9ec402a72 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types +++ b/tests/baselines/reference/es6ImportNamedImportWithTypesAndValues.types @@ -18,6 +18,7 @@ export class C implements I { prop = "hello"; >prop : string +>"hello" : string } export class C2 implements I2 { >C2 : C2 @@ -25,6 +26,7 @@ export class C2 implements I2 { prop2 = "world"; >prop2 : string +>"world" : string } === tests/cases/compiler/client.ts === diff --git a/tests/baselines/reference/es6ImportWithoutFromClause.types b/tests/baselines/reference/es6ImportWithoutFromClause.types index 3cc5067891a..d46a4a7487c 100644 --- a/tests/baselines/reference/es6ImportWithoutFromClause.types +++ b/tests/baselines/reference/es6ImportWithoutFromClause.types @@ -2,6 +2,7 @@ export var a = 10; >a : number +>10 : number === tests/cases/compiler/es6ImportWithoutFromClause_1.ts === import "es6ImportWithoutFromClause_0"; diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types index c3d09388916..3314b12d189 100644 --- a/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types +++ b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.types @@ -2,17 +2,21 @@ export var a = 10; >a : number +>10 : number === tests/cases/compiler/es6ImportWithoutFromClauseAmd_1.ts === export var b = 10; >b : number +>10 : number === tests/cases/compiler/es6ImportWithoutFromClauseAmd_2.ts === import "es6ImportWithoutFromClauseAmd_0"; import "es6ImportWithoutFromClauseAmd_2"; var _a = 10; >_a : number +>10 : number var _b = 10; >_b : number +>10 : number diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.types b/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.types index 3d674f9c22c..ee95c07bb75 100644 --- a/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.types +++ b/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.types @@ -2,6 +2,7 @@ export var a = 10; >a : number +>10 : number === tests/cases/compiler/es6ImportWithoutFromClauseInEs5_1.ts === import "es6ImportWithoutFromClauseInEs5_0"; diff --git a/tests/baselines/reference/es6Module.types b/tests/baselines/reference/es6Module.types index 93910200215..b55b58e8883 100644 --- a/tests/baselines/reference/es6Module.types +++ b/tests/baselines/reference/es6Module.types @@ -10,5 +10,6 @@ export class A >B : () => number { return 42; +>42 : number } } diff --git a/tests/baselines/reference/es6ModuleClassDeclaration.types b/tests/baselines/reference/es6ModuleClassDeclaration.types index 09d50c4e542..e354d266abe 100644 --- a/tests/baselines/reference/es6ModuleClassDeclaration.types +++ b/tests/baselines/reference/es6ModuleClassDeclaration.types @@ -6,15 +6,19 @@ export class c { } private x = 10; >x : number +>10 : number public y = 30; >y : number +>30 : number static k = 20; >k : number +>20 : number private static l = 30; >l : number +>30 : number private method1() { >method1 : () => void @@ -36,15 +40,19 @@ class c2 { } private x = 10; >x : number +>10 : number public y = 30; >y : number +>30 : number static k = 20; >k : number +>20 : number private static l = 30; >l : number +>30 : number private method1() { >method1 : () => void @@ -77,15 +85,19 @@ export module m1 { } private x = 10; >x : number +>10 : number public y = 30; >y : number +>30 : number static k = 20; >k : number +>20 : number private static l = 30; >l : number +>30 : number private method1() { >method1 : () => void @@ -107,15 +119,19 @@ export module m1 { } private x = 10; >x : number +>10 : number public y = 30; >y : number +>30 : number static k = 20; >k : number +>20 : number private static l = 30; >l : number +>30 : number private method1() { >method1 : () => void @@ -156,15 +172,19 @@ module m2 { } private x = 10; >x : number +>10 : number public y = 30; >y : number +>30 : number static k = 20; >k : number +>20 : number private static l = 30; >l : number +>30 : number private method1() { >method1 : () => void @@ -186,15 +206,19 @@ module m2 { } private x = 10; >x : number +>10 : number public y = 30; >y : number +>30 : number static k = 20; >k : number +>20 : number private static l = 30; >l : number +>30 : number private method1() { >method1 : () => void diff --git a/tests/baselines/reference/es6ModuleConst.types b/tests/baselines/reference/es6ModuleConst.types index cceb74a5e1e..99b9f7c2980 100644 --- a/tests/baselines/reference/es6ModuleConst.types +++ b/tests/baselines/reference/es6ModuleConst.types @@ -1,6 +1,7 @@ === tests/cases/compiler/es6ModuleConst.ts === export const a = "hello"; >a : string +>"hello" : string export const x: string = a, y = x; >x : string diff --git a/tests/baselines/reference/es6ModuleInternalImport.types b/tests/baselines/reference/es6ModuleInternalImport.types index 50db69d8edb..5d7fd527afd 100644 --- a/tests/baselines/reference/es6ModuleInternalImport.types +++ b/tests/baselines/reference/es6ModuleInternalImport.types @@ -4,6 +4,7 @@ export module m { export var a = 10; >a : number +>10 : number } export import a1 = m.a; >a1 : number diff --git a/tests/baselines/reference/es6ModuleLet.types b/tests/baselines/reference/es6ModuleLet.types index 4b30c89cc81..9e670c0a1e1 100644 --- a/tests/baselines/reference/es6ModuleLet.types +++ b/tests/baselines/reference/es6ModuleLet.types @@ -1,6 +1,7 @@ === tests/cases/compiler/es6ModuleLet.ts === export let a = "hello"; >a : string +>"hello" : string export let x: string = a, y = x; >x : string diff --git a/tests/baselines/reference/es6ModuleModuleDeclaration.types b/tests/baselines/reference/es6ModuleModuleDeclaration.types index c174fe6f8c7..6fb5a7c98f5 100644 --- a/tests/baselines/reference/es6ModuleModuleDeclaration.types +++ b/tests/baselines/reference/es6ModuleModuleDeclaration.types @@ -4,27 +4,33 @@ export module m1 { export var a = 10; >a : number +>10 : number var b = 10; >b : number +>10 : number export module innerExportedModule { >innerExportedModule : typeof innerExportedModule export var k = 10; >k : number +>10 : number var l = 10; >l : number +>10 : number } export module innerNonExportedModule { >innerNonExportedModule : typeof innerNonExportedModule export var x = 10; >x : number +>10 : number var y = 10; >y : number +>10 : number } } module m2 { @@ -32,26 +38,32 @@ module m2 { export var a = 10; >a : number +>10 : number var b = 10; >b : number +>10 : number export module innerExportedModule { >innerExportedModule : typeof innerExportedModule export var k = 10; >k : number +>10 : number var l = 10; >l : number +>10 : number } export module innerNonExportedModule { >innerNonExportedModule : typeof innerNonExportedModule export var x = 10; >x : number +>10 : number var y = 10; >y : number +>10 : number } } diff --git a/tests/baselines/reference/es6ModuleVariableStatement.types b/tests/baselines/reference/es6ModuleVariableStatement.types index a10d8f6cacb..520430199e4 100644 --- a/tests/baselines/reference/es6ModuleVariableStatement.types +++ b/tests/baselines/reference/es6ModuleVariableStatement.types @@ -1,6 +1,7 @@ === tests/cases/compiler/es6ModuleVariableStatement.ts === export var a = "hello"; >a : string +>"hello" : string export var x: string = a, y = x; >x : string diff --git a/tests/baselines/reference/escapedIdentifiers.types b/tests/baselines/reference/escapedIdentifiers.types index d0b6b1f5c42..0a13ea49b37 100644 --- a/tests/baselines/reference/escapedIdentifiers.types +++ b/tests/baselines/reference/escapedIdentifiers.types @@ -13,6 +13,7 @@ // var decl var \u0061 = 1; >\u0061 : number +>1 : number a ++; >a ++ : number @@ -24,6 +25,7 @@ a ++; var b = 1; >b : number +>1 : number b ++; >b ++ : number @@ -52,24 +54,28 @@ moduleType1.baz1 = 3; >moduleType1.baz1 : number >moduleType1 : typeof moduleType1 >baz1 : number +>3 : number moduleType\u0031.baz1 = 3; >moduleType\u0031.baz1 = 3 : number >moduleType\u0031.baz1 : number >moduleType\u0031 : typeof moduleType1 >baz1 : number +>3 : number moduleType2.baz2 = 3; >moduleType2.baz2 = 3 : number >moduleType2.baz2 : number >moduleType2 : typeof moduleType\u0032 >baz2 : number +>3 : number moduleType\u0032.baz2 = 3; >moduleType\u0032.baz2 = 3 : number >moduleType\u0032.baz2 : number >moduleType\u0032 : typeof moduleType\u0032 >baz2 : number +>3 : number // classes @@ -96,6 +102,7 @@ classType1Object1.foo1 = 2; >classType1Object1.foo1 : number >classType1Object1 : classType1 >foo1 : number +>2 : number var classType1Object2 = new classType\u0031(); >classType1Object2 : classType1 @@ -107,6 +114,7 @@ classType1Object2.foo1 = 2; >classType1Object2.foo1 : number >classType1Object2 : classType1 >foo1 : number +>2 : number var classType2Object1 = new classType2(); >classType2Object1 : classType\u0032 @@ -118,6 +126,7 @@ classType2Object1.foo2 = 2; >classType2Object1.foo2 : number >classType2Object1 : classType\u0032 >foo2 : number +>2 : number var classType2Object2 = new classType\u0032(); >classType2Object2 : classType\u0032 @@ -129,6 +138,7 @@ classType2Object2.foo2 = 2; >classType2Object2.foo2 : number >classType2Object2 : classType\u0032 >foo2 : number +>2 : number // interfaces interface interfaceType1 { @@ -150,12 +160,14 @@ var interfaceType1Object1 = { bar1: 0 }; >interfaceType1 : interfaceType1 >{ bar1: 0 } : { bar1: number; } >bar1 : number +>0 : number interfaceType1Object1.bar1 = 2; >interfaceType1Object1.bar1 = 2 : number >interfaceType1Object1.bar1 : number >interfaceType1Object1 : interfaceType1 >bar1 : number +>2 : number var interfaceType1Object2 = { bar1: 0 }; >interfaceType1Object2 : interfaceType1 @@ -163,12 +175,14 @@ var interfaceType1Object2 = { bar1: 0 }; >interfaceType\u0031 : interfaceType1 >{ bar1: 0 } : { bar1: number; } >bar1 : number +>0 : number interfaceType1Object2.bar1 = 2; >interfaceType1Object2.bar1 = 2 : number >interfaceType1Object2.bar1 : number >interfaceType1Object2 : interfaceType1 >bar1 : number +>2 : number var interfaceType2Object1 = { bar2: 0 }; >interfaceType2Object1 : interfaceType\u0032 @@ -176,12 +190,14 @@ var interfaceType2Object1 = { bar2: 0 }; >interfaceType2 : interfaceType\u0032 >{ bar2: 0 } : { bar2: number; } >bar2 : number +>0 : number interfaceType2Object1.bar2 = 2; >interfaceType2Object1.bar2 = 2 : number >interfaceType2Object1.bar2 : number >interfaceType2Object1 : interfaceType\u0032 >bar2 : number +>2 : number var interfaceType2Object2 = { bar2: 0 }; >interfaceType2Object2 : interfaceType\u0032 @@ -189,12 +205,14 @@ var interfaceType2Object2 = { bar2: 0 }; >interfaceType\u0032 : interfaceType\u0032 >{ bar2: 0 } : { bar2: number; } >bar2 : number +>0 : number interfaceType2Object2.bar2 = 2; >interfaceType2Object2.bar2 = 2 : number >interfaceType2Object2.bar2 : number >interfaceType2Object2 : interfaceType\u0032 >bar2 : number +>2 : number // arguments @@ -211,18 +229,22 @@ class testClass { arg\u0031 = 1; >arg\u0031 = 1 : number >arg\u0031 : number +>1 : number arg2 = 'string'; >arg2 = 'string' : string >arg2 : string +>'string' : string arg\u0033 = true; >arg\u0033 = true : boolean >arg\u0033 : boolean +>true : boolean arg4 = 2; >arg4 = 2 : number >arg4 : number +>2 : number } } @@ -241,57 +263,89 @@ var constructorTestObject = new constructorTestClass(1, 'string', true, 2); >constructorTestObject : constructorTestClass >new constructorTestClass(1, 'string', true, 2) : constructorTestClass >constructorTestClass : typeof constructorTestClass +>1 : number +>'string' : string +>true : boolean +>2 : number constructorTestObject.arg\u0031 = 1; >constructorTestObject.arg\u0031 = 1 : number >constructorTestObject.arg\u0031 : number >constructorTestObject : constructorTestClass >arg\u0031 : number +>1 : number constructorTestObject.arg2 = 'string'; >constructorTestObject.arg2 = 'string' : string >constructorTestObject.arg2 : string >constructorTestObject : constructorTestClass >arg2 : string +>'string' : string constructorTestObject.arg\u0033 = true; >constructorTestObject.arg\u0033 = true : boolean >constructorTestObject.arg\u0033 : boolean >constructorTestObject : constructorTestClass >arg\u0033 : boolean +>true : boolean constructorTestObject.arg4 = 2; >constructorTestObject.arg4 = 2 : number >constructorTestObject.arg4 : number >constructorTestObject : constructorTestClass >arg4 : number +>2 : number // Lables l\u0061bel1: +>l\u0061bel1 : unknown + while (false) +>false : boolean { while(false) +>false : boolean + continue label1; // it will go to next iteration of outer loop +>label1 : unknown } label2: +>label2 : unknown + while (false) +>false : boolean { while(false) +>false : boolean + continue l\u0061bel2; // it will go to next iteration of outer loop +>l\u0061bel2 : unknown } label3: +>label3 : unknown + while (false) +>false : boolean { while(false) +>false : boolean + continue label3; // it will go to next iteration of outer loop +>label3 : unknown } l\u0061bel4: +>l\u0061bel4 : unknown + while (false) +>false : boolean { while(false) +>false : boolean + continue l\u0061bel4; // it will go to next iteration of outer loop +>l\u0061bel4 : unknown } diff --git a/tests/baselines/reference/escapedReservedCompilerNamedIdentifier.types b/tests/baselines/reference/escapedReservedCompilerNamedIdentifier.types index f54c7b80757..1ebbf8aedb2 100644 --- a/tests/baselines/reference/escapedReservedCompilerNamedIdentifier.types +++ b/tests/baselines/reference/escapedReservedCompilerNamedIdentifier.types @@ -2,17 +2,21 @@ // double underscores var __proto__ = 10; >__proto__ : number +>10 : number var o = { >o : { "__proto__": number; } >{ "__proto__": 0} : { "__proto__": number; } "__proto__": 0 +>0 : number + }; var b = o["__proto__"]; >b : number >o["__proto__"] : number >o : { "__proto__": number; } +>"__proto__" : string var o1 = { >o1 : { __proto__: number; } @@ -20,27 +24,33 @@ var o1 = { __proto__: 0 >__proto__ : number +>0 : number }; var b1 = o1["__proto__"]; >b1 : number >o1["__proto__"] : number >o1 : { __proto__: number; } +>"__proto__" : string // Triple underscores var ___proto__ = 10; >___proto__ : number +>10 : number var o2 = { >o2 : { "___proto__": number; } >{ "___proto__": 0} : { "___proto__": number; } "___proto__": 0 +>0 : number + }; var b2 = o2["___proto__"]; >b2 : number >o2["___proto__"] : number >o2 : { "___proto__": number; } +>"___proto__" : string var o3 = { >o3 : { ___proto__: number; } @@ -48,27 +58,33 @@ var o3 = { ___proto__: 0 >___proto__ : number +>0 : number }; var b3 = o3["___proto__"]; >b3 : number >o3["___proto__"] : number >o3 : { ___proto__: number; } +>"___proto__" : string // One underscore var _proto__ = 10; >_proto__ : number +>10 : number var o4 = { >o4 : { "_proto__": number; } >{ "_proto__": 0} : { "_proto__": number; } "_proto__": 0 +>0 : number + }; var b4 = o4["_proto__"]; >b4 : number >o4["_proto__"] : number >o4 : { "_proto__": number; } +>"_proto__" : string var o5 = { >o5 : { _proto__: number; } @@ -76,10 +92,12 @@ var o5 = { _proto__: 0 >_proto__ : number +>0 : number }; var b5 = o5["_proto__"]; >b5 : number >o5["_proto__"] : number >o5 : { _proto__: number; } +>"_proto__" : string diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types b/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types index c707e694468..adaee96f0ce 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types @@ -37,6 +37,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number >x : string +>42 : number module M { >M : typeof M @@ -59,15 +60,18 @@ module M { var aNumber: number = 9.9; >aNumber : number +>9.9 : number var aString: string = 'this is a string'; >aString : string +>'this is a string' : string var aDate: Date = new Date(12); >aDate : Date >Date : Date >new Date(12) : Date >Date : DateConstructor +>12 : number var anObject: Object = new Object(); >anObject : Object @@ -77,6 +81,7 @@ var anObject: Object = new Object(); var anAny: any = null; >anAny : any +>null : null var aSecondAny: any = undefined; >aSecondAny : any @@ -109,6 +114,7 @@ var anObjectLiteral: I = { id: 12 }; >I : I >{ id: 12 } : { id: number; } >id : number +>12 : number var anOtherObjectLiteral: { id: number } = new C(); >anOtherObjectLiteral : { id: number; } @@ -131,6 +137,7 @@ var aLambda: typeof F = (x) => 2; >F : (x: string) => number >(x) => 2 : (x: string) => number >x : string +>2 : number var aModule: typeof M = M; >aModule : typeof M @@ -148,9 +155,11 @@ var aClassInModule: M.A = new M.A(); var aFunctionInModule: typeof M.F2 = (x) => 'this is a string'; >aFunctionInModule : (x: number) => string +>M.F2 : (x: number) => string >M : typeof M >F2 : (x: number) => string >(x) => 'this is a string' : (x: number) => string >x : number +>'this is a string' : string diff --git a/tests/baselines/reference/everyTypeWithInitializer.types b/tests/baselines/reference/everyTypeWithInitializer.types index 7a0318718e4..abc0e770e35 100644 --- a/tests/baselines/reference/everyTypeWithInitializer.types +++ b/tests/baselines/reference/everyTypeWithInitializer.types @@ -37,6 +37,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number >x : string +>42 : number module M { >M : typeof M @@ -59,14 +60,17 @@ module M { var aNumber = 9.9; >aNumber : number +>9.9 : number var aString = 'this is a string'; >aString : string +>'this is a string' : string var aDate = new Date(12); >aDate : Date >new Date(12) : Date >Date : DateConstructor +>12 : number var anObject = new Object(); >anObject : Object @@ -75,6 +79,7 @@ var anObject = new Object(); var anAny = null; >anAny : any +>null : null var anOtherAny = new C(); >anOtherAny : any @@ -101,6 +106,7 @@ var anObjectLiteral = { id: 12 }; >anObjectLiteral : { id: number; } >{ id: 12 } : { id: number; } >id : number +>12 : number var aFunction = F; >aFunction : (x: string) => number @@ -110,6 +116,7 @@ var aLambda = (x) => 2; >aLambda : (x: any) => number >(x) => 2 : (x: any) => number >x : any +>2 : number var aModule = M; >aModule : typeof M diff --git a/tests/baselines/reference/exportAssignValueAndType.types b/tests/baselines/reference/exportAssignValueAndType.types index fca84f399ec..65c3141fc53 100644 --- a/tests/baselines/reference/exportAssignValueAndType.types +++ b/tests/baselines/reference/exportAssignValueAndType.types @@ -21,6 +21,7 @@ interface server { var x = 5; >x : number +>5 : number var server = new Date(); >server : Date diff --git a/tests/baselines/reference/exportAssignmentClass.types b/tests/baselines/reference/exportAssignmentClass.types index c7c3f38d7ea..b724c837244 100644 --- a/tests/baselines/reference/exportAssignmentClass.types +++ b/tests/baselines/reference/exportAssignmentClass.types @@ -17,6 +17,7 @@ var x = d.p; class C { public p = 0; } >C : C >p : number +>0 : number export = C; >C : C diff --git a/tests/baselines/reference/exportAssignmentFunction.types b/tests/baselines/reference/exportAssignmentFunction.types index 023a8c234d2..bd10465d221 100644 --- a/tests/baselines/reference/exportAssignmentFunction.types +++ b/tests/baselines/reference/exportAssignmentFunction.types @@ -10,6 +10,7 @@ var n: number = fooFunc(); === tests/cases/compiler/exportAssignmentFunction_A.ts === function foo() { return 0; } >foo : () => number +>0 : number export = foo; >foo : () => number diff --git a/tests/baselines/reference/exportAssignmentMergedInterface.types b/tests/baselines/reference/exportAssignmentMergedInterface.types index d0fb5383b29..38bd665f0de 100644 --- a/tests/baselines/reference/exportAssignmentMergedInterface.types +++ b/tests/baselines/reference/exportAssignmentMergedInterface.types @@ -9,10 +9,12 @@ var x: foo; x("test"); >x("test") : void >x : foo +>"test" : string x(42); >x(42) : number >x : foo +>42 : number var y: string = x.b; >y : string @@ -31,7 +33,9 @@ var z = {x: 1, y: 2}; >z : { x: number; y: number; } >{x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number z = x.d; >z = x.d : { x: number; y: number; } diff --git a/tests/baselines/reference/exportAssignmentMergedModule.types b/tests/baselines/reference/exportAssignmentMergedModule.types index d72f173a439..39f0d8d859e 100644 --- a/tests/baselines/reference/exportAssignmentMergedModule.types +++ b/tests/baselines/reference/exportAssignmentMergedModule.types @@ -27,6 +27,7 @@ if(!!foo.b){ >foo.c : (a: number) => number >foo : typeof foo >c : (a: number) => number +>42 : number } === tests/cases/conformance/externalModules/foo_0.ts === module Foo { @@ -36,9 +37,11 @@ module Foo { >a : () => number return 5; +>5 : number } export var b = true; >b : boolean +>true : boolean } module Foo { >Foo : typeof Foo @@ -55,6 +58,7 @@ module Foo { export var answer = 42; >answer : number +>42 : number } } export = Foo; diff --git a/tests/baselines/reference/exportAssignmentTopLevelClodule.types b/tests/baselines/reference/exportAssignmentTopLevelClodule.types index 80a56cd7b5f..93ce39c3b60 100644 --- a/tests/baselines/reference/exportAssignmentTopLevelClodule.types +++ b/tests/baselines/reference/exportAssignmentTopLevelClodule.types @@ -7,6 +7,7 @@ if(foo.answer === 42){ >foo.answer : number >foo : typeof foo >answer : number +>42 : number var x = new foo(); >x : foo @@ -20,12 +21,14 @@ class Foo { test = "test"; >test : string +>"test" : string } module Foo { >Foo : typeof Foo export var answer = 42; >answer : number +>42 : number } export = Foo; >Foo : Foo diff --git a/tests/baselines/reference/exportAssignmentTopLevelEnumdule.types b/tests/baselines/reference/exportAssignmentTopLevelEnumdule.types index 4ee49f6d20f..d60fc878319 100644 --- a/tests/baselines/reference/exportAssignmentTopLevelEnumdule.types +++ b/tests/baselines/reference/exportAssignmentTopLevelEnumdule.types @@ -35,6 +35,7 @@ module foo { export var answer = 42; >answer : number +>42 : number } export = foo; >foo : foo diff --git a/tests/baselines/reference/exportAssignmentTopLevelFundule.types b/tests/baselines/reference/exportAssignmentTopLevelFundule.types index 982e87e59f3..3464f4294a0 100644 --- a/tests/baselines/reference/exportAssignmentTopLevelFundule.types +++ b/tests/baselines/reference/exportAssignmentTopLevelFundule.types @@ -7,6 +7,7 @@ if(foo.answer === 42){ >foo.answer : number >foo : typeof foo >answer : number +>42 : number var x = foo(); >x : string @@ -19,12 +20,14 @@ function foo() { >foo : typeof foo return "test"; +>"test" : string } module foo { >foo : typeof foo export var answer = 42; >answer : number +>42 : number } export = foo; >foo : typeof foo diff --git a/tests/baselines/reference/exportAssignmentTopLevelIdentifier.types b/tests/baselines/reference/exportAssignmentTopLevelIdentifier.types index 09d881715dd..34971ca9cd6 100644 --- a/tests/baselines/reference/exportAssignmentTopLevelIdentifier.types +++ b/tests/baselines/reference/exportAssignmentTopLevelIdentifier.types @@ -7,6 +7,7 @@ if(foo.answer === 42){ >foo.answer : number >foo : typeof foo >answer : number +>42 : number } @@ -16,6 +17,7 @@ module Foo { export var answer = 42; >answer : number +>42 : number } export = Foo; >Foo : typeof Foo diff --git a/tests/baselines/reference/exportAssignmentVariable.types b/tests/baselines/reference/exportAssignmentVariable.types index 36f02f60a95..71f0afdea68 100644 --- a/tests/baselines/reference/exportAssignmentVariable.types +++ b/tests/baselines/reference/exportAssignmentVariable.types @@ -9,6 +9,7 @@ var n: number = y; === tests/cases/compiler/exportAssignmentVariable_A.ts === var x = 0; >x : number +>0 : number export = x; >x : number diff --git a/tests/baselines/reference/exportCodeGen.types b/tests/baselines/reference/exportCodeGen.types index 89cb16fdf4c..e08678a76da 100644 --- a/tests/baselines/reference/exportCodeGen.types +++ b/tests/baselines/reference/exportCodeGen.types @@ -7,6 +7,7 @@ module A { export var x = 12; >x : number +>12 : number function lt12() { >lt12 : () => boolean @@ -14,6 +15,7 @@ module A { return x < 12; >x < 12 : boolean >x : number +>12 : number } } @@ -23,6 +25,7 @@ module B { var x = 12; >x : number +>12 : number function lt12() { >lt12 : () => boolean @@ -30,6 +33,7 @@ module B { return x < 12; >x < 12 : boolean >x : number +>12 : number } } @@ -41,6 +45,7 @@ module C { >no : () => boolean return false; +>false : boolean } } @@ -52,6 +57,7 @@ module D { >yes : () => boolean return true; +>true : boolean } } @@ -79,6 +85,7 @@ module E { export var x = 42; >x : number +>42 : number } } @@ -107,5 +114,6 @@ module F { var x = 42; >x : number +>42 : number } } diff --git a/tests/baselines/reference/exportEqualNamespaces.types b/tests/baselines/reference/exportEqualNamespaces.types index 0f3091c1b8a..1e8024e0016 100644 --- a/tests/baselines/reference/exportEqualNamespaces.types +++ b/tests/baselines/reference/exportEqualNamespaces.types @@ -21,6 +21,7 @@ interface server { var x = 5; >x : number +>5 : number var server = new Date(); >server : Date diff --git a/tests/baselines/reference/exportImport.types b/tests/baselines/reference/exportImport.types index 9899103d779..8314a4a2a2b 100644 --- a/tests/baselines/reference/exportImport.types +++ b/tests/baselines/reference/exportImport.types @@ -21,6 +21,7 @@ export = Widget1 class Widget1 { name = 'one'; } >Widget1 : Widget1 >name : string +>'one' : string === tests/cases/compiler/exporter.ts === export import w = require('./w1'); diff --git a/tests/baselines/reference/exportImportAlias.types b/tests/baselines/reference/exportImportAlias.types index 0834d664861..8d68416bff2 100644 --- a/tests/baselines/reference/exportImportAlias.types +++ b/tests/baselines/reference/exportImportAlias.types @@ -6,6 +6,7 @@ module A { export var x = 'hello world' >x : string +>'hello world' : string export class Point { >Point : Point @@ -52,6 +53,8 @@ var b: { x: number; y: number; } = new C.a.Point(0, 0); >C : typeof C >a : typeof A >Point : typeof A.Point +>0 : number +>0 : number var c: { name: string }; >c : { name: string; } @@ -71,6 +74,7 @@ module X { >Y : typeof Y return 42; +>42 : number } export module Y { @@ -113,6 +117,8 @@ var n: { x: number; y: number; } = new Z.y.Point(0, 0); >Z : typeof Z >y : typeof X.Y >Point : typeof X.Y.Point +>0 : number +>0 : number module K { >K : typeof K @@ -129,6 +135,7 @@ module K { export var y = 12; >y : number +>12 : number export interface Point { >Point : Point @@ -161,6 +168,7 @@ var o = new M.D('Hello'); >M.D : typeof K.L >M : typeof M >D : typeof K.L +>'Hello' : string var p: { x: number; y: number; } >p : { x: number; y: number; } diff --git a/tests/baselines/reference/exportImportAndClodule.types b/tests/baselines/reference/exportImportAndClodule.types index 7d233e72e77..98ce706d966 100644 --- a/tests/baselines/reference/exportImportAndClodule.types +++ b/tests/baselines/reference/exportImportAndClodule.types @@ -13,6 +13,7 @@ module K { export var y = 12; >y : number +>12 : number export interface Point { >Point : Point @@ -43,6 +44,7 @@ var o = new M.D('Hello'); >M.D : typeof K.L >M : typeof M >D : typeof K.L +>'Hello' : string var p: { x: number; y: number; } >p : { x: number; y: number; } diff --git a/tests/baselines/reference/exportImportMultipleFiles.types b/tests/baselines/reference/exportImportMultipleFiles.types index adafcef2dba..6ac5e7641ea 100644 --- a/tests/baselines/reference/exportImportMultipleFiles.types +++ b/tests/baselines/reference/exportImportMultipleFiles.types @@ -9,6 +9,8 @@ lib.math.add(3, 4); // Shouldnt be error >lib : typeof lib >math : typeof lib.math >add : (a: any, b: any) => any +>3 : number +>4 : number === tests/cases/compiler/exportImportMultipleFiles_math.ts === export function add(a, b) { return a + b; } @@ -28,4 +30,6 @@ math.add(3, 4); // OK >math.add : (a: any, b: any) => any >math : typeof math >add : (a: any, b: any) => any +>3 : number +>4 : number diff --git a/tests/baselines/reference/exportImportNonInstantiatedModule.types b/tests/baselines/reference/exportImportNonInstantiatedModule.types index d1210cba6fe..ef8a6864f9a 100644 --- a/tests/baselines/reference/exportImportNonInstantiatedModule.types +++ b/tests/baselines/reference/exportImportNonInstantiatedModule.types @@ -23,4 +23,5 @@ var x: B.A1.I = { x: 1 }; >I : A.I >{ x: 1 } : { x: number; } >x : number +>1 : number diff --git a/tests/baselines/reference/exportImportNonInstantiatedModule2.types b/tests/baselines/reference/exportImportNonInstantiatedModule2.types index c11eac715a9..98aa9a8e67f 100644 --- a/tests/baselines/reference/exportImportNonInstantiatedModule2.types +++ b/tests/baselines/reference/exportImportNonInstantiatedModule2.types @@ -10,6 +10,7 @@ export function w(): e.w { // Should be OK return {name: 'value' }; >{name: 'value' } : { name: string; } >name : string +>'value' : string } === tests/cases/compiler/w1.ts === diff --git a/tests/baselines/reference/exportPrivateType.types b/tests/baselines/reference/exportPrivateType.types index 87751b273a7..a91577c2b9c 100644 --- a/tests/baselines/reference/exportPrivateType.types +++ b/tests/baselines/reference/exportPrivateType.types @@ -18,6 +18,7 @@ module foo { test() { return true; } >test : () => boolean +>true : boolean } interface I1 { diff --git a/tests/baselines/reference/exportVisibility.types b/tests/baselines/reference/exportVisibility.types index 59936828275..cf1e092473e 100644 --- a/tests/baselines/reference/exportVisibility.types +++ b/tests/baselines/reference/exportVisibility.types @@ -14,5 +14,6 @@ export function test(foo: Foo) { >Foo : Foo return true; +>true : boolean } diff --git a/tests/baselines/reference/exportedVariable1.types b/tests/baselines/reference/exportedVariable1.types index a02cbc5b36a..fa7017fefa8 100644 --- a/tests/baselines/reference/exportedVariable1.types +++ b/tests/baselines/reference/exportedVariable1.types @@ -3,6 +3,7 @@ export var foo = {name: "Bill"}; >foo : { name: string; } >{name: "Bill"} : { name: string; } >name : string +>"Bill" : string var upper = foo.name.toUpperCase(); >upper : string diff --git a/tests/baselines/reference/exportsAndImports1-amd.types b/tests/baselines/reference/exportsAndImports1-amd.types index 0b35b04e22e..492a5762efc 100644 --- a/tests/baselines/reference/exportsAndImports1-amd.types +++ b/tests/baselines/reference/exportsAndImports1-amd.types @@ -2,6 +2,7 @@ var v = 1; >v : number +>1 : number function f() { } >f : () => void diff --git a/tests/baselines/reference/exportsAndImports1.types b/tests/baselines/reference/exportsAndImports1.types index 0b35b04e22e..492a5762efc 100644 --- a/tests/baselines/reference/exportsAndImports1.types +++ b/tests/baselines/reference/exportsAndImports1.types @@ -2,6 +2,7 @@ var v = 1; >v : number +>1 : number function f() { } >f : () => void diff --git a/tests/baselines/reference/exportsAndImports2-amd.types b/tests/baselines/reference/exportsAndImports2-amd.types index ebfc097da5a..32de763c567 100644 --- a/tests/baselines/reference/exportsAndImports2-amd.types +++ b/tests/baselines/reference/exportsAndImports2-amd.types @@ -2,9 +2,11 @@ export var x = "x"; >x : string +>"x" : string export var y = "y"; >y : string +>"y" : string === tests/cases/conformance/es6/modules/t2.ts === export { x as y, y as x } from "./t1"; diff --git a/tests/baselines/reference/exportsAndImports2.types b/tests/baselines/reference/exportsAndImports2.types index ebfc097da5a..32de763c567 100644 --- a/tests/baselines/reference/exportsAndImports2.types +++ b/tests/baselines/reference/exportsAndImports2.types @@ -2,9 +2,11 @@ export var x = "x"; >x : string +>"x" : string export var y = "y"; >y : string +>"y" : string === tests/cases/conformance/es6/modules/t2.ts === export { x as y, y as x } from "./t1"; diff --git a/tests/baselines/reference/exportsAndImports3-amd.types b/tests/baselines/reference/exportsAndImports3-amd.types index 86e21cfd084..6821a1868a7 100644 --- a/tests/baselines/reference/exportsAndImports3-amd.types +++ b/tests/baselines/reference/exportsAndImports3-amd.types @@ -2,6 +2,7 @@ export var v = 1; >v : number +>1 : number export function f() { } >f : () => void diff --git a/tests/baselines/reference/exportsAndImports3.types b/tests/baselines/reference/exportsAndImports3.types index 86e21cfd084..6821a1868a7 100644 --- a/tests/baselines/reference/exportsAndImports3.types +++ b/tests/baselines/reference/exportsAndImports3.types @@ -2,6 +2,7 @@ export var v = 1; >v : number +>1 : number export function f() { } >f : () => void diff --git a/tests/baselines/reference/extBaseClass1.types b/tests/baselines/reference/extBaseClass1.types index d160db9a06e..387dc820563 100644 --- a/tests/baselines/reference/extBaseClass1.types +++ b/tests/baselines/reference/extBaseClass1.types @@ -7,6 +7,7 @@ module M { public x=10; >x : number +>10 : number } export class C extends B { @@ -29,6 +30,7 @@ module N { export class C3 extends M.B { >C3 : C3 +>M.B : unknown >M : typeof M >B : M.B } diff --git a/tests/baselines/reference/extendBooleanInterface.types b/tests/baselines/reference/extendBooleanInterface.types index 2d94680599a..8f91deba713 100644 --- a/tests/baselines/reference/extendBooleanInterface.types +++ b/tests/baselines/reference/extendBooleanInterface.types @@ -15,6 +15,7 @@ interface Boolean { var x = true; >x : boolean +>true : boolean var a: string = x.doStuff(); >a : string @@ -29,16 +30,20 @@ var b: string = x.doOtherStuff('hm'); >x.doOtherStuff : (x: T) => T >x : boolean >doOtherStuff : (x: T) => T +>'hm' : string var c: string = x['doStuff'](); >c : string >x['doStuff']() : string >x['doStuff'] : () => string >x : boolean +>'doStuff' : string var d: string = x['doOtherStuff']('hm'); >d : string >x['doOtherStuff']('hm') : string >x['doOtherStuff'] : (x: T) => T >x : boolean +>'doOtherStuff' : string +>'hm' : string diff --git a/tests/baselines/reference/extendNumberInterface.types b/tests/baselines/reference/extendNumberInterface.types index f109e05be89..97ef307bab8 100644 --- a/tests/baselines/reference/extendNumberInterface.types +++ b/tests/baselines/reference/extendNumberInterface.types @@ -15,6 +15,7 @@ interface Number { var x = 1; >x : number +>1 : number var a: string = x.doStuff(); >a : string @@ -29,16 +30,20 @@ var b: string = x.doOtherStuff('hm'); >x.doOtherStuff : (x: T) => T >x : number >doOtherStuff : (x: T) => T +>'hm' : string var c: string = x['doStuff'](); >c : string >x['doStuff']() : string >x['doStuff'] : () => string >x : number +>'doStuff' : string var d: string = x['doOtherStuff']('hm'); >d : string >x['doOtherStuff']('hm') : string >x['doOtherStuff'] : (x: T) => T >x : number +>'doOtherStuff' : string +>'hm' : string diff --git a/tests/baselines/reference/extendStringInterface.types b/tests/baselines/reference/extendStringInterface.types index 3cf9f72f5f2..edfd8239015 100644 --- a/tests/baselines/reference/extendStringInterface.types +++ b/tests/baselines/reference/extendStringInterface.types @@ -15,6 +15,7 @@ interface String { var x = ''; >x : string +>'' : string var a: string = x.doStuff(); >a : string @@ -29,16 +30,20 @@ var b: string = x.doOtherStuff('hm'); >x.doOtherStuff : (x: T) => T >x : string >doOtherStuff : (x: T) => T +>'hm' : string var c: string = x['doStuff'](); >c : string >x['doStuff']() : string >x['doStuff'] : () => string >x : string +>'doStuff' : string var d: string = x['doOtherStuff']('hm'); >d : string >x['doOtherStuff']('hm') : string >x['doOtherStuff'] : (x: T) => T >x : string +>'doOtherStuff' : string +>'hm' : string diff --git a/tests/baselines/reference/extendedInterfaceGenericType.types b/tests/baselines/reference/extendedInterfaceGenericType.types index 17fd949215a..a536ec75190 100644 --- a/tests/baselines/reference/extendedInterfaceGenericType.types +++ b/tests/baselines/reference/extendedInterfaceGenericType.types @@ -37,4 +37,5 @@ betaOfNumber.takesArgOfT(5); >betaOfNumber.takesArgOfT : (arg: number) => Alpha >betaOfNumber : Beta >takesArgOfT : (arg: number) => Alpha +>5 : number diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index 769f6f5a602..a6cb2576b8b 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -13,6 +13,7 @@ interface IHasVisualizationModel { VisualizationModel: typeof Backbone.Model; >VisualizationModel : typeof Backbone.Model +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model } @@ -60,6 +61,7 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model @@ -72,6 +74,7 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel +>Backbone.Model : unknown >Backbone : typeof Backbone >Model : Backbone.Model diff --git a/tests/baselines/reference/externFunc.types b/tests/baselines/reference/externFunc.types index 5aac52ac125..ab417859ea5 100644 --- a/tests/baselines/reference/externFunc.types +++ b/tests/baselines/reference/externFunc.types @@ -6,4 +6,5 @@ declare function parseInt(s:string):number; parseInt("2"); >parseInt("2") : number >parseInt : { (s: string, radix?: number): number; (s: string): number; } +>"2" : string diff --git a/tests/baselines/reference/externalModuleQualification.types b/tests/baselines/reference/externalModuleQualification.types index ba8fc516fb8..a7b70697209 100644 --- a/tests/baselines/reference/externalModuleQualification.types +++ b/tests/baselines/reference/externalModuleQualification.types @@ -1,6 +1,7 @@ === tests/cases/compiler/externalModuleQualification.ts === export var ID = "test"; >ID : string +>"test" : string export class DiffEditor { >DiffEditor : DiffEditor diff --git a/tests/baselines/reference/externalModuleReferenceDoubleUnderscore1.types b/tests/baselines/reference/externalModuleReferenceDoubleUnderscore1.types index e255e64d467..8d2c9b65991 100644 --- a/tests/baselines/reference/externalModuleReferenceDoubleUnderscore1.types +++ b/tests/baselines/reference/externalModuleReferenceDoubleUnderscore1.types @@ -15,23 +15,30 @@ declare module '__timezonecomplete/basics' { Second = 0, >Second : TimeUnit +>0 : number Minute = 1, >Minute : TimeUnit +>1 : number Hour = 2, >Hour : TimeUnit +>2 : number Day = 3, >Day : TimeUnit +>3 : number Week = 4, >Week : TimeUnit +>4 : number Month = 5, >Month : TimeUnit +>5 : number Year = 6, >Year : TimeUnit +>6 : number } } diff --git a/tests/baselines/reference/externalModuleResolution.types b/tests/baselines/reference/externalModuleResolution.types index 929695b2203..45e2aef6883 100644 --- a/tests/baselines/reference/externalModuleResolution.types +++ b/tests/baselines/reference/externalModuleResolution.types @@ -13,6 +13,7 @@ module M2 { export var Y = 1; >Y : number +>1 : number } export = M2 >M2 : typeof M2 diff --git a/tests/baselines/reference/externalModuleResolution2.types b/tests/baselines/reference/externalModuleResolution2.types index 09b33fb2bee..9f48b8b38f1 100644 --- a/tests/baselines/reference/externalModuleResolution2.types +++ b/tests/baselines/reference/externalModuleResolution2.types @@ -13,6 +13,7 @@ module M2 { export var X = 1; >X : number +>1 : number } export = M2 >M2 : typeof M2 diff --git a/tests/baselines/reference/fatArrowSelf.types b/tests/baselines/reference/fatArrowSelf.types index 912e0cd78a7..2fc768f5e79 100644 --- a/tests/baselines/reference/fatArrowSelf.types +++ b/tests/baselines/reference/fatArrowSelf.types @@ -41,6 +41,7 @@ module Consumer { >this : EventEmitterConsummer >emitter : Events.EventEmitter >addListener : (type: string, listener: Events.ListenerCallback) => void +>'change' : string >(e) => { this.changed(); } : (e: any) => void >e : any diff --git a/tests/baselines/reference/fatArrowfunctionAsType.types b/tests/baselines/reference/fatArrowfunctionAsType.types index 31f8c128611..a165048695f 100644 --- a/tests/baselines/reference/fatArrowfunctionAsType.types +++ b/tests/baselines/reference/fatArrowfunctionAsType.types @@ -14,6 +14,7 @@ var c: (x: T) => void = function (x: T) { return 42; } >T : T >x : T >T : T +>42 : number b = c; >b = c : (x: T) => void diff --git a/tests/baselines/reference/fatarrowfunctions.types b/tests/baselines/reference/fatarrowfunctions.types index 1b819b8496a..e48b63e50ee 100644 --- a/tests/baselines/reference/fatarrowfunctions.types +++ b/tests/baselines/reference/fatarrowfunctions.types @@ -79,6 +79,7 @@ foo(()=>{return 0;}); >foo(()=>{return 0;}) : any >foo : (x: any) => any >()=>{return 0;} : () => number +>0 : number foo((x:number,y,z)=>x+y+z); >foo((x:number,y,z)=>x+y+z) : any @@ -149,6 +150,7 @@ foo(()=>{return 0;}); >foo(()=>{return 0;}) : any >foo : (x: any) => any >()=>{return 0;} : () => number +>0 : number foo(((x) => x)); @@ -187,6 +189,7 @@ var z = (x:number) => x*x; var w = () => 3; >w : () => number >() => 3 : () => number +>3 : number function ternaryTest(isWhile:boolean) { >ternaryTest : (isWhile: boolean) => void @@ -200,10 +203,12 @@ function ternaryTest(isWhile:boolean) { >n : any >n > 0 : boolean >n : any +>0 : number >function (n) { return n === 0; } : (n: any) => boolean >n : any >n === 0 : boolean >n : any +>0 : number } @@ -219,6 +224,7 @@ var messenger = { message: "Hello World", >message : string +>"Hello World" : string start: function() { >start : () => void @@ -234,6 +240,7 @@ var messenger = { >this : any >message : any >toString : any +>3000 : number } }; diff --git a/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types b/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types index cf561eb08af..55d72e854d3 100644 --- a/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types +++ b/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types @@ -19,4 +19,5 @@ fn.call(4); // Should be 4 >fn.call : (thisArg: any, ...argArray: any[]) => any >fn : (x?: () => any, y?: any) => any >call : (thisArg: any, ...argArray: any[]) => any +>4 : number diff --git a/tests/baselines/reference/fatarrowfunctionsInFunctions.types b/tests/baselines/reference/fatarrowfunctionsInFunctions.types index a8633eb1a8c..00abaec9f25 100644 --- a/tests/baselines/reference/fatarrowfunctionsInFunctions.types +++ b/tests/baselines/reference/fatarrowfunctionsInFunctions.types @@ -11,6 +11,7 @@ var messenger = { message: "Hello World", >message : string +>"Hello World" : string start: function() { >start : () => void @@ -34,6 +35,7 @@ var messenger = { >toString : any }, 3000); +>3000 : number } }; messenger.start(); diff --git a/tests/baselines/reference/fileReferencesWithNoExtensions.types b/tests/baselines/reference/fileReferencesWithNoExtensions.types index ec58e338345..7b56dbe0d20 100644 --- a/tests/baselines/reference/fileReferencesWithNoExtensions.types +++ b/tests/baselines/reference/fileReferencesWithNoExtensions.types @@ -17,6 +17,7 @@ var c = cc; // Check that c.ts has precedence over c.d.ts === tests/cases/compiler/a.ts === var aa = 1; >aa : number +>1 : number === tests/cases/compiler/b.d.ts === declare var bb: number; @@ -25,6 +26,7 @@ declare var bb: number; === tests/cases/compiler/c.ts === var cc = 1; >cc : number +>1 : number === tests/cases/compiler/c.d.ts === declare var xx: number; diff --git a/tests/baselines/reference/fileWithNextLine1.types b/tests/baselines/reference/fileWithNextLine1.types index 721b3d6fb10..2afb1f2ae37 100644 --- a/tests/baselines/reference/fileWithNextLine1.types +++ b/tests/baselines/reference/fileWithNextLine1.types @@ -3,4 +3,5 @@ // 0. It should be counted as a space and should not cause an error. var v = '…'; >v : string +>'…' : string diff --git a/tests/baselines/reference/fileWithNextLine2.types b/tests/baselines/reference/fileWithNextLine2.types index 8a6de1a4b2f..c3e1fd642cf 100644 --- a/tests/baselines/reference/fileWithNextLine2.types +++ b/tests/baselines/reference/fileWithNextLine2.types @@ -3,4 +3,5 @@ // it should be treated like a space var v =…0; >v : number +>0 : number diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types index 4bb29c1e0ab..e176b1bbf0c 100644 --- a/tests/baselines/reference/for-of13.types +++ b/tests/baselines/reference/for-of13.types @@ -7,5 +7,6 @@ for (v of [""].values()) { } >[""].values() : IterableIterator >[""].values : () => IterableIterator >[""] : string[] +>"" : string >values : () => IterableIterator diff --git a/tests/baselines/reference/for-of18.types b/tests/baselines/reference/for-of18.types index 9ade9359475..5b2be7edc3e 100644 --- a/tests/baselines/reference/for-of18.types +++ b/tests/baselines/reference/for-of18.types @@ -18,9 +18,11 @@ class StringIterator { value: "", >value : string +>"" : string done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/for-of19.types b/tests/baselines/reference/for-of19.types index 49172b09d83..02ef786ddd9 100644 --- a/tests/baselines/reference/for-of19.types +++ b/tests/baselines/reference/for-of19.types @@ -27,6 +27,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/for-of20.types b/tests/baselines/reference/for-of20.types index e967869fbd0..3da6fd484b1 100644 --- a/tests/baselines/reference/for-of20.types +++ b/tests/baselines/reference/for-of20.types @@ -27,6 +27,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/for-of21.types b/tests/baselines/reference/for-of21.types index 362f92577e2..a0cc50e99d7 100644 --- a/tests/baselines/reference/for-of21.types +++ b/tests/baselines/reference/for-of21.types @@ -27,6 +27,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/for-of22.types b/tests/baselines/reference/for-of22.types index bb2d5569bfc..09e85798554 100644 --- a/tests/baselines/reference/for-of22.types +++ b/tests/baselines/reference/for-of22.types @@ -28,6 +28,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/for-of23.types b/tests/baselines/reference/for-of23.types index b490616edc8..37515c0b70a 100644 --- a/tests/baselines/reference/for-of23.types +++ b/tests/baselines/reference/for-of23.types @@ -6,6 +6,7 @@ for (const v of new FooIterator) { const v = 0; // new scope >v : number +>0 : number } class Foo { } @@ -27,6 +28,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/for-of36.types b/tests/baselines/reference/for-of36.types index da03367ba5d..e23ea79d0a9 100644 --- a/tests/baselines/reference/for-of36.types +++ b/tests/baselines/reference/for-of36.types @@ -2,6 +2,8 @@ var tuple: [string, boolean] = ["", true]; >tuple : [string, boolean] >["", true] : [string, boolean] +>"" : string +>true : boolean for (var v of tuple) { >v : string | boolean diff --git a/tests/baselines/reference/for-of37.types b/tests/baselines/reference/for-of37.types index f137db79af0..89272742f62 100644 --- a/tests/baselines/reference/for-of37.types +++ b/tests/baselines/reference/for-of37.types @@ -5,6 +5,8 @@ var map = new Map([["", true]]); >Map : MapConstructor >[["", true]] : [string, boolean][] >["", true] : [string, boolean] +>"" : string +>true : boolean for (var v of map) { >v : [string, boolean] diff --git a/tests/baselines/reference/for-of38.types b/tests/baselines/reference/for-of38.types index cdd1e05dd7e..f8b7555781f 100644 --- a/tests/baselines/reference/for-of38.types +++ b/tests/baselines/reference/for-of38.types @@ -5,6 +5,8 @@ var map = new Map([["", true]]); >Map : MapConstructor >[["", true]] : [string, boolean][] >["", true] : [string, boolean] +>"" : string +>true : boolean for (var [k, v] of map) { >k : string diff --git a/tests/baselines/reference/for-of4.types b/tests/baselines/reference/for-of4.types index 2076fae84fc..5b8990797ba 100644 --- a/tests/baselines/reference/for-of4.types +++ b/tests/baselines/reference/for-of4.types @@ -2,6 +2,7 @@ for (var v of [0]) { >v : number >[0] : number[] +>0 : number v; >v : number diff --git a/tests/baselines/reference/for-of40.types b/tests/baselines/reference/for-of40.types index c0fe7cbbc02..6693514ec53 100644 --- a/tests/baselines/reference/for-of40.types +++ b/tests/baselines/reference/for-of40.types @@ -5,10 +5,14 @@ var map = new Map([["", true]]); >Map : MapConstructor >[["", true]] : [string, boolean][] >["", true] : [string, boolean] +>"" : string +>true : boolean for (var [k = "", v = false] of map) { >k : string +>"" : string >v : boolean +>false : boolean >map : Map k; diff --git a/tests/baselines/reference/for-of41.types b/tests/baselines/reference/for-of41.types index 54e58aa1ec7..9f199b5e7c5 100644 --- a/tests/baselines/reference/for-of41.types +++ b/tests/baselines/reference/for-of41.types @@ -5,9 +5,11 @@ var array = [{x: [0], y: {p: ""}}] >{x: [0], y: {p: ""}} : { x: number[]; y: { p: string; }; } >x : number[] >[0] : number[] +>0 : number >y : { p: string; } >{p: ""} : { p: string; } >p : string +>"" : string for (var {x: [a], y: {p}} of array) { >x : unknown diff --git a/tests/baselines/reference/for-of42.types b/tests/baselines/reference/for-of42.types index 1a819452770..cd6a61fc484 100644 --- a/tests/baselines/reference/for-of42.types +++ b/tests/baselines/reference/for-of42.types @@ -4,7 +4,9 @@ var array = [{ x: "", y: 0 }] >[{ x: "", y: 0 }] : { x: string; y: number; }[] >{ x: "", y: 0 } : { x: string; y: number; } >x : string +>"" : string >y : number +>0 : number for (var {x: a, y: b} of array) { >x : unknown diff --git a/tests/baselines/reference/for-of44.types b/tests/baselines/reference/for-of44.types index 078b49bd309..e6f4e0450b3 100644 --- a/tests/baselines/reference/for-of44.types +++ b/tests/baselines/reference/for-of44.types @@ -3,8 +3,13 @@ var array: [number, string | boolean | symbol][] = [[0, ""], [0, true], [1, Symb >array : [number, string | boolean | symbol][] >[[0, ""], [0, true], [1, Symbol()]] : ([number, string] | [number, boolean] | [number, symbol])[] >[0, ""] : [number, string] +>0 : number +>"" : string >[0, true] : [number, boolean] +>0 : number +>true : boolean >[1, Symbol()] : [number, symbol] +>1 : number >Symbol() : symbol >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/for-of45.types b/tests/baselines/reference/for-of45.types index 8ac4b9fa7e9..b71e062eccf 100644 --- a/tests/baselines/reference/for-of45.types +++ b/tests/baselines/reference/for-of45.types @@ -9,13 +9,17 @@ var map = new Map([["", true]]); >Map : MapConstructor >[["", true]] : [string, boolean][] >["", true] : [string, boolean] +>"" : string +>true : boolean for ([k = "", v = false] of map) { >[k = "", v = false] : (string | boolean)[] >k = "" : string >k : string +>"" : string >v = false : boolean >v : boolean +>false : boolean >map : Map k; diff --git a/tests/baselines/reference/for-of5.types b/tests/baselines/reference/for-of5.types index feac5ef9e52..921c327c185 100644 --- a/tests/baselines/reference/for-of5.types +++ b/tests/baselines/reference/for-of5.types @@ -2,6 +2,7 @@ for (let v of [0]) { >v : number >[0] : number[] +>0 : number v; >v : number diff --git a/tests/baselines/reference/for-of50.types b/tests/baselines/reference/for-of50.types index a38f3855174..5d5dac7abed 100644 --- a/tests/baselines/reference/for-of50.types +++ b/tests/baselines/reference/for-of50.types @@ -5,6 +5,8 @@ var map = new Map([["", true]]); >Map : MapConstructor >[["", true]] : [string, boolean][] >["", true] : [string, boolean] +>"" : string +>true : boolean for (const [k, v] of map) { >k : string diff --git a/tests/baselines/reference/for-of8.types b/tests/baselines/reference/for-of8.types index 5f239d141fe..36bb20ef6b0 100644 --- a/tests/baselines/reference/for-of8.types +++ b/tests/baselines/reference/for-of8.types @@ -5,4 +5,5 @@ v; for (var v of [0]) { } >v : number >[0] : number[] +>0 : number diff --git a/tests/baselines/reference/for-of9.types b/tests/baselines/reference/for-of9.types index 55c8167094f..bf06bf46034 100644 --- a/tests/baselines/reference/for-of9.types +++ b/tests/baselines/reference/for-of9.types @@ -5,7 +5,9 @@ var v: string; for (v of ["hello"]) { } >v : string >["hello"] : string[] +>"hello" : string for (v of "hello") { } >v : string +>"hello" : string diff --git a/tests/baselines/reference/forBreakStatements.types b/tests/baselines/reference/forBreakStatements.types index dafaae9cce7..427329f1de5 100644 --- a/tests/baselines/reference/forBreakStatements.types +++ b/tests/baselines/reference/forBreakStatements.types @@ -4,38 +4,60 @@ for (; ;) { } ONE: +>ONE : unknown + for (; ;) { break ONE; +>ONE : unknown } TWO: +>TWO : unknown + THREE: +>THREE : unknown + for (; ;) { break THREE; +>THREE : unknown } FOUR: +>FOUR : unknown + for (; ;) { FIVE: +>FIVE : unknown + for (; ;) { break FOUR; +>FOUR : unknown } } for (; ;) { SIX: +>SIX : unknown + for (; ;) break SIX; +>SIX : unknown } SEVEN: +>SEVEN : unknown + for (; ;) for (; ;) for (; ;) break SEVEN; +>SEVEN : unknown EIGHT: +>EIGHT : unknown + for (; ;) { var fn = function () { } >fn : () => void >function () { } : () => void break EIGHT; +>EIGHT : unknown } diff --git a/tests/baselines/reference/forContinueStatements.types b/tests/baselines/reference/forContinueStatements.types index 60fd7115362..87a41922e69 100644 --- a/tests/baselines/reference/forContinueStatements.types +++ b/tests/baselines/reference/forContinueStatements.types @@ -4,38 +4,60 @@ for (; ;) { } ONE: +>ONE : unknown + for (; ;) { continue ONE; +>ONE : unknown } TWO: +>TWO : unknown + THREE: +>THREE : unknown + for (; ;) { continue THREE; +>THREE : unknown } FOUR: +>FOUR : unknown + for (; ;) { FIVE: +>FIVE : unknown + for (; ;) { continue FOUR; +>FOUR : unknown } } for (; ;) { SIX: +>SIX : unknown + for (; ;) continue SIX; +>SIX : unknown } SEVEN: +>SEVEN : unknown + for (; ;) for (; ;) for (; ;) continue SEVEN; +>SEVEN : unknown EIGHT: +>EIGHT : unknown + for (; ;) { var fn = function () { } >fn : () => void >function () { } : () => void continue EIGHT; +>EIGHT : unknown } diff --git a/tests/baselines/reference/forInBreakStatements.types b/tests/baselines/reference/forInBreakStatements.types index 8d0cf0ace3c..8699190abec 100644 --- a/tests/baselines/reference/forInBreakStatements.types +++ b/tests/baselines/reference/forInBreakStatements.types @@ -7,33 +7,46 @@ for(var x in {}) { } ONE: +>ONE : unknown + for(var x in {}) { >x : any >{} : {} break ONE; +>ONE : unknown } TWO: +>TWO : unknown + THREE: +>THREE : unknown + for(var x in {}) { >x : any >{} : {} break THREE; +>THREE : unknown } FOUR: +>FOUR : unknown + for(var x in {}) { >x : any >{} : {} FIVE: +>FIVE : unknown + for(var x in {}) { >x : any >{} : {} break FOUR; +>FOUR : unknown } } @@ -42,12 +55,17 @@ for(var x in {}) { >{} : {} SIX: +>SIX : unknown + for(var x in {}) break SIX; >x : any >{} : {} +>SIX : unknown } SEVEN: +>SEVEN : unknown + for (var x in {}) for (var x in {}) for (var x in {}) break SEVEN; >x : any >{} : {} @@ -55,8 +73,11 @@ for (var x in {}) for (var x in {}) for (var x in {}) break SEVEN; >{} : {} >x : any >{} : {} +>SEVEN : unknown EIGHT: +>EIGHT : unknown + for (var x in {}){ >x : any >{} : {} @@ -66,5 +87,6 @@ for (var x in {}){ >function () { } : () => void break EIGHT; +>EIGHT : unknown } diff --git a/tests/baselines/reference/forInContinueStatements.types b/tests/baselines/reference/forInContinueStatements.types index 3751c11aaa9..190a2e8e2c3 100644 --- a/tests/baselines/reference/forInContinueStatements.types +++ b/tests/baselines/reference/forInContinueStatements.types @@ -7,33 +7,46 @@ for(var x in {}) { } ONE: +>ONE : unknown + for(var x in {}) { >x : any >{} : {} continue ONE; +>ONE : unknown } TWO: +>TWO : unknown + THREE: +>THREE : unknown + for(var x in {}) { >x : any >{} : {} continue THREE; +>THREE : unknown } FOUR: +>FOUR : unknown + for(var x in {}) { >x : any >{} : {} FIVE: +>FIVE : unknown + for(var x in {}) { >x : any >{} : {} continue FOUR; +>FOUR : unknown } } @@ -42,12 +55,17 @@ for(var x in {}) { >{} : {} SIX: +>SIX : unknown + for(var x in {}) continue SIX; >x : any >{} : {} +>SIX : unknown } SEVEN: +>SEVEN : unknown + for (var x in {}) for (var x in {}) for (var x in {}) continue SEVEN; >x : any >{} : {} @@ -55,8 +73,11 @@ for (var x in {}) for (var x in {}) for (var x in {}) continue SEVEN; >{} : {} >x : any >{} : {} +>SEVEN : unknown EIGHT: +>EIGHT : unknown + for (var x in {}){ >x : any >{} : {} @@ -66,5 +87,6 @@ for (var x in {}){ >function () { } : () => void continue EIGHT; +>EIGHT : unknown } diff --git a/tests/baselines/reference/forInModule.types b/tests/baselines/reference/forInModule.types index 7de39df3b33..d78a511206b 100644 --- a/tests/baselines/reference/forInModule.types +++ b/tests/baselines/reference/forInModule.types @@ -4,8 +4,10 @@ module Foo { for (var i = 0; i < 1; i++) { >i : number +>0 : number >i < 1 : boolean >i : number +>1 : number >i++ : number >i : number diff --git a/tests/baselines/reference/forStatements.types b/tests/baselines/reference/forStatements.types index a5563a190ec..a288f8967e0 100644 --- a/tests/baselines/reference/forStatements.types +++ b/tests/baselines/reference/forStatements.types @@ -37,6 +37,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number >x : string +>42 : number module M { >M : typeof M @@ -59,15 +60,18 @@ module M { for(var aNumber: number = 9.9;;){} >aNumber : number +>9.9 : number for(var aString: string = 'this is a string';;){} >aString : string +>'this is a string' : string for(var aDate: Date = new Date(12);;){} >aDate : Date >Date : Date >new Date(12) : Date >Date : DateConstructor +>12 : number for(var anObject: Object = new Object();;){} >anObject : Object @@ -77,6 +81,7 @@ for(var anObject: Object = new Object();;){} for(var anAny: any = null;;){} >anAny : any +>null : null for(var aSecondAny: any = undefined;;){} >aSecondAny : any @@ -109,6 +114,7 @@ for(var anObjectLiteral: I = { id: 12 };;){} >I : I >{ id: 12 } : { id: number; } >id : number +>12 : number for(var anOtherObjectLiteral: { id: number } = new C();;){} >anOtherObjectLiteral : { id: number; } @@ -131,6 +137,7 @@ for(var aLambda: typeof F = (x) => 2;;){} >F : (x: string) => number >(x) => 2 : (x: string) => number >x : string +>2 : number for(var aModule: typeof M = M;;){} >aModule : typeof M @@ -148,8 +155,10 @@ for(var aClassInModule: M.A = new M.A();;){} for(var aFunctionInModule: typeof M.F2 = (x) => 'this is a string';;){} >aFunctionInModule : (x: number) => string +>M.F2 : (x: number) => string >M : typeof M >F2 : (x: number) => string >(x) => 'this is a string' : (x: number) => string >x : number +>'this is a string' : string diff --git a/tests/baselines/reference/forStatementsMultipleValidDecl.types b/tests/baselines/reference/forStatementsMultipleValidDecl.types index 988a1c8a6d3..9b9af5b850e 100644 --- a/tests/baselines/reference/forStatementsMultipleValidDecl.types +++ b/tests/baselines/reference/forStatementsMultipleValidDecl.types @@ -6,6 +6,7 @@ for (var x: number; ;) { } for (var x = 2; ;) { } >x : number +>2 : number for (var x = undefined; ;) { } >x : number @@ -18,6 +19,7 @@ function declSpace() { for (var x = 'this is a string'; ;) { } >x : string +>'this is a string' : string } interface Point { x: number; y: number; } >Point : Point @@ -32,13 +34,16 @@ for (var p = { x: 1, y: 2 }; ;) { } >p : Point >{ x: 1, y: 2 } : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number for (var p: Point = { x: 0, y: undefined }; ;) { } >p : Point >Point : Point >{ x: 0, y: undefined } : { x: number; y: undefined; } >x : number +>0 : number >y : undefined >undefined : undefined @@ -46,6 +51,7 @@ for (var p = { x: 1, y: undefined }; ;) { } >p : Point >{ x: 1, y: undefined } : { x: number; y: number; } >x : number +>1 : number >y : number >undefined : number >undefined : undefined @@ -56,7 +62,9 @@ for (var p: { x: number; y: number; } = { x: 1, y: 2 }; ;) { } >y : number >{ x: 1, y: 2 } : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number for (var p = <{ x: number; y: number; }>{ x: 0, y: undefined }; ;) { } >p : Point @@ -65,6 +73,7 @@ for (var p = <{ x: number; y: number; }>{ x: 0, y: undefined }; ;) { } >y : number >{ x: 0, y: undefined } : { x: number; y: undefined; } >x : number +>0 : number >y : undefined >undefined : undefined @@ -76,11 +85,13 @@ for (var fn = function (s: string) { return 42; }; ;) { } >fn : (s: string) => number >function (s: string) { return 42; } : (s: string) => number >s : string +>42 : number for (var fn = (s: string) => 3; ;) { } >fn : (s: string) => number >(s: string) => 3 : (s: string) => number >s : string +>3 : number for (var fn: (s: string) => number; ;) { } >fn : (s: string) => number @@ -94,6 +105,7 @@ for (var fn = <(s: string) => number> null; ;) { } >fn : (s: string) => number ><(s: string) => number> null : (s: string) => number >s : string +>null : null for (var fn: typeof fn; ;) { } >fn : (s: string) => number @@ -105,6 +117,8 @@ for (var a: string[]; ;) { } for (var a = ['a', 'b']; ;) { } >a : string[] >['a', 'b'] : string[] +>'a' : string +>'b' : string for (var a = []; ;) { } >a : string[] diff --git a/tests/baselines/reference/fromAsIdentifier2.types b/tests/baselines/reference/fromAsIdentifier2.types index 5faf9ec6f6c..ae605f79268 100644 --- a/tests/baselines/reference/fromAsIdentifier2.types +++ b/tests/baselines/reference/fromAsIdentifier2.types @@ -1,5 +1,7 @@ === tests/cases/compiler/fromAsIdentifier2.ts === "use strict"; +>"use strict" : string + var from; >from : any diff --git a/tests/baselines/reference/funcdecl.types b/tests/baselines/reference/funcdecl.types index bbfd14bd220..94c310d7b25 100644 --- a/tests/baselines/reference/funcdecl.types +++ b/tests/baselines/reference/funcdecl.types @@ -3,6 +3,7 @@ function simpleFunc() { >simpleFunc : () => string return "this is my simple func"; +>"this is my simple func" : string } var simpleFuncVar = simpleFunc; >simpleFuncVar : () => string @@ -19,6 +20,7 @@ function withReturn() : string{ >withReturn : () => string return "Hello"; +>"Hello" : string } var withReturnVar = withReturn; >withReturnVar : () => string @@ -62,7 +64,9 @@ function withInitializedParams(a: string, b0, b = 30, c = "string value") { >a : string >b0 : any >b : number +>30 : number >c : string +>"string value" : string } var withInitializedParamsVar = withInitializedParams; >withInitializedParamsVar : (a: string, b0: any, b?: number, c?: string) => void @@ -72,6 +76,7 @@ function withOptionalInitializedParams(a: string, c: string = "hello string") { >withOptionalInitializedParams : (a: string, c?: string) => void >a : string >c : string +>"hello string" : string } var withOptionalInitializedParamsVar = withOptionalInitializedParams; >withOptionalInitializedParamsVar : (a: string, c?: string) => void @@ -134,6 +139,7 @@ m2.foo(() => { var b = 30; >b : number +>30 : number return b; >b : number @@ -158,4 +164,5 @@ var f2 = () => { >() => { return "string";} : () => string return "string"; +>"string" : string } diff --git a/tests/baselines/reference/funcdecl.types.pull b/tests/baselines/reference/funcdecl.types.pull new file mode 100644 index 00000000000..b2da89a564b --- /dev/null +++ b/tests/baselines/reference/funcdecl.types.pull @@ -0,0 +1,168 @@ +=== tests/cases/compiler/funcdecl.ts === +function simpleFunc() { +>simpleFunc : () => string + + return "this is my simple func"; +>"this is my simple func" : string +} +var simpleFuncVar = simpleFunc; +>simpleFuncVar : () => string +>simpleFunc : () => string + +function anotherFuncNoReturn() { +>anotherFuncNoReturn : () => void +} +var anotherFuncNoReturnVar = anotherFuncNoReturn; +>anotherFuncNoReturnVar : () => void +>anotherFuncNoReturn : () => void + +function withReturn() : string{ +>withReturn : () => string + + return "Hello"; +>"Hello" : string +} +var withReturnVar = withReturn; +>withReturnVar : () => string +>withReturn : () => string + +function withParams(a : string) : string{ +>withParams : (a: string) => string +>a : string + + return a; +>a : string +} +var withparamsVar = withParams; +>withparamsVar : (a: string) => string +>withParams : (a: string) => string + +function withMultiParams(a : number, b, c: Object) { +>withMultiParams : (a: number, b: any, c: Object) => number +>a : number +>b : any +>c : Object +>Object : Object + + return a; +>a : number +} +var withMultiParamsVar = withMultiParams; +>withMultiParamsVar : (a: number, b: any, c: Object) => number +>withMultiParams : (a: number, b: any, c: Object) => number + +function withOptionalParams(a?: string) { +>withOptionalParams : (a?: string) => void +>a : string +} +var withOptionalParamsVar = withOptionalParams; +>withOptionalParamsVar : (a?: string) => void +>withOptionalParams : (a?: string) => void + +function withInitializedParams(a: string, b0, b = 30, c = "string value") { +>withInitializedParams : (a: string, b0: any, b?: number, c?: string) => void +>a : string +>b0 : any +>b : number +>30 : number +>c : string +>"string value" : string +} +var withInitializedParamsVar = withInitializedParams; +>withInitializedParamsVar : (a: string, b0: any, b?: number, c?: string) => void +>withInitializedParams : (a: string, b0: any, b?: number, c?: string) => void + +function withOptionalInitializedParams(a: string, c: string = "hello string") { +>withOptionalInitializedParams : (a: string, c?: string) => void +>a : string +>c : string +>"hello string" : "hello string" +} +var withOptionalInitializedParamsVar = withOptionalInitializedParams; +>withOptionalInitializedParamsVar : (a: string, c?: string) => void +>withOptionalInitializedParams : (a: string, c?: string) => void + +function withRestParams(a: string, ... myRestParameter : number[]) { +>withRestParams : (a: string, ...myRestParameter: number[]) => number[] +>a : string +>myRestParameter : number[] + + return myRestParameter; +>myRestParameter : number[] +} +var withRestParamsVar = withRestParams; +>withRestParamsVar : (a: string, ...myRestParameter: number[]) => number[] +>withRestParams : (a: string, ...myRestParameter: number[]) => number[] + +function overload1(n: number) : string; +>overload1 : { (n: number): string; (s: string): string; } +>n : number + +function overload1(s: string) : string; +>overload1 : { (n: number): string; (s: string): string; } +>s : string + +function overload1(ns: any) { +>overload1 : { (n: number): string; (s: string): string; } +>ns : any + + return ns.toString(); +>ns.toString() : any +>ns.toString : any +>ns : any +>toString : any +} +var withOverloadSignature = overload1; +>withOverloadSignature : { (n: number): string; (s: string): string; } +>overload1 : { (n: number): string; (s: string): string; } + +function f(n: () => void) { } +>f : (n: () => void) => void +>n : () => void + +module m2 { +>m2 : typeof m2 + + export function foo(n: () => void ) { +>foo : (n: () => void) => void +>n : () => void + } + +} + +m2.foo(() => { +>m2.foo(() => { var b = 30; return b;}) : void +>m2.foo : (n: () => void) => void +>m2 : typeof m2 +>foo : (n: () => void) => void +>() => { var b = 30; return b;} : () => number + + var b = 30; +>b : number +>30 : number + + return b; +>b : number + +}); + + +declare function fooAmbient(n: number): string; +>fooAmbient : (n: number) => string +>n : number + +declare function overloadAmbient(n: number): string; +>overloadAmbient : { (n: number): string; (s: string): string; } +>n : number + +declare function overloadAmbient(s: string): string; +>overloadAmbient : { (n: number): string; (s: string): string; } +>s : string + +var f2 = () => { +>f2 : () => string +>() => { return "string";} : () => string + + return "string"; +>"string" : string +} diff --git a/tests/baselines/reference/functionAssignmentError.types b/tests/baselines/reference/functionAssignmentError.types index 63996db0e40..6430aa10fc4 100644 --- a/tests/baselines/reference/functionAssignmentError.types +++ b/tests/baselines/reference/functionAssignmentError.types @@ -2,9 +2,11 @@ var func = function (){return "ONE";}; >func : () => string >function (){return "ONE";} : () => string +>"ONE" : string func = function (){return "ONE";}; >func = function (){return "ONE";} : () => string >func : () => string >function (){return "ONE";} : () => string +>"ONE" : string diff --git a/tests/baselines/reference/functionCall1.types b/tests/baselines/reference/functionCall1.types index 1b06379860c..777fcd79f91 100644 --- a/tests/baselines/reference/functionCall1.types +++ b/tests/baselines/reference/functionCall1.types @@ -1,6 +1,7 @@ === tests/cases/compiler/functionCall1.ts === function foo():any{return ""}; >foo : () => any +>"" : string var x = foo(); >x : any diff --git a/tests/baselines/reference/functionCall2.types b/tests/baselines/reference/functionCall2.types index 92bb0f0be23..152d54cb186 100644 --- a/tests/baselines/reference/functionCall2.types +++ b/tests/baselines/reference/functionCall2.types @@ -1,6 +1,7 @@ === tests/cases/compiler/functionCall2.ts === function foo():number{return 1}; >foo : () => number +>1 : number var x = foo(); >x : number diff --git a/tests/baselines/reference/functionCall3.types b/tests/baselines/reference/functionCall3.types index ea47de3e6d9..b58803ae666 100644 --- a/tests/baselines/reference/functionCall3.types +++ b/tests/baselines/reference/functionCall3.types @@ -2,6 +2,7 @@ function foo():any[]{return [1];} >foo : () => any[] >[1] : number[] +>1 : number var x = foo(); >x : any[] diff --git a/tests/baselines/reference/functionCall4.types b/tests/baselines/reference/functionCall4.types index 37a0b980a00..ea60c759a7d 100644 --- a/tests/baselines/reference/functionCall4.types +++ b/tests/baselines/reference/functionCall4.types @@ -1,6 +1,7 @@ === tests/cases/compiler/functionCall4.ts === function foo():any{return ""}; >foo : () => any +>"" : string function bar():()=>any{return foo}; >bar : () => () => any diff --git a/tests/baselines/reference/functionImplementations.types b/tests/baselines/reference/functionImplementations.types index 04144e3a65b..f277821d696 100644 --- a/tests/baselines/reference/functionImplementations.types +++ b/tests/baselines/reference/functionImplementations.types @@ -101,11 +101,14 @@ var n = function () { >function () { return 3;} : () => number return 3; +>3 : number + } (); // FunctionExpression with no return type annotation and returns null var nu = null; >nu : any +>null : null var nu = function () { >nu : any @@ -113,6 +116,8 @@ var nu = function () { >function () { return null;} : () => any return null; +>null : null + } (); // FunctionExpression with no return type annotation and returns undefined @@ -143,6 +148,7 @@ var n = function (x: T) { >x : T } (4); +>4 : number // FunctionExpression with no return type annotation and returns a constrained type parameter type var n = function (x: T) { @@ -157,6 +163,7 @@ var n = function (x: T) { >x : T } (4); +>4 : number // FunctionExpression with no return type annotation with multiple return statements with identical types var n = function () { @@ -165,7 +172,11 @@ var n = function () { >function () { return 3; return 5;} : () => number return 3; +>3 : number + return 5; +>5 : number + }(); // Otherwise, the inferred return type is the first of the types of the return statement expressions @@ -243,6 +254,7 @@ function thisFunc() { function opt1(n = 4) { >opt1 : (n?: number) => void >n : number +>4 : number var m = n; >m : number @@ -258,6 +270,7 @@ function opt2(n = { x: null, y: undefined }) { >n : { x: any; y: any; } >{ x: null, y: undefined } : { x: null; y: undefined; } >x : null +>null : null >y : undefined >undefined : undefined @@ -317,6 +330,7 @@ var f7: (x: number) => string | number = x => { // should be (x: number) => numb if (x < 0) { return x; } >x < 0 : boolean >x : number +>0 : number >x : number return x.toString(); diff --git a/tests/baselines/reference/functionInIfStatementInModule.types b/tests/baselines/reference/functionInIfStatementInModule.types index 773fd9c4186..11cdd80f0a1 100644 --- a/tests/baselines/reference/functionInIfStatementInModule.types +++ b/tests/baselines/reference/functionInIfStatementInModule.types @@ -4,6 +4,8 @@ module Midori >Midori : typeof Midori { if (false) { +>false : boolean + function Foo(src) >Foo : (src: any) => void >src : any diff --git a/tests/baselines/reference/functionLiteral.types b/tests/baselines/reference/functionLiteral.types index 7a57f0b1e1b..06c811093c3 100644 --- a/tests/baselines/reference/functionLiteral.types +++ b/tests/baselines/reference/functionLiteral.types @@ -4,6 +4,7 @@ var x = () => 1; >x : () => number >() => 1 : () => number +>1 : number var x: { >x : () => number diff --git a/tests/baselines/reference/functionMergedWithModule.types b/tests/baselines/reference/functionMergedWithModule.types index d0c711ab39a..ec0143f2923 100644 --- a/tests/baselines/reference/functionMergedWithModule.types +++ b/tests/baselines/reference/functionMergedWithModule.types @@ -5,6 +5,7 @@ function foo(title: string) { var x = 10; >x : number +>10 : number } module foo.Bar { diff --git a/tests/baselines/reference/functionOnlyHasThrow.types b/tests/baselines/reference/functionOnlyHasThrow.types index d37284f547c..c4e8cce38a2 100644 --- a/tests/baselines/reference/functionOnlyHasThrow.types +++ b/tests/baselines/reference/functionOnlyHasThrow.types @@ -5,4 +5,5 @@ function clone():number { throw new Error("To be implemented"); >new Error("To be implemented") : Error >Error : ErrorConstructor +>"To be implemented" : string } diff --git a/tests/baselines/reference/functionOverloads12.types b/tests/baselines/reference/functionOverloads12.types index 6e4c2d9189e..20f5ee5d556 100644 --- a/tests/baselines/reference/functionOverloads12.types +++ b/tests/baselines/reference/functionOverloads12.types @@ -7,4 +7,7 @@ function foo():number; function foo():any { if (true) return ""; else return 0;} >foo : { (): string; (): number; } +>true : boolean +>"" : string +>0 : number diff --git a/tests/baselines/reference/functionOverloads13.types b/tests/baselines/reference/functionOverloads13.types index ee65bc296e7..f26067c7eb8 100644 --- a/tests/baselines/reference/functionOverloads13.types +++ b/tests/baselines/reference/functionOverloads13.types @@ -10,4 +10,5 @@ function foo(bar:number):number; function foo(bar?:number):any { return "" } >foo : { (bar: number): string; (bar: number): number; } >bar : number +>"" : string diff --git a/tests/baselines/reference/functionOverloads14.types b/tests/baselines/reference/functionOverloads14.types index 562c43965c7..032ed700545 100644 --- a/tests/baselines/reference/functionOverloads14.types +++ b/tests/baselines/reference/functionOverloads14.types @@ -12,4 +12,5 @@ function foo():{a:any;} { return {a:1} } >a : any >{a:1} : { a: number; } >a : number +>1 : number diff --git a/tests/baselines/reference/functionOverloads15.types b/tests/baselines/reference/functionOverloads15.types index 6ca5b6709cb..8fe428e9a40 100644 --- a/tests/baselines/reference/functionOverloads15.types +++ b/tests/baselines/reference/functionOverloads15.types @@ -16,4 +16,5 @@ function foo(foo:{a:string; b?:number;}):any { return "" } >foo : { a: string; b?: number; } >a : string >b : number +>"" : string diff --git a/tests/baselines/reference/functionOverloads16.types b/tests/baselines/reference/functionOverloads16.types index 6974d0dab98..e6c6ceb57a6 100644 --- a/tests/baselines/reference/functionOverloads16.types +++ b/tests/baselines/reference/functionOverloads16.types @@ -14,4 +14,5 @@ function foo(foo:{a:string; b?:number;}):any { return "" } >foo : { a: string; b?: number; } >a : string >b : number +>"" : string diff --git a/tests/baselines/reference/functionOverloads21.types b/tests/baselines/reference/functionOverloads21.types index dc9e28b7b57..3b4cf261ea9 100644 --- a/tests/baselines/reference/functionOverloads21.types +++ b/tests/baselines/reference/functionOverloads21.types @@ -15,4 +15,5 @@ function foo(bar:{a:any; b?:string;}[]) { return 0 } >bar : { a: any; b?: string; }[] >a : any >b : string +>0 : number diff --git a/tests/baselines/reference/functionOverloads23.types b/tests/baselines/reference/functionOverloads23.types index 40b67a78c55..ee510a336e1 100644 --- a/tests/baselines/reference/functionOverloads23.types +++ b/tests/baselines/reference/functionOverloads23.types @@ -13,4 +13,5 @@ function foo(bar:(a?)=>void) { return 0 } >foo : { (bar: (b: string) => void): any; (bar: (a: number) => void): any; } >bar : (a?: any) => void >a : any +>0 : number diff --git a/tests/baselines/reference/functionOverloads25.types b/tests/baselines/reference/functionOverloads25.types index ace77ebc9e4..5b5c3781e74 100644 --- a/tests/baselines/reference/functionOverloads25.types +++ b/tests/baselines/reference/functionOverloads25.types @@ -9,6 +9,7 @@ function foo(bar:string):number; function foo(bar?:any):any{ return '' }; >foo : { (): string; (bar: string): number; } >bar : any +>'' : string var x = foo(); >x : string diff --git a/tests/baselines/reference/functionOverloads26.types b/tests/baselines/reference/functionOverloads26.types index 402003d7e7b..9345507b72e 100644 --- a/tests/baselines/reference/functionOverloads26.types +++ b/tests/baselines/reference/functionOverloads26.types @@ -9,9 +9,11 @@ function foo(bar:string):number; function foo(bar?:any):any{ return '' } >foo : { (): string; (bar: string): number; } >bar : any +>'' : string var x = foo('baz'); >x : number >foo('baz') : number >foo : { (): string; (bar: string): number; } +>'baz' : string diff --git a/tests/baselines/reference/functionOverloads28.types b/tests/baselines/reference/functionOverloads28.types index 034d35c64f7..ae4ab6c0664 100644 --- a/tests/baselines/reference/functionOverloads28.types +++ b/tests/baselines/reference/functionOverloads28.types @@ -9,6 +9,7 @@ function foo(bar:string):number; function foo(bar?:any):any{ return '' } >foo : { (): string; (bar: string): number; } >bar : any +>'' : string var t:any; var x = foo(t); >t : any diff --git a/tests/baselines/reference/functionOverloads30.types b/tests/baselines/reference/functionOverloads30.types index 80d43c952d9..a97bc0bb74d 100644 --- a/tests/baselines/reference/functionOverloads30.types +++ b/tests/baselines/reference/functionOverloads30.types @@ -16,4 +16,5 @@ var x = foo('bar'); >x : string >foo('bar') : string >foo : { (bar: string): string; (bar: number): number; } +>'bar' : string diff --git a/tests/baselines/reference/functionOverloads31.types b/tests/baselines/reference/functionOverloads31.types index 4d7816166bc..c85470ebd65 100644 --- a/tests/baselines/reference/functionOverloads31.types +++ b/tests/baselines/reference/functionOverloads31.types @@ -16,4 +16,5 @@ var x = foo(5); >x : number >foo(5) : number >foo : { (bar: string): string; (bar: number): number; } +>5 : number diff --git a/tests/baselines/reference/functionOverloads33.types b/tests/baselines/reference/functionOverloads33.types index 0199277180d..3d57c983305 100644 --- a/tests/baselines/reference/functionOverloads33.types +++ b/tests/baselines/reference/functionOverloads33.types @@ -16,4 +16,5 @@ var x = foo(5); >x : number >foo(5) : number >foo : { (bar: string): string; (bar: any): number; } +>5 : number diff --git a/tests/baselines/reference/functionOverloads35.types b/tests/baselines/reference/functionOverloads35.types index 567f9512e3d..1b811cf4246 100644 --- a/tests/baselines/reference/functionOverloads35.types +++ b/tests/baselines/reference/functionOverloads35.types @@ -21,4 +21,5 @@ var x = foo({a:1}); >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } >{a:1} : { a: number; } >a : number +>1 : number diff --git a/tests/baselines/reference/functionOverloads36.types b/tests/baselines/reference/functionOverloads36.types index 8118a1c113a..c8c1f7cede8 100644 --- a/tests/baselines/reference/functionOverloads36.types +++ b/tests/baselines/reference/functionOverloads36.types @@ -21,4 +21,5 @@ var x = foo({a:'foo'}); >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } >{a:'foo'} : { a: string; } >a : string +>'foo' : string diff --git a/tests/baselines/reference/functionOverloads38.types b/tests/baselines/reference/functionOverloads38.types index 852191ba07f..d718569c9bf 100644 --- a/tests/baselines/reference/functionOverloads38.types +++ b/tests/baselines/reference/functionOverloads38.types @@ -22,4 +22,5 @@ var x = foo([{a:1}]); >[{a:1}] : { a: number; }[] >{a:1} : { a: number; } >a : number +>1 : number diff --git a/tests/baselines/reference/functionOverloads39.types b/tests/baselines/reference/functionOverloads39.types index 70eee2b5163..78c0e78bca1 100644 --- a/tests/baselines/reference/functionOverloads39.types +++ b/tests/baselines/reference/functionOverloads39.types @@ -22,4 +22,5 @@ var x = foo([{a:true}]); >[{a:true}] : { a: boolean; }[] >{a:true} : { a: boolean; } >a : boolean +>true : boolean diff --git a/tests/baselines/reference/functionOverloads42.types b/tests/baselines/reference/functionOverloads42.types index 6641a28c87a..32e99d46aa1 100644 --- a/tests/baselines/reference/functionOverloads42.types +++ b/tests/baselines/reference/functionOverloads42.types @@ -22,4 +22,5 @@ var x = foo([{a:'s'}]); >[{a:'s'}] : { a: string; }[] >{a:'s'} : { a: string; } >a : string +>'s' : string diff --git a/tests/baselines/reference/functionOverloads7.types b/tests/baselines/reference/functionOverloads7.types index fed669c8943..c57f042b354 100644 --- a/tests/baselines/reference/functionOverloads7.types +++ b/tests/baselines/reference/functionOverloads7.types @@ -12,6 +12,7 @@ class foo { private bar(foo?: any){ return "foo" } >bar : { (): any; (foo: string): any; } >foo : any +>"foo" : string public n() { >n : () => void @@ -30,6 +31,7 @@ class foo { >this.bar : { (): any; (foo: string): any; } >this : foo >bar : { (): any; (foo: string): any; } +>"test" : string } } diff --git a/tests/baselines/reference/functionOverloads8.types b/tests/baselines/reference/functionOverloads8.types index e342db5d174..4751533e2af 100644 --- a/tests/baselines/reference/functionOverloads8.types +++ b/tests/baselines/reference/functionOverloads8.types @@ -9,4 +9,5 @@ function foo(foo:string); function foo(foo?:any){ return '' } >foo : { (): any; (foo: string): any; } >foo : any +>'' : string diff --git a/tests/baselines/reference/functionOverloads9.types b/tests/baselines/reference/functionOverloads9.types index a844aee7df1..88586c32eb2 100644 --- a/tests/baselines/reference/functionOverloads9.types +++ b/tests/baselines/reference/functionOverloads9.types @@ -6,9 +6,11 @@ function foo(foo:string); function foo(foo?:string){ return '' }; >foo : (foo: string) => any >foo : string +>'' : string var x = foo('foo'); >x : any >foo('foo') : any >foo : (foo: string) => any +>'foo' : string diff --git a/tests/baselines/reference/functionReturn.types b/tests/baselines/reference/functionReturn.types index 0c1ee8eafc2..6fc9d680db9 100644 --- a/tests/baselines/reference/functionReturn.types +++ b/tests/baselines/reference/functionReturn.types @@ -20,12 +20,16 @@ function f4(): string { >f4 : () => string return ''; +>'' : string + return; } function f5(): string { >f5 : () => string return ''; +>'' : string + return undefined; >undefined : undefined } diff --git a/tests/baselines/reference/functionType.types b/tests/baselines/reference/functionType.types index 29a940db205..e7ea7a47edf 100644 --- a/tests/baselines/reference/functionType.types +++ b/tests/baselines/reference/functionType.types @@ -7,6 +7,7 @@ salt.apply("hello", []); >salt.apply : (thisArg: any, argArray?: any) => any >salt : () => void >apply : (thisArg: any, argArray?: any) => any +>"hello" : string >[] : undefined[] (new Function("return 5"))(); @@ -14,6 +15,7 @@ salt.apply("hello", []); >(new Function("return 5")) : Function >new Function("return 5") : Function >Function : FunctionConstructor +>"return 5" : string diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types index d5c114c9216..d695157db40 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types @@ -2,4 +2,5 @@ function foo(x = 0) { } >foo : (x?: number) => void >x : number +>0 : number diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types index df28a085d85..8f8f03fafb1 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types @@ -3,9 +3,11 @@ function foo(a = [0]) { } >foo : (a?: number[]) => void >a : number[] >[0] : number[] +>0 : number function bar(a = [0]) { >bar : (a?: number[]) => void >a : number[] >[0] : number[] +>0 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types index 5e522855e4b..e0a87bb2656 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types @@ -7,10 +7,12 @@ function foo(a = v[0]) { } >a : any >v[0] : any >v : any[] +>0 : number function bar(a = v[0]) { >bar : (a?: any) => void >a : any >v[0] : any >v : any[] +>0 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types index eccf0a92856..58c2009886a 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types @@ -7,10 +7,14 @@ function foo(a = [1 + 1]) { } >a : number[] >[1 + 1] : number[] >1 + 1 : number +>1 : number +>1 : number function bar(a = [1 + 1]) { >bar : (a?: number[]) => void >a : number[] >[1 + 1] : number[] >1 + 1 : number +>1 : number +>1 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types index c155b335e9a..2a5fbab6919 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types @@ -8,6 +8,8 @@ function foo(a = v[1 + 1]) { } >v[1 + 1] : any >v : any[] >1 + 1 : number +>1 : number +>1 : number function bar(a = v[1 + 1]) { >bar : (a?: any) => void @@ -15,4 +17,6 @@ function bar(a = v[1 + 1]) { >v[1 + 1] : any >v : any[] >1 + 1 : number +>1 : number +>1 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types index a782b4bd15c..e35f5a5f4e0 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types @@ -7,10 +7,14 @@ function foo(a = (1 + 1)) { } >a : number >(1 + 1) : number >1 + 1 : number +>1 : number +>1 : number function bar(a = (1 + 1)) { >bar : (a?: number) => void >a : number >(1 + 1) : number >1 + 1 : number +>1 : number +>1 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types index 9be77e7d82e..76b6b56dfa4 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types @@ -2,4 +2,5 @@ function foo(x = 0) { >foo : (x?: number) => void >x : number +>0 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types index 77895ae1cc9..4254c0d28a9 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types @@ -2,8 +2,10 @@ function foo(a = "") { } >foo : (a?: string) => void >a : string +>"" : string function bar(a = "") { >bar : (a?: string) => void >a : string +>"" : string } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types index 7071c956db2..bfc627fa60a 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types @@ -2,8 +2,10 @@ function foo(a = ``) { } >foo : (a?: string) => void >a : string +>`` : string function bar(a = ``) { >bar : (a?: string) => void >a : string +>`` : string } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types index b7d53b544fa..99e93927e0a 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types @@ -2,8 +2,10 @@ function foo(a = 0) { } >foo : (a?: number) => void >a : number +>0 : number function bar(a = 0) { >bar : (a?: number) => void >a : number +>0 : number } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types index b430bc70953..6100a6dedce 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types @@ -2,8 +2,10 @@ function foo(a = true) { } >foo : (a?: boolean) => void >a : boolean +>true : boolean function bar(a = true) { >bar : (a?: boolean) => void >a : boolean +>true : boolean } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types index baf83c870a9..866087a9f9b 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types @@ -2,8 +2,10 @@ function foo(a = false) { } >foo : (a?: boolean) => void >a : boolean +>false : boolean function bar(a = false) { >bar : (a?: boolean) => void >a : boolean +>false : boolean } diff --git a/tests/baselines/reference/funduleOfFunctionWithoutReturnTypeAnnotation.types b/tests/baselines/reference/funduleOfFunctionWithoutReturnTypeAnnotation.types index 9284ce3e19d..2d71370c2ac 100644 --- a/tests/baselines/reference/funduleOfFunctionWithoutReturnTypeAnnotation.types +++ b/tests/baselines/reference/funduleOfFunctionWithoutReturnTypeAnnotation.types @@ -12,5 +12,6 @@ module fn { export var n = 1; >n : number +>1 : number } diff --git a/tests/baselines/reference/generatedContextualTyping.types b/tests/baselines/reference/generatedContextualTyping.types index 423c5d6653b..e8f434d31a8 100644 --- a/tests/baselines/reference/generatedContextualTyping.types +++ b/tests/baselines/reference/generatedContextualTyping.types @@ -122,6 +122,7 @@ var x11: (s: Base[]) => any = n => { var n: Base[]; return null; }; >n : Base[] >n : Base[] >Base : Base +>null : null var x12: Genric = { func: n => { return [d1, d2]; } }; >x12 : Genric @@ -237,6 +238,7 @@ class x23 { member: (s: Base[]) => any = n => { var n: Base[]; return null; } } >n : Base[] >n : Base[] >Base : Base +>null : null class x24 { member: Genric = { func: n => { return [d1, d2]; } } } >x24 : x24 @@ -353,6 +355,7 @@ class x35 { private member: (s: Base[]) => any = n => { var n: Base[]; return nu >n : Base[] >n : Base[] >Base : Base +>null : null class x36 { private member: Genric = { func: n => { return [d1, d2]; } } } >x36 : x36 @@ -469,6 +472,7 @@ class x47 { public member: (s: Base[]) => any = n => { var n: Base[]; return nul >n : Base[] >n : Base[] >Base : Base +>null : null class x48 { public member: Genric = { func: n => { return [d1, d2]; } } } >x48 : x48 @@ -585,6 +589,7 @@ class x59 { static member: (s: Base[]) => any = n => { var n: Base[]; return nul >n : Base[] >n : Base[] >Base : Base +>null : null class x60 { static member: Genric = { func: n => { return [d1, d2]; } } } >x60 : x60 @@ -701,6 +706,7 @@ class x71 { private static member: (s: Base[]) => any = n => { var n: Base[]; re >n : Base[] >n : Base[] >Base : Base +>null : null class x72 { private static member: Genric = { func: n => { return [d1, d2]; } } } >x72 : x72 @@ -817,6 +823,7 @@ class x83 { public static member: (s: Base[]) => any = n => { var n: Base[]; ret >n : Base[] >n : Base[] >Base : Base +>null : null class x84 { public static member: Genric = { func: n => { return [d1, d2]; } } } >x84 : x84 @@ -933,6 +940,7 @@ class x95 { constructor(parm: (s: Base[]) => any = n => { var n: Base[]; return >n : Base[] >n : Base[] >Base : Base +>null : null class x96 { constructor(parm: Genric = { func: n => { return [d1, d2]; } }) { } } >x96 : x96 @@ -1049,6 +1057,7 @@ class x107 { constructor(public parm: (s: Base[]) => any = n => { var n: Base[]; >n : Base[] >n : Base[] >Base : Base +>null : null class x108 { constructor(public parm: Genric = { func: n => { return [d1, d2]; } }) { } } >x108 : x108 @@ -1165,6 +1174,7 @@ class x119 { constructor(private parm: (s: Base[]) => any = n => { var n: Base[] >n : Base[] >n : Base[] >Base : Base +>null : null class x120 { constructor(private parm: Genric = { func: n => { return [d1, d2]; } }) { } } >x120 : x120 @@ -1281,6 +1291,7 @@ function x131(parm: (s: Base[]) => any = n => { var n: Base[]; return null; }) { >n : Base[] >n : Base[] >Base : Base +>null : null function x132(parm: Genric = { func: n => { return [d1, d2]; } }) { } >x132 : (parm?: Genric) => void @@ -1386,6 +1397,7 @@ function x143(): (s: Base[]) => any { return n => { var n: Base[]; return null; >n : Base[] >n : Base[] >Base : Base +>null : null function x144(): Genric { return { func: n => { return [d1, d2]; } }; } >x144 : () => Genric @@ -1530,10 +1542,12 @@ function x155(): (s: Base[]) => any { return n => { var n: Base[]; return null; >n : Base[] >n : Base[] >Base : Base +>null : null >n => { var n: Base[]; return null; } : (n: Base[]) => any >n : Base[] >n : Base[] >Base : Base +>null : null function x156(): Genric { return { func: n => { return [d1, d2]; } }; return { func: n => { return [d1, d2]; } }; } >x156 : () => Genric @@ -1656,6 +1670,7 @@ var x167: () => (s: Base[]) => any = () => { return n => { var n: Base[]; return >n : Base[] >n : Base[] >Base : Base +>null : null var x168: () => Genric = () => { return { func: n => { return [d1, d2]; } }; }; >x168 : () => Genric @@ -1772,6 +1787,7 @@ var x179: () => (s: Base[]) => any = function() { return n => { var n: Base[]; r >n : Base[] >n : Base[] >Base : Base +>null : null var x180: () => Genric = function() { return { func: n => { return [d1, d2]; } }; }; >x180 : () => Genric @@ -1888,6 +1904,7 @@ module x191 { var t: (s: Base[]) => any = n => { var n: Base[]; return null; }; >n : Base[] >n : Base[] >Base : Base +>null : null module x192 { var t: Genric = { func: n => { return [d1, d2]; } }; } >x192 : typeof x192 @@ -2004,6 +2021,7 @@ module x203 { export var t: (s: Base[]) => any = n => { var n: Base[]; return nu >n : Base[] >n : Base[] >Base : Base +>null : null module x204 { export var t: Genric = { func: n => { return [d1, d2]; } }; } >x204 : typeof x204 @@ -2318,6 +2336,7 @@ var x235: (s: Base[]) => any; x235 = n => { var n: Base[]; return null; }; >n : Base[] >n : Base[] >Base : Base +>null : null var x236: Genric; x236 = { func: n => { return [d1, d2]; } }; >x236 : Genric @@ -2457,6 +2476,7 @@ var x247: { n: (s: Base[]) => any; } = { n: n => { var n: Base[]; return null; } >n : Base[] >n : Base[] >Base : Base +>null : null var x248: { n: Genric; } = { n: { func: n => { return [d1, d2]; } } }; >x248 : { n: Genric; } @@ -2828,6 +2848,7 @@ var x285: () => Base[] = true ? () => [d1, d2] : () => [d1, d2]; >x285 : () => Base[] >Base : Base >true ? () => [d1, d2] : () => [d1, d2] : () => (Derived1 | Derived2)[] +>true : boolean >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -2841,6 +2862,7 @@ var x286: () => Base[] = true ? function() { return [d1, d2] } : function() { re >x286 : () => Base[] >Base : Base >true ? function() { return [d1, d2] } : function() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -2854,6 +2876,7 @@ var x287: () => Base[] = true ? function named() { return [d1, d2] } : function >x287 : () => Base[] >Base : Base >true ? function named() { return [d1, d2] } : function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -2869,6 +2892,7 @@ var x288: { (): Base[]; } = true ? () => [d1, d2] : () => [d1, d2]; >x288 : () => Base[] >Base : Base >true ? () => [d1, d2] : () => [d1, d2] : () => (Derived1 | Derived2)[] +>true : boolean >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -2882,6 +2906,7 @@ var x289: { (): Base[]; } = true ? function() { return [d1, d2] } : function() { >x289 : () => Base[] >Base : Base >true ? function() { return [d1, d2] } : function() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -2895,6 +2920,7 @@ var x290: { (): Base[]; } = true ? function named() { return [d1, d2] } : functi >x290 : () => Base[] >Base : Base >true ? function named() { return [d1, d2] } : function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -2910,6 +2936,7 @@ var x291: Base[] = true ? [d1, d2] : [d1, d2]; >x291 : Base[] >Base : Base >true ? [d1, d2] : [d1, d2] : (Derived1 | Derived2)[] +>true : boolean >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -2922,6 +2949,7 @@ var x292: Array = true ? [d1, d2] : [d1, d2]; >Array : T[] >Base : Base >true ? [d1, d2] : [d1, d2] : (Derived1 | Derived2)[] +>true : boolean >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -2934,6 +2962,7 @@ var x293: { [n: number]: Base; } = true ? [d1, d2] : [d1, d2]; >n : number >Base : Base >true ? [d1, d2] : [d1, d2] : (Derived1 | Derived2)[] +>true : boolean >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -2946,6 +2975,7 @@ var x294: {n: Base[]; } = true ? { n: [d1, d2] } : { n: [d1, d2] }; >n : Base[] >Base : Base >true ? { n: [d1, d2] } : { n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } +>true : boolean >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } >n : (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -2962,20 +2992,24 @@ var x295: (s: Base[]) => any = true ? n => { var n: Base[]; return null; } : n = >s : Base[] >Base : Base >true ? n => { var n: Base[]; return null; } : n => { var n: Base[]; return null; } : (n: Base[]) => any +>true : boolean >n => { var n: Base[]; return null; } : (n: Base[]) => any >n : Base[] >n : Base[] >Base : Base +>null : null >n => { var n: Base[]; return null; } : (n: Base[]) => any >n : Base[] >n : Base[] >Base : Base +>null : null var x296: Genric = true ? { func: n => { return [d1, d2]; } } : { func: n => { return [d1, d2]; } }; >x296 : Genric >Genric : Genric >Base : Base >true ? { func: n => { return [d1, d2]; } } : { func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } +>true : boolean >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } >func : (n: Base[]) => (Derived1 | Derived2)[] >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] @@ -2995,6 +3029,7 @@ var x297: () => Base[] = true ? undefined : () => [d1, d2]; >x297 : () => Base[] >Base : Base >true ? undefined : () => [d1, d2] : () => (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3005,6 +3040,7 @@ var x298: () => Base[] = true ? undefined : function() { return [d1, d2] }; >x298 : () => Base[] >Base : Base >true ? undefined : function() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3015,6 +3051,7 @@ var x299: () => Base[] = true ? undefined : function named() { return [d1, d2] } >x299 : () => Base[] >Base : Base >true ? undefined : function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] @@ -3026,6 +3063,7 @@ var x300: { (): Base[]; } = true ? undefined : () => [d1, d2]; >x300 : () => Base[] >Base : Base >true ? undefined : () => [d1, d2] : () => (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3036,6 +3074,7 @@ var x301: { (): Base[]; } = true ? undefined : function() { return [d1, d2] }; >x301 : () => Base[] >Base : Base >true ? undefined : function() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3046,6 +3085,7 @@ var x302: { (): Base[]; } = true ? undefined : function named() { return [d1, d2 >x302 : () => Base[] >Base : Base >true ? undefined : function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] @@ -3057,6 +3097,7 @@ var x303: Base[] = true ? undefined : [d1, d2]; >x303 : Base[] >Base : Base >true ? undefined : [d1, d2] : (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3067,6 +3108,7 @@ var x304: Array = true ? undefined : [d1, d2]; >Array : T[] >Base : Base >true ? undefined : [d1, d2] : (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3077,6 +3119,7 @@ var x305: { [n: number]: Base; } = true ? undefined : [d1, d2]; >n : number >Base : Base >true ? undefined : [d1, d2] : (Derived1 | Derived2)[] +>true : boolean >undefined : undefined >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3087,6 +3130,7 @@ var x306: {n: Base[]; } = true ? undefined : { n: [d1, d2] }; >n : Base[] >Base : Base >true ? undefined : { n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } +>true : boolean >undefined : undefined >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } >n : (Derived1 | Derived2)[] @@ -3099,17 +3143,20 @@ var x307: (s: Base[]) => any = true ? undefined : n => { var n: Base[]; return n >s : Base[] >Base : Base >true ? undefined : n => { var n: Base[]; return null; } : (n: Base[]) => any +>true : boolean >undefined : undefined >n => { var n: Base[]; return null; } : (n: Base[]) => any >n : Base[] >n : Base[] >Base : Base +>null : null var x308: Genric = true ? undefined : { func: n => { return [d1, d2]; } }; >x308 : Genric >Genric : Genric >Base : Base >true ? undefined : { func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } +>true : boolean >undefined : undefined >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } >func : (n: Base[]) => (Derived1 | Derived2)[] @@ -3123,6 +3170,7 @@ var x309: () => Base[] = true ? () => [d1, d2] : undefined; >x309 : () => Base[] >Base : Base >true ? () => [d1, d2] : undefined : () => (Derived1 | Derived2)[] +>true : boolean >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3133,6 +3181,7 @@ var x310: () => Base[] = true ? function() { return [d1, d2] } : undefined; >x310 : () => Base[] >Base : Base >true ? function() { return [d1, d2] } : undefined : () => (Derived1 | Derived2)[] +>true : boolean >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3143,6 +3192,7 @@ var x311: () => Base[] = true ? function named() { return [d1, d2] } : undefined >x311 : () => Base[] >Base : Base >true ? function named() { return [d1, d2] } : undefined : () => (Derived1 | Derived2)[] +>true : boolean >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3154,6 +3204,7 @@ var x312: { (): Base[]; } = true ? () => [d1, d2] : undefined; >x312 : () => Base[] >Base : Base >true ? () => [d1, d2] : undefined : () => (Derived1 | Derived2)[] +>true : boolean >() => [d1, d2] : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3164,6 +3215,7 @@ var x313: { (): Base[]; } = true ? function() { return [d1, d2] } : undefined; >x313 : () => Base[] >Base : Base >true ? function() { return [d1, d2] } : undefined : () => (Derived1 | Derived2)[] +>true : boolean >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 @@ -3174,6 +3226,7 @@ var x314: { (): Base[]; } = true ? function named() { return [d1, d2] } : undefi >x314 : () => Base[] >Base : Base >true ? function named() { return [d1, d2] } : undefined : () => (Derived1 | Derived2)[] +>true : boolean >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] >named : () => (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3185,6 +3238,7 @@ var x315: Base[] = true ? [d1, d2] : undefined; >x315 : Base[] >Base : Base >true ? [d1, d2] : undefined : (Derived1 | Derived2)[] +>true : boolean >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3195,6 +3249,7 @@ var x316: Array = true ? [d1, d2] : undefined; >Array : T[] >Base : Base >true ? [d1, d2] : undefined : (Derived1 | Derived2)[] +>true : boolean >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3205,6 +3260,7 @@ var x317: { [n: number]: Base; } = true ? [d1, d2] : undefined; >n : number >Base : Base >true ? [d1, d2] : undefined : (Derived1 | Derived2)[] +>true : boolean >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3215,6 +3271,7 @@ var x318: {n: Base[]; } = true ? { n: [d1, d2] } : undefined; >n : Base[] >Base : Base >true ? { n: [d1, d2] } : undefined : { n: (Derived1 | Derived2)[]; } +>true : boolean >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } >n : (Derived1 | Derived2)[] >[d1, d2] : (Derived1 | Derived2)[] @@ -3227,10 +3284,12 @@ var x319: (s: Base[]) => any = true ? n => { var n: Base[]; return null; } : und >s : Base[] >Base : Base >true ? n => { var n: Base[]; return null; } : undefined : (n: Base[]) => any +>true : boolean >n => { var n: Base[]; return null; } : (n: Base[]) => any >n : Base[] >n : Base[] >Base : Base +>null : null >undefined : undefined var x320: Genric = true ? { func: n => { return [d1, d2]; } } : undefined; @@ -3238,6 +3297,7 @@ var x320: Genric = true ? { func: n => { return [d1, d2]; } } : undefined; >Genric : Genric >Base : Base >true ? { func: n => { return [d1, d2]; } } : undefined : { func: (n: Base[]) => (Derived1 | Derived2)[]; } +>true : boolean >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } >func : (n: Base[]) => (Derived1 | Derived2)[] >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] @@ -3371,6 +3431,7 @@ function x331(n: (s: Base[]) => any) { }; x331(n => { var n: Base[]; return null >n : Base[] >n : Base[] >Base : Base +>null : null function x332(n: Genric) { }; x332({ func: n => { return [d1, d2]; } }); >x332 : (n: Genric) => void @@ -3533,6 +3594,7 @@ var x343 = (n: (s: Base[]) => any) => n; x343(n => { var n: Base[]; return null; >n : Base[] >n : Base[] >Base : Base +>null : null var x344 = (n: Genric) => n; x344({ func: n => { return [d1, d2]; } }); >x344 : (n: Genric) => Genric @@ -3686,6 +3748,7 @@ var x355 = function(n: (s: Base[]) => any) { }; x355(n => { var n: Base[]; retur >n : Base[] >n : Base[] >Base : Base +>null : null var x356 = function(n: Genric) { }; x356({ func: n => { return [d1, d2]; } }); >x356 : (n: Genric) => void diff --git a/tests/baselines/reference/genericAndNonGenericOverload1.types b/tests/baselines/reference/genericAndNonGenericOverload1.types index 67cc8a01f18..28eeb2d4da0 100644 --- a/tests/baselines/reference/genericAndNonGenericOverload1.types +++ b/tests/baselines/reference/genericAndNonGenericOverload1.types @@ -21,4 +21,5 @@ var c2: callable2; c2(1); >c2(1) : string >c2 : callable2 +>1 : number diff --git a/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types b/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types index 768b8846880..b5ae06ebd64 100644 --- a/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types +++ b/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types @@ -50,6 +50,10 @@ _.all([true, 1, null, 'yes'], _.identity); >_ : Underscore.Static >all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean >[true, 1, null, 'yes'] : (string | number | boolean)[] +>true : boolean +>1 : number +>null : null +>'yes' : string >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T @@ -61,6 +65,7 @@ _.all([true], _.identity); >_ : Underscore.Static >all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean >[true] : boolean[] +>true : boolean >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T diff --git a/tests/baselines/reference/genericArray1.types b/tests/baselines/reference/genericArray1.types index 09dbc55771d..bf44c88f518 100644 --- a/tests/baselines/reference/genericArray1.types +++ b/tests/baselines/reference/genericArray1.types @@ -16,6 +16,9 @@ var lengths = ["a", "b", "c"].map(x => x.length); >["a", "b", "c"].map(x => x.length) : number[] >["a", "b", "c"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] >["a", "b", "c"] : string[] +>"a" : string +>"b" : string +>"c" : string >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] >x => x.length : (x: string) => number >x : string diff --git a/tests/baselines/reference/genericArrayPropertyAssignment.types b/tests/baselines/reference/genericArrayPropertyAssignment.types index ab3f47de813..6db56dde381 100644 --- a/tests/baselines/reference/genericArrayPropertyAssignment.types +++ b/tests/baselines/reference/genericArrayPropertyAssignment.types @@ -9,6 +9,7 @@ return list.length ===0; >list.length : number >list : { length: number; } >length : number +>0 : number } isEmpty([]); // error diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index 2ade6437fe7..4576ffb05de 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -38,6 +38,7 @@ class DataView2 extends BaseCollection2 { >this._itemsByKey : { [key: string]: CollectionItem2; } >this : DataView2 >_itemsByKey : { [key: string]: CollectionItem2; } +>'dummy' : string >item : CollectionItem2 } } diff --git a/tests/baselines/reference/genericCallTypeArgumentInference.types b/tests/baselines/reference/genericCallTypeArgumentInference.types index ced2daee38d..0208ec74f1e 100644 --- a/tests/baselines/reference/genericCallTypeArgumentInference.types +++ b/tests/baselines/reference/genericCallTypeArgumentInference.types @@ -15,6 +15,7 @@ var r = foo(''); // string >r : string >foo('') : string >foo : (t: T) => T +>'' : string function foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U @@ -48,11 +49,14 @@ var r2 = foo2('', 1); // number >r2 : number >foo2('', 1) : number >foo2 : (t: T, u: U) => U +>'' : string +>1 : number var r3 = foo2b(1); // {} >r3 : {} >foo2b(1) : {} >foo2b : (u: U) => T +>1 : number class C { >C : C @@ -171,6 +175,8 @@ var c = new C('', 1); >c : C >new C('', 1) : C >C : typeof C +>'' : string +>1 : number var r4 = c.foo('', 1); // string >r4 : string @@ -178,6 +184,8 @@ var r4 = c.foo('', 1); // string >c.foo : (t: string, u: number) => string >c : C >foo : (t: string, u: number) => string +>'' : string +>1 : number var r5 = c.foo2('', 1); // number >r5 : number @@ -185,6 +193,8 @@ var r5 = c.foo2('', 1); // number >c.foo2 : (t: string, u: number) => number >c : C >foo2 : (t: string, u: number) => number +>'' : string +>1 : number var r6 = c.foo3(true, 1); // boolean >r6 : boolean @@ -192,6 +202,8 @@ var r6 = c.foo3(true, 1); // boolean >c.foo3 : (t: T, u: number) => T >c : C >foo3 : (t: T, u: number) => T +>true : boolean +>1 : number var r7 = c.foo4('', true); // string >r7 : string @@ -199,6 +211,8 @@ var r7 = c.foo4('', true); // string >c.foo4 : (t: string, u: U) => string >c : C >foo4 : (t: string, u: U) => string +>'' : string +>true : boolean var r8 = c.foo5(true, 1); // boolean >r8 : boolean @@ -206,6 +220,8 @@ var r8 = c.foo5(true, 1); // boolean >c.foo5 : (t: T, u: U) => T >c : C >foo5 : (t: T, u: U) => T +>true : boolean +>1 : number var r9 = c.foo6(); // {} >r9 : {} @@ -220,6 +236,7 @@ var r10 = c.foo7(''); // {} >c.foo7 : (u: U) => T >c : C >foo7 : (u: U) => T +>'' : string var r11 = c.foo8(); // {} >r11 : {} @@ -314,6 +331,8 @@ var r4 = i.foo('', 1); // string >i.foo : (t: string, u: number) => string >i : I >foo : (t: string, u: number) => string +>'' : string +>1 : number var r5 = i.foo2('', 1); // number >r5 : number @@ -321,6 +340,8 @@ var r5 = i.foo2('', 1); // number >i.foo2 : (t: string, u: number) => number >i : I >foo2 : (t: string, u: number) => number +>'' : string +>1 : number var r6 = i.foo3(true, 1); // boolean >r6 : boolean @@ -328,6 +349,8 @@ var r6 = i.foo3(true, 1); // boolean >i.foo3 : (t: T, u: number) => T >i : I >foo3 : (t: T, u: number) => T +>true : boolean +>1 : number var r7 = i.foo4('', true); // string >r7 : string @@ -335,6 +358,8 @@ var r7 = i.foo4('', true); // string >i.foo4 : (t: string, u: U) => string >i : I >foo4 : (t: string, u: U) => string +>'' : string +>true : boolean var r8 = i.foo5(true, 1); // boolean >r8 : boolean @@ -342,6 +367,8 @@ var r8 = i.foo5(true, 1); // boolean >i.foo5 : (t: T, u: U) => T >i : I >foo5 : (t: T, u: U) => T +>true : boolean +>1 : number var r9 = i.foo6(); // {} >r9 : {} @@ -356,6 +383,7 @@ var r10 = i.foo7(''); // {} >i.foo7 : (u: U) => T >i : I >foo7 : (u: U) => T +>'' : string var r11 = i.foo8(); // {} >r11 : {} diff --git a/tests/baselines/reference/genericCallWithArrayLiteralArgs.types b/tests/baselines/reference/genericCallWithArrayLiteralArgs.types index f4965940436..48a7150ef44 100644 --- a/tests/baselines/reference/genericCallWithArrayLiteralArgs.types +++ b/tests/baselines/reference/genericCallWithArrayLiteralArgs.types @@ -14,18 +14,24 @@ var r = foo([1, 2]); // number[] >foo([1, 2]) : number[] >foo : (t: T) => T >[1, 2] : number[] +>1 : number +>2 : number var r = foo([1, 2]); // number[] >r : number[] >foo([1, 2]) : number[] >foo : (t: T) => T >[1, 2] : number[] +>1 : number +>2 : number var ra = foo([1, 2]); // any[] >ra : any[] >foo([1, 2]) : any[] >foo : (t: T) => T >[1, 2] : number[] +>1 : number +>2 : number var r2 = foo([]); // any[] >r2 : any[] @@ -44,12 +50,16 @@ var r4 = foo([1, '']); // {}[] >foo([1, '']) : (string | number)[] >foo : (t: T) => T >[1, ''] : (string | number)[] +>1 : number +>'' : string var r5 = foo([1, '']); // any[] >r5 : any[] >foo([1, '']) : any[] >foo : (t: T) => T >[1, ''] : (string | number)[] +>1 : number +>'' : string var r6 = foo([1, '']); // Object[] >r6 : Object[] @@ -57,4 +67,6 @@ var r6 = foo([1, '']); // Object[] >foo : (t: T) => T >Object : Object >[1, ''] : (string | number)[] +>1 : number +>'' : string diff --git a/tests/baselines/reference/genericCallWithFixedArguments.types b/tests/baselines/reference/genericCallWithFixedArguments.types index acfad45a0f2..f22dbc01252 100644 --- a/tests/baselines/reference/genericCallWithFixedArguments.types +++ b/tests/baselines/reference/genericCallWithFixedArguments.types @@ -18,5 +18,6 @@ g(7) // the parameter list is fixed, so this should not error >g : (x: any) => void >A : A >B : B +>7 : number diff --git a/tests/baselines/reference/genericCallWithNonGenericArgs1.types b/tests/baselines/reference/genericCallWithNonGenericArgs1.types index f08f8503075..75d86728132 100644 --- a/tests/baselines/reference/genericCallWithNonGenericArgs1.types +++ b/tests/baselines/reference/genericCallWithNonGenericArgs1.types @@ -7,4 +7,5 @@ function f(x: any) { } f(null) >f(null) : void >f : (x: any) => void +>null : null diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types index 29706ba7e3d..8ffa07252bc 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types @@ -107,6 +107,7 @@ function f3(x: T, y: (a: T) => T) { return y(null); >y(null) : T >y : (a: T) => T +>null : null } var r4 = f3(new Base(), x => x); >r4 : Base @@ -132,11 +133,14 @@ var r6 = f3(null, null); // any >r6 : any >f3(null, null) : any >f3 : (x: T, y: (a: T) => T) => T +>null : null +>null : null var r7 = f3(null, x => x); // any >r7 : any >f3(null, x => x) : any >f3 : (x: T, y: (a: T) => T) => T +>null : null >x => x : (x: any) => any >x : any >x : any diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types index 9a7ca1dbb91..e1659323033 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types @@ -58,9 +58,11 @@ function other(arg: T) { >d : T >r2[1] : T >r2 : { [x: string]: Object; [x: number]: T; } +>1 : number var e = r2['1']; >e : Object >r2['1'] : Object >r2 : { [x: string]: Object; [x: number]: T; } +>'1' : string } diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types index f4b3f5960f0..71e943c1ad3 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types @@ -62,6 +62,7 @@ function other2(arg: T) { >d : T >r2[1] : T >r2 : { [x: number]: T; } +>1 : number } function other3(arg: T) { @@ -88,6 +89,7 @@ function other3(arg: T) { >d : T >r2[1] : T >r2 : { [x: number]: T; } +>1 : number // BUG 821629 //var u: U = r2[1]; // ok diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types index e52e6cff113..196103f422b 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types @@ -63,6 +63,7 @@ function other2(arg: T) { >Date : Date >r2['hm'] : T >r2 : { [x: string]: T; } +>'hm' : string } function other3(arg: T) { @@ -90,6 +91,7 @@ function other3(arg: T) { >Date : Date >r2['hm'] : T >r2 : { [x: string]: T; } +>'hm' : string // BUG 821629 //var u: U = r2['hm']; // ok diff --git a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types index ad491206be6..dbdecbec3e4 100644 --- a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types +++ b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types @@ -119,6 +119,7 @@ module GenericParameter { >T : T >x : T >T : T +>'' : string var r11 = foo6((x: T, y?: T) => ''); // any => string (+1 overload) >r11 : { (x: any): string; (x: any, y?: any): string; } @@ -130,6 +131,7 @@ module GenericParameter { >T : T >y : T >T : T +>'' : string function foo7(x:T, cb: { (x: T): string; (x: T, y?: T): string }) { >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } @@ -152,6 +154,7 @@ module GenericParameter { >r12 : { (x: any): string; (x: any, y?: any): string; } >foo7(1, (x) => x) : { (x: any): string; (x: any, y?: any): string; } >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } +>1 : number >(x) => x : (x: any) => any >x : any >x : any @@ -160,10 +163,12 @@ module GenericParameter { >r13 : { (x: any): string; (x: any, y?: any): string; } >foo7(1, (x: T) => '') : { (x: any): string; (x: any, y?: any): string; } >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } +>1 : number >(x: T) => '' : (x: T) => string >T : T >x : T >T : T +>'' : string var a: { (x: T): string; (x: number): T; } >a : { (x: T): string; (x: number): T; } @@ -178,5 +183,6 @@ module GenericParameter { >r14 : { (x: any): string; (x: any, y?: any): string; } >foo7(1, a) : { (x: any): string; (x: any, y?: any): string; } >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } +>1 : number >a : { (x: T): string; (x: number): T; } } diff --git a/tests/baselines/reference/genericClassImplementingGenericInterfaceFromAnotherModule.types b/tests/baselines/reference/genericClassImplementingGenericInterfaceFromAnotherModule.types index 337485dee2c..1427ddacff1 100644 --- a/tests/baselines/reference/genericClassImplementingGenericInterfaceFromAnotherModule.types +++ b/tests/baselines/reference/genericClassImplementingGenericInterfaceFromAnotherModule.types @@ -12,6 +12,7 @@ module bar { export class Foo implements foo.IFoo { } >Foo : Foo >T : T +>foo.IFoo : unknown >foo : unknown >IFoo : foo.IFoo >T : T diff --git a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types index 1867d390703..1578b1528ad 100644 --- a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types +++ b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types @@ -179,6 +179,7 @@ module Portal.Controls.Validators { >_validate : (value: TValue) => number >value : TValue >TValue : TValue +>0 : number } } @@ -191,6 +192,9 @@ module PortalFx.ViewModels.Controls.Validators { export class Validator extends Portal.Controls.Validators.Validator { >Validator : Validator >TValue : TValue +>Portal.Controls.Validators.Validator : unknown +>Portal.Controls.Validators : typeof Portal.Controls.Validators +>Portal.Controls : typeof Portal.Controls >Portal : typeof Portal >Controls : typeof Portal.Controls >Validators : typeof Portal.Controls.Validators diff --git a/tests/baselines/reference/genericClassWithStaticFactory.types b/tests/baselines/reference/genericClassWithStaticFactory.types index b0df737ee68..34d0c4aeaae 100644 --- a/tests/baselines/reference/genericClassWithStaticFactory.types +++ b/tests/baselines/reference/genericClassWithStaticFactory.types @@ -111,6 +111,7 @@ module Editor { for (i = 0; !(entry.isHead); i++) { >i = 0 : number >i : number +>0 : number >!(entry.isHead) : boolean >(entry.isHead) : boolean >entry.isHead : boolean @@ -163,6 +164,7 @@ module Editor { } else { return null; +>null : null } } @@ -177,6 +179,7 @@ module Editor { >entry.isHead : boolean >entry : List >isHead : boolean +>false : boolean entry.next = this.next; >entry.next = this.next : List @@ -238,6 +241,7 @@ module Editor { >entry.isHead : boolean >entry : List >isHead : boolean +>false : boolean entry.next = this.next; >entry.next = this.next : List @@ -288,6 +292,7 @@ module Editor { >isHead : boolean return null; +>null : null } else { return this.listFactory.RemoveEntry(this.next); @@ -316,6 +321,7 @@ module Editor { >entry.isHead : boolean >entry : List >isHead : boolean +>false : boolean this.prev.next = entry; >this.prev.next = entry : List @@ -495,6 +501,8 @@ module Editor { >new List(true, null) : List >List : typeof List >T : T +>true : boolean +>null : null entry.prev = entry; >entry.prev = entry : List @@ -529,6 +537,7 @@ module Editor { >new List(false, data) : List >List : typeof List >T : T +>false : boolean >data : T entry.prev = entry; @@ -561,8 +570,10 @@ module Editor { if (entry == null) { >entry == null : boolean >entry : List +>null : null return null; +>null : null } else if (entry.isHead) { >entry.isHead : boolean @@ -571,6 +582,7 @@ module Editor { // Can't remove the head of a list! return null; +>null : null } else { entry.next.prev = entry.prev; diff --git a/tests/baselines/reference/genericCloduleInModule.types b/tests/baselines/reference/genericCloduleInModule.types index 108dc34c2f7..3883df6898c 100644 --- a/tests/baselines/reference/genericCloduleInModule.types +++ b/tests/baselines/reference/genericCloduleInModule.types @@ -17,6 +17,7 @@ module A { export var x = 1; >x : number +>1 : number } } diff --git a/tests/baselines/reference/genericConstraintDeclaration.types b/tests/baselines/reference/genericConstraintDeclaration.types index 126da138d4e..aaa7d1de77a 100644 --- a/tests/baselines/reference/genericConstraintDeclaration.types +++ b/tests/baselines/reference/genericConstraintDeclaration.types @@ -8,6 +8,7 @@ class List{ >T : T >List : List >T : T +>null : null } diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types index eadf43d226a..0b26fbd6d7b 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types @@ -12,6 +12,7 @@ declare module EndGate { interface Number extends EndGate.ICloneable { } >Number : Number +>EndGate.ICloneable : unknown >EndGate : typeof EndGate >ICloneable : EndGate.ICloneable diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types index 80e1a963d5f..3f0516c9fea 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types @@ -12,6 +12,7 @@ module EndGate { interface Number extends EndGate.ICloneable { } >Number : Number +>EndGate.ICloneable : unknown >EndGate : typeof EndGate >ICloneable : EndGate.ICloneable diff --git a/tests/baselines/reference/genericConstructSignatureInInterface.types b/tests/baselines/reference/genericConstructSignatureInInterface.types index 5318edb5bf1..c6653a0d90d 100644 --- a/tests/baselines/reference/genericConstructSignatureInInterface.types +++ b/tests/baselines/reference/genericConstructSignatureInInterface.types @@ -16,4 +16,5 @@ var r = new v(1); >r : any >new v(1) : any >v : C +>1 : number diff --git a/tests/baselines/reference/genericContextualTypingSpecialization.types b/tests/baselines/reference/genericContextualTypingSpecialization.types index 890da96c260..561370a6a32 100644 --- a/tests/baselines/reference/genericContextualTypingSpecialization.types +++ b/tests/baselines/reference/genericContextualTypingSpecialization.types @@ -13,4 +13,5 @@ b.reduce((c, d) => c + d, 0); // should not error on '+' >c + d : number >c : number >d : number +>0 : number diff --git a/tests/baselines/reference/genericFunctions0.types b/tests/baselines/reference/genericFunctions0.types index 045224a7aaa..aac759af092 100644 --- a/tests/baselines/reference/genericFunctions0.types +++ b/tests/baselines/reference/genericFunctions0.types @@ -10,4 +10,5 @@ var x = foo(5); // 'x' should be number >x : number >foo(5) : number >foo : (x: T) => T +>5 : number diff --git a/tests/baselines/reference/genericFunctions1.types b/tests/baselines/reference/genericFunctions1.types index aed264c78e1..602ee6b81a4 100644 --- a/tests/baselines/reference/genericFunctions1.types +++ b/tests/baselines/reference/genericFunctions1.types @@ -10,4 +10,5 @@ var x = foo(5); // 'x' should be number >x : number >foo(5) : number >foo : (x: T) => T +>5 : number diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types b/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types index 74b8b5e6858..3d5257812ae 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types @@ -35,16 +35,22 @@ utils.fold(null); // no error >utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils >fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T +>null : null utils.fold(null, null); // no error >utils.fold(null, null) : {} >utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils >fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T +>null : null +>null : null utils.fold(null, null, null); // no error >utils.fold(null, null, null) : {} >utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T >utils : Utils >fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T +>null : null +>null : null +>null : null diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types b/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types index fbb4780274f..627181e5d05 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types @@ -65,6 +65,7 @@ var r3 = utils.mapReduce(c, (x) => { return 1 }, (y) => { return new Date() }); >c : Collection >(x) => { return 1 } : (x: string) => number >x : string +>1 : number >(y) => { return new Date() } : (y: number) => Date >y : number >new Date() : Date @@ -79,6 +80,7 @@ var r4 = utils.mapReduce(c, (x: string) => { return 1 }, (y: number) => { return >c : Collection >(x: string) => { return 1 } : (x: string) => number >x : string +>1 : number >(y: number) => { return new Date() } : (y: number) => Date >y : number >new Date() : Date @@ -88,6 +90,7 @@ var f1 = (x: string) => { return 1 }; >f1 : (x: string) => number >(x: string) => { return 1 } : (x: string) => number >x : string +>1 : number var f2 = (y: number) => { return new Date() }; >f2 : (y: number) => Date diff --git a/tests/baselines/reference/genericInference1.types b/tests/baselines/reference/genericInference1.types index f83a1dcd361..eeed8aa9f3e 100644 --- a/tests/baselines/reference/genericInference1.types +++ b/tests/baselines/reference/genericInference1.types @@ -3,6 +3,9 @@ >['a', 'b', 'c'].map(x => x.length) : number[] >['a', 'b', 'c'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] >['a', 'b', 'c'] : string[] +>'a' : string +>'b' : string +>'c' : string >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] >x => x.length : (x: string) => number >x : string diff --git a/tests/baselines/reference/genericInference2.types b/tests/baselines/reference/genericInference2.types index 2616c0de2c4..e5c7052b0db 100644 --- a/tests/baselines/reference/genericInference2.types +++ b/tests/baselines/reference/genericInference2.types @@ -41,6 +41,7 @@ >ko.observable : (value: T) => ko.Observable >ko : typeof ko >observable : (value: T) => ko.Observable +>"Bob" : string age: ko.observable(37) >age : ko.Observable @@ -48,6 +49,7 @@ >ko.observable : (value: T) => ko.Observable >ko : typeof ko >observable : (value: T) => ko.Observable +>37 : number }; var x_v = o.name().length; // should be 'number' @@ -72,6 +74,7 @@ >o.name : ko.Observable >o : { name: ko.Observable; age: ko.Observable; } >name : ko.Observable +>"Robert" : string var zz_v = o.name.N; // should be 'number' >zz_v : number diff --git a/tests/baselines/reference/genericInterfaceImplementation.types b/tests/baselines/reference/genericInterfaceImplementation.types index b075864634c..d7ca48c36c0 100644 --- a/tests/baselines/reference/genericInterfaceImplementation.types +++ b/tests/baselines/reference/genericInterfaceImplementation.types @@ -25,6 +25,7 @@ class None implements IOption{ >T : T throw null; +>null : null } flatten() : IOption { diff --git a/tests/baselines/reference/genericMethodOverspecialization.types b/tests/baselines/reference/genericMethodOverspecialization.types index 145a7b33381..0ad302da94e 100644 --- a/tests/baselines/reference/genericMethodOverspecialization.types +++ b/tests/baselines/reference/genericMethodOverspecialization.types @@ -2,6 +2,11 @@ var names = ["list", "table1", "table2", "table3", "summary"]; >names : string[] >["list", "table1", "table2", "table3", "summary"] : string[] +>"list" : string +>"table1" : string +>"table2" : string +>"table3" : string +>"summary" : string interface HTMLElement { >HTMLElement : HTMLElement diff --git a/tests/baselines/reference/genericObjectLitReturnType.types b/tests/baselines/reference/genericObjectLitReturnType.types index 3ecb5706689..6bdc352cbc7 100644 --- a/tests/baselines/reference/genericObjectLitReturnType.types +++ b/tests/baselines/reference/genericObjectLitReturnType.types @@ -23,11 +23,13 @@ var t1 = x.f(5); >x.f : (t: number) => { a: number; } >x : X >f : (t: number) => { a: number; } +>5 : number t1.a = 5; // Should not error: t1 should have type {a: number}, instead has type {a: T} >t1.a = 5 : number >t1.a : number >t1 : { a: number; } >a : number +>5 : number diff --git a/tests/baselines/reference/genericOfACloduleType1.types b/tests/baselines/reference/genericOfACloduleType1.types index afbef2f4180..b6f4c86902f 100644 --- a/tests/baselines/reference/genericOfACloduleType1.types +++ b/tests/baselines/reference/genericOfACloduleType1.types @@ -35,6 +35,7 @@ module M { >g1.bar : (x: C) => C >g1 : G >bar : (x: C) => C +>null : null >foo : () => void } var g2 = new G() // was: error Type reference cannot refer to container 'M.C'. diff --git a/tests/baselines/reference/genericOfACloduleType2.types b/tests/baselines/reference/genericOfACloduleType2.types index 275af8c913b..283518c6e50 100644 --- a/tests/baselines/reference/genericOfACloduleType2.types +++ b/tests/baselines/reference/genericOfACloduleType2.types @@ -35,6 +35,7 @@ module M { >g1.bar : (x: C) => C >g1 : G >bar : (x: C) => C +>null : null >foo : () => void } diff --git a/tests/baselines/reference/genericParameterAssignability1.types b/tests/baselines/reference/genericParameterAssignability1.types index b7888014dea..50917e5db45 100644 --- a/tests/baselines/reference/genericParameterAssignability1.types +++ b/tests/baselines/reference/genericParameterAssignability1.types @@ -5,6 +5,7 @@ function f(x: T): T { return null; } >x : T >T : T >T : T +>null : null var r = (x: T) => x; >r : (x: T) => T diff --git a/tests/baselines/reference/genericPrototypeProperty.types b/tests/baselines/reference/genericPrototypeProperty.types index a25914229b0..447f5e74890 100644 --- a/tests/baselines/reference/genericPrototypeProperty.types +++ b/tests/baselines/reference/genericPrototypeProperty.types @@ -12,6 +12,7 @@ class C { >x : T >T : T >T : T +>null : null } var r = C.prototype; @@ -33,4 +34,5 @@ var r3 = r.foo(null); >r.foo : (x: any) => any >r : C >foo : (x: any) => any +>null : null diff --git a/tests/baselines/reference/genericReversingTypeParameters.types b/tests/baselines/reference/genericReversingTypeParameters.types index a95f6620082..524a2ebba03 100644 --- a/tests/baselines/reference/genericReversingTypeParameters.types +++ b/tests/baselines/reference/genericReversingTypeParameters.types @@ -15,12 +15,14 @@ class BiMap { >key : K >K : K >V : V +>null : null public inverse(): BiMap { return null; } >inverse : () => BiMap >BiMap : BiMap >V : V >K : K +>null : null } var b = new BiMap(); @@ -34,6 +36,7 @@ var r1 = b.get(''); >b.get : (key: string) => number >b : BiMap >get : (key: string) => number +>'' : string var i = b.inverse(); // used to get the type wrong here. >i : BiMap @@ -48,4 +51,5 @@ var r2b = i.get(1); >i.get : (key: number) => string >i : BiMap >get : (key: number) => string +>1 : number diff --git a/tests/baselines/reference/genericReversingTypeParameters2.types b/tests/baselines/reference/genericReversingTypeParameters2.types index 4356280f4d3..28c1f40ce9f 100644 --- a/tests/baselines/reference/genericReversingTypeParameters2.types +++ b/tests/baselines/reference/genericReversingTypeParameters2.types @@ -15,12 +15,14 @@ class BiMap { >key : K >K : K >V : V +>null : null public inverse(): BiMap { return null; } >inverse : () => BiMap >BiMap : BiMap >V : V >K : K +>null : null } var b = new BiMap(); @@ -41,4 +43,5 @@ var r2b = i.get(1); >i.get : (key: number) => string >i : BiMap >get : (key: number) => string +>1 : number diff --git a/tests/baselines/reference/genericSpecializations1.types b/tests/baselines/reference/genericSpecializations1.types index 3b60a3b9987..87f32d86d52 100644 --- a/tests/baselines/reference/genericSpecializations1.types +++ b/tests/baselines/reference/genericSpecializations1.types @@ -18,6 +18,7 @@ class IntFooBad implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string >x : string +>null : null } class StringFoo2 implements IFoo { @@ -27,6 +28,7 @@ class StringFoo2 implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string >x : string +>null : null } class StringFoo3 implements IFoo { @@ -39,4 +41,5 @@ class StringFoo3 implements IFoo { >x : T >T : T >T : T +>null : null } diff --git a/tests/baselines/reference/genericStaticAnyTypeFunction.types b/tests/baselines/reference/genericStaticAnyTypeFunction.types index 9cf511ca0d9..38b3c3708e7 100644 --- a/tests/baselines/reference/genericStaticAnyTypeFunction.types +++ b/tests/baselines/reference/genericStaticAnyTypeFunction.types @@ -16,6 +16,7 @@ class A { } static goo() { return 0; } >goo : () => number +>0 : number static two(source: T): T { >two : (source: T) => T @@ -31,6 +32,7 @@ class A { >one : (source: T, value: number) => T >T : T >source : T +>42 : number } diff --git a/tests/baselines/reference/genericTypeArgumentInference1.types b/tests/baselines/reference/genericTypeArgumentInference1.types index c718ccca620..9d6f725e5e1 100644 --- a/tests/baselines/reference/genericTypeArgumentInference1.types +++ b/tests/baselines/reference/genericTypeArgumentInference1.types @@ -48,6 +48,10 @@ var r = _.all([true, 1, null, 'yes'], _.identity); >_ : Underscore.Static >all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[true, 1, null, 'yes'] : (string | number | boolean)[] +>true : boolean +>1 : number +>null : null +>'yes' : string >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T @@ -59,6 +63,7 @@ var r2 = _.all([true], _.identity); >_ : Underscore.Static >all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[true] : boolean[] +>true : boolean >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T @@ -82,6 +87,7 @@ var r4 = _.all([true], _.identity); >all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >[true] : any[] >true : any +>true : boolean >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T diff --git a/tests/baselines/reference/genericTypeAssertions3.types b/tests/baselines/reference/genericTypeAssertions3.types index 53435145939..9f7facc8d47 100644 --- a/tests/baselines/reference/genericTypeAssertions3.types +++ b/tests/baselines/reference/genericTypeAssertions3.types @@ -9,6 +9,7 @@ var r = < (x: T) => T > ((x) => { return null; }); // bug was 'could not find >((x) => { return null; }) : (x: any) => any >(x) => { return null; } : (x: any) => any >x : any +>null : null var s = < (x: T) => T > ((x: any) => { return null; }); // no error >s : (x: T) => T @@ -20,4 +21,5 @@ var s = < (x: T) => T > ((x: any) => { return null; }); // no error >((x: any) => { return null; }) : (x: any) => any >(x: any) => { return null; } : (x: any) => any >x : any +>null : null diff --git a/tests/baselines/reference/genericTypeParameterEquivalence2.types b/tests/baselines/reference/genericTypeParameterEquivalence2.types index 09e13b12f7b..3b2c533543d 100644 --- a/tests/baselines/reference/genericTypeParameterEquivalence2.types +++ b/tests/baselines/reference/genericTypeParameterEquivalence2.types @@ -30,6 +30,7 @@ function compose(f: (b: B) => C, g: (a:A) => B): (a:A) => C { >g.apply : (thisArg: any, argArray?: any) => any >g : (a: A) => B >apply : (thisArg: any, argArray?: any) => any +>null : null >a : A }; @@ -48,6 +49,7 @@ function forEach(list: A[], f: (a: A, n?: number) => void ): void { for (var i = 0; i < list.length; ++i) { >i : number +>0 : number >i < list.length : boolean >i : number >list.length : number diff --git a/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.types b/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.types index 824ada50b89..c58d56e3a75 100644 --- a/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.types +++ b/tests/baselines/reference/genericWithCallSignatureReturningSpecialization.types @@ -18,4 +18,5 @@ var x: B; x(true); // was error >x(true) : void >x : B +>true : boolean diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types index ef42c1c6029..3e281f6072a 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types @@ -31,4 +31,5 @@ var value: string = lazyArray.array()["test"]; // used to be an error >lazyArray.array : () => { [objectId: string]: string; } >lazyArray : LazyArray >array : () => { [objectId: string]: string; } +>"test" : string diff --git a/tests/baselines/reference/getterSetterNonAccessor.types b/tests/baselines/reference/getterSetterNonAccessor.types index f3e5d549cff..48d9f9c85e0 100644 --- a/tests/baselines/reference/getterSetterNonAccessor.types +++ b/tests/baselines/reference/getterSetterNonAccessor.types @@ -1,6 +1,7 @@ === tests/cases/compiler/getterSetterNonAccessor.ts === function getFunc():any{return 0;} >getFunc : () => any +>0 : number function setFunc(v){} >setFunc : (v: any) => void @@ -12,6 +13,7 @@ Object.defineProperty({}, "0", ({ >Object : ObjectConstructor >defineProperty : (o: any, p: string, attributes: PropertyDescriptor) => any >{} : {} +>"0" : string >({ get: getFunc, set: setFunc, configurable: true }) : PropertyDescriptor >PropertyDescriptor : PropertyDescriptor >({ get: getFunc, set: setFunc, configurable: true }) : { get: () => any; set: (v: any) => void; configurable: boolean; } @@ -27,6 +29,7 @@ Object.defineProperty({}, "0", ({ configurable: true >configurable : boolean +>true : boolean })); diff --git a/tests/baselines/reference/global.types b/tests/baselines/reference/global.types index 86d5dd3c986..f866f062068 100644 --- a/tests/baselines/reference/global.types +++ b/tests/baselines/reference/global.types @@ -15,11 +15,13 @@ module M { var x=10; >x : number +>10 : number M.f(3); >M.f(3) : number >M.f : (y: number) => number >M : typeof M >f : (y: number) => number +>3 : number diff --git a/tests/baselines/reference/globalThisCapture.types b/tests/baselines/reference/globalThisCapture.types index 71bb4e99853..b8ed146d8c4 100644 --- a/tests/baselines/reference/globalThisCapture.types +++ b/tests/baselines/reference/globalThisCapture.types @@ -15,4 +15,5 @@ var parts = []; parts[0]; >parts[0] : any >parts : any[] +>0 : number diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.types b/tests/baselines/reference/heterogeneousArrayLiterals.types index dc4e21d85ee..81fa915ab03 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.types +++ b/tests/baselines/reference/heterogeneousArrayLiterals.types @@ -4,19 +4,27 @@ var a = [1, '']; // {}[] >a : (string | number)[] >[1, ''] : (string | number)[] +>1 : number +>'' : string var b = [1, null]; // number[] >b : number[] >[1, null] : number[] +>1 : number +>null : null var c = [1, '', null]; // {}[] >c : (string | number)[] >[1, '', null] : (string | number)[] +>1 : number +>'' : string +>null : null var d = [{}, 1]; // {}[] >d : {}[] >[{}, 1] : {}[] >{} : {} +>1 : number var e = [{}, Object]; // {}[] >e : {}[] @@ -29,63 +37,83 @@ var f = [[], [1]]; // number[][] >[[], [1]] : number[][] >[] : undefined[] >[1] : number[] +>1 : number var g = [[1], ['']]; // {}[] >g : (string[] | number[])[] >[[1], ['']] : (string[] | number[])[] >[1] : number[] +>1 : number >[''] : string[] +>'' : string var h = [{ foo: 1, bar: '' }, { foo: 2 }]; // {foo: number}[] >h : { foo: number; }[] >[{ foo: 1, bar: '' }, { foo: 2 }] : { foo: number; }[] >{ foo: 1, bar: '' } : { foo: number; bar: string; } >foo : number +>1 : number >bar : string +>'' : string >{ foo: 2 } : { foo: number; } >foo : number +>2 : number var i = [{ foo: 1, bar: '' }, { foo: '' }]; // {}[] >i : ({ foo: number; bar: string; } | { foo: string; })[] >[{ foo: 1, bar: '' }, { foo: '' }] : ({ foo: number; bar: string; } | { foo: string; })[] >{ foo: 1, bar: '' } : { foo: number; bar: string; } >foo : number +>1 : number >bar : string +>'' : string >{ foo: '' } : { foo: string; } >foo : string +>'' : string var j = [() => 1, () => '']; // {}[] >j : ((() => number) | (() => string))[] >[() => 1, () => ''] : ((() => number) | (() => string))[] >() => 1 : () => number +>1 : number >() => '' : () => string +>'' : string var k = [() => 1, () => 1]; // { (): number }[] >k : (() => number)[] >[() => 1, () => 1] : (() => number)[] >() => 1 : () => number +>1 : number >() => 1 : () => number +>1 : number var l = [() => 1, () => null]; // { (): any }[] >l : (() => any)[] >[() => 1, () => null] : (() => any)[] >() => 1 : () => number +>1 : number >() => null : () => any +>null : null var m = [() => 1, () => '', () => null]; // { (): any }[] >m : (() => any)[] >[() => 1, () => '', () => null] : (() => any)[] >() => 1 : () => number +>1 : number >() => '' : () => string +>'' : string >() => null : () => any +>null : null var n = [[() => 1], [() => '']]; // {}[] >n : ((() => number)[] | (() => string)[])[] >[[() => 1], [() => '']] : ((() => number)[] | (() => string)[])[] >[() => 1] : (() => number)[] >() => 1 : () => number +>1 : number >[() => ''] : (() => string)[] >() => '' : () => string +>'' : string class Base { foo: string; } >Base : Base @@ -154,6 +182,7 @@ module Derived { >() => base : () => Base >base : Base >() => 1 : () => number +>1 : number var l = [() => base, () => null]; // { (): any }[] >l : (() => any)[] @@ -161,6 +190,7 @@ module Derived { >() => base : () => Base >base : Base >() => null : () => any +>null : null var m = [() => base, () => derived, () => null]; // { (): any }[] >m : (() => any)[] @@ -170,6 +200,7 @@ module Derived { >() => derived : () => Derived >derived : Derived >() => null : () => any +>null : null var n = [[() => base], [() => derived]]; // { (): Base }[] >n : (() => Base)[][] @@ -220,6 +251,7 @@ module WithContextualType { >b : Derived[] >Derived : Derived >[null] : null[] +>null : null var c: Derived[] = []; >c : Derived[] @@ -255,6 +287,7 @@ function foo(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // {}[] >c : (T | U)[] @@ -266,6 +299,7 @@ function foo(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -283,6 +317,7 @@ function foo(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null } function foo2(t: T, u: U) { @@ -306,6 +341,7 @@ function foo2(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // {}[] >c : (T | U)[] @@ -317,6 +353,7 @@ function foo2(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -334,6 +371,7 @@ function foo2(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null var g = [t, base]; // Base[] >g : Base[] @@ -381,6 +419,7 @@ function foo3(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // {}[] >c : (T | U)[] @@ -392,6 +431,7 @@ function foo3(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -409,6 +449,7 @@ function foo3(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null var g = [t, base]; // Base[] >g : Base[] @@ -456,6 +497,7 @@ function foo4(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // BUG 821629 >c : (T | U)[] @@ -467,6 +509,7 @@ function foo4(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -484,6 +527,7 @@ function foo4(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null var g = [t, base]; // Base[] >g : Base[] diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.types.pull b/tests/baselines/reference/heterogeneousArrayLiterals.types.pull index e35caeed74a..ecfbf75e864 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.types.pull +++ b/tests/baselines/reference/heterogeneousArrayLiterals.types.pull @@ -4,19 +4,27 @@ var a = [1, '']; // {}[] >a : (string | number)[] >[1, ''] : (string | number)[] +>1 : number +>'' : string var b = [1, null]; // number[] >b : number[] >[1, null] : number[] +>1 : number +>null : null var c = [1, '', null]; // {}[] >c : (string | number)[] >[1, '', null] : (string | number)[] +>1 : number +>'' : string +>null : null var d = [{}, 1]; // {}[] >d : {}[] >[{}, 1] : {}[] >{} : {} +>1 : number var e = [{}, Object]; // {}[] >e : {}[] @@ -29,63 +37,83 @@ var f = [[], [1]]; // number[][] >[[], [1]] : number[][] >[] : undefined[] >[1] : number[] +>1 : number var g = [[1], ['']]; // {}[] >g : (number[] | string[])[] >[[1], ['']] : (number[] | string[])[] >[1] : number[] +>1 : number >[''] : string[] +>'' : string var h = [{ foo: 1, bar: '' }, { foo: 2 }]; // {foo: number}[] >h : { foo: number; }[] >[{ foo: 1, bar: '' }, { foo: 2 }] : { foo: number; }[] >{ foo: 1, bar: '' } : { foo: number; bar: string; } >foo : number +>1 : number >bar : string +>'' : string >{ foo: 2 } : { foo: number; } >foo : number +>2 : number var i = [{ foo: 1, bar: '' }, { foo: '' }]; // {}[] >i : ({ foo: number; bar: string; } | { foo: string; })[] >[{ foo: 1, bar: '' }, { foo: '' }] : ({ foo: number; bar: string; } | { foo: string; })[] >{ foo: 1, bar: '' } : { foo: number; bar: string; } >foo : number +>1 : number >bar : string +>'' : string >{ foo: '' } : { foo: string; } >foo : string +>'' : string var j = [() => 1, () => '']; // {}[] >j : ((() => number) | (() => string))[] >[() => 1, () => ''] : ((() => number) | (() => string))[] >() => 1 : () => number +>1 : number >() => '' : () => string +>'' : string var k = [() => 1, () => 1]; // { (): number }[] >k : (() => number)[] >[() => 1, () => 1] : (() => number)[] >() => 1 : () => number +>1 : number >() => 1 : () => number +>1 : number var l = [() => 1, () => null]; // { (): any }[] >l : (() => any)[] >[() => 1, () => null] : (() => any)[] >() => 1 : () => number +>1 : number >() => null : () => any +>null : null var m = [() => 1, () => '', () => null]; // { (): any }[] >m : (() => any)[] >[() => 1, () => '', () => null] : (() => any)[] >() => 1 : () => number +>1 : number >() => '' : () => string +>'' : string >() => null : () => any +>null : null var n = [[() => 1], [() => '']]; // {}[] >n : ((() => number)[] | (() => string)[])[] >[[() => 1], [() => '']] : ((() => number)[] | (() => string)[])[] >[() => 1] : (() => number)[] >() => 1 : () => number +>1 : number >[() => ''] : (() => string)[] >() => '' : () => string +>'' : string class Base { foo: string; } >Base : Base @@ -154,6 +182,7 @@ module Derived { >() => base : () => Base >base : Base >() => 1 : () => number +>1 : number var l = [() => base, () => null]; // { (): any }[] >l : (() => any)[] @@ -161,6 +190,7 @@ module Derived { >() => base : () => Base >base : Base >() => null : () => any +>null : null var m = [() => base, () => derived, () => null]; // { (): any }[] >m : (() => any)[] @@ -170,6 +200,7 @@ module Derived { >() => derived : () => Derived >derived : Derived >() => null : () => any +>null : null var n = [[() => base], [() => derived]]; // { (): Base }[] >n : (() => Base)[][] @@ -220,6 +251,7 @@ module WithContextualType { >b : Derived[] >Derived : Derived >[null] : null[] +>null : null var c: Derived[] = []; >c : Derived[] @@ -255,6 +287,7 @@ function foo(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // {}[] >c : (T | U)[] @@ -266,6 +299,7 @@ function foo(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -283,6 +317,7 @@ function foo(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null } function foo2(t: T, u: U) { @@ -306,6 +341,7 @@ function foo2(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // {}[] >c : (T | U)[] @@ -317,6 +353,7 @@ function foo2(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -334,6 +371,7 @@ function foo2(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null var g = [t, base]; // Base[] >g : Base[] @@ -381,6 +419,7 @@ function foo3(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // {}[] >c : (T | U)[] @@ -392,6 +431,7 @@ function foo3(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -409,6 +449,7 @@ function foo3(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null var g = [t, base]; // Base[] >g : Base[] @@ -456,6 +497,7 @@ function foo4(t: T, u: U) { >b : T[] >[t, null] : T[] >t : T +>null : null var c = [t, u]; // BUG 821629 >c : (T | U)[] @@ -467,6 +509,7 @@ function foo4(t: T, u: U) { >d : (number | T)[] >[t, 1] : (number | T)[] >t : T +>1 : number var e = [() => t, () => u]; // {}[] >e : ((() => T) | (() => U))[] @@ -484,6 +527,7 @@ function foo4(t: T, u: U) { >() => u : () => U >u : U >() => null : () => any +>null : null var g = [t, base]; // Base[] >g : Base[] diff --git a/tests/baselines/reference/hidingCallSignatures.types b/tests/baselines/reference/hidingCallSignatures.types index 90428b8db76..c45cab69d8a 100644 --- a/tests/baselines/reference/hidingCallSignatures.types +++ b/tests/baselines/reference/hidingCallSignatures.types @@ -36,10 +36,12 @@ var d: D; d(""); // number >d("") : number >d : D +>"" : string new d(""); // should be string >new d("") : string >d : D +>"" : string var f: F; >f : F @@ -48,6 +50,7 @@ var f: F; f(""); // string >f("") : string >f : F +>"" : string var e: E; >e : E @@ -56,4 +59,5 @@ var e: E; e(""); // {} >e("") : {} >e : E +>"" : string diff --git a/tests/baselines/reference/hidingConstructSignatures.types b/tests/baselines/reference/hidingConstructSignatures.types index 99781535b5d..0fd9860de25 100644 --- a/tests/baselines/reference/hidingConstructSignatures.types +++ b/tests/baselines/reference/hidingConstructSignatures.types @@ -36,10 +36,12 @@ var d: D; d(""); // string >d("") : string >d : D +>"" : string new d(""); // should be number >new d("") : number >d : D +>"" : string var f: F; >f : F @@ -48,6 +50,7 @@ var f: F; new f(""); // string >new f("") : string >f : F +>"" : string var e: E; >e : E @@ -56,4 +59,5 @@ var e: E; new e(""); // {} >new e("") : {} >e : E +>"" : string diff --git a/tests/baselines/reference/hidingIndexSignatures.types b/tests/baselines/reference/hidingIndexSignatures.types index fe1363d1598..9a6346ace7b 100644 --- a/tests/baselines/reference/hidingIndexSignatures.types +++ b/tests/baselines/reference/hidingIndexSignatures.types @@ -21,6 +21,7 @@ var b: B; b[""]; // Should be number >b[""] : number >b : B +>"" : string var a: A; >a : A @@ -29,4 +30,5 @@ var a: A; a[""]; // Should be {} >a[""] : {} >a : A +>"" : string diff --git a/tests/baselines/reference/ifDoWhileStatements.types b/tests/baselines/reference/ifDoWhileStatements.types index b4a3f7a70af..92a9df6a4dd 100644 --- a/tests/baselines/reference/ifDoWhileStatements.types +++ b/tests/baselines/reference/ifDoWhileStatements.types @@ -48,12 +48,14 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number >x : string +>42 : number function F2(x: number): boolean { return x < 42; } >F2 : (x: number) => boolean >x : number >x < 42 : boolean >x : number +>42 : number module M { >M : typeof M @@ -95,12 +97,22 @@ module N { // literals if (true) { } +>true : boolean + while (true) { } +>true : boolean + do { }while(true) +>true : boolean if (null) { } +>null : null + while (null) { } +>null : null + do { }while(null) +>null : null if (undefined) { } >undefined : undefined @@ -112,20 +124,40 @@ do { }while(undefined) >undefined : undefined if (0.0) { } +>0.0 : number + while (0.0) { } +>0.0 : number + do { }while(0.0) +>0.0 : number if ('a string') { } +>'a string' : string + while ('a string') { } +>'a string' : string + do { }while('a string') +>'a string' : string if ('') { } +>'' : string + while ('') { } +>'' : string + do { }while('') +>'' : string if (/[a-z]/) { } +>/[a-z]/ : RegExp + while (/[a-z]/) { } +>/[a-z]/ : RegExp + do { }while(/[a-z]/) +>/[a-z]/ : RegExp if ([]) { } >[] : undefined[] @@ -138,12 +170,18 @@ do { }while([]) if ([1, 2]) { } >[1, 2] : number[] +>1 : number +>2 : number while ([1, 2]) { } >[1, 2] : number[] +>1 : number +>2 : number do { }while([1, 2]) >[1, 2] : number[] +>1 : number +>2 : number if ({}) { } >{} : {} @@ -157,26 +195,35 @@ do { }while({}) if ({ x: 1, y: 'a' }) { } >{ x: 1, y: 'a' } : { x: number; y: string; } >x : number +>1 : number >y : string +>'a' : string while ({ x: 1, y: 'a' }) { } >{ x: 1, y: 'a' } : { x: number; y: string; } >x : number +>1 : number >y : string +>'a' : string do { }while({ x: 1, y: 'a' }) >{ x: 1, y: 'a' } : { x: number; y: string; } >x : number +>1 : number >y : string +>'a' : string if (() => 43) { } >() => 43 : () => number +>43 : number while (() => 43) { } >() => 43 : () => number +>43 : number do { }while(() => 43) >() => 43 : () => number +>43 : number if (new C()) { } >new C() : C @@ -208,6 +255,7 @@ do { }while(new D()) // references var a = true; >a : boolean +>true : boolean if (a) { } >a : boolean @@ -220,6 +268,7 @@ do { }while(a) var b = null; >b : any +>null : null if (b) { } >b : any @@ -245,6 +294,7 @@ do { }while(c) var d = 0.0; >d : number +>0.0 : number if (d) { } >d : number @@ -257,6 +307,7 @@ do { }while(d) var e = 'a string'; >e : string +>'a string' : string if (e) { } >e : string @@ -269,6 +320,7 @@ do { }while(e) var f = ''; >f : string +>'' : string if (f) { } >f : string @@ -281,6 +333,7 @@ do { }while(f) var g = /[a-z]/ >g : RegExp +>/[a-z]/ : RegExp if (g) { } >g : RegExp @@ -307,6 +360,8 @@ do { }while(h) var i = [1, 2]; >i : number[] >[1, 2] : number[] +>1 : number +>2 : number if (i) { } >i : number[] @@ -334,7 +389,9 @@ var k = { x: 1, y: 'a' }; >k : { x: number; y: string; } >{ x: 1, y: 'a' } : { x: number; y: string; } >x : number +>1 : number >y : string +>'a' : string if (k) { } >k : { x: number; y: string; } @@ -349,6 +406,7 @@ function fn(x?: string): I { return null; } >fn : (x?: string) => I >x : string >I : I +>null : null if (fn()) { } >fn() : I diff --git a/tests/baselines/reference/implicitAnyAnyReturningFunction.types b/tests/baselines/reference/implicitAnyAnyReturningFunction.types index 1f0b81c724f..66f9cf49cb0 100644 --- a/tests/baselines/reference/implicitAnyAnyReturningFunction.types +++ b/tests/baselines/reference/implicitAnyAnyReturningFunction.types @@ -4,6 +4,7 @@ function A() { return ""; >"" : any +>"" : string } function B() { @@ -25,6 +26,7 @@ class C { return ""; >"" : any +>"" : string } public B() { diff --git a/tests/baselines/reference/implicitAnyGenerics.types b/tests/baselines/reference/implicitAnyGenerics.types index 91a231e3f12..e335c958fe9 100644 --- a/tests/baselines/reference/implicitAnyGenerics.types +++ b/tests/baselines/reference/implicitAnyGenerics.types @@ -43,33 +43,39 @@ var d = new D(null); >d : D >new D(null) : D >D : typeof D +>null : null var d2 = new D(1); >d2 : D >new D(1) : D >D : typeof D +>1 : number var d3 = new D(1); >d3 : D >new D(1) : D >D : typeof D +>1 : number var d4 = new D(1); >d4 : D >new D(1) : D >D : typeof D >1 : any +>1 : number var d5: D = new D(null); >d5 : D >D : D >new D(null) : D >D : typeof D +>null : null function foo(): T { return null; }; >foo : () => T >T : T >T : T +>null : null foo() >foo() : {} diff --git a/tests/baselines/reference/implicitAnyInCatch.types b/tests/baselines/reference/implicitAnyInCatch.types index b5a5821eacc..b0fbd4e7f12 100644 --- a/tests/baselines/reference/implicitAnyInCatch.types +++ b/tests/baselines/reference/implicitAnyInCatch.types @@ -9,6 +9,7 @@ try { } catch (error) { >error : any >number : any >-2147024809 : number +>2147024809 : number } for (var key in this) { } >key : any diff --git a/tests/baselines/reference/importAliasIdentifiers.types b/tests/baselines/reference/importAliasIdentifiers.types index 7401c3e7518..c8a9b3ee833 100644 --- a/tests/baselines/reference/importAliasIdentifiers.types +++ b/tests/baselines/reference/importAliasIdentifiers.types @@ -52,7 +52,9 @@ module clodule { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } import clolias = clodule; @@ -81,7 +83,9 @@ function fundule() { return { x: 0, y: 0 }; >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } module fundule { @@ -99,7 +103,9 @@ module fundule { >Point : Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } import funlias = fundule; diff --git a/tests/baselines/reference/importAliasWithDottedName.types b/tests/baselines/reference/importAliasWithDottedName.types index ab316fade5c..24ec5d1b0bb 100644 --- a/tests/baselines/reference/importAliasWithDottedName.types +++ b/tests/baselines/reference/importAliasWithDottedName.types @@ -4,12 +4,14 @@ module M { export var x = 1; >x : number +>1 : number export module N { >N : typeof N export var y = 2; >y : number +>2 : number } } diff --git a/tests/baselines/reference/importAndVariableDeclarationConflict2.types b/tests/baselines/reference/importAndVariableDeclarationConflict2.types index eb4f354a4dc..eafc7be6deb 100644 --- a/tests/baselines/reference/importAndVariableDeclarationConflict2.types +++ b/tests/baselines/reference/importAndVariableDeclarationConflict2.types @@ -4,6 +4,7 @@ module m { export var m = ''; >m : string +>'' : string } import x = m.m; @@ -19,5 +20,6 @@ class C { var x = ''; >x : string +>'' : string } } diff --git a/tests/baselines/reference/importDecl.types b/tests/baselines/reference/importDecl.types index 973729ae050..ca021910c47 100644 --- a/tests/baselines/reference/importDecl.types +++ b/tests/baselines/reference/importDecl.types @@ -171,6 +171,7 @@ export var x: d; export function foo(): d { return null; } >foo : () => d >d : d +>null : null === tests/cases/compiler/importDecl_require1.ts === export class d { @@ -186,6 +187,7 @@ var x: d; export function foo(): d { return null; } >foo : () => d >d : d +>null : null === tests/cases/compiler/importDecl_require2.ts === export class d { @@ -201,6 +203,7 @@ export var x: d; export function foo(): d { return null; } >foo : () => d >d : d +>null : null === tests/cases/compiler/importDecl_require3.ts === export class d { @@ -216,6 +219,7 @@ export var x: d; export function foo(): d { return null; } >foo : () => d >d : d +>null : null === tests/cases/compiler/importDecl_require4.ts === import m4 = require("importDecl_require"); @@ -225,4 +229,5 @@ export function foo2(): m4.d { return null; } >foo2 : () => m4.d >m4 : unknown >d : m4.d +>null : null diff --git a/tests/baselines/reference/importImportOnlyModule.types b/tests/baselines/reference/importImportOnlyModule.types index 741d1b24859..c1275bed511 100644 --- a/tests/baselines/reference/importImportOnlyModule.types +++ b/tests/baselines/reference/importImportOnlyModule.types @@ -12,9 +12,11 @@ export class C1 { m1 = 42; >m1 : number +>42 : number static s1 = true; >s1 : boolean +>true : boolean } === tests/cases/conformance/externalModules/foo_1.ts === @@ -23,4 +25,5 @@ import c1 = require('./foo_0'); // Makes this an external module var answer = 42; // No exports >answer : number +>42 : number diff --git a/tests/baselines/reference/importInTypePosition.types b/tests/baselines/reference/importInTypePosition.types index 163ae1d3a62..6c0e10207eb 100644 --- a/tests/baselines/reference/importInTypePosition.types +++ b/tests/baselines/reference/importInTypePosition.types @@ -13,6 +13,8 @@ module A { >Origin : Point >new Point(0, 0) : Point >Point : typeof Point +>0 : number +>0 : number } // no code gen expected @@ -44,6 +46,8 @@ module C { >p : a.Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } diff --git a/tests/baselines/reference/importStatements.types b/tests/baselines/reference/importStatements.types index 5980a142f34..8076683b405 100644 --- a/tests/baselines/reference/importStatements.types +++ b/tests/baselines/reference/importStatements.types @@ -14,6 +14,8 @@ module A { >Origin : Point >new Point(0, 0) : Point >Point : typeof Point +>0 : number +>0 : number } // no code gen expected @@ -46,7 +48,9 @@ module C { >p : a.Point >{x:0, y:0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } // code gen expected @@ -63,6 +67,8 @@ module D { >a.Point : typeof a.Point >a : typeof a >Point : typeof a.Point +>1 : number +>1 : number } module E { diff --git a/tests/baselines/reference/importUsedInExtendsList1.types b/tests/baselines/reference/importUsedInExtendsList1.types index 623b14e36aa..ef0e29345a0 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.types +++ b/tests/baselines/reference/importUsedInExtendsList1.types @@ -5,6 +5,7 @@ import foo = require('importUsedInExtendsList1_require'); class Sub extends foo.Super { } >Sub : Sub +>foo.Super : unknown >foo : typeof foo >Super : foo.Super diff --git a/tests/baselines/reference/import_reference-exported-alias.types b/tests/baselines/reference/import_reference-exported-alias.types index b935fb16cf2..3f9c34f62dc 100644 --- a/tests/baselines/reference/import_reference-exported-alias.types +++ b/tests/baselines/reference/import_reference-exported-alias.types @@ -34,6 +34,7 @@ module App { >getUserName : () => string return "Bill Gates"; +>"Bill Gates" : string } } } diff --git a/tests/baselines/reference/import_reference-to-type-alias.types b/tests/baselines/reference/import_reference-to-type-alias.types index e1da40b5bb4..53c7dabcd5f 100644 --- a/tests/baselines/reference/import_reference-to-type-alias.types +++ b/tests/baselines/reference/import_reference-to-type-alias.types @@ -32,6 +32,7 @@ export module App { >getUserName : () => string return "Bill Gates"; +>"Bill Gates" : string } } } diff --git a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.types b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.types index 0dfe8ca336b..c232fa41440 100644 --- a/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.types +++ b/tests/baselines/reference/import_unneeded-require-when-referenecing-aliased-type-throug-array.types @@ -12,6 +12,7 @@ var p = testData[0].name; >testData[0].name : string >testData[0] : ITest >testData : ITest[] +>0 : number >name : string === tests/cases/compiler/b.ts === diff --git a/tests/baselines/reference/inOperatorWithFunction.types b/tests/baselines/reference/inOperatorWithFunction.types index 9de7663011d..e85a86632c7 100644 --- a/tests/baselines/reference/inOperatorWithFunction.types +++ b/tests/baselines/reference/inOperatorWithFunction.types @@ -9,5 +9,7 @@ fn("a" in { "a": true }); >fn("a" in { "a": true }) : boolean >fn : (val: boolean) => boolean >"a" in { "a": true } : boolean +>"a" : string >{ "a": true } : { "a": boolean; } +>true : boolean diff --git a/tests/baselines/reference/inOperatorWithValidOperands.types b/tests/baselines/reference/inOperatorWithValidOperands.types index 27ba22055bf..0cca583e683 100644 --- a/tests/baselines/reference/inOperatorWithValidOperands.types +++ b/tests/baselines/reference/inOperatorWithValidOperands.types @@ -31,11 +31,13 @@ var ra3 = a2 in x; var ra4 = '' in x; >ra4 : boolean >'' in x : boolean +>'' : string >x : any var ra5 = 0 in x; >ra5 : boolean >0 in x : boolean +>0 : number >x : any // valid right operands diff --git a/tests/baselines/reference/incrementOperatorWithAnyOtherType.types b/tests/baselines/reference/incrementOperatorWithAnyOtherType.types index 930c87274d0..3643b646ace 100644 --- a/tests/baselines/reference/incrementOperatorWithAnyOtherType.types +++ b/tests/baselines/reference/incrementOperatorWithAnyOtherType.types @@ -10,12 +10,16 @@ var ANY1; var ANY2: any[] = ["", ""]; >ANY2 : any[] >["", ""] : string[] +>"" : string +>"" : string var obj = {x:1,y:null}; >obj : { x: number; y: any; } >{x:1,y:null} : { x: number; y: null; } >x : number +>1 : number >y : null +>null : null class A { >A : A @@ -61,6 +65,7 @@ var ResultIsNumber5 = ++ANY2[0]; >++ANY2[0] : number >ANY2[0] : any >ANY2 : any[] +>0 : number var ResultIsNumber6 = ++obj.x; >ResultIsNumber6 : number @@ -95,6 +100,7 @@ var ResultIsNumber9 = ANY2[0]++; >ANY2[0]++ : number >ANY2[0] : any >ANY2 : any[] +>0 : number var ResultIsNumber10 = obj.x++; >ResultIsNumber10 : number @@ -137,6 +143,7 @@ var ResultIsNumber13 = M.n++; >++ANY2[0] : number >ANY2[0] : any >ANY2 : any[] +>0 : number ++ANY, ++ANY1; >++ANY, ++ANY1 : number @@ -169,6 +176,7 @@ ANY2[0]++; >ANY2[0]++ : number >ANY2[0] : any >ANY2 : any[] +>0 : number ANY++, ANY1++; >ANY++, ANY1++ : number diff --git a/tests/baselines/reference/incrementOperatorWithNumberType.types b/tests/baselines/reference/incrementOperatorWithNumberType.types index ad6ea172ae3..21211a3848c 100644 --- a/tests/baselines/reference/incrementOperatorWithNumberType.types +++ b/tests/baselines/reference/incrementOperatorWithNumberType.types @@ -6,6 +6,8 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number class A { >A : A @@ -70,6 +72,7 @@ var ResultIsNumber7 = NUMBER1[0]++; >NUMBER1[0]++ : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number // miss assignment operators ++NUMBER; @@ -80,6 +83,7 @@ var ResultIsNumber7 = NUMBER1[0]++; >++NUMBER1[0] : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number ++objA.a; >++objA.a : number @@ -111,6 +115,7 @@ NUMBER1[0]++; >NUMBER1[0]++ : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number objA.a++; >objA.a++ : number diff --git a/tests/baselines/reference/indexClassByNumber.types b/tests/baselines/reference/indexClassByNumber.types index c58771d3256..b1fb79f256a 100644 --- a/tests/baselines/reference/indexClassByNumber.types +++ b/tests/baselines/reference/indexClassByNumber.types @@ -13,4 +13,6 @@ f[0] = 4; // Shouldn't be allowed >f[0] = 4 : number >f[0] : any >f : foo +>0 : number +>4 : number diff --git a/tests/baselines/reference/indexIntoEnum.types b/tests/baselines/reference/indexIntoEnum.types index 39849566409..3c0d91cd240 100644 --- a/tests/baselines/reference/indexIntoEnum.types +++ b/tests/baselines/reference/indexIntoEnum.types @@ -9,4 +9,5 @@ module M { >x : string >E[0] : string >E : typeof E +>0 : number } diff --git a/tests/baselines/reference/indexSignaturesInferentialTyping.types b/tests/baselines/reference/indexSignaturesInferentialTyping.types index 9ea5a390498..328dbc18e4f 100644 --- a/tests/baselines/reference/indexSignaturesInferentialTyping.types +++ b/tests/baselines/reference/indexSignaturesInferentialTyping.types @@ -22,6 +22,8 @@ var x1 = foo({ 0: 0, 1: 1 }); // type should be number >foo({ 0: 0, 1: 1 }) : number >foo : (items: { [index: number]: T; }) => T >{ 0: 0, 1: 1 } : { [x: number]: number; 0: number; 1: number; } +>0 : number +>1 : number var x2 = foo({ zero: 0, one: 1 }); >x2 : any @@ -29,13 +31,17 @@ var x2 = foo({ zero: 0, one: 1 }); >foo : (items: { [index: number]: T; }) => T >{ zero: 0, one: 1 } : { [x: number]: undefined; zero: number; one: number; } >zero : number +>0 : number >one : number +>1 : number var x3 = bar({ 0: 0, 1: 1 }); >x3 : number >bar({ 0: 0, 1: 1 }) : number >bar : (items: { [index: string]: T; }) => T >{ 0: 0, 1: 1 } : { [x: string]: number; 0: number; 1: number; } +>0 : number +>1 : number var x4 = bar({ zero: 0, one: 1 }); // type should be number >x4 : number @@ -43,5 +49,7 @@ var x4 = bar({ zero: 0, one: 1 }); // type should be number >bar : (items: { [index: string]: T; }) => T >{ zero: 0, one: 1 } : { [x: string]: number; zero: number; one: number; } >zero : number +>0 : number >one : number +>1 : number diff --git a/tests/baselines/reference/indexer.types b/tests/baselines/reference/indexer.types index 9987fdde0b1..a0142bb9383 100644 --- a/tests/baselines/reference/indexer.types +++ b/tests/baselines/reference/indexer.types @@ -20,12 +20,15 @@ var jq:JQuery={ 0: { id : "a" }, 1: { id : "b" } }; >{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: { id: string; }; 0: { id: string; }; 1: { id: string; }; } >{ id : "a" } : { id: string; } >id : string +>"a" : string >{ id : "b" } : { id: string; } >id : string +>"b" : string jq[0].id; >jq[0].id : string >jq[0] : JQueryElement >jq : JQuery +>0 : number >id : string diff --git a/tests/baselines/reference/indexer3.types b/tests/baselines/reference/indexer3.types index 7f660ab6aa9..8f0582f782a 100644 --- a/tests/baselines/reference/indexer3.types +++ b/tests/baselines/reference/indexer3.types @@ -10,4 +10,5 @@ var r: Date = dateMap["hello"] // result type includes indexer using BCT >Date : Date >dateMap["hello"] : Date >dateMap : { [x: string]: Date; } +>"hello" : string diff --git a/tests/baselines/reference/indexerA.types b/tests/baselines/reference/indexerA.types index 39f7372c839..c6ff81b3a26 100644 --- a/tests/baselines/reference/indexerA.types +++ b/tests/baselines/reference/indexerA.types @@ -20,12 +20,15 @@ var jq:JQuery={ 0: { id : "a" }, 1: { id : "b" } }; >{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: { id: string; }; 0: { id: string; }; 1: { id: string; }; } >{ id : "a" } : { id: string; } >id : string +>"a" : string >{ id : "b" } : { id: string; } >id : string +>"b" : string jq[0].id; >jq[0].id : string >jq[0] : JQueryElement >jq : JQuery +>0 : number >id : string diff --git a/tests/baselines/reference/indexerReturningTypeParameter1.types b/tests/baselines/reference/indexerReturningTypeParameter1.types index a0a70f95331..83028bef93f 100644 --- a/tests/baselines/reference/indexerReturningTypeParameter1.types +++ b/tests/baselines/reference/indexerReturningTypeParameter1.types @@ -29,6 +29,7 @@ class c { >T : T return null; +>null : null } } var a2: c; diff --git a/tests/baselines/reference/indexerWithTuple.types b/tests/baselines/reference/indexerWithTuple.types index 75b89ca6088..4faae2cda29 100644 --- a/tests/baselines/reference/indexerWithTuple.types +++ b/tests/baselines/reference/indexerWithTuple.types @@ -2,41 +2,55 @@ var strNumTuple: [string, number] = ["foo", 10]; >strNumTuple : [string, number] >["foo", 10] : [string, number] +>"foo" : string +>10 : number var numTupleTuple: [number, [string, number]] = [10, ["bar", 20]]; >numTupleTuple : [number, [string, number]] >[10, ["bar", 20]] : [number, [string, number]] +>10 : number >["bar", 20] : [string, number] +>"bar" : string +>20 : number var unionTuple1: [number, string| number] = [10, "foo"]; >unionTuple1 : [number, string | number] >[10, "foo"] : [number, string] +>10 : number +>"foo" : string var unionTuple2: [boolean, string| number] = [true, "foo"]; >unionTuple2 : [boolean, string | number] >[true, "foo"] : [boolean, string] +>true : boolean +>"foo" : string // no error var idx0 = 0; >idx0 : number +>0 : number var idx1 = 1; >idx1 : number +>1 : number var ele10 = strNumTuple[0]; // string >ele10 : string >strNumTuple[0] : string >strNumTuple : [string, number] +>0 : number var ele11 = strNumTuple[1]; // number >ele11 : number >strNumTuple[1] : number >strNumTuple : [string, number] +>1 : number var ele12 = strNumTuple[2]; // string | number >ele12 : string | number >strNumTuple[2] : string | number >strNumTuple : [string, number] +>2 : number var ele13 = strNumTuple[idx0]; // string | number >ele13 : string | number @@ -54,36 +68,43 @@ var ele15 = strNumTuple["0"]; // string >ele15 : string >strNumTuple["0"] : string >strNumTuple : [string, number] +>"0" : string var ele16 = strNumTuple["1"]; // number >ele16 : number >strNumTuple["1"] : number >strNumTuple : [string, number] +>"1" : string var strNumTuple1 = numTupleTuple[1]; //[string, number]; >strNumTuple1 : [string, number] >numTupleTuple[1] : [string, number] >numTupleTuple : [number, [string, number]] +>1 : number var ele17 = numTupleTuple[2]; // number | [string, number] >ele17 : number | [string, number] >numTupleTuple[2] : number | [string, number] >numTupleTuple : [number, [string, number]] +>2 : number var eleUnion10 = unionTuple1[0]; // number >eleUnion10 : number >unionTuple1[0] : number >unionTuple1 : [number, string | number] +>0 : number var eleUnion11 = unionTuple1[1]; // string | number >eleUnion11 : string | number >unionTuple1[1] : string | number >unionTuple1 : [number, string | number] +>1 : number var eleUnion12 = unionTuple1[2]; // string | number >eleUnion12 : string | number >unionTuple1[2] : string | number >unionTuple1 : [number, string | number] +>2 : number var eleUnion13 = unionTuple1[idx0]; // string | number >eleUnion13 : string | number @@ -101,26 +122,31 @@ var eleUnion15 = unionTuple1["0"]; // number >eleUnion15 : number >unionTuple1["0"] : number >unionTuple1 : [number, string | number] +>"0" : string var eleUnion16 = unionTuple1["1"]; // string | number >eleUnion16 : string | number >unionTuple1["1"] : string | number >unionTuple1 : [number, string | number] +>"1" : string var eleUnion20 = unionTuple2[0]; // boolean >eleUnion20 : boolean >unionTuple2[0] : boolean >unionTuple2 : [boolean, string | number] +>0 : number var eleUnion21 = unionTuple2[1]; // string | number >eleUnion21 : string | number >unionTuple2[1] : string | number >unionTuple2 : [boolean, string | number] +>1 : number var eleUnion22 = unionTuple2[2]; // string | number | boolean >eleUnion22 : string | number | boolean >unionTuple2[2] : string | number | boolean >unionTuple2 : [boolean, string | number] +>2 : number var eleUnion23 = unionTuple2[idx0]; // string | number | boolean >eleUnion23 : string | number | boolean @@ -138,9 +164,11 @@ var eleUnion25 = unionTuple2["0"]; // boolean >eleUnion25 : boolean >unionTuple2["0"] : boolean >unionTuple2 : [boolean, string | number] +>"0" : string var eleUnion26 = unionTuple2["1"]; // string | number >eleUnion26 : string | number >unionTuple2["1"] : string | number >unionTuple2 : [boolean, string | number] +>"1" : string diff --git a/tests/baselines/reference/indexersInClassType.types b/tests/baselines/reference/indexersInClassType.types index afc21b9ce8a..8e06bdfbfd3 100644 --- a/tests/baselines/reference/indexersInClassType.types +++ b/tests/baselines/reference/indexersInClassType.types @@ -39,6 +39,7 @@ var r2 = r[1]; >r2 : Date >r[1] : Date >r : C +>1 : number var r3 = r.a >r3 : {} diff --git a/tests/baselines/reference/inferSecondaryParameter.types b/tests/baselines/reference/inferSecondaryParameter.types index e416cface90..34dbb14ea66 100644 --- a/tests/baselines/reference/inferSecondaryParameter.types +++ b/tests/baselines/reference/inferSecondaryParameter.types @@ -23,6 +23,7 @@ b.m("test", function (bug) { >b.m : (test: string, fn: Function) => any >b : Ib >m : (test: string, fn: Function) => any +>"test" : string >function (bug) { var a: number = bug;} : (bug: any) => void >bug : any diff --git a/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types b/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types index 5bf41c64b24..f4d94388f42 100644 --- a/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types +++ b/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types @@ -28,6 +28,11 @@ function i(array: T[], opt?: any[]) { } var a = [1, 2, 3, 4, 5]; >a : number[] >[1, 2, 3, 4, 5] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number f(a); // OK >f(a) : void diff --git a/tests/baselines/reference/inferenceFromParameterlessLambda.types b/tests/baselines/reference/inferenceFromParameterlessLambda.types index 8dbb8c5967c..57747d881f6 100644 --- a/tests/baselines/reference/inferenceFromParameterlessLambda.types +++ b/tests/baselines/reference/inferenceFromParameterlessLambda.types @@ -34,4 +34,5 @@ foo(n => n.length, () => 'hi'); >n : string >length : number >() => 'hi' : () => string +>'hi' : string diff --git a/tests/baselines/reference/inferentialTypingWithFunctionType.types b/tests/baselines/reference/inferentialTypingWithFunctionType.types index 9f1986c49ea..460156c91ea 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionType.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionType.types @@ -22,5 +22,6 @@ var s = map("", identity); >s : string >map("", identity) : string >map : (x: T, f: (s: T) => U) => U +>"" : string >identity : (y: V) => V diff --git a/tests/baselines/reference/inferentialTypingWithFunctionType2.types b/tests/baselines/reference/inferentialTypingWithFunctionType2.types index a97bf2ab36c..6dc4cda3b68 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionType2.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionType2.types @@ -15,6 +15,10 @@ var x = [1, 2, 3].map(identity)[0]; >[1, 2, 3].map(identity) : number[] >[1, 2, 3].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] >identity : (a: A) => A +>0 : number diff --git a/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types b/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types index c411dd00514..a83379b4c73 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types @@ -23,6 +23,7 @@ var s = map("", () => { return { x: identity }; }); >s : string >map("", () => { return { x: identity }; }) : string >map : (x: T, f: () => { x: (s: T) => U; }) => U +>"" : string >() => { return { x: identity }; } : () => { x: (y: string) => string; } >{ x: identity } : { x: (y: V) => V; } >x : (y: V) => V diff --git a/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types b/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types index 115da50176f..5a4decef4dc 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types @@ -33,6 +33,7 @@ s = map("", dottedIdentity.x); >s : string >map("", dottedIdentity.x) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >dottedIdentity.x : (y: V) => V >dottedIdentity : { x: (y: V) => V; } >x : (y: V) => V @@ -43,8 +44,10 @@ s = map("", dottedIdentity['x']); >s : string >map("", dottedIdentity['x']) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >dottedIdentity['x'] : (y: V) => V >dottedIdentity : { x: (y: V) => V; } +>'x' : string // function call s = map("", (() => identity)()); @@ -52,6 +55,7 @@ s = map("", (() => identity)()); >s : string >map("", (() => identity)()) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >(() => identity)() : (y: V) => V >(() => identity) : () => (y: V) => V >() => identity : () => (y: V) => V @@ -73,6 +77,7 @@ s = map("", new ic()); >s : string >map("", new ic()) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >new ic() : (y: V) => V >ic : IdentityConstructor @@ -85,6 +90,7 @@ s = map("", t = identity); >s : string >map("", t = identity) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >t = identity : (y: V) => V >t : any >identity : (y: V) => V @@ -95,6 +101,7 @@ s = map("", identity); >s : string >map("", identity) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >identity : (y: V) => V >identity : (y: V) => V >identity : (y: V) => V @@ -105,6 +112,7 @@ s = map("", (identity)); >s : string >map("", (identity)) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >(identity) : (y: V) => V >identity : (y: V) => V @@ -114,7 +122,9 @@ s = map("", ("", identity)); >s : string >map("", ("", identity)) : string >map : (array: T, func: (x: T) => U) => U +>"" : string >("", identity) : (y: V) => V >"", identity : (y: V) => V +>"" : string >identity : (y: V) => V diff --git a/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types b/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types index 53a9dff0b48..cc9d8790bd4 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types @@ -34,7 +34,11 @@ var result = zipWith([1, 2], ['a', 'b'], pair); >zipWith([1, 2], ['a', 'b'], pair) : { x: number; y: {}; }[] >zipWith : (a: T[], b: S[], f: (x: T) => (y: S) => U) => U[] >[1, 2] : number[] +>1 : number +>2 : number >['a', 'b'] : string[] +>'a' : string +>'b' : string >pair : (x: T) => (y: S) => { x: T; y: S; } var i = result[0].x; // number @@ -42,5 +46,6 @@ var i = result[0].x; // number >result[0].x : number >result[0] : { x: number; y: {}; } >result : { x: number; y: {}; }[] +>0 : number >x : number diff --git a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types index e30d307e943..3f170d1a6ec 100644 --- a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types +++ b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types @@ -6,6 +6,7 @@ class a { >x : () => string return "10"; +>"10" : string } } @@ -17,5 +18,6 @@ class b extends a { >x : () => string return "20"; +>"20" : string } } diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types index 69b2ebb608d..70dd64ce4f6 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types @@ -14,12 +14,14 @@ module N { export class D1 extends M.C1 { } >D1 : D1 +>M.C1 : unknown >M : typeof M >C1 : M.C1 export class D2 extends M.C2 { } >D2 : D2 >T : T +>M.C2 : unknown >M : typeof M >C2 : M.C2 >T : T diff --git a/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types b/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types index ec7b3f5bbf9..22fa0a6660f 100644 --- a/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types +++ b/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types @@ -6,6 +6,7 @@ class a { >x : () => string return "10"; +>"10" : string } } @@ -17,5 +18,6 @@ class b extends a { >x : () => string return "20"; +>"20" : string } } diff --git a/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types b/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types index 842f9ffddf9..a7df20382ec 100644 --- a/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types +++ b/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types @@ -14,5 +14,6 @@ class b extends a { >x : () => string return "20"; +>"20" : string } } diff --git a/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types b/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types index c24c0545c3e..b13fde1189a 100644 --- a/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types +++ b/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types @@ -14,6 +14,7 @@ fn((a, b) => true); >(a, b) => true : (a: any, b: any) => boolean >a : any >b : any +>true : boolean fn(function (a, b) { return true; }) >fn(function (a, b) { return true; }) : void @@ -21,5 +22,6 @@ fn(function (a, b) { return true; }) >function (a, b) { return true; } : (a: any, b: any) => boolean >a : any >b : any +>true : boolean diff --git a/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types b/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types index dcbab74b681..dc8b9b465d8 100644 --- a/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types +++ b/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types @@ -24,7 +24,9 @@ b('foo').charAt(0); >b('foo').charAt : (pos: number) => string >b('foo') : string >b : B +>'foo' : string >charAt : (pos: number) => string +>0 : number interface A { >A : A @@ -92,44 +94,53 @@ var x1: string[] = c('B2'); >x1 : string[] >c('B2') : string[] >c : C +>'B2' : string var x2: number = c('B1'); >x2 : number >c('B1') : number >c : C +>'B1' : string var x3: boolean = c('A2'); >x3 : boolean >c('A2') : boolean >c : C +>'A2' : string var x4: string = c('A1'); >x4 : string >c('A1') : string >c : C +>'A1' : string var x5: void = c('A0'); >x5 : void >c('A0') : void >c : C +>'A0' : string var x6: number[] = c('C1'); >x6 : number[] >c('C1') : number[] >c : C +>'C1' : string var x7: boolean[] = c('C2'); >x7 : boolean[] >c('C2') : boolean[] >c : C +>'C2' : string var x8: string = c('C'); >x8 : string >c('C') : string >c : C +>'C' : string var x9: void = c('generic'); >x9 : void >c('generic') : void >c : C +>'generic' : string diff --git a/tests/baselines/reference/initializePropertiesWithRenamedLet.types b/tests/baselines/reference/initializePropertiesWithRenamedLet.types index 77f16756fdb..5125b20432f 100644 --- a/tests/baselines/reference/initializePropertiesWithRenamedLet.types +++ b/tests/baselines/reference/initializePropertiesWithRenamedLet.types @@ -4,6 +4,8 @@ var x0; >x0 : any if (true) { +>true : boolean + let x0; >x0 : any @@ -25,16 +27,20 @@ var x, y, z; >z : any if (true) { +>true : boolean + let { x: x } = { x: 0 }; >x : unknown >x : number >{ x: 0 } : { x: number; } >x : number +>0 : number let { y } = { y: 0 }; >y : number >{ y: 0 } : { y: number; } >y : number +>0 : number let z; >z : any @@ -47,6 +53,7 @@ if (true) { >z : any >{ z: 0 } : { z: number; } >z : number +>0 : number ({ z } = { z: 0 }); >({ z } = { z: 0 }) : { z: number; } @@ -55,4 +62,5 @@ if (true) { >z : any >{ z: 0 } : { z: number; } >z : number +>0 : number } diff --git a/tests/baselines/reference/initializersWidened.types b/tests/baselines/reference/initializersWidened.types index f09d43115c5..15705589246 100644 --- a/tests/baselines/reference/initializersWidened.types +++ b/tests/baselines/reference/initializersWidened.types @@ -3,6 +3,7 @@ var x = null; >x : any +>null : null var y = undefined; >y : any diff --git a/tests/baselines/reference/innerAliases2.types b/tests/baselines/reference/innerAliases2.types index ee8c18f93b4..b9504d7adca 100644 --- a/tests/baselines/reference/innerAliases2.types +++ b/tests/baselines/reference/innerAliases2.types @@ -22,6 +22,7 @@ module consumer { >g : provider.UsefulClass >provider : unknown >UsefulClass : provider.UsefulClass +>null : null function use():provider.UsefulClass { >use : () => provider.UsefulClass diff --git a/tests/baselines/reference/innerFunc.types b/tests/baselines/reference/innerFunc.types index 8ca9e9d0a0b..48d98ae42e1 100644 --- a/tests/baselines/reference/innerFunc.types +++ b/tests/baselines/reference/innerFunc.types @@ -4,6 +4,7 @@ function salt() { function pepper() { return 5;} >pepper : () => number +>5 : number return pepper(); >pepper() : number @@ -18,6 +19,7 @@ module M { function oxygen() { return 6; }; >oxygen : () => number +>6 : number return oxygen(); >oxygen() : number diff --git a/tests/baselines/reference/innerOverloads.types b/tests/baselines/reference/innerOverloads.types index 7168f6161f3..68af57b3bea 100644 --- a/tests/baselines/reference/innerOverloads.types +++ b/tests/baselines/reference/innerOverloads.types @@ -19,6 +19,7 @@ function outer() { return inner(0); >inner(0) : any >inner : { (x: number): any; (x: string): any; } +>0 : number } var x = outer(); // should work diff --git a/tests/baselines/reference/instanceAndStaticDeclarations1.types b/tests/baselines/reference/instanceAndStaticDeclarations1.types index c80cf78e37a..9d6ba692735 100644 --- a/tests/baselines/reference/instanceAndStaticDeclarations1.types +++ b/tests/baselines/reference/instanceAndStaticDeclarations1.types @@ -50,6 +50,8 @@ class Point { >origin : Point >new Point(0, 0) : Point >Point : typeof Point +>0 : number +>0 : number static distance(p1: Point, p2: Point) { return p1.distance(p2); } >distance : (p1: Point, p2: Point) => number diff --git a/tests/baselines/reference/instanceMemberInitialization.types b/tests/baselines/reference/instanceMemberInitialization.types index 5e9d7df3706..4d65c62aa49 100644 --- a/tests/baselines/reference/instanceMemberInitialization.types +++ b/tests/baselines/reference/instanceMemberInitialization.types @@ -4,6 +4,7 @@ class C { x = 1; >x : number +>1 : number } var c = new C(); @@ -16,6 +17,7 @@ c.x = 3; >c.x : number >c : C >x : number +>3 : number var c2 = new C(); >c2 : C diff --git a/tests/baselines/reference/instanceofOperatorWithRHSIsSubtypeOfFunction.types b/tests/baselines/reference/instanceofOperatorWithRHSIsSubtypeOfFunction.types index 2bcf91bb1ab..256f26f8fc9 100644 --- a/tests/baselines/reference/instanceofOperatorWithRHSIsSubtypeOfFunction.types +++ b/tests/baselines/reference/instanceofOperatorWithRHSIsSubtypeOfFunction.types @@ -48,6 +48,7 @@ var r5 = x instanceof null; >r5 : boolean >x instanceof null : boolean >x : any +>null : null var r6 = x instanceof undefined; >r6 : boolean diff --git a/tests/baselines/reference/instantiatedModule.types b/tests/baselines/reference/instantiatedModule.types index b3f4dc0d5a1..dff5931c7e5 100644 --- a/tests/baselines/reference/instantiatedModule.types +++ b/tests/baselines/reference/instantiatedModule.types @@ -11,6 +11,7 @@ module M { export var Point = 1; >Point : number +>1 : number } // primary expression @@ -68,7 +69,9 @@ module M2 { return { x: 0, y: 0 }; >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } } } @@ -84,6 +87,7 @@ var m2 = M2; // static side of the class var a2: typeof M2.Point; >a2 : typeof M2.Point +>M2.Point : typeof M2.Point >M2 : typeof M2 >Point : typeof M2.Point @@ -151,6 +155,7 @@ var m3 = M3; var a3: typeof M3.Color; >a3 : typeof M3.Color +>M3.Color : typeof M3.Color >M3 : typeof M3 >Color : typeof M3.Color diff --git a/tests/baselines/reference/instantiatedReturnTypeContravariance.types b/tests/baselines/reference/instantiatedReturnTypeContravariance.types index 8b7cb7b609e..1de1b8b7151 100644 --- a/tests/baselines/reference/instantiatedReturnTypeContravariance.types +++ b/tests/baselines/reference/instantiatedReturnTypeContravariance.types @@ -20,6 +20,7 @@ foo(): B { >B : B return null; +>null : null } @@ -34,6 +35,7 @@ foo(): B { >B : B return null; +>null : null } diff --git a/tests/baselines/reference/interMixingModulesInterfaces0.types b/tests/baselines/reference/interMixingModulesInterfaces0.types index 977b02e15e8..d98f287a517 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces0.types +++ b/tests/baselines/reference/interMixingModulesInterfaces0.types @@ -10,6 +10,7 @@ module A { >B : B return null; +>null : null } } diff --git a/tests/baselines/reference/interMixingModulesInterfaces1.types b/tests/baselines/reference/interMixingModulesInterfaces1.types index c94cc80e5bf..db08d543b42 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces1.types +++ b/tests/baselines/reference/interMixingModulesInterfaces1.types @@ -20,6 +20,7 @@ module A { >B : B return null; +>null : null } } } diff --git a/tests/baselines/reference/interMixingModulesInterfaces2.types b/tests/baselines/reference/interMixingModulesInterfaces2.types index ff21c25358b..2e71dc39363 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces2.types +++ b/tests/baselines/reference/interMixingModulesInterfaces2.types @@ -20,6 +20,7 @@ module A { >B : B return null; +>null : null } } } @@ -28,4 +29,5 @@ var x: A.B = null; >x : A.B >A : unknown >B : A.B +>null : null diff --git a/tests/baselines/reference/interMixingModulesInterfaces3.types b/tests/baselines/reference/interMixingModulesInterfaces3.types index 123d609c365..da1763a4f38 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces3.types +++ b/tests/baselines/reference/interMixingModulesInterfaces3.types @@ -10,6 +10,7 @@ module A { >B : B return null; +>null : null } } @@ -28,4 +29,5 @@ var x: A.B = null; >x : A.B >A : unknown >B : A.B +>null : null diff --git a/tests/baselines/reference/interMixingModulesInterfaces4.types b/tests/baselines/reference/interMixingModulesInterfaces4.types index e4e9bf385ac..456f7fc2202 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces4.types +++ b/tests/baselines/reference/interMixingModulesInterfaces4.types @@ -9,6 +9,7 @@ module A { >createB : () => number return null; +>null : null } } diff --git a/tests/baselines/reference/interMixingModulesInterfaces5.types b/tests/baselines/reference/interMixingModulesInterfaces5.types index 199b37b16eb..977ecc39668 100644 --- a/tests/baselines/reference/interMixingModulesInterfaces5.types +++ b/tests/baselines/reference/interMixingModulesInterfaces5.types @@ -19,6 +19,7 @@ module A { >createB : () => number return null; +>null : null } } } diff --git a/tests/baselines/reference/interface0.types b/tests/baselines/reference/interface0.types index ecbd2d212ed..8fd04eea83c 100644 --- a/tests/baselines/reference/interface0.types +++ b/tests/baselines/reference/interface0.types @@ -13,4 +13,5 @@ var y: Generic = { x: 3 }; >Generic : Generic >{ x: 3 } : { x: number; } >x : number +>3 : number diff --git a/tests/baselines/reference/interfaceContextualType.types b/tests/baselines/reference/interfaceContextualType.types index 3078ecfdfa4..4b932a71538 100644 --- a/tests/baselines/reference/interfaceContextualType.types +++ b/tests/baselines/reference/interfaceContextualType.types @@ -39,8 +39,10 @@ class Bug { >this.values : IMap >this : Bug >values : IMap +>'comments' : string >{ italic: true } : { italic: boolean; } >italic : boolean +>true : boolean } shouldBeOK() { >shouldBeOK : () => void @@ -56,6 +58,7 @@ class Bug { >comments : { italic: boolean; } >{ italic: true } : { italic: boolean; } >italic : boolean +>true : boolean }; } diff --git a/tests/baselines/reference/interfaceSubtyping.types b/tests/baselines/reference/interfaceSubtyping.types index d9b31a50df9..26a900a56b2 100644 --- a/tests/baselines/reference/interfaceSubtyping.types +++ b/tests/baselines/reference/interfaceSubtyping.types @@ -14,5 +14,6 @@ class Camera implements iface{ } foo() { return "s"; } >foo : () => string +>"s" : string } diff --git a/tests/baselines/reference/interfaceWithOverloadedCallAndConstructSignatures.types b/tests/baselines/reference/interfaceWithOverloadedCallAndConstructSignatures.types index 1172f10a3dd..1110992fd52 100644 --- a/tests/baselines/reference/interfaceWithOverloadedCallAndConstructSignatures.types +++ b/tests/baselines/reference/interfaceWithOverloadedCallAndConstructSignatures.types @@ -25,6 +25,7 @@ var r2 = f(''); >r2 : number >f('') : number >f : Foo +>'' : string var r3 = new f(); >r3 : any @@ -35,4 +36,5 @@ var r4 = new f(''); >r4 : Object >new f('') : Object >f : Foo +>'' : string diff --git a/tests/baselines/reference/interfaceWithPropertyOfEveryType.types b/tests/baselines/reference/interfaceWithPropertyOfEveryType.types index 21d4359b6fb..7428ee73aa1 100644 --- a/tests/baselines/reference/interfaceWithPropertyOfEveryType.types +++ b/tests/baselines/reference/interfaceWithPropertyOfEveryType.types @@ -11,6 +11,7 @@ module M { export var y = 1; >y : number +>1 : number } enum E { A } >E : E @@ -83,12 +84,15 @@ var a: Foo = { a: 1, >a : number +>1 : number b: '', >b : string +>'' : string c: true, >c : boolean +>true : boolean d: {}, >d : {} @@ -96,10 +100,12 @@ var a: Foo = { e: null , >e : null +>null : null f: [1], >f : number[] >[1] : number[] +>1 : number g: {}, >g : {} @@ -109,6 +115,7 @@ var a: Foo = { >h : (x: number) => number >(x: number) => 1 : (x: number) => number >x : number +>1 : number i: (x: T) => x, >i : (x: T) => T @@ -122,6 +129,7 @@ var a: Foo = { >j : Foo >null : Foo >Foo : Foo +>null : null k: new C(), >k : C diff --git a/tests/baselines/reference/interfaceWithSpecializedCallAndConstructSignatures.types b/tests/baselines/reference/interfaceWithSpecializedCallAndConstructSignatures.types index e9bc0cd2889..971b5e56907 100644 --- a/tests/baselines/reference/interfaceWithSpecializedCallAndConstructSignatures.types +++ b/tests/baselines/reference/interfaceWithSpecializedCallAndConstructSignatures.types @@ -24,19 +24,23 @@ var r = f('a'); >r : number >f('a') : number >f : Foo +>'a' : string var r2 = f('A'); >r2 : any >f('A') : any >f : Foo +>'A' : string var r3 = new f('a'); >r3 : any >new f('a') : any >f : Foo +>'a' : string var r4 = new f('A'); >r4 : Object >new f('A') : Object >f : Foo +>'A' : string diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types index 3f6f5845fda..58afd2071fe 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types @@ -37,6 +37,7 @@ export module m2 { >cProp.foo : (a: number) => number >cProp : c >foo : (a: number) => number +>10 : number } } diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types index 4f916d5689c..43f612d3f44 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types @@ -37,5 +37,6 @@ export module m2 { >cProp.foo : (a: number) => number >cProp : c >foo : (a: number) => number +>10 : number } } diff --git a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types index 6a25f03c2e9..3d72c04aad6 100644 --- a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types +++ b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types @@ -31,4 +31,5 @@ var cReturnVal = cProp.foo(10); >cProp.foo : (a: number) => number >cProp : xc >foo : (a: number) => number +>10 : number diff --git a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types index 4e086f86054..f816fdce7af 100644 --- a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types @@ -31,4 +31,5 @@ var cReturnVal = cProp.foo(10); >cProp.foo : (a: number) => number >cProp : xc >foo : (a: number) => number +>10 : number diff --git a/tests/baselines/reference/internalAliasFunction.types b/tests/baselines/reference/internalAliasFunction.types index ed297ce1b4e..d67535c76f7 100644 --- a/tests/baselines/reference/internalAliasFunction.types +++ b/tests/baselines/reference/internalAliasFunction.types @@ -23,6 +23,7 @@ module c { >bVal : number >b(10) : number >b : (x: number) => number +>10 : number export var bVal2 = b; >bVal2 : (x: number) => number diff --git a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types index b3140e7b09a..928d8530228 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types @@ -23,6 +23,7 @@ export module c { >bVal : number >b(10) : number >b : (x: number) => number +>10 : number export var bVal2 = b; >bVal2 : (x: number) => number diff --git a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types index c78b5040495..630be11c71e 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types @@ -23,6 +23,7 @@ export module c { >bVal : number >b(10) : number >b : (x: number) => number +>10 : number export var bVal2 = b; >bVal2 : (x: number) => number diff --git a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types index 365f0edeb27..c1e9f9af3d7 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types @@ -20,6 +20,7 @@ export var bVal = b(10); >bVal : number >b(10) : number >b : (x: number) => number +>10 : number export var bVal2 = b; >bVal2 : (x: number) => number diff --git a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types index c2f06c66f76..bca35e33dec 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types @@ -20,6 +20,7 @@ export var bVal = b(10); >bVal : number >b(10) : number >b : (x: number) => number +>10 : number export var bVal2 = b; >bVal2 : (x: number) => number diff --git a/tests/baselines/reference/internalAliasVar.types b/tests/baselines/reference/internalAliasVar.types index d284b064d83..59da851b569 100644 --- a/tests/baselines/reference/internalAliasVar.types +++ b/tests/baselines/reference/internalAliasVar.types @@ -4,6 +4,7 @@ module a { export var x = 10; >x : number +>10 : number } module c { diff --git a/tests/baselines/reference/internalAliasVarInsideLocalModuleWithExport.types b/tests/baselines/reference/internalAliasVarInsideLocalModuleWithExport.types index b8d94c9ebbd..995c24bc382 100644 --- a/tests/baselines/reference/internalAliasVarInsideLocalModuleWithExport.types +++ b/tests/baselines/reference/internalAliasVarInsideLocalModuleWithExport.types @@ -4,6 +4,7 @@ export module a { export var x = 10; >x : number +>10 : number } export module c { diff --git a/tests/baselines/reference/internalAliasVarInsideLocalModuleWithoutExport.types b/tests/baselines/reference/internalAliasVarInsideLocalModuleWithoutExport.types index c9e2897befb..5e322f8483c 100644 --- a/tests/baselines/reference/internalAliasVarInsideLocalModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasVarInsideLocalModuleWithoutExport.types @@ -4,6 +4,7 @@ export module a { export var x = 10; >x : number +>10 : number } export module c { diff --git a/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithExport.types b/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithExport.types index 22335c7d8c0..199de9cae51 100644 --- a/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithExport.types +++ b/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithExport.types @@ -4,6 +4,7 @@ export module a { export var x = 10; >x : number +>10 : number } export import b = a.x; diff --git a/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithoutExport.types b/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithoutExport.types index 1474735c62d..d7a7309ccb4 100644 --- a/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasVarInsideTopLevelModuleWithoutExport.types @@ -4,6 +4,7 @@ export module a { export var x = 10; >x : number +>10 : number } import b = a.x; diff --git a/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.types b/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.types index 3ec8770f17c..3af988485f8 100644 --- a/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.types +++ b/tests/baselines/reference/internalImportInstantiatedModuleMergedWithClassNotReferencingInstanceNoConflict.types @@ -14,6 +14,7 @@ module A { export var a = 10; >a : number +>10 : number } module B { diff --git a/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.types b/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.types index 0bff332846a..587306c305f 100644 --- a/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.types +++ b/tests/baselines/reference/internalImportUnInstantiatedModuleNotReferencingInstanceNoConflict.types @@ -12,6 +12,7 @@ module B { var A = 1; >A : number +>1 : number import Y = A; >Y : unknown diff --git a/tests/baselines/reference/invalidSplice.types b/tests/baselines/reference/invalidSplice.types index ab4ad85d61f..1e3b42ff551 100644 --- a/tests/baselines/reference/invalidSplice.types +++ b/tests/baselines/reference/invalidSplice.types @@ -5,4 +5,8 @@ var arr = [].splice(0,3,4,5); >[].splice : { (start: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; } >[] : undefined[] >splice : { (start: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; } +>0 : number +>3 : number +>4 : number +>5 : number diff --git a/tests/baselines/reference/invalidSwitchBreakStatement.types b/tests/baselines/reference/invalidSwitchBreakStatement.types index a17a2a7dee2..3544da72489 100644 --- a/tests/baselines/reference/invalidSwitchBreakStatement.types +++ b/tests/baselines/reference/invalidSwitchBreakStatement.types @@ -1,9 +1,12 @@ === tests/cases/conformance/statements/breakStatements/invalidSwitchBreakStatement.ts === // break is not allowed in a switch statement -No type information for this code. -No type information for this code.switch (12) { -No type information for this code. case 5: -No type information for this code. break; -No type information for this code.} -No type information for this code. -No type information for this code. \ No newline at end of file + +switch (12) { +>12 : number + + case 5: +>5 : number + + break; +} + diff --git a/tests/baselines/reference/invalidUndefinedValues.types b/tests/baselines/reference/invalidUndefinedValues.types index 3f17deede37..b88c2021618 100644 --- a/tests/baselines/reference/invalidUndefinedValues.types +++ b/tests/baselines/reference/invalidUndefinedValues.types @@ -6,14 +6,17 @@ var x: typeof undefined; x = 1; >x = 1 : number >x : any +>1 : number x = ''; >x = '' : string >x : any +>'' : string x = true; >x = true : boolean >x : any +>true : boolean var a: void; >a : void @@ -26,6 +29,7 @@ x = a; x = null; >x = null : null >x : any +>null : null class C { foo: string } >C : C @@ -61,6 +65,7 @@ x = c; module M { export var x = 1; } >M : typeof M >x : number +>1 : number x = M; >x = M : typeof M diff --git a/tests/baselines/reference/ipromise2.types b/tests/baselines/reference/ipromise2.types index 72c7b44f146..b1865b721a5 100644 --- a/tests/baselines/reference/ipromise2.types +++ b/tests/baselines/reference/ipromise2.types @@ -112,6 +112,8 @@ var p2 = p.then(function (s) { >s : string return 34; +>34 : number + } ); diff --git a/tests/baselines/reference/ipromise4.types b/tests/baselines/reference/ipromise4.types index 0ae6c35f1fd..cfe231dddf2 100644 --- a/tests/baselines/reference/ipromise4.types +++ b/tests/baselines/reference/ipromise4.types @@ -97,6 +97,7 @@ var p: Windows.Foundation.IPromise = null; >Windows : unknown >Foundation : unknown >IPromise : Windows.Foundation.IPromise +>null : null p.then(function (x) { } ); // should not error >p.then(function (x) { } ) : Windows.Foundation.IPromise @@ -115,6 +116,7 @@ p.then(function (x) { return "hello"; } ).then(function (x) { return x } ); // s >then : { (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >function (x) { return "hello"; } : (x: number) => string >x : number +>"hello" : string >then : { (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } >function (x) { return x } : (x: string) => string >x : string diff --git a/tests/baselines/reference/isLiteral1.types b/tests/baselines/reference/isLiteral1.types index f26eab098b4..7ef84568f86 100644 --- a/tests/baselines/reference/isLiteral1.types +++ b/tests/baselines/reference/isLiteral1.types @@ -1,4 +1,5 @@ === tests/cases/compiler/isLiteral1.ts === var x: number = 02343; >x : number +>02343 : number diff --git a/tests/baselines/reference/isLiteral2.types b/tests/baselines/reference/isLiteral2.types index 32c1b29f13e..ab62993fab6 100644 --- a/tests/baselines/reference/isLiteral2.types +++ b/tests/baselines/reference/isLiteral2.types @@ -1,4 +1,5 @@ === tests/cases/compiler/isLiteral2.ts === var x: number = 02343 >x : number +>02343 : number diff --git a/tests/baselines/reference/iterableArrayPattern1.types b/tests/baselines/reference/iterableArrayPattern1.types index 8be8521c684..2cfd2354f31 100644 --- a/tests/baselines/reference/iterableArrayPattern1.types +++ b/tests/baselines/reference/iterableArrayPattern1.types @@ -21,6 +21,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern11.types b/tests/baselines/reference/iterableArrayPattern11.types index 2b6f1d67336..3118e748d6f 100644 --- a/tests/baselines/reference/iterableArrayPattern11.types +++ b/tests/baselines/reference/iterableArrayPattern11.types @@ -37,6 +37,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern12.types b/tests/baselines/reference/iterableArrayPattern12.types index a415539b91c..b32c2ff7dc8 100644 --- a/tests/baselines/reference/iterableArrayPattern12.types +++ b/tests/baselines/reference/iterableArrayPattern12.types @@ -37,6 +37,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index dbfbf9a1ebc..556a871f5a8 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -35,6 +35,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern14.types b/tests/baselines/reference/iterableArrayPattern14.types index 3f73f2973d1..110e185cea8 100644 --- a/tests/baselines/reference/iterableArrayPattern14.types +++ b/tests/baselines/reference/iterableArrayPattern14.types @@ -35,6 +35,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern15.types b/tests/baselines/reference/iterableArrayPattern15.types index de548a91c26..6475c2c30de 100644 --- a/tests/baselines/reference/iterableArrayPattern15.types +++ b/tests/baselines/reference/iterableArrayPattern15.types @@ -37,6 +37,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern2.types b/tests/baselines/reference/iterableArrayPattern2.types index 819516dfe05..bd58cb86b79 100644 --- a/tests/baselines/reference/iterableArrayPattern2.types +++ b/tests/baselines/reference/iterableArrayPattern2.types @@ -21,6 +21,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern20.types b/tests/baselines/reference/iterableArrayPattern20.types index 055dfa95859..b7bd26377a9 100644 --- a/tests/baselines/reference/iterableArrayPattern20.types +++ b/tests/baselines/reference/iterableArrayPattern20.types @@ -43,6 +43,7 @@ class FooArrayIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern27.types b/tests/baselines/reference/iterableArrayPattern27.types index 72d13ee0e00..d6f87590326 100644 --- a/tests/baselines/reference/iterableArrayPattern27.types +++ b/tests/baselines/reference/iterableArrayPattern27.types @@ -14,5 +14,9 @@ takeFirstTwoEntries(...new Map([["", 0], ["hello", 1]])); >Map : MapConstructor >[["", 0], ["hello", 1]] : [string, number][] >["", 0] : [string, number] +>"" : string +>0 : number >["hello", 1] : [string, number] +>"hello" : string +>1 : number diff --git a/tests/baselines/reference/iterableArrayPattern3.types b/tests/baselines/reference/iterableArrayPattern3.types index 291eed9723a..fed5c7f07d3 100644 --- a/tests/baselines/reference/iterableArrayPattern3.types +++ b/tests/baselines/reference/iterableArrayPattern3.types @@ -38,6 +38,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern30.types b/tests/baselines/reference/iterableArrayPattern30.types index 998da11d651..d27db2e7544 100644 --- a/tests/baselines/reference/iterableArrayPattern30.types +++ b/tests/baselines/reference/iterableArrayPattern30.types @@ -8,5 +8,9 @@ const [[k1, v1], [k2, v2]] = new Map([["", true], ["hello", true]]) >Map : MapConstructor >[["", true], ["hello", true]] : [string, boolean][] >["", true] : [string, boolean] +>"" : string +>true : boolean >["hello", true] : [string, boolean] +>"hello" : string +>true : boolean diff --git a/tests/baselines/reference/iterableArrayPattern4.types b/tests/baselines/reference/iterableArrayPattern4.types index 531b2aa8275..8f05a454b53 100644 --- a/tests/baselines/reference/iterableArrayPattern4.types +++ b/tests/baselines/reference/iterableArrayPattern4.types @@ -39,6 +39,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iterableArrayPattern9.types b/tests/baselines/reference/iterableArrayPattern9.types index 67d4bab1a83..03cfa31b621 100644 --- a/tests/baselines/reference/iterableArrayPattern9.types +++ b/tests/baselines/reference/iterableArrayPattern9.types @@ -31,6 +31,7 @@ class FooIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInArray.types b/tests/baselines/reference/iteratorSpreadInArray.types index 13b1a458eb9..2c4a1d207ef 100644 --- a/tests/baselines/reference/iteratorSpreadInArray.types +++ b/tests/baselines/reference/iteratorSpreadInArray.types @@ -22,6 +22,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInArray2.types b/tests/baselines/reference/iteratorSpreadInArray2.types index 3cb27445f57..a59c2cf6c67 100644 --- a/tests/baselines/reference/iteratorSpreadInArray2.types +++ b/tests/baselines/reference/iteratorSpreadInArray2.types @@ -25,6 +25,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } @@ -50,9 +51,11 @@ class NumberIterator { value: 0, >value : number +>0 : number done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInArray3.types b/tests/baselines/reference/iteratorSpreadInArray3.types index e5c25daabc7..0374f28b6b9 100644 --- a/tests/baselines/reference/iteratorSpreadInArray3.types +++ b/tests/baselines/reference/iteratorSpreadInArray3.types @@ -4,6 +4,8 @@ var array = [...[0, 1], ...new SymbolIterator]; >[...[0, 1], ...new SymbolIterator] : (number | symbol)[] >...[0, 1] : number >[0, 1] : number[] +>0 : number +>1 : number >...new SymbolIterator : symbol >new SymbolIterator : SymbolIterator >SymbolIterator : typeof SymbolIterator @@ -24,6 +26,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInArray4.types b/tests/baselines/reference/iteratorSpreadInArray4.types index 790fc9db1ba..d9a304421ba 100644 --- a/tests/baselines/reference/iteratorSpreadInArray4.types +++ b/tests/baselines/reference/iteratorSpreadInArray4.types @@ -2,6 +2,8 @@ var array = [0, 1, ...new SymbolIterator]; >array : (number | symbol)[] >[0, 1, ...new SymbolIterator] : (number | symbol)[] +>0 : number +>1 : number >...new SymbolIterator : symbol >new SymbolIterator : SymbolIterator >SymbolIterator : typeof SymbolIterator @@ -22,6 +24,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInArray7.types b/tests/baselines/reference/iteratorSpreadInArray7.types index c58d01f098b..f207a56f3d5 100644 --- a/tests/baselines/reference/iteratorSpreadInArray7.types +++ b/tests/baselines/reference/iteratorSpreadInArray7.types @@ -28,6 +28,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInCall11.types b/tests/baselines/reference/iteratorSpreadInCall11.types index a37fc6e2232..edce8b10355 100644 --- a/tests/baselines/reference/iteratorSpreadInCall11.types +++ b/tests/baselines/reference/iteratorSpreadInCall11.types @@ -13,6 +13,7 @@ function foo(...s: T[]) { return s[0] } >T : T >s[0] : T >s : T[] +>0 : number class SymbolIterator { >SymbolIterator : SymbolIterator @@ -30,6 +31,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInCall12.types b/tests/baselines/reference/iteratorSpreadInCall12.types index 78ce973a532..fcc4bbc3d45 100644 --- a/tests/baselines/reference/iteratorSpreadInCall12.types +++ b/tests/baselines/reference/iteratorSpreadInCall12.types @@ -38,6 +38,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } @@ -63,9 +64,11 @@ class StringIterator { value: "", >value : string +>"" : string done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInCall3.types b/tests/baselines/reference/iteratorSpreadInCall3.types index 07eb149ba31..b566c3866ff 100644 --- a/tests/baselines/reference/iteratorSpreadInCall3.types +++ b/tests/baselines/reference/iteratorSpreadInCall3.types @@ -26,6 +26,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/iteratorSpreadInCall5.types b/tests/baselines/reference/iteratorSpreadInCall5.types index 6e924a1ef42..2401a41cca8 100644 --- a/tests/baselines/reference/iteratorSpreadInCall5.types +++ b/tests/baselines/reference/iteratorSpreadInCall5.types @@ -29,6 +29,7 @@ class SymbolIterator { done: false >done : boolean +>false : boolean }; } @@ -54,9 +55,11 @@ class StringIterator { value: "", >value : string +>"" : string done: false >done : boolean +>false : boolean }; } diff --git a/tests/baselines/reference/keywordField.types b/tests/baselines/reference/keywordField.types index a5c465ae39c..8bc977edd74 100644 --- a/tests/baselines/reference/keywordField.types +++ b/tests/baselines/reference/keywordField.types @@ -8,11 +8,13 @@ obj.if = 1; >obj.if : any >obj : any >if : any +>1 : number var a = { if: "test" } >a : { if: string; } >{ if: "test" } : { if: string; } >if : string +>"test" : string var n = a.if >n : string @@ -24,4 +26,5 @@ var q = a["if"]; >q : string >a["if"] : string >a : { if: string; } +>"if" : string diff --git a/tests/baselines/reference/lambdaASIEmit.types b/tests/baselines/reference/lambdaASIEmit.types index b72a805cd12..8ea881c4cd5 100644 --- a/tests/baselines/reference/lambdaASIEmit.types +++ b/tests/baselines/reference/lambdaASIEmit.types @@ -13,4 +13,5 @@ Foo(() => // do something 127); +>127 : number diff --git a/tests/baselines/reference/lambdaExpression.types b/tests/baselines/reference/lambdaExpression.types index d550781ebf7..714cd851d63 100644 --- a/tests/baselines/reference/lambdaExpression.types +++ b/tests/baselines/reference/lambdaExpression.types @@ -1,14 +1,18 @@ === tests/cases/compiler/lambdaExpression.ts === () => 0; // Needs to be wrapped in parens to be a valid expression (not declaration) >() => 0 : () => number +>0 : number var y = 0; >y : number +>0 : number (()=>0); >(()=>0) : () => number >()=>0 : () => number +>0 : number var x = 0; >x : number +>0 : number diff --git a/tests/baselines/reference/letAsIdentifier.types b/tests/baselines/reference/letAsIdentifier.types index 95fe2b11ac9..36c190a92e4 100644 --- a/tests/baselines/reference/letAsIdentifier.types +++ b/tests/baselines/reference/letAsIdentifier.types @@ -2,13 +2,16 @@ var let = 10; >let : number +>10 : number var a = 10; >a : number +>10 : number let = 30; >let = 30 : number >let : number +>30 : number let >let : number diff --git a/tests/baselines/reference/letConstMatchingParameterNames.types b/tests/baselines/reference/letConstMatchingParameterNames.types index 66fccc637df..2e29dff289b 100644 --- a/tests/baselines/reference/letConstMatchingParameterNames.types +++ b/tests/baselines/reference/letConstMatchingParameterNames.types @@ -1,9 +1,11 @@ === tests/cases/compiler/letConstMatchingParameterNames.ts === let parent = true; >parent : boolean +>true : boolean const parent2 = true; >parent2 : boolean +>true : boolean declare function use(a: any); >use : (a: any) => any @@ -14,9 +16,11 @@ function a() { let parent = 1; >parent : number +>1 : number const parent2 = 2; >parent2 : number +>2 : number function b(parent: string, parent2: number) { >b : (parent: string, parent2: number) => void diff --git a/tests/baselines/reference/letDeclarations-access.types b/tests/baselines/reference/letDeclarations-access.types index f26d07ca5f8..673fc97f80b 100644 --- a/tests/baselines/reference/letDeclarations-access.types +++ b/tests/baselines/reference/letDeclarations-access.types @@ -2,56 +2,69 @@ let x = 0 >x : number +>0 : number // No errors x = 1; >x = 1 : number >x : number +>1 : number x += 2; >x += 2 : number >x : number +>2 : number x -= 3; >x -= 3 : number >x : number +>3 : number x *= 4; >x *= 4 : number >x : number +>4 : number x /= 5; >x /= 5 : number >x : number +>5 : number x %= 6; >x %= 6 : number >x : number +>6 : number x <<= 7; >x <<= 7 : number >x : number +>7 : number x >>= 8; >x >>= 8 : number >x : number +>8 : number x >>>= 9; >x >>>= 9 : number >x : number +>9 : number x &= 10; >x &= 10 : number >x : number +>10 : number x |= 11; >x |= 11 : number >x : number +>11 : number x ^= 12; >x ^= 12 : number >x : number +>12 : number x++; >x++ : number @@ -73,6 +86,7 @@ var a = x + 1; >a : number >x + 1 : number >x : number +>1 : number function f(v: number) { } >f : (v: number) => void diff --git a/tests/baselines/reference/letDeclarations-es5-1.types b/tests/baselines/reference/letDeclarations-es5-1.types index fb45d521bd3..b088677cd0a 100644 --- a/tests/baselines/reference/letDeclarations-es5-1.types +++ b/tests/baselines/reference/letDeclarations-es5-1.types @@ -13,12 +13,17 @@ let l7 = false; >l7 : boolean +>false : boolean let l8: number = 23; >l8 : number +>23 : number let l9 = 0, l10 :string = "", l11 = null; >l9 : number +>0 : number >l10 : string +>"" : string >l11 : any +>null : null diff --git a/tests/baselines/reference/letDeclarations-es5.types b/tests/baselines/reference/letDeclarations-es5.types index 0d6e9928868..005e0b26155 100644 --- a/tests/baselines/reference/letDeclarations-es5.types +++ b/tests/baselines/reference/letDeclarations-es5.types @@ -14,14 +14,19 @@ let l3, l4, l5 :string, l6; let l7 = false; >l7 : boolean +>false : boolean let l8: number = 23; >l8 : number +>23 : number let l9 = 0, l10 :string = "", l11 = null; >l9 : number +>0 : number >l10 : string +>"" : string >l11 : any +>null : null for(let l11 in {}) { } >l11 : any @@ -29,8 +34,10 @@ for(let l11 in {}) { } for(let l12 = 0; l12 < 9; l12++) { } >l12 : number +>0 : number >l12 < 9 : boolean >l12 : number +>9 : number >l12++ : number >l12 : number diff --git a/tests/baselines/reference/letDeclarations.types b/tests/baselines/reference/letDeclarations.types index aa47a7f0006..55be4326b19 100644 --- a/tests/baselines/reference/letDeclarations.types +++ b/tests/baselines/reference/letDeclarations.types @@ -14,14 +14,19 @@ let l3, l4, l5 :string, l6; let l7 = false; >l7 : boolean +>false : boolean let l8: number = 23; >l8 : number +>23 : number let l9 = 0, l10 :string = "", l11 = null; >l9 : number +>0 : number >l10 : string +>"" : string >l11 : any +>null : null for(let l11 in {}) { } >l11 : any @@ -29,8 +34,10 @@ for(let l11 in {}) { } for(let l12 = 0; l12 < 9; l12++) { } >l12 : number +>0 : number >l12 < 9 : boolean >l12 : number +>9 : number >l12++ : number >l12 : number diff --git a/tests/baselines/reference/letDeclarations2.types b/tests/baselines/reference/letDeclarations2.types index 2fa08b6d940..eeb66838a6a 100644 --- a/tests/baselines/reference/letDeclarations2.types +++ b/tests/baselines/reference/letDeclarations2.types @@ -5,7 +5,9 @@ module M { let l1 = "s"; >l1 : string +>"s" : string export let l2 = 0; >l2 : number +>0 : number } diff --git a/tests/baselines/reference/letInNonStrictMode.types b/tests/baselines/reference/letInNonStrictMode.types index 4f2cbe4a703..0dc2d00e83d 100644 --- a/tests/baselines/reference/letInNonStrictMode.types +++ b/tests/baselines/reference/letInNonStrictMode.types @@ -2,10 +2,12 @@ let [x] = [1]; >x : number >[1] : [number] +>1 : number let {a: y} = {a: 1}; >a : unknown >y : number >{a: 1} : { a: number; } >a : number +>1 : number diff --git a/tests/baselines/reference/library_ArraySlice.types b/tests/baselines/reference/library_ArraySlice.types index 378724c74e4..b92d9254390 100644 --- a/tests/baselines/reference/library_ArraySlice.types +++ b/tests/baselines/reference/library_ArraySlice.types @@ -15,6 +15,7 @@ Array.prototype.slice(0); >Array : ArrayConstructor >prototype : any[] >slice : (start?: number, end?: number) => any[] +>0 : number Array.prototype.slice(0, 1); >Array.prototype.slice(0, 1) : any[] @@ -23,4 +24,6 @@ Array.prototype.slice(0, 1); >Array : ArrayConstructor >prototype : any[] >slice : (start?: number, end?: number) => any[] +>0 : number +>1 : number diff --git a/tests/baselines/reference/library_DatePrototypeProperties.types b/tests/baselines/reference/library_DatePrototypeProperties.types index 35dcea318be..79aad91245b 100644 --- a/tests/baselines/reference/library_DatePrototypeProperties.types +++ b/tests/baselines/reference/library_DatePrototypeProperties.types @@ -215,6 +215,7 @@ Date.prototype.setTime(0); >Date : DateConstructor >prototype : Date >setTime : (time: number) => number +>0 : number Date.prototype.setMilliseconds(0); >Date.prototype.setMilliseconds(0) : number @@ -223,6 +224,7 @@ Date.prototype.setMilliseconds(0); >Date : DateConstructor >prototype : Date >setMilliseconds : (ms: number) => number +>0 : number Date.prototype.setUTCMilliseconds(0); >Date.prototype.setUTCMilliseconds(0) : number @@ -231,6 +233,7 @@ Date.prototype.setUTCMilliseconds(0); >Date : DateConstructor >prototype : Date >setUTCMilliseconds : (ms: number) => number +>0 : number Date.prototype.setSeconds(0); >Date.prototype.setSeconds(0) : number @@ -239,6 +242,7 @@ Date.prototype.setSeconds(0); >Date : DateConstructor >prototype : Date >setSeconds : (sec: number, ms?: number) => number +>0 : number Date.prototype.setUTCSeconds(0); >Date.prototype.setUTCSeconds(0) : number @@ -247,6 +251,7 @@ Date.prototype.setUTCSeconds(0); >Date : DateConstructor >prototype : Date >setUTCSeconds : (sec: number, ms?: number) => number +>0 : number Date.prototype.setMinutes(0); >Date.prototype.setMinutes(0) : number @@ -255,6 +260,7 @@ Date.prototype.setMinutes(0); >Date : DateConstructor >prototype : Date >setMinutes : (min: number, sec?: number, ms?: number) => number +>0 : number Date.prototype.setUTCMinutes(0); >Date.prototype.setUTCMinutes(0) : number @@ -263,6 +269,7 @@ Date.prototype.setUTCMinutes(0); >Date : DateConstructor >prototype : Date >setUTCMinutes : (min: number, sec?: number, ms?: number) => number +>0 : number Date.prototype.setHours(0); >Date.prototype.setHours(0) : number @@ -271,6 +278,7 @@ Date.prototype.setHours(0); >Date : DateConstructor >prototype : Date >setHours : (hours: number, min?: number, sec?: number, ms?: number) => number +>0 : number Date.prototype.setUTCHours(0); >Date.prototype.setUTCHours(0) : number @@ -279,6 +287,7 @@ Date.prototype.setUTCHours(0); >Date : DateConstructor >prototype : Date >setUTCHours : (hours: number, min?: number, sec?: number, ms?: number) => number +>0 : number Date.prototype.setDate(0); >Date.prototype.setDate(0) : number @@ -287,6 +296,7 @@ Date.prototype.setDate(0); >Date : DateConstructor >prototype : Date >setDate : (date: number) => number +>0 : number Date.prototype.setUTCDate(0); >Date.prototype.setUTCDate(0) : number @@ -295,6 +305,7 @@ Date.prototype.setUTCDate(0); >Date : DateConstructor >prototype : Date >setUTCDate : (date: number) => number +>0 : number Date.prototype.setMonth(0); >Date.prototype.setMonth(0) : number @@ -303,6 +314,7 @@ Date.prototype.setMonth(0); >Date : DateConstructor >prototype : Date >setMonth : (month: number, date?: number) => number +>0 : number Date.prototype.setUTCMonth(0); >Date.prototype.setUTCMonth(0) : number @@ -311,6 +323,7 @@ Date.prototype.setUTCMonth(0); >Date : DateConstructor >prototype : Date >setUTCMonth : (month: number, date?: number) => number +>0 : number Date.prototype.setFullYear(0); >Date.prototype.setFullYear(0) : number @@ -319,6 +332,7 @@ Date.prototype.setFullYear(0); >Date : DateConstructor >prototype : Date >setFullYear : (year: number, month?: number, date?: number) => number +>0 : number Date.prototype.setUTCFullYear(0); >Date.prototype.setUTCFullYear(0) : number @@ -327,6 +341,7 @@ Date.prototype.setUTCFullYear(0); >Date : DateConstructor >prototype : Date >setUTCFullYear : (year: number, month?: number, date?: number) => number +>0 : number Date.prototype.toUTCString(); >Date.prototype.toUTCString() : string @@ -351,4 +366,5 @@ Date.prototype.toJSON(null); >Date : DateConstructor >prototype : Date >toJSON : (key?: any) => string +>null : null diff --git a/tests/baselines/reference/library_ObjectPrototypeProperties.types b/tests/baselines/reference/library_ObjectPrototypeProperties.types index c848ccbe512..616a9da633b 100644 --- a/tests/baselines/reference/library_ObjectPrototypeProperties.types +++ b/tests/baselines/reference/library_ObjectPrototypeProperties.types @@ -39,6 +39,7 @@ Object.prototype.hasOwnProperty("string"); >Object : ObjectConstructor >prototype : Object >hasOwnProperty : (v: string) => boolean +>"string" : string Object.prototype.isPrototypeOf(Object); >Object.prototype.isPrototypeOf(Object) : boolean @@ -56,4 +57,5 @@ Object.prototype.propertyIsEnumerable("string"); >Object : ObjectConstructor >prototype : Object >propertyIsEnumerable : (v: string) => boolean +>"string" : string diff --git a/tests/baselines/reference/library_RegExpExecArraySlice.types b/tests/baselines/reference/library_RegExpExecArraySlice.types index ba5c3ccfb21..b4673adb988 100644 --- a/tests/baselines/reference/library_RegExpExecArraySlice.types +++ b/tests/baselines/reference/library_RegExpExecArraySlice.types @@ -15,10 +15,13 @@ regExpExecArrayValue.slice(0); >regExpExecArrayValue.slice : (start?: number, end?: number) => string[] >regExpExecArrayValue : RegExpExecArray >slice : (start?: number, end?: number) => string[] +>0 : number regExpExecArrayValue.slice(0,1); >regExpExecArrayValue.slice(0,1) : string[] >regExpExecArrayValue.slice : (start?: number, end?: number) => string[] >regExpExecArrayValue : RegExpExecArray >slice : (start?: number, end?: number) => string[] +>0 : number +>1 : number diff --git a/tests/baselines/reference/library_StringSlice.types b/tests/baselines/reference/library_StringSlice.types index c40c4d744e0..09b2a0b3995 100644 --- a/tests/baselines/reference/library_StringSlice.types +++ b/tests/baselines/reference/library_StringSlice.types @@ -15,6 +15,7 @@ String.prototype.slice(0); >String : StringConstructor >prototype : String >slice : (start?: number, end?: number) => string +>0 : number String.prototype.slice(0,1); >String.prototype.slice(0,1) : string @@ -23,4 +24,6 @@ String.prototype.slice(0,1); >String : StringConstructor >prototype : String >slice : (start?: number, end?: number) => string +>0 : number +>1 : number diff --git a/tests/baselines/reference/listFailure.types b/tests/baselines/reference/listFailure.types index de3c33bbfad..05c3cb5dfad 100644 --- a/tests/baselines/reference/listFailure.types +++ b/tests/baselines/reference/listFailure.types @@ -60,6 +60,7 @@ module Editor { >U : U return null; +>null : null } export function ListMakeEntry(data: U): List { @@ -71,6 +72,7 @@ module Editor { >U : U return null; +>null : null } class List { diff --git a/tests/baselines/reference/literals1.types b/tests/baselines/reference/literals1.types index f1d6736fdca..69e50c22f4a 100644 --- a/tests/baselines/reference/literals1.types +++ b/tests/baselines/reference/literals1.types @@ -1,43 +1,57 @@ === tests/cases/compiler/literals1.ts === var a = 42; >a : number +>42 : number var b = 0xFA34; >b : number +>0xFA34 : number var c = 0.1715; >c : number +>0.1715 : number var d = 3.14E5; >d : number +>3.14E5 : number var e = 8.14e-5; >e : number +>8.14e-5 : number var f = true; >f : boolean +>true : boolean var g = false; >g : boolean +>false : boolean var h = ""; >h : string +>"" : string var i = "hi"; >i : string +>"hi" : string var j = ''; >j : string +>'' : string var k = 'q\tq'; >k : string +>'q\tq' : string var m = /q/; >m : RegExp +>/q/ : RegExp var n = /\d+/g; >n : RegExp +>/\d+/g : RegExp var o = /[3-5]+/i; >o : RegExp +>/[3-5]+/i : RegExp diff --git a/tests/baselines/reference/logicalAndOperatorWithEveryType.types b/tests/baselines/reference/logicalAndOperatorWithEveryType.types index 54f04926e98..bd913e94da5 100644 --- a/tests/baselines/reference/logicalAndOperatorWithEveryType.types +++ b/tests/baselines/reference/logicalAndOperatorWithEveryType.types @@ -84,6 +84,7 @@ var ra8 = a8 && a1; var ra9 = null && a1; >ra9 : any >null && a1 : any +>null : null >a1 : any var ra10 = undefined && a1; @@ -143,6 +144,7 @@ var rb8 = a8 && a2; var rb9 = null && a2; >rb9 : boolean >null && a2 : boolean +>null : null >a2 : boolean var rb10 = undefined && a2; @@ -202,6 +204,7 @@ var rc8 = a8 && a3; var rc9 = null && a3; >rc9 : number >null && a3 : number +>null : null >a3 : number var rc10 = undefined && a3; @@ -261,6 +264,7 @@ var rd8 = a8 && a4; var rd9 = null && a4; >rd9 : string >null && a4 : string +>null : null >a4 : string var rd10 = undefined && a4; @@ -320,6 +324,7 @@ var re8 = a8 && a5; var re9 = null && a5; >re9 : void >null && a5 : void +>null : null >a5 : void var re10 = undefined && a5; @@ -379,6 +384,7 @@ var rf8 = a8 && a6; var rf9 = null && a6; >rf9 : E >null && a6 : E +>null : null >a6 : E var rf10 = undefined && a6; @@ -438,6 +444,7 @@ var rg8 = a8 && a7; var rg9 = null && a7; >rg9 : {} >null && a7 : {} +>null : null >a7 : {} var rg10 = undefined && a7; @@ -497,6 +504,7 @@ var rh8 = a8 && a8; var rh9 = null && a8; >rh9 : string[] >null && a8 : string[] +>null : null >a8 : string[] var rh10 = undefined && a8; @@ -509,50 +517,61 @@ var ri1 = a1 && null; >ri1 : any >a1 && null : null >a1 : any +>null : null var ri2 = a2 && null; >ri2 : any >a2 && null : null >a2 : boolean +>null : null var ri3 = a3 && null; >ri3 : any >a3 && null : null >a3 : number +>null : null var ri4 = a4 && null; >ri4 : any >a4 && null : null >a4 : string +>null : null var ri5 = a5 && null; >ri5 : any >a5 && null : null >a5 : void +>null : null var ri6 = a6 && null; >ri6 : any >a6 && null : null >a6 : E +>null : null var ri7 = a7 && null; >ri7 : any >a7 && null : null >a7 : {} +>null : null var ri8 = a8 && null; >ri8 : any >a8 && null : null >a8 : string[] +>null : null var ri9 = null && null; >ri9 : any >null && null : null +>null : null +>null : null var ri10 = undefined && null; >ri10 : any >undefined && null : null >undefined : undefined +>null : null var rj1 = a1 && undefined; >rj1 : any @@ -605,6 +624,7 @@ var rj8 = a8 && undefined; var rj9 = null && undefined; >rj9 : any >null && undefined : undefined +>null : null >undefined : undefined var rj10 = undefined && undefined; diff --git a/tests/baselines/reference/logicalNotOperatorWithBooleanType.types b/tests/baselines/reference/logicalNotOperatorWithBooleanType.types index e232ae2af80..b8aa6feac4c 100644 --- a/tests/baselines/reference/logicalNotOperatorWithBooleanType.types +++ b/tests/baselines/reference/logicalNotOperatorWithBooleanType.types @@ -5,6 +5,7 @@ var BOOLEAN: boolean; function foo(): boolean { return true; } >foo : () => boolean +>true : boolean class A { >A : A @@ -14,6 +15,7 @@ class A { static foo() { return false; } >foo : () => boolean +>false : boolean } module M { >M : typeof M @@ -37,13 +39,16 @@ var ResultIsBoolean1 = !BOOLEAN; var ResultIsBoolean2 = !true; >ResultIsBoolean2 : boolean >!true : boolean +>true : boolean var ResultIsBoolean3 = !{ x: true, y: false }; >ResultIsBoolean3 : boolean >!{ x: true, y: false } : boolean >{ x: true, y: false } : { x: boolean; y: boolean; } >x : boolean +>true : boolean >y : boolean +>false : boolean // boolean type expressions var ResultIsBoolean4 = !objA.a; @@ -84,6 +89,7 @@ var ResultIsBoolean = !!BOOLEAN; // miss assignment operators !true; >!true : boolean +>true : boolean !BOOLEAN; >!BOOLEAN : boolean @@ -97,6 +103,8 @@ var ResultIsBoolean = !!BOOLEAN; !true, false; >!true, false : boolean >!true : boolean +>true : boolean +>false : boolean !objA.a; >!objA.a : boolean diff --git a/tests/baselines/reference/logicalNotOperatorWithEnumType.types b/tests/baselines/reference/logicalNotOperatorWithEnumType.types index f3c9d98c95b..5d57916ceaa 100644 --- a/tests/baselines/reference/logicalNotOperatorWithEnumType.types +++ b/tests/baselines/reference/logicalNotOperatorWithEnumType.types @@ -22,6 +22,7 @@ var ResultIsBoolean2 = !ENUM["B"]; >!ENUM["B"] : boolean >ENUM["B"] : ENUM >ENUM : typeof ENUM +>"B" : string var ResultIsBoolean3 = !(ENUM.B + ENUM["C"]); >ResultIsBoolean3 : boolean @@ -33,6 +34,7 @@ var ResultIsBoolean3 = !(ENUM.B + ENUM["C"]); >B : ENUM >ENUM["C"] : ENUM >ENUM : typeof ENUM +>"C" : string // multiple ! operators var ResultIsBoolean4 = !!ENUM; @@ -50,6 +52,7 @@ var ResultIsBoolean5 = !!!(ENUM["B"] + ENUM.C); >ENUM["B"] + ENUM.C : number >ENUM["B"] : ENUM >ENUM : typeof ENUM +>"B" : string >ENUM.C : ENUM >ENUM : typeof ENUM >C : ENUM diff --git a/tests/baselines/reference/logicalNotOperatorWithNumberType.types b/tests/baselines/reference/logicalNotOperatorWithNumberType.types index 4bcc8a14041..6b7ce5b6088 100644 --- a/tests/baselines/reference/logicalNotOperatorWithNumberType.types +++ b/tests/baselines/reference/logicalNotOperatorWithNumberType.types @@ -6,9 +6,12 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number function foo(): number { return 1; } >foo : () => number +>1 : number class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return 1; } >foo : () => number +>1 : number } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsBoolean2 = !NUMBER1; var ResultIsBoolean3 = !1; >ResultIsBoolean3 : boolean >!1 : boolean +>1 : number var ResultIsBoolean4 = !{ x: 1, y: 2}; >ResultIsBoolean4 : boolean >!{ x: 1, y: 2} : boolean >{ x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number var ResultIsBoolean5 = !{ x: 1, y: (n: number) => { return n; } }; >ResultIsBoolean5 : boolean >!{ x: 1, y: (n: number) => { return n; } } : boolean >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } >x : number +>1 : number >y : (n: number) => number >(n: number) => { return n; } : (n: number) => number >n : number @@ -84,6 +92,7 @@ var ResultIsBoolean8 = !NUMBER1[0]; >!NUMBER1[0] : boolean >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number var ResultIsBoolean9 = !foo(); >ResultIsBoolean9 : boolean @@ -127,6 +136,7 @@ var ResultIsBoolean13 = !!!(NUMBER + NUMBER); // miss assignment operators !1; >!1 : boolean +>1 : number !NUMBER; >!NUMBER : boolean diff --git a/tests/baselines/reference/logicalNotOperatorWithStringType.types b/tests/baselines/reference/logicalNotOperatorWithStringType.types index 2decb1ade18..5ca820ea6d0 100644 --- a/tests/baselines/reference/logicalNotOperatorWithStringType.types +++ b/tests/baselines/reference/logicalNotOperatorWithStringType.types @@ -6,9 +6,12 @@ var STRING: string; var STRING1: string[] = ["", "abc"]; >STRING1 : string[] >["", "abc"] : string[] +>"" : string +>"abc" : string function foo(): string { return "abc"; } >foo : () => string +>"abc" : string class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return ""; } >foo : () => string +>"" : string } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsBoolean2 = !STRING1; var ResultIsBoolean3 = !""; >ResultIsBoolean3 : boolean >!"" : boolean +>"" : string var ResultIsBoolean4 = !{ x: "", y: "" }; >ResultIsBoolean4 : boolean >!{ x: "", y: "" } : boolean >{ x: "", y: "" } : { x: string; y: string; } >x : string +>"" : string >y : string +>"" : string var ResultIsBoolean5 = !{ x: "", y: (s: string) => { return s; } }; >ResultIsBoolean5 : boolean >!{ x: "", y: (s: string) => { return s; } } : boolean >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } >x : string +>"" : string >y : (s: string) => string >(s: string) => { return s; } : (s: string) => string >s : string @@ -84,6 +92,7 @@ var ResultIsBoolean8 = !STRING1[0]; >!STRING1[0] : boolean >STRING1[0] : string >STRING1 : string[] +>0 : number var ResultIsBoolean9 = !foo(); >ResultIsBoolean9 : boolean @@ -114,6 +123,7 @@ var ResultIsBoolean12 = !STRING.charAt(0); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number // multiple ! operator var ResultIsBoolean13 = !!STRING; @@ -135,6 +145,7 @@ var ResultIsBoolean14 = !!!(STRING + STRING); // miss assignment operators !""; >!"" : boolean +>"" : string !STRING; >!STRING : boolean diff --git a/tests/baselines/reference/logicalOrExpressionIsContextuallyTyped.types b/tests/baselines/reference/logicalOrExpressionIsContextuallyTyped.types index 95c9643c29a..52315226bb6 100644 --- a/tests/baselines/reference/logicalOrExpressionIsContextuallyTyped.types +++ b/tests/baselines/reference/logicalOrExpressionIsContextuallyTyped.types @@ -10,8 +10,12 @@ var r: { a: string } = { a: '', b: 123 } || { a: '', b: true }; >{ a: '', b: 123 } || { a: '', b: true } : { a: string; b: number; } | { a: string; b: boolean; } >{ a: '', b: 123 } : { a: string; b: number; } >a : string +>'' : string >b : number +>123 : number >{ a: '', b: true } : { a: string; b: boolean; } >a : string +>'' : string >b : boolean +>true : boolean diff --git a/tests/baselines/reference/logicalOrOperatorWithEveryType.types b/tests/baselines/reference/logicalOrOperatorWithEveryType.types index ae8dab8c71c..c98966acb98 100644 --- a/tests/baselines/reference/logicalOrOperatorWithEveryType.types +++ b/tests/baselines/reference/logicalOrOperatorWithEveryType.types @@ -87,6 +87,7 @@ var ra8 = a8 || a1; // array || any is any var ra9 = null || a1; // null || any is any >ra9 : any >null || a1 : any +>null : null >a1 : any var ra10 = undefined || a1; // undefined || any is any @@ -146,6 +147,7 @@ var rb8 = a8 || a2; // array || boolean is array | boolean var rb9 = null || a2; // null || boolean is boolean >rb9 : boolean >null || a2 : boolean +>null : null >a2 : boolean var rb10= undefined || a2; // undefined || boolean is boolean @@ -205,6 +207,7 @@ var rc8 = a8 || a3; // array || number is array | number var rc9 = null || a3; // null || number is number >rc9 : number >null || a3 : number +>null : null >a3 : number var rc10 = undefined || a3; // undefined || number is number @@ -264,6 +267,7 @@ var rd8 = a8 || a4; // array || string is array | string var rd9 = null || a4; // null || string is string >rd9 : string >null || a4 : string +>null : null >a4 : string var rd10 = undefined || a4; // undefined || string is string @@ -323,6 +327,7 @@ var re8 = a8 || a5; // array || void is array | void var re9 = null || a5; // null || void is void >re9 : void >null || a5 : void +>null : null >a5 : void var re10 = undefined || a5; // undefined || void is void @@ -382,6 +387,7 @@ var rg8 = a8 || a6; // array || enum is array | enum var rg9 = null || a6; // null || enum is E >rg9 : E >null || a6 : E +>null : null >a6 : E var rg10 = undefined || a6; // undefined || enum is E @@ -441,6 +447,7 @@ var rh8 = a8 || a7; // array || object is array | object var rh9 = null || a7; // null || object is object >rh9 : { a: string; } >null || a7 : { a: string; } +>null : null >a7 : { a: string; } var rh10 = undefined || a7; // undefined || object is object @@ -500,6 +507,7 @@ var ri8 = a8 || a8; // array || array is array var ri9 = null || a8; // null || array is array >ri9 : string[] >null || a8 : string[] +>null : null >a8 : string[] var ri10 = undefined || a8; // undefined || array is array @@ -512,50 +520,61 @@ var rj1 = a1 || null; // any || null is any >rj1 : any >a1 || null : any >a1 : any +>null : null var rj2 = a2 || null; // boolean || null is boolean >rj2 : boolean >a2 || null : boolean >a2 : boolean +>null : null var rj3 = a3 || null; // number || null is number >rj3 : number >a3 || null : number >a3 : number +>null : null var rj4 = a4 || null; // string || null is string >rj4 : string >a4 || null : string >a4 : string +>null : null var rj5 = a5 || null; // void || null is void >rj5 : void >a5 || null : void >a5 : void +>null : null var rj6 = a6 || null; // enum || null is E >rj6 : E >a6 || null : E >a6 : E +>null : null var rj7 = a7 || null; // object || null is object >rj7 : { a: string; } >a7 || null : { a: string; } >a7 : { a: string; } +>null : null var rj8 = a8 || null; // array || null is array >rj8 : string[] >a8 || null : string[] >a8 : string[] +>null : null var rj9 = null || null; // null || null is any >rj9 : any >null || null : null +>null : null +>null : null var rj10 = undefined || null; // undefined || null is any >rj10 : any >undefined || null : null >undefined : undefined +>null : null var rf1 = a1 || undefined; // any || undefined is any >rf1 : any @@ -608,6 +627,7 @@ var rf8 = a8 || undefined; // array || undefined is array var rf9 = null || undefined; // null || undefined is any >rf9 : any >null || undefined : null +>null : null >undefined : undefined var rf10 = undefined || undefined; // undefined || undefined is any diff --git a/tests/baselines/reference/logicalOrOperatorWithEveryType.types.pull b/tests/baselines/reference/logicalOrOperatorWithEveryType.types.pull index e0d75463414..ecf6b23e729 100644 --- a/tests/baselines/reference/logicalOrOperatorWithEveryType.types.pull +++ b/tests/baselines/reference/logicalOrOperatorWithEveryType.types.pull @@ -87,6 +87,7 @@ var ra8 = a8 || a1; // array || any is any var ra9 = null || a1; // null || any is any >ra9 : any >null || a1 : any +>null : null >a1 : any var ra10 = undefined || a1; // undefined || any is any @@ -146,6 +147,7 @@ var rb8 = a8 || a2; // array || boolean is array | boolean var rb9 = null || a2; // null || boolean is boolean >rb9 : boolean >null || a2 : boolean +>null : null >a2 : boolean var rb10= undefined || a2; // undefined || boolean is boolean @@ -205,6 +207,7 @@ var rc8 = a8 || a3; // array || number is array | number var rc9 = null || a3; // null || number is number >rc9 : number >null || a3 : number +>null : null >a3 : number var rc10 = undefined || a3; // undefined || number is number @@ -264,6 +267,7 @@ var rd8 = a8 || a4; // array || string is array | string var rd9 = null || a4; // null || string is string >rd9 : string >null || a4 : string +>null : null >a4 : string var rd10 = undefined || a4; // undefined || string is string @@ -323,6 +327,7 @@ var re8 = a8 || a5; // array || void is array | void var re9 = null || a5; // null || void is void >re9 : void >null || a5 : void +>null : null >a5 : void var re10 = undefined || a5; // undefined || void is void @@ -382,6 +387,7 @@ var rg8 = a8 || a6; // array || enum is array | enum var rg9 = null || a6; // null || enum is E >rg9 : E >null || a6 : E +>null : null >a6 : E var rg10 = undefined || a6; // undefined || enum is E @@ -441,6 +447,7 @@ var rh8 = a8 || a7; // array || object is array | object var rh9 = null || a7; // null || object is object >rh9 : { a: string; } >null || a7 : { a: string; } +>null : null >a7 : { a: string; } var rh10 = undefined || a7; // undefined || object is object @@ -500,6 +507,7 @@ var ri8 = a8 || a8; // array || array is array var ri9 = null || a8; // null || array is array >ri9 : string[] >null || a8 : string[] +>null : null >a8 : string[] var ri10 = undefined || a8; // undefined || array is array @@ -512,50 +520,61 @@ var rj1 = a1 || null; // any || null is any >rj1 : any >a1 || null : any >a1 : any +>null : null var rj2 = a2 || null; // boolean || null is boolean >rj2 : boolean >a2 || null : boolean >a2 : boolean +>null : null var rj3 = a3 || null; // number || null is number >rj3 : number >a3 || null : number >a3 : number +>null : null var rj4 = a4 || null; // string || null is string >rj4 : string >a4 || null : string >a4 : string +>null : null var rj5 = a5 || null; // void || null is void >rj5 : void >a5 || null : void >a5 : void +>null : null var rj6 = a6 || null; // enum || null is E >rj6 : E >a6 || null : E >a6 : E +>null : null var rj7 = a7 || null; // object || null is object >rj7 : { a: string; } >a7 || null : { a: string; } >a7 : { a: string; } +>null : null var rj8 = a8 || null; // array || null is array >rj8 : string[] >a8 || null : string[] >a8 : string[] +>null : null var rj9 = null || null; // null || null is any >rj9 : any >null || null : null +>null : null +>null : null var rj10 = undefined || null; // undefined || null is any >rj10 : any >undefined || null : null >undefined : undefined +>null : null var rf1 = a1 || undefined; // any || undefined is any >rf1 : any @@ -608,6 +627,7 @@ var rf8 = a8 || undefined; // array || undefined is array var rf9 = null || undefined; // null || undefined is any >rf9 : any >null || undefined : null +>null : null >undefined : undefined var rf10 = undefined || undefined; // undefined || undefined is any diff --git a/tests/baselines/reference/logicalOrOperatorWithTypeParameters.types b/tests/baselines/reference/logicalOrOperatorWithTypeParameters.types index 4008fbbff50..f887ad7ae14 100644 --- a/tests/baselines/reference/logicalOrOperatorWithTypeParameters.types +++ b/tests/baselines/reference/logicalOrOperatorWithTypeParameters.types @@ -112,6 +112,7 @@ function fn3t : T >{ a: '' } : { a: string; } >a : string +>'' : string var r4: { a: string } = t || u; >r4 : { a: string; } diff --git a/tests/baselines/reference/memberAccessMustUseModuleInstances.types b/tests/baselines/reference/memberAccessMustUseModuleInstances.types index 4e95362f782..b1848660dac 100644 --- a/tests/baselines/reference/memberAccessMustUseModuleInstances.types +++ b/tests/baselines/reference/memberAccessMustUseModuleInstances.types @@ -10,6 +10,7 @@ WinJS.Promise.timeout(10); >WinJS : typeof WinJS >Promise : typeof WinJS.Promise >timeout : (delay: number) => WinJS.Promise +>10 : number === tests/cases/compiler/memberAccessMustUseModuleInstances_0.ts === export class Promise { @@ -21,6 +22,7 @@ export class Promise { >Promise : Promise return null; +>null : null } } diff --git a/tests/baselines/reference/memberAccessOnConstructorType.types b/tests/baselines/reference/memberAccessOnConstructorType.types index d4d722619d4..a767336ec12 100644 --- a/tests/baselines/reference/memberAccessOnConstructorType.types +++ b/tests/baselines/reference/memberAccessOnConstructorType.types @@ -7,4 +7,5 @@ f.arguments == 0; >f.arguments : any >f : new () => void >arguments : any +>0 : number diff --git a/tests/baselines/reference/memberVariableDeclarations1.types b/tests/baselines/reference/memberVariableDeclarations1.types index 4dd68cdeb35..9aec8aa12aa 100644 --- a/tests/baselines/reference/memberVariableDeclarations1.types +++ b/tests/baselines/reference/memberVariableDeclarations1.types @@ -12,10 +12,12 @@ class Employee { public retired = false; >retired : boolean +>false : boolean public manager: Employee = null; >manager : Employee >Employee : Employee +>null : null public reports: Employee[] = []; >reports : Employee[] @@ -49,12 +51,14 @@ class Employee2 { >this.retired : boolean >this : Employee2 >retired : boolean +>false : boolean this.manager = null; >this.manager = null : null >this.manager : Employee >this : Employee2 >manager : Employee +>null : null this.reports = []; >this.reports = [] : undefined[] diff --git a/tests/baselines/reference/mergedDeclarations1.types b/tests/baselines/reference/mergedDeclarations1.types index 20249ab94e1..2a4f18947ce 100644 --- a/tests/baselines/reference/mergedDeclarations1.types +++ b/tests/baselines/reference/mergedDeclarations1.types @@ -28,6 +28,8 @@ module point { >origin : Point >point(0, 0) : Point >point : typeof point +>0 : number +>0 : number export function equals(p1: Point, p2: Point) { >equals : (p1: Point, p2: Point) => boolean @@ -58,6 +60,8 @@ var p1 = point(0, 0); >p1 : Point >point(0, 0) : Point >point : typeof point +>0 : number +>0 : number var p2 = point.origin; >p2 : Point diff --git a/tests/baselines/reference/mergedDeclarations4.types b/tests/baselines/reference/mergedDeclarations4.types index 068a08d35f5..9c55747c6f6 100644 --- a/tests/baselines/reference/mergedDeclarations4.types +++ b/tests/baselines/reference/mergedDeclarations4.types @@ -30,6 +30,7 @@ module M { export var hello = 1; >hello : number +>1 : number } f(); >f() : void diff --git a/tests/baselines/reference/mergedInterfacesWithIndexers.types b/tests/baselines/reference/mergedInterfacesWithIndexers.types index cd082153626..b228931660a 100644 --- a/tests/baselines/reference/mergedInterfacesWithIndexers.types +++ b/tests/baselines/reference/mergedInterfacesWithIndexers.types @@ -25,14 +25,17 @@ var r = a[1]; >r : string >a[1] : string >a : A +>1 : number var r2 = a['1']; >r2 : { length: number; } >a['1'] : { length: number; } >a : A +>'1' : string var r3 = a['hi']; >r3 : { length: number; } >a['hi'] : { length: number; } >a : A +>'hi' : string diff --git a/tests/baselines/reference/mergedModuleDeclarationWithSharedExportedVar.types b/tests/baselines/reference/mergedModuleDeclarationWithSharedExportedVar.types index 89d155861a5..484cee0b0af 100644 --- a/tests/baselines/reference/mergedModuleDeclarationWithSharedExportedVar.types +++ b/tests/baselines/reference/mergedModuleDeclarationWithSharedExportedVar.types @@ -4,6 +4,7 @@ module M { export var v = 10; >v : number +>10 : number v; >v : number diff --git a/tests/baselines/reference/methodContainingLocalFunction.types b/tests/baselines/reference/methodContainingLocalFunction.types index 48c4be12631..8b6d102ade8 100644 --- a/tests/baselines/reference/methodContainingLocalFunction.types +++ b/tests/baselines/reference/methodContainingLocalFunction.types @@ -39,6 +39,7 @@ class BugExhibition2 { >localFunction : () => void return null; +>null : null } } @@ -128,5 +129,7 @@ enum E { >localFunction : () => void return 0; +>0 : number + })() } diff --git a/tests/baselines/reference/mismatchedGenericArguments1.types b/tests/baselines/reference/mismatchedGenericArguments1.types index 4d4d216bef1..c681445ab16 100644 --- a/tests/baselines/reference/mismatchedGenericArguments1.types +++ b/tests/baselines/reference/mismatchedGenericArguments1.types @@ -21,6 +21,7 @@ class C implements IFoo { >x : string return null; +>null : null } } @@ -36,6 +37,7 @@ class C2 implements IFoo { >x : string return null; +>null : null } } diff --git a/tests/baselines/reference/moduleAndInterfaceSharingName.types b/tests/baselines/reference/moduleAndInterfaceSharingName.types index 6a4f8998fe6..611a63a9689 100644 --- a/tests/baselines/reference/moduleAndInterfaceSharingName.types +++ b/tests/baselines/reference/moduleAndInterfaceSharingName.types @@ -16,6 +16,7 @@ var z: X.Y.Z = null; >X : unknown >Y : unknown >Z : X.Y.Z +>null : null var z2: X.Y; >z2 : X.Y diff --git a/tests/baselines/reference/moduleAndInterfaceSharingName3.types b/tests/baselines/reference/moduleAndInterfaceSharingName3.types index 1b9aabea630..789589629a9 100644 --- a/tests/baselines/reference/moduleAndInterfaceSharingName3.types +++ b/tests/baselines/reference/moduleAndInterfaceSharingName3.types @@ -17,6 +17,7 @@ var z: X.Y.Z = null; >X : unknown >Y : unknown >Z : X.Y.Z +>null : null var z2: X.Y; >z2 : X.Y diff --git a/tests/baselines/reference/moduleCodeGenTest3.types b/tests/baselines/reference/moduleCodeGenTest3.types index d5e10130c0d..288b794326f 100644 --- a/tests/baselines/reference/moduleCodeGenTest3.types +++ b/tests/baselines/reference/moduleCodeGenTest3.types @@ -2,10 +2,12 @@ module Baz { export var x = "hello"; } >Baz : typeof Baz >x : string +>"hello" : string Baz.x = "goodbye"; >Baz.x = "goodbye" : string >Baz.x : string >Baz : typeof Baz >x : string +>"goodbye" : string diff --git a/tests/baselines/reference/moduleCodeGenTest5.types b/tests/baselines/reference/moduleCodeGenTest5.types index 40161509aff..c2e4ccf6d65 100644 --- a/tests/baselines/reference/moduleCodeGenTest5.types +++ b/tests/baselines/reference/moduleCodeGenTest5.types @@ -1,9 +1,11 @@ === tests/cases/compiler/moduleCodeGenTest5.ts === export var x = 0; >x : number +>0 : number var y = 0; >y : number +>0 : number export function f1() {} >f1 : () => void @@ -16,6 +18,7 @@ export class C1 { public p1 = 0; >p1 : number +>0 : number public p2() {} >p2 : () => void @@ -25,6 +28,7 @@ class C2{ public p1 = 0; >p1 : number +>0 : number public p2() {} >p2 : () => void @@ -33,6 +37,7 @@ class C2{ export enum E1 {A=0} >E1 : E1 >A : E1 +>0 : number var u = E1.A; >u : E1 @@ -43,6 +48,7 @@ var u = E1.A; enum E2 {B=0} >E2 : E2 >B : E2 +>0 : number var v = E2.B; >v : E2 diff --git a/tests/baselines/reference/moduleCodegenTest4.types b/tests/baselines/reference/moduleCodegenTest4.types index 7b9229a46c1..919432c938f 100644 --- a/tests/baselines/reference/moduleCodegenTest4.types +++ b/tests/baselines/reference/moduleCodegenTest4.types @@ -2,13 +2,16 @@ export module Baz { export var x = "hello"; } >Baz : typeof Baz >x : string +>"hello" : string Baz.x = "goodbye"; >Baz.x = "goodbye" : string >Baz.x : string >Baz : typeof Baz >x : string +>"goodbye" : string void 0; >void 0 : undefined +>0 : number diff --git a/tests/baselines/reference/moduleIdentifiers.types b/tests/baselines/reference/moduleIdentifiers.types index db8b1c3f720..dc540823815 100644 --- a/tests/baselines/reference/moduleIdentifiers.types +++ b/tests/baselines/reference/moduleIdentifiers.types @@ -9,6 +9,7 @@ module M { export var a = 1 >a : number +>1 : number } //var p: M.P; diff --git a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types index d8f6083b2c9..ebe70d8e6fb 100644 --- a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types +++ b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation1.types @@ -11,6 +11,7 @@ module TypeScript.Parser { >SyntaxNode : SyntaxNode return null; +>null : null } } } @@ -63,6 +64,7 @@ module TypeScript { >findToken : (position: number, includeSkippedTokens?: boolean) => PositionedToken >position : number >includeSkippedTokens : boolean +>false : boolean >PositionedToken : PositionedToken var positionedToken = this.findTokenInternal(null, position, 0); @@ -71,9 +73,12 @@ module TypeScript { >this.findTokenInternal : (x: any, y: any, z: any) => any >this : SyntaxNode >findTokenInternal : (x: any, y: any, z: any) => any +>null : null >position : number +>0 : number return null; +>null : null } findTokenInternal(x, y, z) { >findTokenInternal : (x: any, y: any, z: any) => any @@ -82,6 +87,7 @@ module TypeScript { >z : any return null; +>null : null } } } diff --git a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.types b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.types index 2a5d2c76e76..8a06502f1fc 100644 --- a/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.types +++ b/tests/baselines/reference/moduleMemberWithoutTypeAnnotation2.types @@ -15,6 +15,7 @@ module TypeScript { export var diagnosticWriter = null; >diagnosticWriter : any +>null : null export function Alert(output: string) { >Alert : (output: string) => void diff --git a/tests/baselines/reference/moduleMerge.types b/tests/baselines/reference/moduleMerge.types index b70f786b7a2..06d532673ed 100644 --- a/tests/baselines/reference/moduleMerge.types +++ b/tests/baselines/reference/moduleMerge.types @@ -11,6 +11,7 @@ module A >Hello : () => string { return "from private B"; +>"from private B" : string } } } @@ -25,6 +26,7 @@ module A >Hello : () => string { return "from export B"; +>"from export B" : string } } } diff --git a/tests/baselines/reference/moduleNoEmit.types b/tests/baselines/reference/moduleNoEmit.types index 7fb6b6164d6..1097bea5a4c 100644 --- a/tests/baselines/reference/moduleNoEmit.types +++ b/tests/baselines/reference/moduleNoEmit.types @@ -4,4 +4,6 @@ module Foo { 1+1; >1+1 : number +>1 : number +>1 : number } diff --git a/tests/baselines/reference/moduleOuterQualification.types b/tests/baselines/reference/moduleOuterQualification.types index 95a18f58bcd..1b4bbd84894 100644 --- a/tests/baselines/reference/moduleOuterQualification.types +++ b/tests/baselines/reference/moduleOuterQualification.types @@ -12,6 +12,7 @@ declare module outer { // .d.ts emit: should be 'extends outer.Beta' export interface Beta extends outer.Beta { } >Beta : Beta +>outer.Beta : unknown >outer : unknown >Beta : outer.Beta } diff --git a/tests/baselines/reference/moduleReopenedTypeOtherBlock.types b/tests/baselines/reference/moduleReopenedTypeOtherBlock.types index f98c069c338..c48c43ffd9a 100644 --- a/tests/baselines/reference/moduleReopenedTypeOtherBlock.types +++ b/tests/baselines/reference/moduleReopenedTypeOtherBlock.types @@ -16,5 +16,6 @@ module M { >C2 : C2 >f : () => I >I : I +>null : null } diff --git a/tests/baselines/reference/moduleReopenedTypeSameBlock.types b/tests/baselines/reference/moduleReopenedTypeSameBlock.types index 8f119fff60c..7dec66f6c7b 100644 --- a/tests/baselines/reference/moduleReopenedTypeSameBlock.types +++ b/tests/baselines/reference/moduleReopenedTypeSameBlock.types @@ -14,5 +14,6 @@ module M { >C2 : C2 >f : () => I >I : I +>null : null } diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.types b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.types index 5a29a01cec7..b473adf2aa4 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.types +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt.types @@ -7,6 +7,7 @@ module Z.M { >bar : () => string return ""; +>"" : string } } module A.M { diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt2.types b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt2.types index 75aba0e2d0e..56160637e0f 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt2.types +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt2.types @@ -7,6 +7,7 @@ module Z.M { >bar : () => string return ""; +>"" : string } } module A.M { diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.types b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.types index b4df2e0ae08..b8574a2c71f 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.types +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt4.types @@ -7,6 +7,7 @@ module Z.M { >bar : () => string return ""; +>"" : string } } module A.M { diff --git a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.types b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.types index 01879d2db11..65f820e0606 100644 --- a/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.types +++ b/tests/baselines/reference/moduleSharesNameWithImportDeclarationInsideIt6.types @@ -7,6 +7,7 @@ module Z.M { >bar : () => string return ""; +>"" : string } } module A.M { diff --git a/tests/baselines/reference/moduleSymbolMerging.types b/tests/baselines/reference/moduleSymbolMerging.types index c6b0f58ef46..cd796641f13 100644 --- a/tests/baselines/reference/moduleSymbolMerging.types +++ b/tests/baselines/reference/moduleSymbolMerging.types @@ -10,6 +10,7 @@ module B { >f : () => A.I >A : unknown >I : A.I +>null : null } diff --git a/tests/baselines/reference/moduleUnassignedVariable.types b/tests/baselines/reference/moduleUnassignedVariable.types index 7d1dd8600cf..3e5ab538ad5 100644 --- a/tests/baselines/reference/moduleUnassignedVariable.types +++ b/tests/baselines/reference/moduleUnassignedVariable.types @@ -4,6 +4,7 @@ module Bar { export var a = 1; >a : number +>1 : number function fooA() { return a; } // Correct: return Bar.a >fooA : () => number diff --git a/tests/baselines/reference/moduleVariableArrayIndexer.types b/tests/baselines/reference/moduleVariableArrayIndexer.types index 564de3ff972..4c8e73b9478 100644 --- a/tests/baselines/reference/moduleVariableArrayIndexer.types +++ b/tests/baselines/reference/moduleVariableArrayIndexer.types @@ -4,6 +4,7 @@ module Bar { export var a = 1; >a : number +>1 : number var t = undefined[a][a]; // CG: var t = undefined[Bar.a][a]; >t : any diff --git a/tests/baselines/reference/moduleVariables.types b/tests/baselines/reference/moduleVariables.types index 2c00df87f56..5bdf8490aed 100644 --- a/tests/baselines/reference/moduleVariables.types +++ b/tests/baselines/reference/moduleVariables.types @@ -4,12 +4,14 @@ declare var console: any; var x = 1; >x : number +>1 : number module M { >M : typeof M export var x = 2; >x : number +>2 : number console.log(x); // 2 >console.log(x) : any @@ -35,6 +37,7 @@ module M { var x = 3; >x : number +>3 : number console.log(x); // 3 >console.log(x) : any diff --git a/tests/baselines/reference/moduleVisibilityTest1.types b/tests/baselines/reference/moduleVisibilityTest1.types index 8c22f792049..dcccb6cba26 100644 --- a/tests/baselines/reference/moduleVisibilityTest1.types +++ b/tests/baselines/reference/moduleVisibilityTest1.types @@ -7,12 +7,14 @@ module OuterMod { export function someExportedOuterFunc() { return -1; } >someExportedOuterFunc : () => number >-1 : number +>1 : number export module OuterInnerMod { >OuterInnerMod : typeof OuterInnerMod export function someExportedOuterInnerFunc() { return "foo"; } >someExportedOuterInnerFunc : () => string +>"foo" : string } } @@ -30,6 +32,7 @@ module M { export function someExportedInnerFunc() { return -2; } >someExportedInnerFunc : () => number >-2 : number +>2 : number } export enum E { @@ -47,6 +50,7 @@ module M { export var x = 5; >x : number +>5 : number export declare var exported_var; >exported_var : any @@ -68,6 +72,7 @@ module M { class B {public b = 0;} >B : B >b : number +>0 : number export class C implements I { >C : C @@ -96,24 +101,30 @@ module M { public someMethod() { return 0; } >someMethod : () => number +>0 : number public someProp = 1; >someProp : number +>1 : number constructor() { function someInnerFunc() { return 2; } >someInnerFunc : () => number +>2 : number var someInnerVar = 3; >someInnerVar : number +>3 : number } } var someModuleVar = 4; >someModuleVar : number +>4 : number function someModuleFunction() { return 5;} >someModuleFunction : () => number +>5 : number } module M { @@ -139,6 +150,7 @@ var cprime : M.I = null; >null : M.I >M : unknown >I : M.I +>null : null var c = new M.C(); >c : M.C diff --git a/tests/baselines/reference/moduleWithStatementsOfEveryKind.types b/tests/baselines/reference/moduleWithStatementsOfEveryKind.types index 0bade1f2d8e..9475d9cfdcb 100644 --- a/tests/baselines/reference/moduleWithStatementsOfEveryKind.types +++ b/tests/baselines/reference/moduleWithStatementsOfEveryKind.types @@ -45,16 +45,19 @@ module A { var x = 12; >x : number +>12 : number function F(s: string): number { >F : (s: string) => number >s : string return 2; +>2 : number } var array: I[] = null; >array : I[] >I : I +>null : null var fn = (s: string) => { >fn : (s: string) => string @@ -63,14 +66,18 @@ module A { return 'hello ' + s; >'hello ' + s : string +>'hello ' : string >s : string } var ol = { s: 'hello', id: 2, isvalid: true }; >ol : { s: string; id: number; isvalid: boolean; } >{ s: 'hello', id: 2, isvalid: true } : { s: string; id: number; isvalid: boolean; } >s : string +>'hello' : string >id : number +>2 : number >isvalid : boolean +>true : boolean declare class DC { >DC : DC @@ -126,16 +133,19 @@ module Y { export var x = 12; >x : number +>12 : number export function F(s: string): number { >F : (s: string) => number >s : string return 2; +>2 : number } export var array: I[] = null; >array : I[] >I : I +>null : null export var fn = (s: string) => { >fn : (s: string) => string @@ -144,14 +154,18 @@ module Y { return 'hello ' + s; >'hello ' + s : string +>'hello ' : string >s : string } export var ol = { s: 'hello', id: 2, isvalid: true }; >ol : { s: string; id: number; isvalid: boolean; } >{ s: 'hello', id: 2, isvalid: true } : { s: string; id: number; isvalid: boolean; } >s : string +>'hello' : string >id : number +>2 : number >isvalid : boolean +>true : boolean export declare class DC { >DC : DC diff --git a/tests/baselines/reference/multiModuleClodule1.types b/tests/baselines/reference/multiModuleClodule1.types index f7379e33173..b958d18f984 100644 --- a/tests/baselines/reference/multiModuleClodule1.types +++ b/tests/baselines/reference/multiModuleClodule1.types @@ -20,9 +20,11 @@ module C { export var x = 1; >x : number +>1 : number var y = 2; >y : number +>2 : number } module C { >C : typeof C @@ -32,6 +34,7 @@ module C { function baz() { return ''; } >baz : () => string +>'' : string } var c = new C(C.x); diff --git a/tests/baselines/reference/multiModuleFundule1.types b/tests/baselines/reference/multiModuleFundule1.types index c78a195f4b1..7eed100c199 100644 --- a/tests/baselines/reference/multiModuleFundule1.types +++ b/tests/baselines/reference/multiModuleFundule1.types @@ -8,6 +8,7 @@ module C { export var x = 1; >x : number +>1 : number } module C { >C : typeof C @@ -20,11 +21,13 @@ var r = C(2); >r : void >C(2) : void >C : typeof C +>2 : number var r2 = new C(2); // using void returning function as constructor >r2 : any >new C(2) : any >C : typeof C +>2 : number var r3 = C.foo(); >r3 : void diff --git a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types index 5cadfa780fe..ac722f8a063 100644 --- a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types +++ b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types @@ -7,6 +7,7 @@ class foo >bar : () => foo2 >foo2 : foo2 >T : T +>null : null } class foo2 extends foo { diff --git a/tests/baselines/reference/nameCollision.types b/tests/baselines/reference/nameCollision.types index be14150308b..e8badb7ab92 100644 --- a/tests/baselines/reference/nameCollision.types +++ b/tests/baselines/reference/nameCollision.types @@ -6,9 +6,11 @@ module A { // in the generated function call. var A = 12; >A : number +>12 : number var _A = ''; >_A : string +>'' : string } module B { @@ -16,6 +18,7 @@ module B { var A = 12; >A : number +>12 : number } module B { @@ -36,24 +39,29 @@ module X { var X = 13; >X : number +>13 : number export module Y { >Y : typeof X.Y var Y = 13; >Y : number +>13 : number export module Z { >Z : typeof X.Y.Z var X = 12; >X : number +>12 : number var Y = 12; >Y : number +>12 : number var Z = 12; >Z : number +>12 : number } } } @@ -85,4 +93,5 @@ module D { export var E = 'hello'; >E : string +>'hello' : string } diff --git a/tests/baselines/reference/nameCollisionsInPropertyAssignments.types b/tests/baselines/reference/nameCollisionsInPropertyAssignments.types index 41bcdd99a71..bffe75896c4 100644 --- a/tests/baselines/reference/nameCollisionsInPropertyAssignments.types +++ b/tests/baselines/reference/nameCollisionsInPropertyAssignments.types @@ -1,6 +1,7 @@ === tests/cases/compiler/nameCollisionsInPropertyAssignments.ts === var x = 1 >x : number +>1 : number var y = { x() { x++; } }; >y : { x(): void; } diff --git a/tests/baselines/reference/nameDelimitedBySlashes.types b/tests/baselines/reference/nameDelimitedBySlashes.types index cea87ff2241..4987a52196f 100644 --- a/tests/baselines/reference/nameDelimitedBySlashes.types +++ b/tests/baselines/reference/nameDelimitedBySlashes.types @@ -8,8 +8,10 @@ var x = foo.foo + 42; >foo.foo : number >foo : typeof foo >foo : number +>42 : number === tests/cases/conformance/externalModules/test/foo_0.ts === export var foo = 42; >foo : number +>42 : number diff --git a/tests/baselines/reference/nameWithRelativePaths.types b/tests/baselines/reference/nameWithRelativePaths.types index 2dc303b2583..ea552cfa531 100644 --- a/tests/baselines/reference/nameWithRelativePaths.types +++ b/tests/baselines/reference/nameWithRelativePaths.types @@ -30,12 +30,14 @@ if(foo2.M2.x){ === tests/cases/conformance/externalModules/foo_0.ts === export var foo = 42; >foo : number +>42 : number === tests/cases/conformance/externalModules/test/test/foo_1.ts === export function f(){ >f : () => number return 42; +>42 : number } === tests/cases/conformance/externalModules/test/foo_2.ts === @@ -44,5 +46,6 @@ export module M2 { export var x = true; >x : boolean +>true : boolean } diff --git a/tests/baselines/reference/namedFunctionExpressionInModule.types b/tests/baselines/reference/namedFunctionExpressionInModule.types index 9643d9ca069..8202cfbaf1b 100644 --- a/tests/baselines/reference/namedFunctionExpressionInModule.types +++ b/tests/baselines/reference/namedFunctionExpressionInModule.types @@ -13,5 +13,8 @@ module Variables{ x(1, 2, 3); >x(1, 2, 3) : void >x : (a: any, b: any, c: any) => void +>1 : number +>2 : number +>3 : number } diff --git a/tests/baselines/reference/negateOperatorWithAnyOtherType.types b/tests/baselines/reference/negateOperatorWithAnyOtherType.types index 85a2d9c9233..f864c9d166c 100644 --- a/tests/baselines/reference/negateOperatorWithAnyOtherType.types +++ b/tests/baselines/reference/negateOperatorWithAnyOtherType.types @@ -10,6 +10,8 @@ var ANY1; var ANY2: any[] = ["", ""]; >ANY2 : any[] >["", ""] : string[] +>"" : string +>"" : string var obj: () => {} >obj : () => {} @@ -18,6 +20,7 @@ var obj1 = { x: "", y: () => { }}; >obj1 : { x: string; y: () => void; } >{ x: "", y: () => { }} : { x: string; y: () => void; } >x : string +>"" : string >y : () => void >() => { } : () => void @@ -97,6 +100,7 @@ var ResultIsNumber7 = -undefined; var ResultIsNumber = -null; >ResultIsNumber : number >-null : number +>null : null // any type expressions var ResultIsNumber8 = -ANY2[0]; @@ -104,6 +108,7 @@ var ResultIsNumber8 = -ANY2[0]; >-ANY2[0] : number >ANY2[0] : any >ANY2 : any[] +>0 : number var ResultIsNumber9 = -obj1.x; >ResultIsNumber9 : number @@ -168,6 +173,7 @@ var ResultIsNumber15 = -(ANY - ANY1); >-ANY2[0] : number >ANY2[0] : any >ANY2 : any[] +>0 : number -ANY, ANY1; >-ANY, ANY1 : any diff --git a/tests/baselines/reference/negateOperatorWithBooleanType.types b/tests/baselines/reference/negateOperatorWithBooleanType.types index 49467d87845..89f5afc1c2b 100644 --- a/tests/baselines/reference/negateOperatorWithBooleanType.types +++ b/tests/baselines/reference/negateOperatorWithBooleanType.types @@ -5,6 +5,7 @@ var BOOLEAN: boolean; function foo(): boolean { return true; } >foo : () => boolean +>true : boolean class A { >A : A @@ -14,6 +15,7 @@ class A { static foo() { return false; } >foo : () => boolean +>false : boolean } module M { >M : typeof M @@ -37,13 +39,16 @@ var ResultIsNumber1 = -BOOLEAN; var ResultIsNumber2 = -true; >ResultIsNumber2 : number >-true : number +>true : boolean var ResultIsNumber3 = -{ x: true, y: false }; >ResultIsNumber3 : number >-{ x: true, y: false } : number >{ x: true, y: false } : { x: boolean; y: boolean; } >x : boolean +>true : boolean >y : boolean +>false : boolean // boolean type expressions var ResultIsNumber4 = -objA.a; @@ -77,6 +82,7 @@ var ResultIsNumber7 = -A.foo(); // miss assignment operators -true; >-true : number +>true : boolean -BOOLEAN; >-BOOLEAN : number @@ -90,6 +96,8 @@ var ResultIsNumber7 = -A.foo(); -true, false; >-true, false : boolean >-true : number +>true : boolean +>false : boolean -objA.a; >-objA.a : number diff --git a/tests/baselines/reference/negateOperatorWithEnumType.types b/tests/baselines/reference/negateOperatorWithEnumType.types index 96a33ff4c6e..2f39a581ef8 100644 --- a/tests/baselines/reference/negateOperatorWithEnumType.types +++ b/tests/baselines/reference/negateOperatorWithEnumType.types @@ -21,6 +21,7 @@ var ResultIsNumber2 = -ENUM1["B"]; >-ENUM1["B"] : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string var ResultIsNumber3 = -(ENUM1.B + ENUM1[""]); >ResultIsNumber3 : number @@ -32,6 +33,7 @@ var ResultIsNumber3 = -(ENUM1.B + ENUM1[""]); >B : ENUM1 >ENUM1[""] : ENUM1 >ENUM1 : typeof ENUM1 +>"" : string // miss assignment operators -ENUM; @@ -46,6 +48,7 @@ var ResultIsNumber3 = -(ENUM1.B + ENUM1[""]); >-ENUM1["B"] : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string -ENUM, ENUM1; >-ENUM, ENUM1 : typeof ENUM1 diff --git a/tests/baselines/reference/negateOperatorWithNumberType.types b/tests/baselines/reference/negateOperatorWithNumberType.types index f6cee89f6df..e53a4e54444 100644 --- a/tests/baselines/reference/negateOperatorWithNumberType.types +++ b/tests/baselines/reference/negateOperatorWithNumberType.types @@ -6,9 +6,12 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number function foo(): number { return 1; } >foo : () => number +>1 : number class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return 1; } >foo : () => number +>1 : number } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsNumber2 = -NUMBER1; var ResultIsNumber3 = -1; >ResultIsNumber3 : number >-1 : number +>1 : number var ResultIsNumber4 = -{ x: 1, y: 2}; >ResultIsNumber4 : number >-{ x: 1, y: 2} : number >{ x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number var ResultIsNumber5 = -{ x: 1, y: (n: number) => { return n; } }; >ResultIsNumber5 : number >-{ x: 1, y: (n: number) => { return n; } } : number >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } >x : number +>1 : number >y : (n: number) => number >(n: number) => { return n; } : (n: number) => number >n : number @@ -84,6 +92,7 @@ var ResultIsNumber8 = -NUMBER1[0]; >-NUMBER1[0] : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number var ResultIsNumber9 = -foo(); >ResultIsNumber9 : number @@ -110,6 +119,7 @@ var ResultIsNumber11 = -(NUMBER - NUMBER); // miss assignment operators -1; >-1 : number +>1 : number -NUMBER; >-NUMBER : number diff --git a/tests/baselines/reference/negateOperatorWithStringType.types b/tests/baselines/reference/negateOperatorWithStringType.types index 43a9f05cc5b..6ef570557fe 100644 --- a/tests/baselines/reference/negateOperatorWithStringType.types +++ b/tests/baselines/reference/negateOperatorWithStringType.types @@ -6,9 +6,12 @@ var STRING: string; var STRING1: string[] = ["", "abc"]; >STRING1 : string[] >["", "abc"] : string[] +>"" : string +>"abc" : string function foo(): string { return "abc"; } >foo : () => string +>"abc" : string class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return ""; } >foo : () => string +>"" : string } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsNumber2 = -STRING1; var ResultIsNumber3 = -""; >ResultIsNumber3 : number >-"" : number +>"" : string var ResultIsNumber4 = -{ x: "", y: "" }; >ResultIsNumber4 : number >-{ x: "", y: "" } : number >{ x: "", y: "" } : { x: string; y: string; } >x : string +>"" : string >y : string +>"" : string var ResultIsNumber5 = -{ x: "", y: (s: string) => { return s; } }; >ResultIsNumber5 : number >-{ x: "", y: (s: string) => { return s; } } : number >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } >x : string +>"" : string >y : (s: string) => string >(s: string) => { return s; } : (s: string) => string >s : string @@ -84,6 +92,7 @@ var ResultIsNumber8 = -STRING1[0]; >-STRING1[0] : number >STRING1[0] : string >STRING1 : string[] +>0 : number var ResultIsNumber9 = -foo(); >ResultIsNumber9 : number @@ -114,10 +123,12 @@ var ResultIsNumber12 = -STRING.charAt(0); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number // miss assignment operators -""; >-"" : number +>"" : string -STRING; >-STRING : number diff --git a/tests/baselines/reference/negativeZero.types b/tests/baselines/reference/negativeZero.types index 97ba45a741a..3468e22fdb2 100644 --- a/tests/baselines/reference/negativeZero.types +++ b/tests/baselines/reference/negativeZero.types @@ -2,4 +2,5 @@ var x = -0 >x : number >-0 : number +>0 : number diff --git a/tests/baselines/reference/nestedIfStatement.types b/tests/baselines/reference/nestedIfStatement.types index 4dddcd75925..19799d25172 100644 --- a/tests/baselines/reference/nestedIfStatement.types +++ b/tests/baselines/reference/nestedIfStatement.types @@ -1,8 +1,15 @@ === tests/cases/compiler/nestedIfStatement.ts === if (0) { -No type information for this code.} else if (1) { -No type information for this code.} else if (2) { -No type information for this code.} else if (3) { -No type information for this code.} else { -No type information for this code.} -No type information for this code. \ No newline at end of file +>0 : number + +} else if (1) { +>1 : number + +} else if (2) { +>2 : number + +} else if (3) { +>3 : number + +} else { +} diff --git a/tests/baselines/reference/nestedModules.types b/tests/baselines/reference/nestedModules.types index 863e57ef859..310685d66c9 100644 --- a/tests/baselines/reference/nestedModules.types +++ b/tests/baselines/reference/nestedModules.types @@ -27,7 +27,9 @@ module A { >Point : C.Point >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } } diff --git a/tests/baselines/reference/nestedSelf.types b/tests/baselines/reference/nestedSelf.types index 56280bffb2f..2c8f3f41dd6 100644 --- a/tests/baselines/reference/nestedSelf.types +++ b/tests/baselines/reference/nestedSelf.types @@ -7,12 +7,16 @@ module M { public n = 42; >n : number +>42 : number public foo() { [1,2,3].map((x) => { return this.n * x; })} >foo : () => void >[1,2,3].map((x) => { return this.n * x; }) : number[] >[1,2,3].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] >[1,2,3] : number[] +>1 : number +>2 : number +>3 : number >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] >(x) => { return this.n * x; } : (x: number) => number >x : number diff --git a/tests/baselines/reference/newArrays.types b/tests/baselines/reference/newArrays.types index 463525cb04c..4600f5efaf8 100644 --- a/tests/baselines/reference/newArrays.types +++ b/tests/baselines/reference/newArrays.types @@ -14,9 +14,11 @@ module M { public x = 10; >x : number +>10 : number public y = 10; >y : number +>10 : number public m () { >m : () => void diff --git a/tests/baselines/reference/newExpressionWithTypeParameterConstrainedToOuterTypeParameter.types b/tests/baselines/reference/newExpressionWithTypeParameterConstrainedToOuterTypeParameter.types index 8629c3cce0a..e07fa21fafe 100644 --- a/tests/baselines/reference/newExpressionWithTypeParameterConstrainedToOuterTypeParameter.types +++ b/tests/baselines/reference/newExpressionWithTypeParameterConstrainedToOuterTypeParameter.types @@ -18,4 +18,5 @@ var y = new i(""); // y should be string >y : string >new i("") : string >i : I +>"" : string diff --git a/tests/baselines/reference/newOperatorConformance.types b/tests/baselines/reference/newOperatorConformance.types index 37205bd6177..912c0a5c81a 100644 --- a/tests/baselines/reference/newOperatorConformance.types +++ b/tests/baselines/reference/newOperatorConformance.types @@ -110,6 +110,7 @@ function newFn2(s: T) { >p : string >new s(32) : string >s : T +>32 : number var p: string; >p : string diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInConstructor.types b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInConstructor.types index f9537974161..8c3cc633c10 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInConstructor.types +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInConstructor.types @@ -15,6 +15,7 @@ class class1 { var _this = 2; >_this : number +>2 : number return callback(_this); >callback(_this) : any @@ -31,6 +32,7 @@ class class2 { constructor() { var _this = 2; >_this : number +>2 : number var x2 = { >x2 : { doStuff: (callback: any) => () => any; } diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInFunction.types b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInFunction.types index 56f5701e912..3edf54a594f 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInFunction.types +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInFunction.types @@ -11,6 +11,7 @@ function x() { var _this = 5; >_this : number +>5 : number x => { console.log(_this); }; >x => { console.log(_this); } : (x: any) => void diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInLambda.types b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInLambda.types index 6cf4428bcc5..83732f9c350 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInLambda.types +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInLambda.types @@ -15,6 +15,7 @@ var x = { var _this = 2; >_this : number +>2 : number return callback(_this); >callback(_this) : any diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.types b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.types index cb543b33ad4..49d0e3ed93a 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.types +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInMethod.types @@ -1,6 +1,7 @@ === tests/cases/compiler/noCollisionThisExpressionAndLocalVarInMethod.ts === var _this = 2; >_this : number +>2 : number class a { >a : a @@ -19,6 +20,7 @@ class a { var _this = 2; >_this : number +>2 : number return callback(_this); >callback(_this) : any @@ -32,6 +34,7 @@ class a { var _this = 2; >_this : number +>2 : number return { >{ doStuff: (callback) => () => { return callback(_this); } } : { doStuff: (callback: any) => () => any; } diff --git a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.types b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.types index df4ad5113f2..8918ccc825c 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.types +++ b/tests/baselines/reference/noCollisionThisExpressionAndLocalVarInProperty.types @@ -14,6 +14,7 @@ class class1 { var _this = 2; >_this : number +>2 : number return callback(_this); >callback(_this) : any @@ -29,6 +30,7 @@ class class2 { constructor() { var _this = 2; >_this : number +>2 : number } public prop1 = { >prop1 : { doStuff: (callback: any) => () => any; } @@ -43,6 +45,7 @@ class class2 { return callback(10); >callback(10) : any >callback : any +>10 : number } } } diff --git a/tests/baselines/reference/noCollisionThisExpressionAndVarInGlobal.types b/tests/baselines/reference/noCollisionThisExpressionAndVarInGlobal.types index 138062d58e5..c5943ef5c14 100644 --- a/tests/baselines/reference/noCollisionThisExpressionAndVarInGlobal.types +++ b/tests/baselines/reference/noCollisionThisExpressionAndVarInGlobal.types @@ -1,6 +1,7 @@ === tests/cases/compiler/noCollisionThisExpressionAndVarInGlobal.ts === var _this = 1; >_this : number +>1 : number var f = () => _this; >f : () => number diff --git a/tests/baselines/reference/noCollisionThisExpressionInFunctionAndVarInGlobal.types b/tests/baselines/reference/noCollisionThisExpressionInFunctionAndVarInGlobal.types index 35a62c6f671..ba65e03ba59 100644 --- a/tests/baselines/reference/noCollisionThisExpressionInFunctionAndVarInGlobal.types +++ b/tests/baselines/reference/noCollisionThisExpressionInFunctionAndVarInGlobal.types @@ -8,6 +8,7 @@ var console: { } var _this = 5; >_this : number +>5 : number function x() { >x : () => void diff --git a/tests/baselines/reference/noConstraintInReturnType1.types b/tests/baselines/reference/noConstraintInReturnType1.types index 19a7529ac79..a4c754371eb 100644 --- a/tests/baselines/reference/noConstraintInReturnType1.types +++ b/tests/baselines/reference/noConstraintInReturnType1.types @@ -8,5 +8,6 @@ class List { >T : T >List : List >T : T +>null : null } diff --git a/tests/baselines/reference/noImplicitAnyFunctionExpressionAssignment.types b/tests/baselines/reference/noImplicitAnyFunctionExpressionAssignment.types index b07252dac6d..9d8e216b656 100644 --- a/tests/baselines/reference/noImplicitAnyFunctionExpressionAssignment.types +++ b/tests/baselines/reference/noImplicitAnyFunctionExpressionAssignment.types @@ -9,6 +9,8 @@ var x: (a: any) => void = function (x: T) { >T : T return null; +>null : null + }; var x2: (a: any) => void = function f(x: T) { @@ -21,4 +23,6 @@ var x2: (a: any) => void = function f(x: T) { >T : T return null; +>null : null + }; diff --git a/tests/baselines/reference/noImplicitAnyInContextuallyTypesFunctionParamter.types b/tests/baselines/reference/noImplicitAnyInContextuallyTypesFunctionParamter.types index 9ac1bcbbe8d..81fd614cb0e 100644 --- a/tests/baselines/reference/noImplicitAnyInContextuallyTypesFunctionParamter.types +++ b/tests/baselines/reference/noImplicitAnyInContextuallyTypesFunctionParamter.types @@ -3,6 +3,8 @@ var regexMatchList = ['', '']; >regexMatchList : string[] >['', ''] : string[] +>'' : string +>'' : string regexMatchList.forEach(match => ''.replace(match, '')); >regexMatchList.forEach(match => ''.replace(match, '')) : void @@ -13,6 +15,8 @@ regexMatchList.forEach(match => ''.replace(match, '')); >match : string >''.replace(match, '') : string >''.replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>'' : string >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } >match : string +>'' : string diff --git a/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types b/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types index 20be75dc29e..b7b21bf8f92 100644 --- a/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types +++ b/tests/baselines/reference/noImplicitAnyIndexingSuppressed.types @@ -12,6 +12,7 @@ var strRepresentation1 = MyEmusEnum[0] >strRepresentation1 : string >MyEmusEnum[0] : string >MyEmusEnum : typeof MyEmusEnum +>0 : number // Should be okay; should be a string. var strRepresentation2 = MyEmusEnum[MyEmusEnum.emu] @@ -27,12 +28,14 @@ var strRepresentation3 = MyEmusEnum["monehh"]; >strRepresentation3 : any >MyEmusEnum["monehh"] : any >MyEmusEnum : typeof MyEmusEnum +>"monehh" : string // Should be okay; should be a MyEmusEnum var strRepresentation4 = MyEmusEnum["emu"]; >strRepresentation4 : MyEmusEnum >MyEmusEnum["emu"] : MyEmusEnum >MyEmusEnum : typeof MyEmusEnum +>"emu" : string // Should be okay, as we suppress implicit 'any' property access checks @@ -40,15 +43,18 @@ var x = {}["hi"]; >x : any >{}["hi"] : any >{} : {} +>"hi" : string // Should be okay, as we suppress implicit 'any' property access checks var y = {}[10]; >y : any >{}[10] : any >{} : {} +>10 : number var hi: any = "hi"; >hi : any +>"hi" : string var emptyObj = {}; >emptyObj : {} @@ -84,8 +90,14 @@ var m: MyMap = { >{ "0": 0, "1": 1, "2": 2, "Okay that's enough for today.": NaN} : { [x: string]: number; "0": number; "1": number; "2": number; "Okay that's enough for today.": number; } "0": 0, +>0 : number + "1": 1, +>1 : number + "2": 2, +>2 : number + "Okay that's enough for today.": NaN >NaN : number diff --git a/tests/baselines/reference/nonInstantiatedModule.types b/tests/baselines/reference/nonInstantiatedModule.types index 1093fbd0653..bcdef67cfe9 100644 --- a/tests/baselines/reference/nonInstantiatedModule.types +++ b/tests/baselines/reference/nonInstantiatedModule.types @@ -9,6 +9,7 @@ module M { export var a = 1; >a : number +>1 : number } // primary expression @@ -51,7 +52,9 @@ module M2 { return { x: 0, y: 0 }; >{ x: 0, y: 0 } : { x: number; y: number; } >x : number +>0 : number >y : number +>0 : number } } @@ -84,6 +87,7 @@ var p2: { Origin() : { x: number; y: number; } }; var p2: typeof M2.Point; >p2 : { Origin(): { x: number; y: number; }; } +>M2.Point : typeof M2.Point >M2 : typeof M2 >Point : typeof M2.Point diff --git a/tests/baselines/reference/null.types b/tests/baselines/reference/null.types index 7a5232efb0b..7df551b1bde 100644 --- a/tests/baselines/reference/null.types +++ b/tests/baselines/reference/null.types @@ -1,15 +1,19 @@ === tests/cases/compiler/null.ts === var x=null; >x : any +>null : null var y=3+x; >y : any >3+x : any +>3 : number >x : any var z=3+null; >z : number >3+null : number +>3 : number +>null : null class C { >C : C @@ -18,6 +22,8 @@ function f() { >f : () => C return null; +>null : null + return new C(); >new C() : C >C : typeof C @@ -26,7 +32,10 @@ function g() { >g : () => number return null; +>null : null + return 3; +>3 : number } interface I { >I : I @@ -42,7 +51,9 @@ var w:I={x:null,y:3}; >I : I >{x:null,y:3} : { x: null; y: number; } >x : null +>null : null >y : number +>3 : number diff --git a/tests/baselines/reference/nullAssignableToEveryType.types b/tests/baselines/reference/nullAssignableToEveryType.types index aaf3b3bd8c5..5120a48b896 100644 --- a/tests/baselines/reference/nullAssignableToEveryType.types +++ b/tests/baselines/reference/nullAssignableToEveryType.types @@ -29,59 +29,75 @@ var ae: E; var b: number = null; >b : number +>null : null var c: string = null; >c : string +>null : null var d: boolean = null; >d : boolean +>null : null var e: Date = null; >e : Date >Date : Date +>null : null var f: any = null; >f : any +>null : null var g: void = null; >g : void +>null : null var h: Object = null; >h : Object >Object : Object +>null : null var i: {} = null; >i : {} +>null : null var j: () => {} = null; >j : () => {} +>null : null var k: Function = null; >k : Function >Function : Function +>null : null var l: (x: number) => string = null; >l : (x: number) => string >x : number +>null : null ac = null; >ac = null : null >ac : C +>null : null ai = null; >ai = null : null >ai : I +>null : null ae = null; >ae = null : null >ae : E +>null : null var m: number[] = null; >m : number[] +>null : null var n: { foo: string } = null; >n : { foo: string; } >foo : string +>null : null var o: (x: T) => T = null; >o : (x: T) => T @@ -89,14 +105,17 @@ var o: (x: T) => T = null; >x : T >T : T >T : T +>null : null var p: Number = null; >p : Number >Number : Number +>null : null var q: String = null; >q : String >String : String +>null : null function foo(x: T, y: U, z: V) { >foo : (x: T, y: U, z: V) => void @@ -114,14 +133,17 @@ function foo(x: T, y: U, z: V) { x = null; >x = null : null >x : T +>null : null y = null; >y = null : null >y : U +>null : null z = null; >z = null : null >z : V +>null : null } //function foo(x: T, y: U, z: V) { diff --git a/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.types b/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.types index 066f5eadef4..42243076e9f 100644 --- a/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.types +++ b/tests/baselines/reference/nullIsSubtypeOfEverythingButUndefined.types @@ -4,10 +4,16 @@ var r0 = true ? null : null; >r0 : any >true ? null : null : null +>true : boolean +>null : null +>null : null var r0 = true ? null : null; >r0 : any >true ? null : null : null +>true : boolean +>null : null +>null : null var u: typeof undefined; >u : any @@ -16,91 +22,137 @@ var u: typeof undefined; var r0b = true ? u : null; >r0b : any >true ? u : null : any +>true : boolean >u : any +>null : null var r0b = true ? null : u; >r0b : any >true ? null : u : any +>true : boolean +>null : null >u : any var r1 = true ? 1 : null; >r1 : number >true ? 1 : null : number +>true : boolean +>1 : number +>null : null var r1 = true ? null : 1; >r1 : number >true ? null : 1 : number +>true : boolean +>null : null +>1 : number var r2 = true ? '' : null; >r2 : string >true ? '' : null : string +>true : boolean +>'' : string +>null : null var r2 = true ? null : ''; >r2 : string >true ? null : '' : string +>true : boolean +>null : null +>'' : string var r3 = true ? true : null; >r3 : boolean >true ? true : null : boolean +>true : boolean +>true : boolean +>null : null var r3 = true ? null : true; >r3 : boolean >true ? null : true : boolean +>true : boolean +>null : null +>true : boolean var r4 = true ? new Date() : null; >r4 : Date >true ? new Date() : null : Date +>true : boolean >new Date() : Date >Date : DateConstructor +>null : null var r4 = true ? null : new Date(); >r4 : Date >true ? null : new Date() : Date +>true : boolean +>null : null >new Date() : Date >Date : DateConstructor var r5 = true ? /1/ : null; >r5 : RegExp >true ? /1/ : null : RegExp +>true : boolean +>/1/ : RegExp +>null : null var r5 = true ? null : /1/; >r5 : RegExp >true ? null : /1/ : RegExp +>true : boolean +>null : null +>/1/ : RegExp var r6 = true ? { foo: 1 } : null; >r6 : { foo: number; } >true ? { foo: 1 } : null : { foo: number; } +>true : boolean >{ foo: 1 } : { foo: number; } >foo : number +>1 : number +>null : null var r6 = true ? null : { foo: 1 }; >r6 : { foo: number; } >true ? null : { foo: 1 } : { foo: number; } +>true : boolean +>null : null >{ foo: 1 } : { foo: number; } >foo : number +>1 : number var r7 = true ? () => { } : null; >r7 : () => void >true ? () => { } : null : () => void +>true : boolean >() => { } : () => void +>null : null var r7 = true ? null : () => { }; >r7 : () => void >true ? null : () => { } : () => void +>true : boolean +>null : null >() => { } : () => void var r8 = true ? (x: T) => { return x } : null; >r8 : (x: T) => T >true ? (x: T) => { return x } : null : (x: T) => T +>true : boolean >(x: T) => { return x } : (x: T) => T >T : T >x : T >T : T >x : T +>null : null var r8b = true ? null : (x: T) => { return x }; // type parameters not identical across declarations >r8b : (x: T) => T >true ? null : (x: T) => { return x } : (x: T) => T +>true : boolean +>null : null >(x: T) => { return x } : (x: T) => T >T : T >x : T @@ -118,11 +170,15 @@ var i1: I1; var r9 = true ? i1 : null; >r9 : I1 >true ? i1 : null : I1 +>true : boolean >i1 : I1 +>null : null var r9 = true ? null : i1; >r9 : I1 >true ? null : i1 : I1 +>true : boolean +>null : null >i1 : I1 class C1 { foo: number; } @@ -136,11 +192,15 @@ var c1: C1; var r10 = true ? c1 : null; >r10 : C1 >true ? c1 : null : C1 +>true : boolean >c1 : C1 +>null : null var r10 = true ? null : c1; >r10 : C1 >true ? null : c1 : C1 +>true : boolean +>null : null >c1 : C1 class C2 { foo: T; } @@ -156,11 +216,15 @@ var c2: C2; var r12 = true ? c2 : null; >r12 : C2 >true ? c2 : null : C2 +>true : boolean >c2 : C2 +>null : null var r12 = true ? null : c2; >r12 : C2 >true ? null : c2 : C2 +>true : boolean +>null : null >c2 : C2 enum E { A } @@ -170,23 +234,31 @@ enum E { A } var r13 = true ? E : null; >r13 : typeof E >true ? E : null : typeof E +>true : boolean >E : typeof E +>null : null var r13 = true ? null : E; >r13 : typeof E >true ? null : E : typeof E +>true : boolean +>null : null >E : typeof E var r14 = true ? E.A : null; >r14 : E >true ? E.A : null : E +>true : boolean >E.A : E >E : typeof E >A : E +>null : null var r14 = true ? null : E.A; >r14 : E >true ? null : E.A : E +>true : boolean +>null : null >E.A : E >E : typeof E >A : E @@ -199,6 +271,7 @@ module f { export var bar = 1; >bar : number +>1 : number } var af: typeof f; >af : typeof f @@ -207,11 +280,15 @@ var af: typeof f; var r15 = true ? af : null; >r15 : typeof f >true ? af : null : typeof f +>true : boolean >af : typeof f +>null : null var r15 = true ? null : af; >r15 : typeof f >true ? null : af : typeof f +>true : boolean +>null : null >af : typeof f class c { baz: string } @@ -223,6 +300,7 @@ module c { export var bar = 1; >bar : number +>1 : number } var ac: typeof c; >ac : typeof c @@ -231,11 +309,15 @@ var ac: typeof c; var r16 = true ? ac : null; >r16 : typeof c >true ? ac : null : typeof c +>true : boolean >ac : typeof c +>null : null var r16 = true ? null : ac; >r16 : typeof c >true ? null : ac : typeof c +>true : boolean +>null : null >ac : typeof c function f17(x: T) { @@ -247,11 +329,15 @@ function f17(x: T) { var r17 = true ? x : null; >r17 : T >true ? x : null : T +>true : boolean >x : T +>null : null var r17 = true ? null : x; >r17 : T >true ? null : x : T +>true : boolean +>null : null >x : T } @@ -265,11 +351,15 @@ function f18(x: U) { var r18 = true ? x : null; >r18 : U >true ? x : null : U +>true : boolean >x : U +>null : null var r18 = true ? null : x; >r18 : U >true ? null : x : U +>true : boolean +>null : null >x : U } //function f18(x: U) { @@ -280,22 +370,30 @@ function f18(x: U) { var r19 = true ? new Object() : null; >r19 : Object >true ? new Object() : null : Object +>true : boolean >new Object() : Object >Object : ObjectConstructor +>null : null var r19 = true ? null : new Object(); >r19 : Object >true ? null : new Object() : Object +>true : boolean +>null : null >new Object() : Object >Object : ObjectConstructor var r20 = true ? {} : null; >r20 : {} >true ? {} : null : {} +>true : boolean >{} : {} +>null : null var r20 = true ? null : {}; >r20 : {} >true ? null : {} : {} +>true : boolean +>null : null >{} : {} diff --git a/tests/baselines/reference/numberAsInLHS.types b/tests/baselines/reference/numberAsInLHS.types index 823e3e0354d..848f937c618 100644 --- a/tests/baselines/reference/numberAsInLHS.types +++ b/tests/baselines/reference/numberAsInLHS.types @@ -1,5 +1,8 @@ === tests/cases/compiler/numberAsInLHS.ts === 3 in [0, 1] >3 in [0, 1] : boolean +>3 : number >[0, 1] : number[] +>0 : number +>1 : number diff --git a/tests/baselines/reference/numberPropertyAccess.types b/tests/baselines/reference/numberPropertyAccess.types index fd554e95ace..b7f5479ed79 100644 --- a/tests/baselines/reference/numberPropertyAccess.types +++ b/tests/baselines/reference/numberPropertyAccess.types @@ -1,6 +1,7 @@ === tests/cases/conformance/types/primitives/number/numberPropertyAccess.ts === var x = 1; >x : number +>1 : number var a = x.toExponential(); >a : string @@ -15,16 +16,20 @@ var b = x.hasOwnProperty('toFixed'); >x.hasOwnProperty : (v: string) => boolean >x : number >hasOwnProperty : (v: string) => boolean +>'toFixed' : string var c = x['toExponential'](); >c : string >x['toExponential']() : string >x['toExponential'] : (fractionDigits?: number) => string >x : number +>'toExponential' : string var d = x['hasOwnProperty']('toFixed'); >d : boolean >x['hasOwnProperty']('toFixed') : boolean >x['hasOwnProperty'] : (v: string) => boolean >x : number +>'hasOwnProperty' : string +>'toFixed' : string diff --git a/tests/baselines/reference/numericIndexingResults.types b/tests/baselines/reference/numericIndexingResults.types index e68a083bb74..560bbdc74a8 100644 --- a/tests/baselines/reference/numericIndexingResults.types +++ b/tests/baselines/reference/numericIndexingResults.types @@ -6,7 +6,10 @@ class C { >x : number 1 = ''; +>'' : string + "2" = '' +>'' : string } var c: C; @@ -17,31 +20,37 @@ var r1 = c['1']; >r1 : string >c['1'] : string >c : C +>'1' : string var r2 = c['2']; >r2 : string >c['2'] : string >c : C +>'2' : string var r3 = c['3']; >r3 : any >c['3'] : any >c : C +>'3' : string var r4 = c[1]; >r4 : string >c[1] : string >c : C +>1 : number var r5 = c[2]; >r5 : string >c[2] : string >c : C +>2 : number var r6 = c[3]; >r6 : string >c[3] : string >c : C +>3 : number interface I { >I : I @@ -61,31 +70,37 @@ var r1 = i['1']; >r1 : string >i['1'] : string >i : I +>'1' : string var r2 = i['2']; >r2 : string >i['2'] : string >i : I +>'2' : string var r3 = i['3']; >r3 : any >i['3'] : any >i : I +>'3' : string var r4 = i[1]; >r4 : string >i[1] : string >i : I +>1 : number var r5 = i[2]; >r5 : string >i[2] : string >i : I +>2 : number var r6 = i[3]; >r6 : string >i[3] : string >i : I +>3 : number var a: { >a : { [x: number]: string; 1: string; "2": string; } @@ -101,99 +116,121 @@ var r1 = a['1']; >r1 : string >a['1'] : string >a : { [x: number]: string; 1: string; "2": string; } +>'1' : string var r2 = a['2']; >r2 : string >a['2'] : string >a : { [x: number]: string; 1: string; "2": string; } +>'2' : string var r3 = a['3']; >r3 : any >a['3'] : any >a : { [x: number]: string; 1: string; "2": string; } +>'3' : string var r4 = a[1]; >r4 : string >a[1] : string >a : { [x: number]: string; 1: string; "2": string; } +>1 : number var r5 = a[2]; >r5 : string >a[2] : string >a : { [x: number]: string; 1: string; "2": string; } +>2 : number var r6 = a[3]; >r6 : string >a[3] : string >a : { [x: number]: string; 1: string; "2": string; } +>3 : number var b: { [x: number]: string } = { 1: '', "2": '' } >b : { [x: number]: string; } >x : number >{ 1: '', "2": '' } : { [x: number]: string; 1: string; "2": string; } +>'' : string +>'' : string var r1a = b['1']; >r1a : any >b['1'] : any >b : { [x: number]: string; } +>'1' : string var r2a = b['2']; >r2a : any >b['2'] : any >b : { [x: number]: string; } +>'2' : string var r3 = b['3']; >r3 : any >b['3'] : any >b : { [x: number]: string; } +>'3' : string var r4 = b[1]; >r4 : string >b[1] : string >b : { [x: number]: string; } +>1 : number var r5 = b[2]; >r5 : string >b[2] : string >b : { [x: number]: string; } +>2 : number var r6 = b[3]; >r6 : string >b[3] : string >b : { [x: number]: string; } +>3 : number var b2: { [x: number]: string; 1: string; "2": string; } = { 1: '', "2": '' } >b2 : { [x: number]: string; 1: string; "2": string; } >x : number >{ 1: '', "2": '' } : { [x: number]: string; 1: string; "2": string; } +>'' : string +>'' : string var r1b = b2['1']; >r1b : string >b2['1'] : string >b2 : { [x: number]: string; 1: string; "2": string; } +>'1' : string var r2b = b2['2']; >r2b : string >b2['2'] : string >b2 : { [x: number]: string; 1: string; "2": string; } +>'2' : string var r3 = b2['3']; >r3 : any >b2['3'] : any >b2 : { [x: number]: string; 1: string; "2": string; } +>'3' : string var r4 = b2[1]; >r4 : string >b2[1] : string >b2 : { [x: number]: string; 1: string; "2": string; } +>1 : number var r5 = b2[2]; >r5 : string >b2[2] : string >b2 : { [x: number]: string; 1: string; "2": string; } +>2 : number var r6 = b2[3]; >r6 : string >b2[3] : string >b2 : { [x: number]: string; 1: string; "2": string; } +>3 : number diff --git a/tests/baselines/reference/numericMethodName1.types b/tests/baselines/reference/numericMethodName1.types index 09d63f04e13..e6e631fc705 100644 --- a/tests/baselines/reference/numericMethodName1.types +++ b/tests/baselines/reference/numericMethodName1.types @@ -3,5 +3,6 @@ class C { >C : C 1 = 2; +>2 : number } diff --git a/tests/baselines/reference/objectLitGetterSetter.types b/tests/baselines/reference/objectLitGetterSetter.types index 92decfd4068..4f7865374e2 100644 --- a/tests/baselines/reference/objectLitGetterSetter.types +++ b/tests/baselines/reference/objectLitGetterSetter.types @@ -9,6 +9,7 @@ >Object : ObjectConstructor >defineProperty : (o: any, p: string, attributes: PropertyDescriptor) => any >obj : {} +>"accProperty" : string >({ get: function () { eval("public = 1;"); return 11; }, set: function (v) { } }) : PropertyDescriptor >PropertyDescriptor : PropertyDescriptor >({ get: function () { eval("public = 1;"); return 11; }, set: function (v) { } }) : { get: () => number; set: (v: any) => void; } @@ -21,8 +22,11 @@ eval("public = 1;"); >eval("public = 1;") : any >eval : (x: string) => any +>"public = 1;" : string return 11; +>11 : number + }, set: function (v) { >set : (v: any) => void diff --git a/tests/baselines/reference/objectLiteral1.types b/tests/baselines/reference/objectLiteral1.types index 6371d285f63..491b4ce365b 100644 --- a/tests/baselines/reference/objectLiteral1.types +++ b/tests/baselines/reference/objectLiteral1.types @@ -3,5 +3,7 @@ var v30 = {a:1, b:2}; >v30 : { a: number; b: number; } >{a:1, b:2} : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number diff --git a/tests/baselines/reference/objectLiteral2.types b/tests/baselines/reference/objectLiteral2.types index c6853bdbd88..387bd0ba90f 100644 --- a/tests/baselines/reference/objectLiteral2.types +++ b/tests/baselines/reference/objectLiteral2.types @@ -3,6 +3,8 @@ var v30 = {a:1, b:2}, v31; >v30 : { a: number; b: number; } >{a:1, b:2} : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number >v31 : any diff --git a/tests/baselines/reference/objectLiteralArraySpecialization.types b/tests/baselines/reference/objectLiteralArraySpecialization.types index d077354728b..b32eaa0441e 100644 --- a/tests/baselines/reference/objectLiteralArraySpecialization.types +++ b/tests/baselines/reference/objectLiteralArraySpecialization.types @@ -31,10 +31,14 @@ var thing = create([ { name: "bob", id: 24 }, { name: "doug", id: 32 } ]); // sh >[ { name: "bob", id: 24 }, { name: "doug", id: 32 } ] : { name: string; id: number; }[] >{ name: "bob", id: 24 } : { name: string; id: number; } >name : string +>"bob" : string >id : number +>24 : number >{ name: "doug", id: 32 } : { name: string; id: number; } >name : string +>"doug" : string >id : number +>32 : number thing.doSomething((x, y) => x.name === "bob"); // should not error >thing.doSomething((x, y) => x.name === "bob") : void @@ -48,4 +52,5 @@ thing.doSomething((x, y) => x.name === "bob"); // should not error >x.name : string >x : { name: string; id: number; } >name : string +>"bob" : string diff --git a/tests/baselines/reference/objectLiteralContextualTyping.types b/tests/baselines/reference/objectLiteralContextualTyping.types index 32c9e91b2c7..7668b01d32c 100644 --- a/tests/baselines/reference/objectLiteralContextualTyping.types +++ b/tests/baselines/reference/objectLiteralContextualTyping.types @@ -26,6 +26,7 @@ var x = foo({ name: "Sprocket" }); >foo : { (item: Item): string; (item: any): number; } >{ name: "Sprocket" } : { name: string; } >name : string +>"Sprocket" : string var x: string; >x : string @@ -36,7 +37,9 @@ var y = foo({ name: "Sprocket", description: "Bumpy wheel" }); >foo : { (item: Item): string; (item: any): number; } >{ name: "Sprocket", description: "Bumpy wheel" } : { name: string; description: string; } >name : string +>"Sprocket" : string >description : string +>"Bumpy wheel" : string var y: string; >y : string @@ -47,7 +50,9 @@ var z = foo({ name: "Sprocket", description: false }); >foo : { (item: Item): string; (item: any): number; } >{ name: "Sprocket", description: false } : { name: string; description: boolean; } >name : string +>"Sprocket" : string >description : boolean +>false : boolean var z: number; >z : number @@ -58,6 +63,7 @@ var w = foo({ a: 10 }); >foo : { (item: Item): string; (item: any): number; } >{ a: 10 } : { a: number; } >a : number +>10 : number var w: number; >w : number diff --git a/tests/baselines/reference/objectLiteralIndexerNoImplicitAny.types b/tests/baselines/reference/objectLiteralIndexerNoImplicitAny.types index 14bcc6f5b62..a49f76d02e9 100644 --- a/tests/baselines/reference/objectLiteralIndexerNoImplicitAny.types +++ b/tests/baselines/reference/objectLiteralIndexerNoImplicitAny.types @@ -13,4 +13,5 @@ var x: I = { p: null >p : null +>null : null } diff --git a/tests/baselines/reference/objectLiteralShorthandProperties.types b/tests/baselines/reference/objectLiteralShorthandProperties.types index c34b2ab79b7..9d537173d49 100644 --- a/tests/baselines/reference/objectLiteralShorthandProperties.types +++ b/tests/baselines/reference/objectLiteralShorthandProperties.types @@ -27,6 +27,7 @@ var x3 = { a: 0, >a : number +>0 : number b, >b : any diff --git a/tests/baselines/reference/objectLiteralShorthandPropertiesAssignment.types b/tests/baselines/reference/objectLiteralShorthandPropertiesAssignment.types index 91d9e528d63..869a67fb22f 100644 --- a/tests/baselines/reference/objectLiteralShorthandPropertiesAssignment.types +++ b/tests/baselines/reference/objectLiteralShorthandPropertiesAssignment.types @@ -1,9 +1,11 @@ === tests/cases/conformance/es6/shorthandPropertyAssignment/objectLiteralShorthandPropertiesAssignment.ts === var id: number = 10000; >id : number +>10000 : number var name: string = "my name"; >name : string +>"my name" : string var person: { name: string; id: number } = { name, id }; >person : { name: string; id: number; } @@ -52,12 +54,16 @@ var person1 = bar("Hello", 5); >person1 : { name: string; id: number; } >bar("Hello", 5) : { name: string; id: number; } >bar : (name: string, id: number) => { name: string; id: number; } +>"Hello" : string +>5 : number var person2: { name: string } = bar("Hello", 5); >person2 : { name: string; } >name : string >bar("Hello", 5) : { name: string; id: number; } >bar : (name: string, id: number) => { name: string; id: number; } +>"Hello" : string +>5 : number var person3: { name: string; id:number } = bar("Hello", 5); >person3 : { name: string; id: number; } @@ -65,4 +71,6 @@ var person3: { name: string; id:number } = bar("Hello", 5); >id : number >bar("Hello", 5) : { name: string; id: number; } >bar : (name: string, id: number) => { name: string; id: number; } +>"Hello" : string +>5 : number diff --git a/tests/baselines/reference/objectLiteralShorthandPropertiesAssignmentES6.types b/tests/baselines/reference/objectLiteralShorthandPropertiesAssignmentES6.types index 38791fc1beb..710fc430339 100644 --- a/tests/baselines/reference/objectLiteralShorthandPropertiesAssignmentES6.types +++ b/tests/baselines/reference/objectLiteralShorthandPropertiesAssignmentES6.types @@ -1,9 +1,11 @@ === tests/cases/conformance/es6/shorthandPropertyAssignment/objectLiteralShorthandPropertiesAssignmentES6.ts === var id: number = 10000; >id : number +>10000 : number var name: string = "my name"; >name : string +>"my name" : string var person: { name: string; id: number } = { name, id }; >person : { name: string; id: number; } @@ -52,12 +54,16 @@ var person1 = bar("Hello", 5); >person1 : { name: string; id: number; } >bar("Hello", 5) : { name: string; id: number; } >bar : (name: string, id: number) => { name: string; id: number; } +>"Hello" : string +>5 : number var person2: { name: string } = bar("Hello", 5); >person2 : { name: string; } >name : string >bar("Hello", 5) : { name: string; id: number; } >bar : (name: string, id: number) => { name: string; id: number; } +>"Hello" : string +>5 : number var person3: { name: string; id: number } = bar("Hello", 5); >person3 : { name: string; id: number; } @@ -65,4 +71,6 @@ var person3: { name: string; id: number } = bar("Hello", 5); >id : number >bar("Hello", 5) : { name: string; id: number; } >bar : (name: string, id: number) => { name: string; id: number; } +>"Hello" : string +>5 : number diff --git a/tests/baselines/reference/objectLiteralShorthandPropertiesES6.types b/tests/baselines/reference/objectLiteralShorthandPropertiesES6.types index 5d5acc279a5..5c36262f695 100644 --- a/tests/baselines/reference/objectLiteralShorthandPropertiesES6.types +++ b/tests/baselines/reference/objectLiteralShorthandPropertiesES6.types @@ -27,6 +27,7 @@ var x3 = { a: 0, >a : number +>0 : number b, >b : any diff --git a/tests/baselines/reference/objectLiteralShorthandPropertiesFunctionArgument.types b/tests/baselines/reference/objectLiteralShorthandPropertiesFunctionArgument.types index 9b4261a74be..083d4118128 100644 --- a/tests/baselines/reference/objectLiteralShorthandPropertiesFunctionArgument.types +++ b/tests/baselines/reference/objectLiteralShorthandPropertiesFunctionArgument.types @@ -1,9 +1,11 @@ === tests/cases/conformance/es6/shorthandPropertyAssignment/objectLiteralShorthandPropertiesFunctionArgument.ts === var id: number = 10000; >id : number +>10000 : number var name: string = "my name"; >name : string +>"my name" : string var person = { name, id }; >person : { name: string; id: number; } diff --git a/tests/baselines/reference/objectLiteralWidened.types b/tests/baselines/reference/objectLiteralWidened.types index 3f9163e77ef..9f47e47795d 100644 --- a/tests/baselines/reference/objectLiteralWidened.types +++ b/tests/baselines/reference/objectLiteralWidened.types @@ -7,6 +7,7 @@ var x = { foo: null, >foo : null +>null : null bar: undefined >bar : undefined @@ -19,6 +20,7 @@ var y = { foo: null, >foo : null +>null : null bar: { >bar : { baz: null; boo: undefined; } @@ -26,6 +28,7 @@ var y = { baz: null, >baz : null +>null : null boo: undefined >boo : undefined diff --git a/tests/baselines/reference/objectTypePropertyAccess.types b/tests/baselines/reference/objectTypePropertyAccess.types index 56e45f1bae0..5fc03bd86ed 100644 --- a/tests/baselines/reference/objectTypePropertyAccess.types +++ b/tests/baselines/reference/objectTypePropertyAccess.types @@ -23,6 +23,7 @@ var r2 = c['toString'](); >c['toString']() : string >c['toString'] : () => string >c : C +>'toString' : string var r3 = c.foo; >r3 : string @@ -34,6 +35,7 @@ var r4 = c['foo']; >r4 : string >c['foo'] : string >c : C +>'foo' : string interface I { >I : I @@ -57,6 +59,7 @@ var r5 = i['toString'](); >i['toString']() : string >i['toString'] : () => string >i : I +>'toString' : string var r6 = i.bar; >r6 : string @@ -68,6 +71,7 @@ var r7 = i['bar']; >r7 : string >i['bar'] : string >i : I +>'bar' : string var a = { >a : { foo: string; } @@ -75,6 +79,7 @@ var a = { foo: '' >foo : string +>'' : string } var r8 = a.toString(); @@ -89,6 +94,7 @@ var r9 = a['toString'](); >a['toString']() : string >a['toString'] : () => string >a : { foo: string; } +>'toString' : string var r10 = a.foo; >r10 : string @@ -100,4 +106,5 @@ var r11 = a['foo']; >r11 : string >a['foo'] : string >a : { foo: string; } +>'foo' : string diff --git a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.types b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.types index 56635a8e399..93caca61bfa 100644 --- a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.types +++ b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.types @@ -64,6 +64,7 @@ var r1e = i['hm']; // should be Object >r1e : any >i['hm'] : any >i : I +>'hm' : string var x: { >x : { (): void; apply(a: any, b?: any): void; call(thisArg: number, ...argArray: number[]): any; } @@ -112,4 +113,5 @@ var r2e = x['hm']; // should be Object >r2e : any >x['hm'] : any >x : { (): void; apply(a: any, b?: any): void; call(thisArg: number, ...argArray: number[]): any; } +>'hm' : string diff --git a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.types b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.types index b7d8294dd96..427b700fb59 100644 --- a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.types +++ b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.types @@ -61,6 +61,7 @@ var r1e = i['hm']; // should be Object >r1e : any >i['hm'] : any >i : I +>'hm' : string var x: { >x : { new (): number; apply(a: any, b?: any): void; call(thisArg: number, ...argArray: number[]): any; } @@ -109,4 +110,5 @@ var r2e = x['hm']; // should be Object >r2e : any >x['hm'] : any >x : { new (): number; apply(a: any, b?: any): void; call(thisArg: number, ...argArray: number[]): any; } +>'hm' : string diff --git a/tests/baselines/reference/objectTypeWithNumericProperty.types b/tests/baselines/reference/objectTypeWithNumericProperty.types index 7c507cd4f64..32efd3398fb 100644 --- a/tests/baselines/reference/objectTypeWithNumericProperty.types +++ b/tests/baselines/reference/objectTypeWithNumericProperty.types @@ -16,21 +16,25 @@ var r1 = c[1]; >r1 : number >c[1] : number >c : C +>1 : number var r2 = c[1.1]; >r2 : string >c[1.1] : string >c : C +>1.1 : number var r3 = c['1']; >r3 : number >c['1'] : number >c : C +>'1' : string var r4 = c['1.1']; >r4 : string >c['1.1'] : string >c : C +>'1.1' : string interface I { >I : I @@ -47,21 +51,25 @@ var r1 = i[1]; >r1 : number >i[1] : number >i : I +>1 : number var r2 = i[1.1]; >r2 : string >i[1.1] : string >i : I +>1.1 : number var r3 = i['1']; >r3 : number >i['1'] : number >i : I +>'1' : string var r4 = i['1.1']; >r4 : string >i['1.1'] : string >i : I +>'1.1' : string var a: { >a : { 1: number; 1.1: string; } @@ -74,47 +82,58 @@ var r1 = a[1]; >r1 : number >a[1] : number >a : { 1: number; 1.1: string; } +>1 : number var r2 = a[1.1]; >r2 : string >a[1.1] : string >a : { 1: number; 1.1: string; } +>1.1 : number var r3 = a['1']; >r3 : number >a['1'] : number >a : { 1: number; 1.1: string; } +>'1' : string var r4 = a['1.1']; >r4 : string >a['1.1'] : string >a : { 1: number; 1.1: string; } +>'1.1' : string var b = { >b : { 1: number; 1.1: string; } >{ 1: 1, 1.1: ""} : { 1: number; 1.1: string; } 1: 1, +>1 : number + 1.1: "" +>"" : string } var r1 = b[1]; >r1 : number >b[1] : number >b : { 1: number; 1.1: string; } +>1 : number var r2 = b[1.1]; >r2 : string >b[1.1] : string >b : { 1: number; 1.1: string; } +>1.1 : number var r3 = b['1']; >r3 : number >b['1'] : number >b : { 1: number; 1.1: string; } +>'1' : string var r4 = b['1.1']; >r4 : string >b['1.1'] : string >b : { 1: number; 1.1: string; } +>'1.1' : string diff --git a/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types b/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types index 74b5550fecb..490f3101751 100644 --- a/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types +++ b/tests/baselines/reference/objectTypeWithStringNamedNumericProperty.types @@ -32,46 +32,55 @@ var r1 = c['0.1']; >r1 : void >c['0.1'] : void >c : C +>'0.1' : string var r2 = c['.1']; >r2 : Object >c['.1'] : Object >c : C +>'.1' : string var r3 = c['1']; >r3 : number >c['1'] : number >c : C +>'1' : string var r3 = c[1]; >r3 : number >c[1] : number >c : C +>1 : number var r4 = c['1.']; >r4 : string >c['1.'] : string >c : C +>'1.' : string var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : number >c[1.] : number >c : C +>1. : number var r5 = c['1..']; >r5 : boolean >c['1..'] : boolean >c : C +>'1..' : string var r6 = c['1.0']; >r6 : Date >c['1.0'] : Date >c : C +>'1.0' : string var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : number >c[1.0] : number >c : C +>1.0 : number // BUG 823822 var r7 = i[-1]; @@ -79,44 +88,52 @@ var r7 = i[-1]; >i[-1] : any >i : I >-1 : number +>1 : number var r7 = i[-1.0]; >r7 : any >i[-1.0] : any >i : I >-1.0 : number +>1.0 : number var r8 = i["-1.0"]; >r8 : RegExp >i["-1.0"] : RegExp >i : I +>"-1.0" : string var r9 = i["-1"]; >r9 : Date >i["-1"] : Date >i : I +>"-1" : string var r10 = i[0x1] >r10 : number >i[0x1] : number >i : I +>0x1 : number var r11 = i[-0x1] >r11 : any >i[-0x1] : any >i : I >-0x1 : number +>0x1 : number var r12 = i[01] >r12 : number >i[01] : number >i : I +>01 : number var r13 = i[-01] >r13 : any >i[-01] : any >i : I >-01 : number +>01 : number interface I { >I : I @@ -146,46 +163,55 @@ var r1 = i['0.1']; >r1 : void >i['0.1'] : void >i : I +>'0.1' : string var r2 = i['.1']; >r2 : Object >i['.1'] : Object >i : I +>'.1' : string var r3 = i['1']; >r3 : number >i['1'] : number >i : I +>'1' : string var r3 = c[1]; >r3 : number >c[1] : number >c : C +>1 : number var r4 = i['1.']; >r4 : string >i['1.'] : string >i : I +>'1.' : string var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : number >c[1.] : number >c : C +>1. : number var r5 = i['1..']; >r5 : boolean >i['1..'] : boolean >i : I +>'1..' : string var r6 = i['1.0']; >r6 : Date >i['1.0'] : Date >i : I +>'1.0' : string var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : number >c[1.0] : number >c : C +>1.0 : number // BUG 823822 var r7 = i[-1]; @@ -193,44 +219,52 @@ var r7 = i[-1]; >i[-1] : any >i : I >-1 : number +>1 : number var r7 = i[-1.0]; >r7 : any >i[-1.0] : any >i : I >-1.0 : number +>1.0 : number var r8 = i["-1.0"]; >r8 : RegExp >i["-1.0"] : RegExp >i : I +>"-1.0" : string var r9 = i["-1"]; >r9 : Date >i["-1"] : Date >i : I +>"-1" : string var r10 = i[0x1] >r10 : number >i[0x1] : number >i : I +>0x1 : number var r11 = i[-0x1] >r11 : any >i[-0x1] : any >i : I >-0x1 : number +>0x1 : number var r12 = i[01] >r12 : number >i[01] : number >i : I +>01 : number var r13 = i[-01] >r13 : any >i[-01] : any >i : I >-01 : number +>01 : number var a: { >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } @@ -256,46 +290,55 @@ var r1 = a['0.1']; >r1 : void >a['0.1'] : void >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>'0.1' : string var r2 = a['.1']; >r2 : Object >a['.1'] : Object >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>'.1' : string var r3 = a['1']; >r3 : number >a['1'] : number >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>'1' : string var r3 = c[1]; >r3 : number >c[1] : number >c : C +>1 : number var r4 = a['1.']; >r4 : string >a['1.'] : string >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>'1.' : string var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : number >c[1.] : number >c : C +>1. : number var r5 = a['1..']; >r5 : boolean >a['1..'] : boolean >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>'1..' : string var r6 = a['1.0']; >r6 : Date >a['1.0'] : Date >a : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>'1.0' : string var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : number >c[1.0] : number >c : C +>1.0 : number // BUG 823822 var r7 = i[-1]; @@ -303,44 +346,52 @@ var r7 = i[-1]; >i[-1] : any >i : I >-1 : number +>1 : number var r7 = i[-1.0]; >r7 : any >i[-1.0] : any >i : I >-1.0 : number +>1.0 : number var r8 = i["-1.0"]; >r8 : RegExp >i["-1.0"] : RegExp >i : I +>"-1.0" : string var r9 = i["-1"]; >r9 : Date >i["-1"] : Date >i : I +>"-1" : string var r10 = i[0x1] >r10 : number >i[0x1] : number >i : I +>0x1 : number var r11 = i[-0x1] >r11 : any >i[-0x1] : any >i : I >-0x1 : number +>0x1 : number var r12 = i[01] >r12 : number >i[01] : number >i : I +>01 : number var r13 = i[-01] >r13 : any >i[-01] : any >i : I >-01 : number +>01 : number var b = { >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } @@ -348,19 +399,28 @@ var b = { "0.1": null, >null : void +>null : null ".1": new Object(), >new Object() : Object >Object : ObjectConstructor "1": 1, +>1 : number + "1.": "", +>"" : string + "1..": true, +>true : boolean + "1.0": new Date(), >new Date() : Date >Date : DateConstructor "-1.0": /123/, +>/123/ : RegExp + "-1": Date >Date : DateConstructor @@ -370,46 +430,55 @@ var r1 = b['0.1']; >r1 : void >b['0.1'] : void >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>'0.1' : string var r2 = b['.1']; >r2 : Object >b['.1'] : Object >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>'.1' : string var r3 = b['1']; >r3 : number >b['1'] : number >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>'1' : string var r3 = c[1]; >r3 : number >c[1] : number >c : C +>1 : number var r4 = b['1.']; >r4 : string >b['1.'] : string >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>'1.' : string var r3 = c[1.]; // same as indexing by 1 when done numerically >r3 : number >c[1.] : number >c : C +>1. : number var r5 = b['1..']; >r5 : boolean >b['1..'] : boolean >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>'1..' : string var r6 = b['1.0']; >r6 : Date >b['1.0'] : Date >b : { "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>'1.0' : string var r3 = c[1.0]; // same as indexing by 1 when done numerically >r3 : number >c[1.0] : number >c : C +>1.0 : number // BUG 823822 var r7 = i[-1]; @@ -417,42 +486,50 @@ var r7 = i[-1]; >i[-1] : any >i : I >-1 : number +>1 : number var r7 = i[-1.0]; >r7 : any >i[-1.0] : any >i : I >-1.0 : number +>1.0 : number var r8 = i["-1.0"]; >r8 : RegExp >i["-1.0"] : RegExp >i : I +>"-1.0" : string var r9 = i["-1"]; >r9 : Date >i["-1"] : Date >i : I +>"-1" : string var r10 = i[0x1] >r10 : number >i[0x1] : number >i : I +>0x1 : number var r11 = i[-0x1] >r11 : any >i[-0x1] : any >i : I >-0x1 : number +>0x1 : number var r12 = i[01] >r12 : number >i[01] : number >i : I +>01 : number var r13 = i[-01] >r13 : any >i[-01] : any >i : I >-01 : number +>01 : number diff --git a/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.types b/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.types index fce2b03f53f..b676d284e70 100644 --- a/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.types +++ b/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.types @@ -17,22 +17,26 @@ var r = c[" "]; >r : number >c[" "] : number >c : C +>" " : string var r2 = c[" "]; >r2 : any >c[" "] : any >c : C +>" " : string var r3 = c["a b"]; >r3 : string >c["a b"] : string >c : C +>"a b" : string // BUG 817263 var r4 = c["~!@#$%^&*()_+{}|:'<>?\/.,`"]; >r4 : number >c["~!@#$%^&*()_+{}|:'<>?\/.,`"] : number >c : C +>"~!@#$%^&*()_+{}|:'<>?\/.,`" : string interface I { >I : I @@ -50,22 +54,26 @@ var r = i[" "]; >r : number >i[" "] : number >i : I +>" " : string var r2 = i[" "]; >r2 : any >i[" "] : any >i : I +>" " : string var r3 = i["a b"]; >r3 : string >i["a b"] : string >i : I +>"a b" : string // BUG 817263 var r4 = i["~!@#$%^&*()_+{}|:'<>?\/.,`"]; >r4 : number >i["~!@#$%^&*()_+{}|:'<>?\/.,`"] : number >i : I +>"~!@#$%^&*()_+{}|:'<>?\/.,`" : string var a: { @@ -80,50 +88,63 @@ var r = a[" "]; >r : number >a[" "] : number >a : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>" " : string var r2 = a[" "]; >r2 : any >a[" "] : any >a : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>" " : string var r3 = a["a b"]; >r3 : string >a["a b"] : string >a : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>"a b" : string // BUG 817263 var r4 = a["~!@#$%^&*()_+{}|:'<>?\/.,`"]; >r4 : number >a["~!@#$%^&*()_+{}|:'<>?\/.,`"] : number >a : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>"~!@#$%^&*()_+{}|:'<>?\/.,`" : string var b = { >b : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } >{ " ": 1, "a b": "", "~!@#$%^&*()_+{}|:'<>?\/.,`": 1,} : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } " ": 1, +>1 : number + "a b": "", +>"" : string + "~!@#$%^&*()_+{}|:'<>?\/.,`": 1, +>1 : number } var r = b[" "]; >r : number >b[" "] : number >b : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>" " : string var r2 = b[" "]; >r2 : any >b[" "] : any >b : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>" " : string var r3 = b["a b"]; >r3 : string >b["a b"] : string >b : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>"a b" : string // BUG 817263 var r4 = b["~!@#$%^&*()_+{}|:'<>?\/.,`"]; >r4 : number >b["~!@#$%^&*()_+{}|:'<>?\/.,`"] : number >b : { " ": number; "a b": string; "~!@#$%^&*()_+{}|:'<>?\/.,`": number; } +>"~!@#$%^&*()_+{}|:'<>?\/.,`" : string diff --git a/tests/baselines/reference/objectTypesIdentity.types b/tests/baselines/reference/objectTypesIdentity.types index c148c4223ed..3491682954a 100644 --- a/tests/baselines/reference/objectTypesIdentity.types +++ b/tests/baselines/reference/objectTypesIdentity.types @@ -39,6 +39,7 @@ var b = { foo: '' }; >b : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignatures.types b/tests/baselines/reference/objectTypesIdentityWithCallSignatures.types index efe7e32f5d7..545e2376bb3 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignatures.types +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignatures.types @@ -7,6 +7,7 @@ class A { foo(x: string): string { return null; } >foo : (x: string) => string >x : string +>null : null } class B { @@ -15,6 +16,7 @@ class B { foo(x: string): string { return null; } >foo : (x: string) => string >x : string +>null : null } class C { @@ -26,6 +28,7 @@ class C { >x : T >T : T >T : T +>null : null } interface I { @@ -57,6 +60,7 @@ var b = { foo(x: string) { return ''; } }; >{ foo(x: string) { return ''; } } : { foo(x: string): string; } >foo : (x: string) => string >x : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.types b/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.types index 9004a267691..378c5c4fa0c 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.types +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignatures2.types @@ -7,6 +7,7 @@ class A { foo(x: string): string { return null; } >foo : (x: string) => string >x : string +>null : null } class B { @@ -15,6 +16,7 @@ class B { foo(x: number): string { return null; } >foo : (x: number) => string >x : number +>null : null } class C { @@ -26,6 +28,7 @@ class C { >x : T >T : T >T : T +>null : null } interface I { @@ -59,6 +62,7 @@ var b = { foo(x: RegExp) { return ''; } }; >foo : (x: RegExp) => string >x : RegExp >RegExp : RegExp +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types index 2f97c721637..62426cb0333 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesDifferingParamCounts.types @@ -7,6 +7,7 @@ class A { foo(x: string): string { return null; } >foo : (x: string) => string >x : string +>null : null } class B { @@ -16,6 +17,7 @@ class B { >foo : (x: string, y: string) => string >x : string >y : string +>null : null } class C { @@ -29,6 +31,7 @@ class C { >y : T >T : T >T : T +>null : null } interface I { @@ -61,6 +64,7 @@ var b = { foo(x: string) { return ''; } }; >{ foo(x: string) { return ''; } } : { foo(x: string): string; } >foo : (x: string) => string >x : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.types b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.types index c3ab4ffb837..edaad51b32e 100644 --- a/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.types +++ b/tests/baselines/reference/objectTypesIdentityWithCallSignaturesWithOverloads.types @@ -15,6 +15,7 @@ class A { foo(x: any): any { return null; } >foo : { (x: number): number; (x: string): string; } >x : any +>null : null } class B { @@ -31,6 +32,7 @@ class B { foo(x: any): any { return null; } >foo : { (x: number): number; (x: string): string; } >x : any +>null : null } class C { @@ -54,6 +56,7 @@ class C { foo(x: any): any { return null; } >foo : { (x: number): number; (x: string): string; (x: T): T; } >x : any +>null : null } interface I { @@ -107,6 +110,7 @@ var b = { >foo : (x: any) => any >x : any >'' : any +>'' : string }; diff --git a/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.types b/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.types index 769682c826a..2e5e7231721 100644 --- a/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.types +++ b/tests/baselines/reference/objectTypesIdentityWithConstructSignatures2.types @@ -6,6 +6,7 @@ class B { constructor(x: number) { return null; } >x : number +>null : null } class C { @@ -15,6 +16,7 @@ class C { constructor(x: T) { return null; } >x : T >T : T +>null : null } interface I { @@ -45,6 +47,7 @@ var b = { new(x: RegExp) { return ''; } }; // not a construct signature, functio >new : (x: RegExp) => string >x : RegExp >RegExp : RegExp +>'' : string function foo1b(x: B); >foo1b : { (x: B): any; (x: B): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types b/tests/baselines/reference/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types index a2779e3bd35..b7f59953959 100644 --- a/tests/baselines/reference/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types +++ b/tests/baselines/reference/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.types @@ -7,6 +7,7 @@ class B { constructor(x: string, y: string) { return null; } >x : string >y : string +>null : null } class C { @@ -18,6 +19,7 @@ class C { >T : T >y : T >T : T +>null : null } interface I { @@ -47,6 +49,7 @@ var b = { new(x: string) { return ''; } }; // not a construct signature, functio >{ new(x: string) { return ''; } } : { new(x: string): string; } >new : (x: string) => string >x : string +>'' : string function foo1b(x: B); >foo1b : { (x: B): any; (x: B): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.types index d3cf9bc0063..d871c3c4cb5 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures.types @@ -10,6 +10,7 @@ class A { >x : T >T : T >T : T +>null : null } class B { @@ -21,6 +22,7 @@ class B { >x : T >T : T >T : T +>null : null } class C { @@ -32,6 +34,7 @@ class C { >x : T >T : T >T : T +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.types index 0c00e587b78..c7ca543aead 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignatures2.types @@ -13,6 +13,7 @@ class A { >y : U >U : U >T : T +>null : null } class B { @@ -27,6 +28,7 @@ class B { >y : U >U : U >T : T +>null : null } class C { @@ -41,6 +43,7 @@ class C { >y : U >U : U >T : T +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types index 432a618c4e2..90ed7fd0945 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.types @@ -12,6 +12,7 @@ class A { >Date : Date >x : T >T : T +>null : null } class B> { @@ -23,6 +24,7 @@ class B> { >foo : (x: T) => string >x : T >T : T +>null : null } class C { @@ -34,6 +36,7 @@ class C { >foo : (x: T) => string >x : T >T : T +>null : null } interface I { @@ -74,6 +77,7 @@ var b = { foo(x: T) { return ''; } }; >RegExp : RegExp >x : T >T : T +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types index 8b5a042c1e2..ef6799b6ab9 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.types @@ -11,6 +11,7 @@ class A { >T : T >x : T >T : T +>null : null } class B { @@ -21,6 +22,7 @@ class B { >foo : (x: T) => number >x : T >T : T +>null : null } class C { @@ -31,6 +33,7 @@ class C { >foo : (x: T) => boolean >x : T >T : T +>null : null } interface I { @@ -70,6 +73,7 @@ var b = { foo(x: T) { return null; } }; >T : T >x : T >T : T +>null : null function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types index 2863cafa885..c964cc46cad 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.types @@ -12,6 +12,7 @@ class A { >Date : Date >x : T >T : T +>null : null } class B { @@ -23,6 +24,7 @@ class B { >foo : (x: T) => number >x : T >T : T +>null : null } class C { @@ -34,6 +36,7 @@ class C { >foo : (x: T) => boolean >x : T >T : T +>null : null } interface I { @@ -77,6 +80,7 @@ var b = { foo(x: T) { return null; } }; >Date : Date >x : T >T : T +>null : null function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types index 125b82c9915..afc2e9ae6ce 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.types @@ -10,6 +10,7 @@ class A { >x : T >T : T >T : T +>null : null } class B { @@ -22,6 +23,7 @@ class B { >x : U >U : U >U : U +>null : null } class C { @@ -35,6 +37,7 @@ class C { >x : V >V : V >V : V +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types index fd0b14a4f79..52acb56dfaf 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.types @@ -10,6 +10,7 @@ class A { >x : T >T : T >T : T +>null : null } class B { @@ -21,6 +22,7 @@ class B { >x : U >U : U >U : U +>null : null } class C { @@ -32,6 +34,7 @@ class C { >x : V >V : V >V : V +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types index 33fce5295a7..da6144b57e2 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams.types @@ -14,6 +14,7 @@ class A { >y : T >T : T >T : T +>null : null } class B { @@ -27,6 +28,7 @@ class B { >y : T >T : T >T : T +>null : null } class C { @@ -40,6 +42,7 @@ class C { >y : T >T : T >T : T +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types index 2d9eab7c540..09478fc5d35 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.types @@ -15,6 +15,7 @@ class A { >y : U >U : U >T : T +>null : null } class B { @@ -29,6 +30,7 @@ class B { >y : U >U : U >T : T +>null : null } class C { @@ -43,6 +45,7 @@ class C { >y : U >U : U >T : T +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types index 54ec438104e..d0356784ed6 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.types @@ -15,6 +15,7 @@ class A { >y : U >U : U >T : T +>null : null } class B { @@ -29,6 +30,7 @@ class B { >y : U >U : U >T : T +>null : null } class C { @@ -43,6 +45,7 @@ class C { >y : U >U : U >T : T +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types index 7acc93db124..ef3ec91f479 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.types @@ -11,6 +11,7 @@ class B> { constructor(x: T) { return null; } >x : T >T : T +>null : null } class C { @@ -21,6 +22,7 @@ class C { constructor(x: T) { return null; } >x : T >T : T +>null : null } interface I { @@ -58,6 +60,7 @@ var b = { new(x: T) { return ''; } }; // not a construct signa >RegExp : RegExp >x : T >T : T +>'' : string function foo1b(x: B>); >foo1b : { (x: B): any; (x: B): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types index 4b2e628ad5d..657c38aae9a 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.types @@ -10,6 +10,7 @@ class B { constructor(x: T) { return null; } >x : T >T : T +>null : null } class C { @@ -19,6 +20,7 @@ class C { constructor(x: T) { return null; } >x : T >T : T +>null : null } interface I { @@ -56,6 +58,7 @@ var b = { new(x: T): T { return null; } }; // not a construct signature, func >x : T >T : T >T : T +>null : null function foo1b(x: B); >foo1b : { (x: B): any; (x: B): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types index a25fb5b876a..181acc2ce91 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.types @@ -11,6 +11,7 @@ class B { constructor(x: T) { return null; } >x : T >T : T +>null : null } class C { @@ -21,6 +22,7 @@ class C { constructor(x: T) { return null; } >x : T >T : T +>null : null } interface I { @@ -61,6 +63,7 @@ var b = { new(x: T) { return null; } }; // not a construct signa >Date : Date >x : T >T : T +>null : null function foo1b(x: B); >foo1b : { (x: B): any; (x: B): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types index 683c3ace9f9..b8e7c15c9b5 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.types @@ -9,6 +9,7 @@ class B { constructor(x: U) { return null; } >x : U >U : U +>null : null } class C { @@ -20,6 +21,7 @@ class C { constructor(x: V) { return null; } >x : V >V : V +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types index af65ca5b911..db188b1b358 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.types @@ -8,6 +8,7 @@ class B { constructor(x: U) { return null; } >x : U >U : U +>null : null } class C { @@ -17,6 +18,7 @@ class C { constructor(x: V) { return null; } >x : V >V : V +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types index a6dea7c2518..027fe3b0043 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.types @@ -12,6 +12,7 @@ class B { >T : T >y : T >T : T +>null : null } class C { @@ -23,6 +24,7 @@ class C { >T : T >y : T >T : T +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types index 3c0f09e61da..9a415f6cbf4 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.types @@ -13,6 +13,7 @@ class B { >T : T >y : U >U : U +>null : null } class C { @@ -25,6 +26,7 @@ class C { >T : T >y : U >U : U +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types index f21ccc15abb..c73d45260f9 100644 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.types @@ -13,6 +13,7 @@ class B { >T : T >y : U >U : U +>null : null } class C { @@ -25,6 +26,7 @@ class C { >T : T >y : U >U : U +>null : null } interface I { diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types index a0603ae0777..2284d06ffbd 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types @@ -52,6 +52,7 @@ var b: { [x: number]: string; } = { foo: '' }; >x : number >{ foo: '' } : { [x: number]: undefined; foo: string; } >foo : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types index 9e4ccb5c43b..1a580297b1b 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types @@ -68,6 +68,7 @@ var b: { [x: number]: Derived; } = { foo: null }; >foo : Derived >null : Derived >Derived : Derived +>null : null function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types index 3553f5f7252..ae384bbb4db 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types @@ -52,6 +52,7 @@ var b: { [x: number]: string; } = { foo: '' }; >x : number >{ foo: '' } : { [x: number]: undefined; foo: string; } >foo : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithOptionality.types b/tests/baselines/reference/objectTypesIdentityWithOptionality.types index 0ca5b552bf5..bab319f3598 100644 --- a/tests/baselines/reference/objectTypesIdentityWithOptionality.types +++ b/tests/baselines/reference/objectTypesIdentityWithOptionality.types @@ -39,6 +39,7 @@ var b = { foo: '' }; >b : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string function foo2(x: I); >foo2 : { (x: I): any; (x: I): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates.types b/tests/baselines/reference/objectTypesIdentityWithPrivates.types index 391f6f1f200..c828f45ac5a 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates.types +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates.types @@ -49,6 +49,7 @@ var b = { foo: '' }; >b : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithPublics.types b/tests/baselines/reference/objectTypesIdentityWithPublics.types index 411fe4fb88e..daae624a7d1 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPublics.types +++ b/tests/baselines/reference/objectTypesIdentityWithPublics.types @@ -39,6 +39,7 @@ var b = { foo: '' }; >b : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types b/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types index 83a73646874..a7eeb672504 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types @@ -52,6 +52,7 @@ var b: { [x: string]: string; } = { foo: '' }; >x : string >{ foo: '' } : { [x: string]: string; foo: string; } >foo : string +>'' : string function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types index c621be1e26b..d1394252117 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types @@ -68,6 +68,7 @@ var b: { [x: string]: Derived; } = { foo: null }; >foo : Derived >null : Derived >Derived : Derived +>null : null function foo1(x: A); >foo1 : { (x: A): any; (x: A): any; } diff --git a/tests/baselines/reference/octalIntegerLiteral.types b/tests/baselines/reference/octalIntegerLiteral.types index 82f72cf625b..8352e5fac0c 100644 --- a/tests/baselines/reference/octalIntegerLiteral.types +++ b/tests/baselines/reference/octalIntegerLiteral.types @@ -1,23 +1,30 @@ === tests/cases/conformance/es6/binaryAndOctalIntegerLiteral/octalIntegerLiteral.ts === var oct1 = 0o45436; >oct1 : number +>0o45436 : number var oct2 = 0O45436; >oct2 : number +>0O45436 : number var oct3 = 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777; >oct3 : number +>0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 : number var oct4 = 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777; >oct4 : number +>0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 : number var obj1 = { >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } >{ 0o45436: "Hello", a: 0o45436, b: oct1, oct1, 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: true} : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } 0o45436: "Hello", +>"Hello" : string + a: 0o45436, >a : number +>0o45436 : number b: oct1, >b : number @@ -27,6 +34,7 @@ var obj1 = { >oct1 : number 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: true +>true : boolean } var obj2 = { @@ -34,8 +42,11 @@ var obj2 = { >{ 0O45436: "hi", a: 0O45436, b: oct2, oct2, 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: false,} : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } 0O45436: "hi", +>"hi" : string + a: 0O45436, >a : number +>0O45436 : number b: oct2, >b : number @@ -45,77 +56,96 @@ var obj2 = { >oct2 : number 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: false, +>false : boolean } obj1[0o45436]; // string >obj1[0o45436] : string >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>0o45436 : number obj1["0o45436"]; // any >obj1["0o45436"] : any >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"0o45436" : string obj1["19230"]; // string >obj1["19230"] : string >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"19230" : string obj1[19230]; // string >obj1[19230] : string >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>19230 : number obj1["a"]; // number >obj1["a"] : number >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"a" : string obj1["b"]; // number >obj1["b"] : number >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"b" : string obj1["oct1"]; // number >obj1["oct1"] : number >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"oct1" : string obj1["Infinity"]; // boolean >obj1["Infinity"] : boolean >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"Infinity" : string obj2[0O45436]; // string >obj2[0O45436] : string >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>0O45436 : number obj2["0O45436"]; // any >obj2["0O45436"] : any >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"0O45436" : string obj2["19230"]; // string >obj2["19230"] : string >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"19230" : string obj2[19230]; // string >obj2[19230] : string >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>19230 : number obj2["a"]; // number >obj2["a"] : number >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"a" : string obj2["b"]; // number >obj2["b"] : number >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"b" : string obj2["oct2"]; // number >obj2["oct2"] : number >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"oct2" : string obj2[5.462437423415177e+244]; // boolean >obj2[5.462437423415177e+244] : boolean >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>5.462437423415177e+244 : number obj2["5.462437423415177e+244"]; // boolean >obj2["5.462437423415177e+244"] : boolean >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"5.462437423415177e+244" : string obj2["Infinity"]; // any >obj2["Infinity"] : any >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"Infinity" : string diff --git a/tests/baselines/reference/octalIntegerLiteralES6.types b/tests/baselines/reference/octalIntegerLiteralES6.types index e0a64f160c3..7ef32b49289 100644 --- a/tests/baselines/reference/octalIntegerLiteralES6.types +++ b/tests/baselines/reference/octalIntegerLiteralES6.types @@ -1,23 +1,30 @@ === tests/cases/conformance/es6/binaryAndOctalIntegerLiteral/octalIntegerLiteralES6.ts === var oct1 = 0o45436; >oct1 : number +>0o45436 : number var oct2 = 0O45436; >oct2 : number +>0O45436 : number var oct3 = 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777; >oct3 : number +>0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 : number var oct4 = 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777; >oct4 : number +>0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 : number var obj1 = { >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } >{ 0o45436: "Hello", a: 0o45436, b: oct1, oct1, 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: true} : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } 0o45436: "Hello", +>"Hello" : string + a: 0o45436, >a : number +>0o45436 : number b: oct1, >b : number @@ -27,6 +34,7 @@ var obj1 = { >oct1 : number 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: true +>true : boolean } var obj2 = { @@ -34,8 +42,11 @@ var obj2 = { >{ 0O45436: "hi", a: 0O45436, b: oct2, oct2, 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: false,} : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } 0O45436: "hi", +>"hi" : string + a: 0O45436, >a : number +>0O45436 : number b: oct2, >b : number @@ -45,77 +56,96 @@ var obj2 = { >oct2 : number 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: false, +>false : boolean } obj1[0o45436]; // string >obj1[0o45436] : string >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>0o45436 : number obj1["0o45436"]; // any >obj1["0o45436"] : any >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"0o45436" : string obj1["19230"]; // string >obj1["19230"] : string >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"19230" : string obj1[19230]; // string >obj1[19230] : string >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>19230 : number obj1["a"]; // number >obj1["a"] : number >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"a" : string obj1["b"]; // number >obj1["b"] : number >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"b" : string obj1["oct1"]; // number >obj1["oct1"] : number >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"oct1" : string obj1["Infinity"]; // boolean >obj1["Infinity"] : boolean >obj1 : { 0o45436: string; a: number; b: number; oct1: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"Infinity" : string obj2[0O45436]; // string >obj2[0O45436] : string >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>0O45436 : number obj2["0O45436"]; // any >obj2["0O45436"] : any >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"0O45436" : string obj2["19230"]; // string >obj2["19230"] : string >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"19230" : string obj2[19230]; // string >obj2[19230] : string >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>19230 : number obj2["a"]; // number >obj2["a"] : number >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"a" : string obj2["b"]; // number >obj2["b"] : number >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"b" : string obj2["oct2"]; // number >obj2["oct2"] : number >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"oct2" : string obj2[5.462437423415177e+244]; // boolean >obj2[5.462437423415177e+244] : boolean >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>5.462437423415177e+244 : number obj2["5.462437423415177e+244"]; // boolean >obj2["5.462437423415177e+244"] : boolean >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"5.462437423415177e+244" : string obj2["Infinity"]; // any >obj2["Infinity"] : any >obj2 : { 0O45436: string; a: number; b: number; oct2: number; 0o7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777: boolean; } +>"Infinity" : string diff --git a/tests/baselines/reference/optionalAccessorsInInterface1.types b/tests/baselines/reference/optionalAccessorsInInterface1.types index c426cdba178..d030849e554 100644 --- a/tests/baselines/reference/optionalAccessorsInInterface1.types +++ b/tests/baselines/reference/optionalAccessorsInInterface1.types @@ -21,9 +21,11 @@ defineMyProperty({}, "name", { get: function () { return 5; } }); >defineMyProperty({}, "name", { get: function () { return 5; } }) : any >defineMyProperty : (o: any, p: string, attributes: MyPropertyDescriptor) => any >{} : {} +>"name" : string >{ get: function () { return 5; } } : { get: () => number; } >get : () => number >function () { return 5; } : () => number +>5 : number interface MyPropertyDescriptor2 { >MyPropertyDescriptor2 : MyPropertyDescriptor2 @@ -47,7 +49,9 @@ defineMyProperty2({}, "name", { get: function () { return 5; } }); >defineMyProperty2({}, "name", { get: function () { return 5; } }) : any >defineMyProperty2 : (o: any, p: string, attributes: MyPropertyDescriptor2) => any >{} : {} +>"name" : string >{ get: function () { return 5; } } : { get: () => number; } >get : () => number >function () { return 5; } : () => number +>5 : number diff --git a/tests/baselines/reference/optionalParamReferencingOtherParams1.types b/tests/baselines/reference/optionalParamReferencingOtherParams1.types index 3a62d51759c..5a8963b8b33 100644 --- a/tests/baselines/reference/optionalParamReferencingOtherParams1.types +++ b/tests/baselines/reference/optionalParamReferencingOtherParams1.types @@ -5,6 +5,7 @@ function strange(x: number, y = x * 1, z = x + y) { >y : number >x * 1 : number >x : number +>1 : number >z : number >x + y : number >x : number diff --git a/tests/baselines/reference/out-flag.types b/tests/baselines/reference/out-flag.types index ac1b38b4e2e..b182e4e53d9 100644 --- a/tests/baselines/reference/out-flag.types +++ b/tests/baselines/reference/out-flag.types @@ -10,6 +10,7 @@ class MyClass >Count : () => number { return 42; +>42 : number } public SetCount(value: number) diff --git a/tests/baselines/reference/overloadCallTest.types b/tests/baselines/reference/overloadCallTest.types index 0ed7ecccdbc..bd719311975 100644 --- a/tests/baselines/reference/overloadCallTest.types +++ b/tests/baselines/reference/overloadCallTest.types @@ -13,11 +13,13 @@ class foo { function bar(foo?: string) { return "foo" }; >bar : { (): string; (s: string): any; } >foo : string +>"foo" : string var test = bar("test"); >test : any >bar("test") : any >bar : { (): string; (s: string): any; } +>"test" : string var goo = bar(); >goo : string @@ -29,6 +31,7 @@ class foo { >goo : string >bar("test") : any >bar : { (): string; (s: string): any; } +>"test" : string } } diff --git a/tests/baselines/reference/overloadEquivalenceWithStatics.types b/tests/baselines/reference/overloadEquivalenceWithStatics.types index 96ad16ae19c..1f59b64572a 100644 --- a/tests/baselines/reference/overloadEquivalenceWithStatics.types +++ b/tests/baselines/reference/overloadEquivalenceWithStatics.types @@ -28,6 +28,7 @@ static B(v: any): A1 { >S : S return null; +>null : null } } diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks1.types b/tests/baselines/reference/overloadOnConstConstraintChecks1.types index 9f92e56c682..cc561eb6e21 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks1.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks1.types @@ -74,5 +74,6 @@ class D implements MyDoc { >Base : Base return null; +>null : null } } diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks2.types b/tests/baselines/reference/overloadOnConstConstraintChecks2.types index c5af206c6da..36fa89dec4a 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks2.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks2.types @@ -34,4 +34,5 @@ function foo(name: any): A { >A : A return null; +>null : null } diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks3.types b/tests/baselines/reference/overloadOnConstConstraintChecks3.types index adc41ff235c..94a03bb7680 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks3.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks3.types @@ -2,6 +2,7 @@ class A { private x = 1} >A : A >x : number +>1 : number class B extends A {} >B : B @@ -35,5 +36,6 @@ function foo(name: any): A { >A : A return null; +>null : null } diff --git a/tests/baselines/reference/overloadResolutionOverNonCTLambdas.types b/tests/baselines/reference/overloadResolutionOverNonCTLambdas.types index 6e129400736..f62bb4e8373 100644 --- a/tests/baselines/reference/overloadResolutionOverNonCTLambdas.types +++ b/tests/baselines/reference/overloadResolutionOverNonCTLambdas.types @@ -18,6 +18,7 @@ module Bugs { >message.replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } >message : string >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>/\{(\d+)\}/g : RegExp >function(match, ...rest) { var index= rest[0]; return typeof args[index] !== 'undefined' ? args[index] : match; } : (match: string, ...rest: any[]) => any >match : string >rest : any[] @@ -26,6 +27,7 @@ module Bugs { >index : any >rest[0] : any >rest : any[] +>0 : number return typeof args[index] !== 'undefined' >typeof args[index] !== 'undefined' ? args[index] : match : any @@ -34,6 +36,7 @@ module Bugs { >args[index] : any >args : any[] >index : any +>'undefined' : string ? args[index] >args[index] : any @@ -55,6 +58,7 @@ function bug3(f:(x:string)=>string) { return f("s") } >x : string >f("s") : string >f : (x: string) => string +>"s" : string function fprime(x:string):string { return x; } >fprime : (x: string) => string diff --git a/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types b/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types index 7ad68cefa4f..e6ff0cda468 100644 --- a/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types +++ b/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types @@ -46,8 +46,11 @@ module Bugs { >push : (...items: IToken[]) => number >{ startIndex: 1, type: '', bracket: 3 } : { startIndex: number; type: string; bracket: number; } >startIndex : number +>1 : number >type : string +>'' : string >bracket : number +>3 : number tokens.push(({ startIndex: 1, type: '', bracket: 3, state: null, length: 10 })); >tokens.push(({ startIndex: 1, type: '', bracket: 3, state: null, length: 10 })) : number @@ -59,9 +62,14 @@ module Bugs { >({ startIndex: 1, type: '', bracket: 3, state: null, length: 10 }) : { startIndex: number; type: string; bracket: number; state: null; length: number; } >{ startIndex: 1, type: '', bracket: 3, state: null, length: 10 } : { startIndex: number; type: string; bracket: number; state: null; length: number; } >startIndex : number +>1 : number >type : string +>'' : string >bracket : number +>3 : number >state : null +>null : null >length : number +>10 : number } } diff --git a/tests/baselines/reference/overloadResolutionWithAny.types b/tests/baselines/reference/overloadResolutionWithAny.types index 14d378c9fac..e66368d3554 100644 --- a/tests/baselines/reference/overloadResolutionWithAny.types +++ b/tests/baselines/reference/overloadResolutionWithAny.types @@ -13,10 +13,12 @@ var func: { func(""); // number >func("") : number >func : { (s: string): number; (s: any): string; } +>"" : string func(3); // string >func(3) : string >func : { (s: string): number; (s: any): string; } +>3 : number var x: any; >x : any @@ -56,14 +58,18 @@ func2(x, x); // string func2("", ""); // number >func2("", "") : number >func2 : { (s: string, t: string): number; (s: any, t: string): boolean; (s: string, t: any): RegExp; (s: any, t: any): string; } +>"" : string +>"" : string func2(x, ""); // boolean >func2(x, "") : boolean >func2 : { (s: string, t: string): number; (s: any, t: string): boolean; (s: string, t: any): RegExp; (s: any, t: any): string; } >x : any +>"" : string func2("", x); // RegExp >func2("", x) : RegExp >func2 : { (s: string, t: string): number; (s: any, t: string): boolean; (s: string, t: any): RegExp; (s: any, t: any): string; } +>"" : string >x : any diff --git a/tests/baselines/reference/overloadReturnTypes.types b/tests/baselines/reference/overloadReturnTypes.types index 1823c752ae7..3de1aec1196 100644 --- a/tests/baselines/reference/overloadReturnTypes.types +++ b/tests/baselines/reference/overloadReturnTypes.types @@ -28,6 +28,7 @@ function attr(nameOrMap: any, value?: string): any { >typeof nameOrMap === "object" : boolean >typeof nameOrMap : string >nameOrMap : any +>"object" : string // handle map case return new Accessor; @@ -37,6 +38,7 @@ function attr(nameOrMap: any, value?: string): any { else { // handle string case return "s"; +>"s" : string } } diff --git a/tests/baselines/reference/overloadWithCallbacksWithDifferingOptionalityOnArgs.types b/tests/baselines/reference/overloadWithCallbacksWithDifferingOptionalityOnArgs.types index 2ed804ad012..b9ea7d98270 100644 --- a/tests/baselines/reference/overloadWithCallbacksWithDifferingOptionalityOnArgs.types +++ b/tests/baselines/reference/overloadWithCallbacksWithDifferingOptionalityOnArgs.types @@ -18,10 +18,12 @@ x2(() => 1); >x2(() => 1) : any >x2 : { (callback: (x?: number) => number): any; (callback: (x: string) => number): any; } >() => 1 : () => number +>1 : number x2((x) => 1 ); >x2((x) => 1 ) : any >x2 : { (callback: (x?: number) => number): any; (callback: (x: string) => number): any; } >(x) => 1 : (x: number) => number >x : number +>1 : number diff --git a/tests/baselines/reference/overloadedStaticMethodSpecialization.types b/tests/baselines/reference/overloadedStaticMethodSpecialization.types index bd60fc16fe0..aac8f645687 100644 --- a/tests/baselines/reference/overloadedStaticMethodSpecialization.types +++ b/tests/baselines/reference/overloadedStaticMethodSpecialization.types @@ -28,6 +28,7 @@ class A { >S : S return null; +>null : null } } diff --git a/tests/baselines/reference/overloadsAndTypeArgumentArity.types b/tests/baselines/reference/overloadsAndTypeArgumentArity.types index 1b76b8e13fe..b69f394e83d 100644 --- a/tests/baselines/reference/overloadsAndTypeArgumentArity.types +++ b/tests/baselines/reference/overloadsAndTypeArgumentArity.types @@ -24,8 +24,10 @@ declare function Callbacks(flags?: string): void; Callbacks('s'); // no error >Callbacks('s') : void >Callbacks : { (flags?: string): void; (flags?: string): void; (flags?: string): void; (flags?: string): void; } +>'s' : string new Callbacks('s'); // no error >new Callbacks('s') : any >Callbacks : { (flags?: string): void; (flags?: string): void; (flags?: string): void; (flags?: string): void; } +>'s' : string diff --git a/tests/baselines/reference/overloadsWithConstraints.types b/tests/baselines/reference/overloadsWithConstraints.types index 1493a0e1a2a..b045904ece5 100644 --- a/tests/baselines/reference/overloadsWithConstraints.types +++ b/tests/baselines/reference/overloadsWithConstraints.types @@ -19,4 +19,5 @@ var v = f(""); >v : string >f("") : string >f : { (x: T): T; (x: T): T; } +>"" : string diff --git a/tests/baselines/reference/parenthesizedContexualTyping1.types b/tests/baselines/reference/parenthesizedContexualTyping1.types index 925347ed1b3..b7307eaf3e7 100644 --- a/tests/baselines/reference/parenthesizedContexualTyping1.types +++ b/tests/baselines/reference/parenthesizedContexualTyping1.types @@ -50,6 +50,7 @@ var a = fun(x => x, 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var b = fun((x => x), 10); >b : number @@ -59,6 +60,7 @@ var b = fun((x => x), 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var c = fun(((x => x)), 10); >c : number @@ -69,6 +71,7 @@ var c = fun(((x => x)), 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var d = fun((((x => x))), 10); >d : number @@ -80,6 +83,7 @@ var d = fun((((x => x))), 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var e = fun(x => x, x => x, 10); >e : number @@ -91,6 +95,7 @@ var e = fun(x => x, x => x, 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var f = fun((x => x), (x => x), 10); >f : number @@ -104,6 +109,7 @@ var f = fun((x => x), (x => x), 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var g = fun(((x => x)), ((x => x)), 10); >g : number @@ -119,6 +125,7 @@ var g = fun(((x => x)), ((x => x)), 10); >x => x : (x: number) => number >x : number >x : number +>10 : number var h = fun((((x => x))), ((x => x)), 10); >h : number @@ -135,6 +142,7 @@ var h = fun((((x => x))), ((x => x)), 10); >x => x : (x: number) => number >x : number >x : number +>10 : number // Ternaries in parens var i = fun((Math.random() < 0.5 ? x => x : x => undefined), 10); @@ -148,12 +156,14 @@ var i = fun((Math.random() < 0.5 ? x => x : x => undefined), 10); >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >x => x : (x: number) => number >x : number >x : number >x => undefined : (x: number) => any >x : number >undefined : undefined +>10 : number var j = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), 10); >j : any @@ -166,6 +176,7 @@ var j = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), 10); >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -174,6 +185,7 @@ var j = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), 10); >x => undefined : (x: number) => any >x : number >undefined : undefined +>10 : number var k = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), x => x, 10); >k : any @@ -186,6 +198,7 @@ var k = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), x => x, 10); >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -197,6 +210,7 @@ var k = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), x => x, 10); >x => x : (x: any) => any >x : any >x : any +>10 : number var l = fun(((Math.random() < 0.5 ? ((x => x)) : ((x => undefined)))), ((x => x)), 10); >l : any @@ -210,6 +224,7 @@ var l = fun(((Math.random() < 0.5 ? ((x => x)) : ((x => undefined)))), ((x => x) >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >((x => x)) : (x: number) => number >(x => x) : (x: number) => number >x => x : (x: number) => number @@ -225,6 +240,7 @@ var l = fun(((Math.random() < 0.5 ? ((x => x)) : ((x => undefined)))), ((x => x) >x => x : (x: any) => any >x : any >x : any +>10 : number var lambda1: (x: number) => number = x => x; >lambda1 : (x: number) => number diff --git a/tests/baselines/reference/parenthesizedContexualTyping2.types b/tests/baselines/reference/parenthesizedContexualTyping2.types index 6824cc0f6e9..a055f2f1bbd 100644 --- a/tests/baselines/reference/parenthesizedContexualTyping2.types +++ b/tests/baselines/reference/parenthesizedContexualTyping2.types @@ -54,6 +54,7 @@ var a = fun(x => { x(undefined); return x; }, 10); >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var b = fun((x => { x(undefined); return x; }), 10); >b : number @@ -66,6 +67,7 @@ var b = fun((x => { x(undefined); return x; }), 10); >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var c = fun(((x => { x(undefined); return x; })), 10); >c : number @@ -79,6 +81,7 @@ var c = fun(((x => { x(undefined); return x; })), 10); >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var d = fun((((x => { x(undefined); return x; }))), 10); >d : number @@ -93,6 +96,7 @@ var d = fun((((x => { x(undefined); return x; }))), 10); >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var e = fun(x => { x(undefined); return x; }, x => { x(undefined); return x; }, 10); >e : number @@ -110,6 +114,7 @@ var e = fun(x => { x(undefined); return x; }, x => { x(undefined >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var f = fun((x => { x(undefined); return x; }),(x => { x(undefined); return x; }), 10); >f : number @@ -129,6 +134,7 @@ var f = fun((x => { x(undefined); return x; }),(x => { x(undefin >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var g = fun(((x => { x(undefined); return x; })),((x => { x(undefined); return x; })), 10); >g : number @@ -150,6 +156,7 @@ var g = fun(((x => { x(undefined); return x; })),((x => { x(unde >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var h = fun((((x => { x(undefined); return x; }))),((x => { x(undefined); return x; })), 10); >h : number @@ -172,6 +179,7 @@ var h = fun((((x => { x(undefined); return x; }))),((x => { x(un >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number // Ternaries in parens var i = fun((Math.random() < 0.5 ? x => { x(undefined); return x; } : x => undefined), 10); @@ -185,6 +193,7 @@ var i = fun((Math.random() < 0.5 ? x => { x(undefined); return x; } : x >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : number @@ -194,6 +203,7 @@ var i = fun((Math.random() < 0.5 ? x => { x(undefined); return x; } : x >x => undefined : (x: (p: T) => T) => any >x : (p: T) => T >undefined : undefined +>10 : number var j = fun((Math.random() < 0.5 ? (x => { x(undefined); return x; }) : (x => undefined)), 10); >j : number @@ -206,6 +216,7 @@ var j = fun((Math.random() < 0.5 ? (x => { x(undefined); return x; }) : >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >(x => { x(undefined); return x; }) : (x: (p: T) => T) => (p: T) => T >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T @@ -217,6 +228,7 @@ var j = fun((Math.random() < 0.5 ? (x => { x(undefined); return x; }) : >x => undefined : (x: (p: T) => T) => any >x : (p: T) => T >undefined : undefined +>10 : number var k = fun((Math.random() < 0.5 ? (x => { x(undefined); return x; }) : (x => undefined)), x => { x(undefined); return x; }, 10); >k : number @@ -229,6 +241,7 @@ var k = fun((Math.random() < 0.5 ? (x => { x(undefined); return x; }) : >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >(x => { x(undefined); return x; }) : (x: (p: T) => T) => (p: T) => T >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T @@ -246,6 +259,7 @@ var k = fun((Math.random() < 0.5 ? (x => { x(undefined); return x; }) : >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var l = fun(((Math.random() < 0.5 ? ((x => { x(undefined); return x; })) : ((x => undefined)))),((x => { x(undefined); return x; })), 10); >l : number @@ -259,6 +273,7 @@ var l = fun(((Math.random() < 0.5 ? ((x => { x(undefined); return x; })) >Math.random : () => number >Math : Math >random : () => number +>0.5 : number >((x => { x(undefined); return x; })) : (x: (p: T) => T) => (p: T) => T >(x => { x(undefined); return x; }) : (x: (p: T) => T) => (p: T) => T >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T @@ -280,6 +295,7 @@ var l = fun(((Math.random() < 0.5 ? ((x => { x(undefined); return x; })) >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number var lambda1: FuncType = x => { x(undefined); return x; }; >lambda1 : (x: (p: T) => T) => (p: T) => T diff --git a/tests/baselines/reference/parenthesizedContexualTyping3.types b/tests/baselines/reference/parenthesizedContexualTyping3.types index 26c0207e523..5d424e5a7b0 100644 --- a/tests/baselines/reference/parenthesizedContexualTyping3.types +++ b/tests/baselines/reference/parenthesizedContexualTyping3.types @@ -56,41 +56,55 @@ function tempFun(tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T { var a = tempFun `${ x => x } ${ 10 }` >a : number +>tempFun `${ x => x } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ x => x } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number +>10 : number var b = tempFun `${ (x => x) } ${ 10 }` >b : number +>tempFun `${ (x => x) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ (x => x) } ${ 10 }` : string >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number >x : number +>10 : number var c = tempFun `${ ((x => x)) } ${ 10 }` >c : number +>tempFun `${ ((x => x)) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ ((x => x)) } ${ 10 }` : string >((x => x)) : (x: number) => number >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number >x : number +>10 : number var d = tempFun `${ x => x } ${ x => x } ${ 10 }` >d : number +>tempFun `${ x => x } ${ x => x } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ x => x } ${ x => x } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number >x => x : (x: number) => number >x : number >x : number +>10 : number var e = tempFun `${ x => x } ${ (x => x) } ${ 10 }` >e : number +>tempFun `${ x => x } ${ (x => x) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ x => x } ${ (x => x) } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -98,10 +112,13 @@ var e = tempFun `${ x => x } ${ (x => x) } ${ 10 }` >x => x : (x: number) => number >x : number >x : number +>10 : number var f = tempFun `${ x => x } ${ ((x => x)) } ${ 10 }` >f : number +>tempFun `${ x => x } ${ ((x => x)) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ x => x } ${ ((x => x)) } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -110,10 +127,13 @@ var f = tempFun `${ x => x } ${ ((x => x)) } ${ 10 }` >x => x : (x: number) => number >x : number >x : number +>10 : number var g = tempFun `${ (x => x) } ${ (((x => x))) } ${ 10 }` >g : number +>tempFun `${ (x => x) } ${ (((x => x))) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ (x => x) } ${ (((x => x))) } ${ 10 }` : string >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -124,10 +144,13 @@ var g = tempFun `${ (x => x) } ${ (((x => x))) } ${ 10 }` >x => x : (x: number) => number >x : number >x : number +>10 : number var h = tempFun `${ (x => x) } ${ (((x => x))) } ${ undefined }` >h : any +>tempFun `${ (x => x) } ${ (((x => x))) } ${ undefined }` : any >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } +>`${ (x => x) } ${ (((x => x))) } ${ undefined }` : string >(x => x) : (x: any) => any >x => x : (x: any) => any >x : any diff --git a/tests/baselines/reference/parser579071.types b/tests/baselines/reference/parser579071.types index 6ae9576c036..bfdece6f787 100644 --- a/tests/baselines/reference/parser579071.types +++ b/tests/baselines/reference/parser579071.types @@ -1,4 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/RegressionTests/parser579071.ts === var x = /fo(o/; >x : RegExp +>/fo(o/ : RegExp diff --git a/tests/baselines/reference/parser596700.types b/tests/baselines/reference/parser596700.types index d92d4b68ef5..b14e28be716 100644 --- a/tests/baselines/reference/parser596700.types +++ b/tests/baselines/reference/parser596700.types @@ -1,4 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/RegressionTests/parser596700.ts === var regex2 = /[a-z/]$/i; >regex2 : RegExp +>/[a-z/]$/i : RegExp diff --git a/tests/baselines/reference/parser630933.types b/tests/baselines/reference/parser630933.types index 4b1686fcbf2..3f991f58d30 100644 --- a/tests/baselines/reference/parser630933.types +++ b/tests/baselines/reference/parser630933.types @@ -1,6 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/RegressionTests/parser630933.ts === var a = "Hello"; >a : string +>"Hello" : string var b = a.match(/\/ver=([^/]+)/); >b : RegExpMatchArray @@ -8,4 +9,5 @@ var b = a.match(/\/ver=([^/]+)/); >a.match : { (regexp: string): RegExpMatchArray; (regexp: RegExp): RegExpMatchArray; } >a : string >match : { (regexp: string): RegExpMatchArray; (regexp: RegExp): RegExpMatchArray; } +>/\/ver=([^/]+)/ : RegExp diff --git a/tests/baselines/reference/parser645086_3.types b/tests/baselines/reference/parser645086_3.types index 57ca07e1b2a..8cf6c0e73a5 100644 --- a/tests/baselines/reference/parser645086_3.types +++ b/tests/baselines/reference/parser645086_3.types @@ -1,4 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/RegressionTests/parser645086_3.ts === var v = /[\]/]/ >v : RegExp +>/[\]/]/ : RegExp diff --git a/tests/baselines/reference/parser645086_4.types b/tests/baselines/reference/parser645086_4.types index 01a702e2a06..a7c00b04fce 100644 --- a/tests/baselines/reference/parser645086_4.types +++ b/tests/baselines/reference/parser645086_4.types @@ -1,4 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/RegressionTests/parser645086_4.ts === var v = /[^\]/]/ >v : RegExp +>/[^\]/]/ : RegExp diff --git a/tests/baselines/reference/parser768531.types b/tests/baselines/reference/parser768531.types index 2da2298c8e2..2c769a97b00 100644 --- a/tests/baselines/reference/parser768531.types +++ b/tests/baselines/reference/parser768531.types @@ -1,4 +1,8 @@ === tests/cases/conformance/parser/ecmascript5/Fuzz/parser768531.ts === {a: 3} -No type information for this code./x/ -No type information for this code. \ No newline at end of file +>a : unknown +>3 : number + +/x/ +>/x/ : RegExp + diff --git a/tests/baselines/reference/parserAccessibilityAfterStatic3.types b/tests/baselines/reference/parserAccessibilityAfterStatic3.types index b8eeb416c92..c85c5077392 100644 --- a/tests/baselines/reference/parserAccessibilityAfterStatic3.types +++ b/tests/baselines/reference/parserAccessibilityAfterStatic3.types @@ -4,5 +4,6 @@ class Outer { static public = 1; >public : number +>1 : number } diff --git a/tests/baselines/reference/parserAmbiguityWithBinaryOperator1.types b/tests/baselines/reference/parserAmbiguityWithBinaryOperator1.types index 1a087485e26..bdeb5ab7bbc 100644 --- a/tests/baselines/reference/parserAmbiguityWithBinaryOperator1.types +++ b/tests/baselines/reference/parserAmbiguityWithBinaryOperator1.types @@ -17,4 +17,5 @@ function f1() { >(c + 1) : any >c + 1 : any >c : any +>1 : number } diff --git a/tests/baselines/reference/parserAmbiguityWithBinaryOperator2.types b/tests/baselines/reference/parserAmbiguityWithBinaryOperator2.types index 05ac7172cff..79eb212163e 100644 --- a/tests/baselines/reference/parserAmbiguityWithBinaryOperator2.types +++ b/tests/baselines/reference/parserAmbiguityWithBinaryOperator2.types @@ -17,4 +17,5 @@ function f() { >(c + 1) : any >c + 1 : any >c : any +>1 : number } diff --git a/tests/baselines/reference/parserAmbiguityWithBinaryOperator3.types b/tests/baselines/reference/parserAmbiguityWithBinaryOperator3.types index 03283115bf9..aba5f4872d8 100644 --- a/tests/baselines/reference/parserAmbiguityWithBinaryOperator3.types +++ b/tests/baselines/reference/parserAmbiguityWithBinaryOperator3.types @@ -17,5 +17,6 @@ function f() { >(c + 1) : any >c + 1 : any >c : any +>1 : number } diff --git a/tests/baselines/reference/parserArrayLiteralExpression10.types b/tests/baselines/reference/parserArrayLiteralExpression10.types index d324d42aa46..370e9fb6c9d 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression10.types +++ b/tests/baselines/reference/parserArrayLiteralExpression10.types @@ -2,4 +2,6 @@ var v = [1,1,]; >v : number[] >[1,1,] : number[] +>1 : number +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression11.types b/tests/baselines/reference/parserArrayLiteralExpression11.types index 44ac1f6c5aa..aba6e30a291 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression11.types +++ b/tests/baselines/reference/parserArrayLiteralExpression11.types @@ -2,4 +2,7 @@ var v = [1,,1]; >v : number[] >[1,,1] : number[] +>1 : number +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression12.types b/tests/baselines/reference/parserArrayLiteralExpression12.types index a2ea5f12404..7d9e4c38976 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression12.types +++ b/tests/baselines/reference/parserArrayLiteralExpression12.types @@ -2,4 +2,8 @@ var v = [1,,,1]; >v : number[] >[1,,,1] : number[] +>1 : number +> : undefined +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression13.types b/tests/baselines/reference/parserArrayLiteralExpression13.types index bf8c15ac6b2..62fb9aea5f7 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression13.types +++ b/tests/baselines/reference/parserArrayLiteralExpression13.types @@ -2,4 +2,9 @@ var v = [1,,1,,1]; >v : number[] >[1,,1,,1] : number[] +>1 : number +> : undefined +>1 : number +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression14.types b/tests/baselines/reference/parserArrayLiteralExpression14.types index 4de3139c4b8..9d3a029aed2 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression14.types +++ b/tests/baselines/reference/parserArrayLiteralExpression14.types @@ -2,4 +2,15 @@ var v = [,,1,1,,1,,1,1,,1]; >v : number[] >[,,1,1,,1,,1,1,,1] : number[] +> : undefined +> : undefined +>1 : number +>1 : number +> : undefined +>1 : number +> : undefined +>1 : number +>1 : number +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression15.types b/tests/baselines/reference/parserArrayLiteralExpression15.types index b484c537f70..75afab3731c 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression15.types +++ b/tests/baselines/reference/parserArrayLiteralExpression15.types @@ -2,4 +2,15 @@ var v = [,,1,1,,1,,1,1,,1,]; >v : number[] >[,,1,1,,1,,1,1,,1,] : number[] +> : undefined +> : undefined +>1 : number +>1 : number +> : undefined +>1 : number +> : undefined +>1 : number +>1 : number +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression2.types b/tests/baselines/reference/parserArrayLiteralExpression2.types index dd16681ab82..b810175ea13 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression2.types +++ b/tests/baselines/reference/parserArrayLiteralExpression2.types @@ -2,4 +2,5 @@ var v = [,]; >v : any[] >[,] : undefined[] +> : undefined diff --git a/tests/baselines/reference/parserArrayLiteralExpression3.types b/tests/baselines/reference/parserArrayLiteralExpression3.types index d0fbaa9b67b..68e05498e13 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression3.types +++ b/tests/baselines/reference/parserArrayLiteralExpression3.types @@ -2,4 +2,6 @@ var v = [,,]; >v : any[] >[,,] : undefined[] +> : undefined +> : undefined diff --git a/tests/baselines/reference/parserArrayLiteralExpression4.types b/tests/baselines/reference/parserArrayLiteralExpression4.types index 0ceded3e62a..69f805ed5e2 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression4.types +++ b/tests/baselines/reference/parserArrayLiteralExpression4.types @@ -2,4 +2,7 @@ var v = [,,,]; >v : any[] >[,,,] : undefined[] +> : undefined +> : undefined +> : undefined diff --git a/tests/baselines/reference/parserArrayLiteralExpression5.types b/tests/baselines/reference/parserArrayLiteralExpression5.types index b729f7fed86..48fdaa024fc 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression5.types +++ b/tests/baselines/reference/parserArrayLiteralExpression5.types @@ -2,4 +2,5 @@ var v = [1]; >v : number[] >[1] : number[] +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression6.types b/tests/baselines/reference/parserArrayLiteralExpression6.types index a72a8eda339..66df1cda219 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression6.types +++ b/tests/baselines/reference/parserArrayLiteralExpression6.types @@ -2,4 +2,6 @@ var v = [,1]; >v : number[] >[,1] : number[] +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression7.types b/tests/baselines/reference/parserArrayLiteralExpression7.types index ca8c5d6e890..65225500eb2 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression7.types +++ b/tests/baselines/reference/parserArrayLiteralExpression7.types @@ -2,4 +2,5 @@ var v = [1,]; >v : number[] >[1,] : number[] +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression8.types b/tests/baselines/reference/parserArrayLiteralExpression8.types index 06824d77a1a..e14c99f3b57 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression8.types +++ b/tests/baselines/reference/parserArrayLiteralExpression8.types @@ -2,4 +2,6 @@ var v = [,1,]; >v : number[] >[,1,] : number[] +> : undefined +>1 : number diff --git a/tests/baselines/reference/parserArrayLiteralExpression9.types b/tests/baselines/reference/parserArrayLiteralExpression9.types index 7107f9e4090..96bb1595326 100644 --- a/tests/baselines/reference/parserArrayLiteralExpression9.types +++ b/tests/baselines/reference/parserArrayLiteralExpression9.types @@ -2,4 +2,6 @@ var v = [1,1]; >v : number[] >[1,1] : number[] +>1 : number +>1 : number diff --git a/tests/baselines/reference/parserDoStatement2.types b/tests/baselines/reference/parserDoStatement2.types index 62790b49103..5affaa958d6 100644 --- a/tests/baselines/reference/parserDoStatement2.types +++ b/tests/baselines/reference/parserDoStatement2.types @@ -1,3 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/Statements/parserDoStatement2.ts === do{;}while(false)false -No type information for this code. \ No newline at end of file +>false : boolean +>false : boolean + diff --git a/tests/baselines/reference/parserEmptyStatement1.types b/tests/baselines/reference/parserEmptyStatement1.types index 585c87f202b..a581dd6e871 100644 --- a/tests/baselines/reference/parserEmptyStatement1.types +++ b/tests/baselines/reference/parserEmptyStatement1.types @@ -2,6 +2,7 @@ ; ; var a = 1; >a : number +>1 : number ; diff --git a/tests/baselines/reference/parserEnumDeclaration1.types b/tests/baselines/reference/parserEnumDeclaration1.types index 86ac928d20f..de99855b310 100644 --- a/tests/baselines/reference/parserEnumDeclaration1.types +++ b/tests/baselines/reference/parserEnumDeclaration1.types @@ -4,6 +4,7 @@ enum E { Foo = 1, >Foo : E +>1 : number Bar >Bar : E diff --git a/tests/baselines/reference/parserEnumDeclaration3.types b/tests/baselines/reference/parserEnumDeclaration3.types index a2a5542c060..b427a795eb6 100644 --- a/tests/baselines/reference/parserEnumDeclaration3.types +++ b/tests/baselines/reference/parserEnumDeclaration3.types @@ -4,4 +4,5 @@ declare enum E { A = 1 >A : E +>1 : number } diff --git a/tests/baselines/reference/parserEnumDeclaration5.types b/tests/baselines/reference/parserEnumDeclaration5.types index be3559bd2b9..bbb596b7b0f 100644 --- a/tests/baselines/reference/parserEnumDeclaration5.types +++ b/tests/baselines/reference/parserEnumDeclaration5.types @@ -4,12 +4,14 @@ enum E { A = 1, >A : E +>1 : number B, >B : E C = 2, >C : E +>2 : number D >D : E diff --git a/tests/baselines/reference/parserGreaterThanTokenAmbiguity1.types b/tests/baselines/reference/parserGreaterThanTokenAmbiguity1.types index 451ff65cdd9..0449fdda85a 100644 --- a/tests/baselines/reference/parserGreaterThanTokenAmbiguity1.types +++ b/tests/baselines/reference/parserGreaterThanTokenAmbiguity1.types @@ -1,4 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/Generics/parserGreaterThanTokenAmbiguity1.ts === 1 >> 2; >1 >> 2 : number +>1 : number +>2 : number diff --git a/tests/baselines/reference/parserGreaterThanTokenAmbiguity10.types b/tests/baselines/reference/parserGreaterThanTokenAmbiguity10.types index f58be05c966..8b3d5dd2ba3 100644 --- a/tests/baselines/reference/parserGreaterThanTokenAmbiguity10.types +++ b/tests/baselines/reference/parserGreaterThanTokenAmbiguity10.types @@ -1,7 +1,10 @@ === tests/cases/conformance/parser/ecmascript5/Generics/parserGreaterThanTokenAmbiguity10.ts === 1 >1 // before>>> // after2 : number +>1 : number // before >>> // after 2; +>2 : number + diff --git a/tests/baselines/reference/parserGreaterThanTokenAmbiguity5.types b/tests/baselines/reference/parserGreaterThanTokenAmbiguity5.types index 770d3fa611f..609901bfdd5 100644 --- a/tests/baselines/reference/parserGreaterThanTokenAmbiguity5.types +++ b/tests/baselines/reference/parserGreaterThanTokenAmbiguity5.types @@ -1,7 +1,10 @@ === tests/cases/conformance/parser/ecmascript5/Generics/parserGreaterThanTokenAmbiguity5.ts === 1 >1 // before>> // after2 : number +>1 : number // before >> // after 2; +>2 : number + diff --git a/tests/baselines/reference/parserGreaterThanTokenAmbiguity6.types b/tests/baselines/reference/parserGreaterThanTokenAmbiguity6.types index fc7616eef90..e7aa311113c 100644 --- a/tests/baselines/reference/parserGreaterThanTokenAmbiguity6.types +++ b/tests/baselines/reference/parserGreaterThanTokenAmbiguity6.types @@ -1,4 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/Generics/parserGreaterThanTokenAmbiguity6.ts === 1 >>> 2; >1 >>> 2 : number +>1 : number +>2 : number diff --git a/tests/baselines/reference/parserInterfaceKeywordInEnum1.types b/tests/baselines/reference/parserInterfaceKeywordInEnum1.types index f17bfeacf88..f6b613f3f60 100644 --- a/tests/baselines/reference/parserInterfaceKeywordInEnum1.types +++ b/tests/baselines/reference/parserInterfaceKeywordInEnum1.types @@ -1,5 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserInterfaceKeywordInEnum1.ts === "use strict"; +>"use strict" : string enum Bar { >Bar : Bar diff --git a/tests/baselines/reference/parserKeywordsAsIdentifierName1.types b/tests/baselines/reference/parserKeywordsAsIdentifierName1.types index e917dc76cf0..bc586e8a4bb 100644 --- a/tests/baselines/reference/parserKeywordsAsIdentifierName1.types +++ b/tests/baselines/reference/parserKeywordsAsIdentifierName1.types @@ -5,11 +5,14 @@ var big = { break : 0, >break : number +>0 : number super : 0, >super : number +>0 : number const : 0 >const : number +>0 : number } diff --git a/tests/baselines/reference/parserModuleDeclaration11.types b/tests/baselines/reference/parserModuleDeclaration11.types index bd66d638ddf..95394b7c65b 100644 --- a/tests/baselines/reference/parserModuleDeclaration11.types +++ b/tests/baselines/reference/parserModuleDeclaration11.types @@ -14,6 +14,7 @@ string.foo("abc"); >string.foo : (s: string) => any >string : typeof string >foo : (s: string) => any +>"abc" : string var x: string.X; >x : string.X diff --git a/tests/baselines/reference/parserObjectLiterals1.types b/tests/baselines/reference/parserObjectLiterals1.types index c38adbf55b6..b6bca18e360 100644 --- a/tests/baselines/reference/parserObjectLiterals1.types +++ b/tests/baselines/reference/parserObjectLiterals1.types @@ -3,5 +3,7 @@ var v = { a: 1, b: 2 }; >v : { a: number; b: number; } >{ a: 1, b: 2 } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number diff --git a/tests/baselines/reference/parserSbp_7.9_A9_T3.types b/tests/baselines/reference/parserSbp_7.9_A9_T3.types index 0d6df58ed39..5e1eed4dd98 100644 --- a/tests/baselines/reference/parserSbp_7.9_A9_T3.types +++ b/tests/baselines/reference/parserSbp_7.9_A9_T3.types @@ -1,18 +1,19 @@ === tests/cases/conformance/parser/ecmascript5/parserSbp_7.9_A9_T3.ts === // Copyright 2009 the Sputnik authors. All rights reserved. -No type information for this code.// This code is governed by the BSD license found in the LICENSE file. -No type information for this code. -No type information for this code./** -No type information for this code. * Check Do-While Statement for automatic semicolon insertion -No type information for this code. * -No type information for this code. * @path bestPractice/Sbp_7.9_A9_T3.js -No type information for this code. * @description Execute do { \n ; \n }while(false) true -No type information for this code. */ -No type information for this code. -No type information for this code.//CHECK#1 -No type information for this code.do { -No type information for this code. ; -No type information for this code.} while (false) true -No type information for this code. -No type information for this code. -No type information for this code. \ No newline at end of file +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Check Do-While Statement for automatic semicolon insertion + * + * @path bestPractice/Sbp_7.9_A9_T3.js + * @description Execute do { \n ; \n }while(false) true + */ + +//CHECK#1 +do { + ; +} while (false) true +>false : boolean +>true : boolean + + diff --git a/tests/baselines/reference/parserStrictMode16.types b/tests/baselines/reference/parserStrictMode16.types index 6e68c0cbc6b..a7a68ab7811 100644 --- a/tests/baselines/reference/parserStrictMode16.types +++ b/tests/baselines/reference/parserStrictMode16.types @@ -1,15 +1,20 @@ === tests/cases/conformance/parser/ecmascript5/StrictMode/parserStrictMode16.ts === "use strict"; +>"use strict" : string + delete this; >delete this : boolean >this : any delete 1; >delete 1 : boolean +>1 : number delete null; >delete null : boolean +>null : null delete "a"; >delete "a" : boolean +>"a" : string diff --git a/tests/baselines/reference/parserSymbolProperty6.types b/tests/baselines/reference/parserSymbolProperty6.types index 660cbf4e545..a802765cb4f 100644 --- a/tests/baselines/reference/parserSymbolProperty6.types +++ b/tests/baselines/reference/parserSymbolProperty6.types @@ -6,4 +6,5 @@ class C { >Symbol.toStringTag : symbol >Symbol : SymbolConstructor >toStringTag : symbol +>"" : string } diff --git a/tests/baselines/reference/parserUnicode2.types b/tests/baselines/reference/parserUnicode2.types index d923f7a6550..1051b23905f 100644 --- a/tests/baselines/reference/parserUnicode2.types +++ b/tests/baselines/reference/parserUnicode2.types @@ -1,4 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/parserUnicode2.ts === var 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = 1; >才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 : number +>1 : number diff --git a/tests/baselines/reference/parserVoidExpression1.types b/tests/baselines/reference/parserVoidExpression1.types index c46abcb0835..a2d9988eee3 100644 --- a/tests/baselines/reference/parserVoidExpression1.types +++ b/tests/baselines/reference/parserVoidExpression1.types @@ -1,4 +1,5 @@ === tests/cases/conformance/parser/ecmascript5/parserVoidExpression1.ts === void 0; >void 0 : undefined +>0 : number diff --git a/tests/baselines/reference/parser_breakInIterationOrSwitchStatement1.types b/tests/baselines/reference/parser_breakInIterationOrSwitchStatement1.types index 2036ae9bd07..6688f334a86 100644 --- a/tests/baselines/reference/parser_breakInIterationOrSwitchStatement1.types +++ b/tests/baselines/reference/parser_breakInIterationOrSwitchStatement1.types @@ -1,5 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/Statements/BreakStatements/parser_breakInIterationOrSwitchStatement1.ts === while (true) { -No type information for this code. break; -No type information for this code.} -No type information for this code. \ No newline at end of file +>true : boolean + + break; +} diff --git a/tests/baselines/reference/parser_breakInIterationOrSwitchStatement2.types b/tests/baselines/reference/parser_breakInIterationOrSwitchStatement2.types index 673d9438843..7def75c322a 100644 --- a/tests/baselines/reference/parser_breakInIterationOrSwitchStatement2.types +++ b/tests/baselines/reference/parser_breakInIterationOrSwitchStatement2.types @@ -1,6 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/Statements/BreakStatements/parser_breakInIterationOrSwitchStatement2.ts === do { -No type information for this code. break; -No type information for this code.} -No type information for this code.while (true); -No type information for this code. \ No newline at end of file + break; +} +while (true); +>true : boolean + diff --git a/tests/baselines/reference/parser_breakTarget1.types b/tests/baselines/reference/parser_breakTarget1.types index 95cc837010a..4e7a4719cac 100644 --- a/tests/baselines/reference/parser_breakTarget1.types +++ b/tests/baselines/reference/parser_breakTarget1.types @@ -1,4 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/Statements/BreakStatements/parser_breakTarget1.ts === target: -No type information for this code. break target; -No type information for this code. \ No newline at end of file +>target : unknown + + break target; +>target : unknown + diff --git a/tests/baselines/reference/parser_breakTarget2.types b/tests/baselines/reference/parser_breakTarget2.types index fb006265664..89d3d191f27 100644 --- a/tests/baselines/reference/parser_breakTarget2.types +++ b/tests/baselines/reference/parser_breakTarget2.types @@ -1,6 +1,10 @@ === tests/cases/conformance/parser/ecmascript5/Statements/BreakStatements/parser_breakTarget2.ts === target: -No type information for this code.while (true) { -No type information for this code. break target; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target : unknown + +while (true) { +>true : boolean + + break target; +>target : unknown +} diff --git a/tests/baselines/reference/parser_breakTarget3.types b/tests/baselines/reference/parser_breakTarget3.types index 99ec413987a..551f1b2dbfb 100644 --- a/tests/baselines/reference/parser_breakTarget3.types +++ b/tests/baselines/reference/parser_breakTarget3.types @@ -1,7 +1,13 @@ === tests/cases/conformance/parser/ecmascript5/Statements/BreakStatements/parser_breakTarget3.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. break target1; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + break target1; +>target1 : unknown +} diff --git a/tests/baselines/reference/parser_breakTarget4.types b/tests/baselines/reference/parser_breakTarget4.types index 042df67d9b2..d09ec63bd65 100644 --- a/tests/baselines/reference/parser_breakTarget4.types +++ b/tests/baselines/reference/parser_breakTarget4.types @@ -1,7 +1,13 @@ === tests/cases/conformance/parser/ecmascript5/Statements/BreakStatements/parser_breakTarget4.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. break target2; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + break target2; +>target2 : unknown +} diff --git a/tests/baselines/reference/parser_continueInIterationStatement1.types b/tests/baselines/reference/parser_continueInIterationStatement1.types index c21d32a81a2..c6819ba2c18 100644 --- a/tests/baselines/reference/parser_continueInIterationStatement1.types +++ b/tests/baselines/reference/parser_continueInIterationStatement1.types @@ -1,5 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueInIterationStatement1.ts === while (true) { -No type information for this code. continue; -No type information for this code.} -No type information for this code. \ No newline at end of file +>true : boolean + + continue; +} diff --git a/tests/baselines/reference/parser_continueInIterationStatement2.types b/tests/baselines/reference/parser_continueInIterationStatement2.types index 1daadccd6c2..ead70157de4 100644 --- a/tests/baselines/reference/parser_continueInIterationStatement2.types +++ b/tests/baselines/reference/parser_continueInIterationStatement2.types @@ -1,6 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueInIterationStatement2.ts === do { -No type information for this code. continue; -No type information for this code.} -No type information for this code.while (true); -No type information for this code. \ No newline at end of file + continue; +} +while (true); +>true : boolean + diff --git a/tests/baselines/reference/parser_continueLabel.types b/tests/baselines/reference/parser_continueLabel.types index 4059c9c10d7..b618f98d693 100644 --- a/tests/baselines/reference/parser_continueLabel.types +++ b/tests/baselines/reference/parser_continueLabel.types @@ -1,10 +1,14 @@ === tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueLabel.ts === label1: for(var i = 0; i < 1; i++) { +>label1 : unknown >i : number +>0 : number >i < 1 : boolean >i : number +>1 : number >i++ : number >i : number continue label1; +>label1 : unknown } diff --git a/tests/baselines/reference/parser_continueTarget2.types b/tests/baselines/reference/parser_continueTarget2.types index 25677d721d2..24c799a761b 100644 --- a/tests/baselines/reference/parser_continueTarget2.types +++ b/tests/baselines/reference/parser_continueTarget2.types @@ -1,6 +1,10 @@ === tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueTarget2.ts === target: -No type information for this code.while (true) { -No type information for this code. continue target; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target : unknown + +while (true) { +>true : boolean + + continue target; +>target : unknown +} diff --git a/tests/baselines/reference/parser_continueTarget3.types b/tests/baselines/reference/parser_continueTarget3.types index 2038671d215..c21497a1892 100644 --- a/tests/baselines/reference/parser_continueTarget3.types +++ b/tests/baselines/reference/parser_continueTarget3.types @@ -1,7 +1,13 @@ === tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueTarget3.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. continue target1; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + continue target1; +>target1 : unknown +} diff --git a/tests/baselines/reference/parser_continueTarget4.types b/tests/baselines/reference/parser_continueTarget4.types index 2b47099715e..a4d67e9cfd3 100644 --- a/tests/baselines/reference/parser_continueTarget4.types +++ b/tests/baselines/reference/parser_continueTarget4.types @@ -1,7 +1,13 @@ === tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueTarget4.ts === target1: -No type information for this code.target2: -No type information for this code.while (true) { -No type information for this code. continue target2; -No type information for this code.} -No type information for this code. \ No newline at end of file +>target1 : unknown + +target2: +>target2 : unknown + +while (true) { +>true : boolean + + continue target2; +>target2 : unknown +} diff --git a/tests/baselines/reference/parser_duplicateLabel3.types b/tests/baselines/reference/parser_duplicateLabel3.types index ec136c60dca..957121d6df2 100644 --- a/tests/baselines/reference/parser_duplicateLabel3.types +++ b/tests/baselines/reference/parser_duplicateLabel3.types @@ -1,11 +1,18 @@ === tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel3.ts === target: +>target : unknown + while (true) { +>true : boolean + function f() { >f : () => void target: +>target : unknown + while (true) { +>true : boolean } } } diff --git a/tests/baselines/reference/parser_duplicateLabel4.types b/tests/baselines/reference/parser_duplicateLabel4.types index 564531bf71b..2ef47ae82fc 100644 --- a/tests/baselines/reference/parser_duplicateLabel4.types +++ b/tests/baselines/reference/parser_duplicateLabel4.types @@ -1,9 +1,14 @@ === tests/cases/conformance/parser/ecmascript5/Statements/LabeledStatements/parser_duplicateLabel4.ts === target: -No type information for this code.while (true) { -No type information for this code.} -No type information for this code. -No type information for this code.target: -No type information for this code.while (true) { -No type information for this code.} -No type information for this code. \ No newline at end of file +>target : unknown + +while (true) { +>true : boolean +} + +target: +>target : unknown + +while (true) { +>true : boolean +} diff --git a/tests/baselines/reference/plusOperatorWithBooleanType.types b/tests/baselines/reference/plusOperatorWithBooleanType.types index 40ca167a4d7..d2218d3cc95 100644 --- a/tests/baselines/reference/plusOperatorWithBooleanType.types +++ b/tests/baselines/reference/plusOperatorWithBooleanType.types @@ -5,6 +5,7 @@ var BOOLEAN: boolean; function foo(): boolean { return true; } >foo : () => boolean +>true : boolean class A { >A : A @@ -14,6 +15,7 @@ class A { static foo() { return false; } >foo : () => boolean +>false : boolean } module M { >M : typeof M @@ -37,13 +39,16 @@ var ResultIsNumber1 = +BOOLEAN; var ResultIsNumber2 = +true; >ResultIsNumber2 : number >+true : number +>true : boolean var ResultIsNumber3 = +{ x: true, y: false }; >ResultIsNumber3 : number >+{ x: true, y: false } : number >{ x: true, y: false } : { x: boolean; y: boolean; } >x : boolean +>true : boolean >y : boolean +>false : boolean // boolean type expressions var ResultIsNumber4 = +objA.a; @@ -77,6 +82,7 @@ var ResultIsNumber7 = +A.foo(); // miss assignment operators +true; >+true : number +>true : boolean +BOOLEAN; >+BOOLEAN : number @@ -90,6 +96,8 @@ var ResultIsNumber7 = +A.foo(); +true, false; >+true, false : boolean >+true : number +>true : boolean +>false : boolean +objA.a; >+objA.a : number diff --git a/tests/baselines/reference/plusOperatorWithEnumType.types b/tests/baselines/reference/plusOperatorWithEnumType.types index bc51414e4a5..e6dd769900e 100644 --- a/tests/baselines/reference/plusOperatorWithEnumType.types +++ b/tests/baselines/reference/plusOperatorWithEnumType.types @@ -26,6 +26,7 @@ var ResultIsNumber3 = +ENUM1["A"]; >+ENUM1["A"] : number >ENUM1["A"] : ENUM1 >ENUM1 : typeof ENUM1 +>"A" : string var ResultIsNumber4 = +(ENUM[0] + ENUM1["B"]); >ResultIsNumber4 : number @@ -34,8 +35,10 @@ var ResultIsNumber4 = +(ENUM[0] + ENUM1["B"]); >ENUM[0] + ENUM1["B"] : string >ENUM[0] : string >ENUM : typeof ENUM +>0 : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string // miss assignment operators +ENUM; diff --git a/tests/baselines/reference/plusOperatorWithNumberType.types b/tests/baselines/reference/plusOperatorWithNumberType.types index cad0448f2a3..2db1288de4a 100644 --- a/tests/baselines/reference/plusOperatorWithNumberType.types +++ b/tests/baselines/reference/plusOperatorWithNumberType.types @@ -6,9 +6,12 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number function foo(): number { return 1; } >foo : () => number +>1 : number class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return 1; } >foo : () => number +>1 : number } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsNumber2 = +NUMBER1; var ResultIsNumber3 = +1; >ResultIsNumber3 : number >+1 : number +>1 : number var ResultIsNumber4 = +{ x: 1, y: 2}; >ResultIsNumber4 : number >+{ x: 1, y: 2} : number >{ x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number var ResultIsNumber5 = +{ x: 1, y: (n: number) => { return n; } }; >ResultIsNumber5 : number >+{ x: 1, y: (n: number) => { return n; } } : number >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } >x : number +>1 : number >y : (n: number) => number >(n: number) => { return n; } : (n: number) => number >n : number @@ -84,6 +92,7 @@ var ResultIsNumber8 = +NUMBER1[0]; >+NUMBER1[0] : number >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number var ResultIsNumber9 = +foo(); >ResultIsNumber9 : number @@ -110,6 +119,7 @@ var ResultIsNumber11 = +(NUMBER + NUMBER); // miss assignment operators +1; >+1 : number +>1 : number +NUMBER; >+NUMBER : number diff --git a/tests/baselines/reference/plusOperatorWithStringType.types b/tests/baselines/reference/plusOperatorWithStringType.types index d08a3917196..c285a88c5d9 100644 --- a/tests/baselines/reference/plusOperatorWithStringType.types +++ b/tests/baselines/reference/plusOperatorWithStringType.types @@ -6,9 +6,12 @@ var STRING: string; var STRING1: string[] = ["", "abc"]; >STRING1 : string[] >["", "abc"] : string[] +>"" : string +>"abc" : string function foo(): string { return "abc"; } >foo : () => string +>"abc" : string class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return ""; } >foo : () => string +>"" : string } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsNumber2 = +STRING1; var ResultIsNumber3 = +""; >ResultIsNumber3 : number >+"" : number +>"" : string var ResultIsNumber4 = +{ x: "", y: "" }; >ResultIsNumber4 : number >+{ x: "", y: "" } : number >{ x: "", y: "" } : { x: string; y: string; } >x : string +>"" : string >y : string +>"" : string var ResultIsNumber5 = +{ x: "", y: (s: string) => { return s; } }; >ResultIsNumber5 : number >+{ x: "", y: (s: string) => { return s; } } : number >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } >x : string +>"" : string >y : (s: string) => string >(s: string) => { return s; } : (s: string) => string >s : string @@ -84,6 +92,7 @@ var ResultIsNumber8 = +STRING1[0]; >+STRING1[0] : number >STRING1[0] : string >STRING1 : string[] +>0 : number var ResultIsNumber9 = +foo(); >ResultIsNumber9 : number @@ -114,10 +123,12 @@ var ResultIsNumber12 = +STRING.charAt(0); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number // miss assignment operators +""; >+"" : number +>"" : string +STRING; >+STRING : number diff --git a/tests/baselines/reference/prefixIncrementAsOperandOfPlusExpression.types b/tests/baselines/reference/prefixIncrementAsOperandOfPlusExpression.types index 0d773b89f12..d5c9b03cc56 100644 --- a/tests/baselines/reference/prefixIncrementAsOperandOfPlusExpression.types +++ b/tests/baselines/reference/prefixIncrementAsOperandOfPlusExpression.types @@ -1,9 +1,11 @@ === tests/cases/compiler/prefixIncrementAsOperandOfPlusExpression.ts === var x = 1; >x : number +>1 : number var y = 1; >y : number +>1 : number + ++x; >+ ++x : number diff --git a/tests/baselines/reference/preserveConstEnums.types b/tests/baselines/reference/preserveConstEnums.types index 080cdbffb2b..f128b4a831b 100644 --- a/tests/baselines/reference/preserveConstEnums.types +++ b/tests/baselines/reference/preserveConstEnums.types @@ -4,6 +4,7 @@ const enum E { Value = 1, Value2 = Value >Value : E +>1 : number >Value2 : E >Value : E } diff --git a/tests/baselines/reference/privacyCheckAnonymousFunctionParameter.types b/tests/baselines/reference/privacyCheckAnonymousFunctionParameter.types index 17e496f5568..c8e4d237091 100644 --- a/tests/baselines/reference/privacyCheckAnonymousFunctionParameter.types +++ b/tests/baselines/reference/privacyCheckAnonymousFunctionParameter.types @@ -1,6 +1,7 @@ === tests/cases/compiler/privacyCheckAnonymousFunctionParameter.ts === export var x = 1; // Makes this an external module >x : number +>1 : number interface Iterator { >Iterator : Iterator @@ -21,6 +22,7 @@ module Query { >T : T return null; +>null : null } function fromOrderBy() { @@ -33,6 +35,8 @@ module Query { >test : Iterator<{}> return true; +>true : boolean + }); } } diff --git a/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.types b/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.types index 6615a3c9af0..445e318c0fb 100644 --- a/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.types +++ b/tests/baselines/reference/privacyCheckAnonymousFunctionParameter2.types @@ -1,6 +1,7 @@ === tests/cases/compiler/privacyCheckAnonymousFunctionParameter2.ts === export var x = 1; // Makes this an external module >x : number +>1 : number interface Iterator { x: T } >Iterator : Iterator @@ -33,5 +34,6 @@ module Q { foo(null); >foo(null) : (a: Iterator<{}>) => number >foo : (x: (a: Iterator) => number) => (a: Iterator) => number +>null : null } } diff --git a/tests/baselines/reference/privacyCheckExportAssignmentOnExportedGenericInterface2.types b/tests/baselines/reference/privacyCheckExportAssignmentOnExportedGenericInterface2.types index 8c89db63515..ce785983ce8 100644 --- a/tests/baselines/reference/privacyCheckExportAssignmentOnExportedGenericInterface2.types +++ b/tests/baselines/reference/privacyCheckExportAssignmentOnExportedGenericInterface2.types @@ -24,5 +24,6 @@ module Foo { export var x = "hello"; >x : string +>"hello" : string } diff --git a/tests/baselines/reference/privateVisibles.types b/tests/baselines/reference/privateVisibles.types index 57554fc3474..e7c192d54db 100644 --- a/tests/baselines/reference/privateVisibles.types +++ b/tests/baselines/reference/privateVisibles.types @@ -4,6 +4,7 @@ class Foo { private pvar = 0; >pvar : number +>0 : number constructor() { var n = this.pvar; diff --git a/tests/baselines/reference/promiseChaining.types b/tests/baselines/reference/promiseChaining.types index 6edb6c6d09f..981a19ef0a9 100644 --- a/tests/baselines/reference/promiseChaining.types +++ b/tests/baselines/reference/promiseChaining.types @@ -42,6 +42,7 @@ class Chain { >then : (cb: (x: S) => S) => Chain >x => "abc" : (x: S) => string >x : S +>"abc" : string >then : (cb: (x: string) => S) => Chain >x => x.length : (x: string) => number >x : string diff --git a/tests/baselines/reference/promiseTest.types b/tests/baselines/reference/promiseTest.types index ac21c5973ad..5ec43b9f42b 100644 --- a/tests/baselines/reference/promiseTest.types +++ b/tests/baselines/reference/promiseTest.types @@ -33,6 +33,7 @@ interface Promise { var p: Promise = null; >p : Promise >Promise : Promise +>null : null var p2 = p.then(function (x) { >p2 : Promise diff --git a/tests/baselines/reference/promiseTypeInference.types b/tests/baselines/reference/promiseTypeInference.types index 52d026adb1d..2789f710876 100644 --- a/tests/baselines/reference/promiseTypeInference.types +++ b/tests/baselines/reference/promiseTypeInference.types @@ -45,6 +45,7 @@ var $$x = load("something").then(s => convert(s)); >load("something").then : (success?: (value: string) => Promise) => Promise >load("something") : Promise >load : (name: string) => Promise +>"something" : string >then : (success?: (value: string) => Promise) => Promise >s => convert(s) : (s: string) => IPromise >s : string diff --git a/tests/baselines/reference/propagationOfPromiseInitialization.types b/tests/baselines/reference/propagationOfPromiseInitialization.types index e146aea91d8..bd100f75b3e 100644 --- a/tests/baselines/reference/propagationOfPromiseInitialization.types +++ b/tests/baselines/reference/propagationOfPromiseInitialization.types @@ -33,6 +33,8 @@ foo.then((x) => { // x is inferred to be a number return "asdf"; +>"asdf" : string + }).then((x) => { >then : (successCallback: (promiseValue: string) => TResult, errorCallback?: (reason: any) => TResult) => IPromise >(x) => { // x is inferred to be string x.length; return 123;} : (x: string) => number @@ -45,5 +47,7 @@ foo.then((x) => { >length : number return 123; +>123 : number + }); diff --git a/tests/baselines/reference/properties.types b/tests/baselines/reference/properties.types index 2c42e093758..d51ab4a95d2 100644 --- a/tests/baselines/reference/properties.types +++ b/tests/baselines/reference/properties.types @@ -7,6 +7,7 @@ class MyClass >Count : number { return 42; +>42 : number } public set Count(value: number) diff --git a/tests/baselines/reference/propertyAccess6.types b/tests/baselines/reference/propertyAccess6.types index a01c3718b39..18f39f447c5 100644 --- a/tests/baselines/reference/propertyAccess6.types +++ b/tests/baselines/reference/propertyAccess6.types @@ -7,4 +7,5 @@ foo.bar = 4; >foo.bar : any >foo : any >bar : any +>4 : number diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.types b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.types index 9d74985b9a5..d808cddef83 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.types +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints.types @@ -19,6 +19,7 @@ class C { >x['getDate']() : number >x['getDate'] : () => number >x : T +>'getDate' : string return a + x.getDate(); >a + x.getDate() : number @@ -70,6 +71,7 @@ var r2b = i.foo['getDate'](); >i.foo : Date >i : I >foo : Date +>'getDate' : string var a: { >a : () => T @@ -94,6 +96,7 @@ var r3b = a()['getDate'](); >a()['getDate'] : () => number >a() : Date >a : () => T +>'getDate' : string var b = { >b : { foo: (x: T) => number; } @@ -112,6 +115,7 @@ var b = { >x['getDate']() : number >x['getDate'] : () => number >x : T +>'getDate' : string return a + x.getDate(); >a + x.getDate() : number diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types index 364184d5652..9ea015cc9ce 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types @@ -6,6 +6,7 @@ class A { foo(): string { return ''; } >foo : () => string +>'' : string } class B extends A { @@ -16,6 +17,7 @@ class B extends A { >bar : () => string return ''; +>'' : string } } @@ -38,6 +40,7 @@ class C { >x['foo']() : string >x['foo'] : () => string >x : U +>'foo' : string return a + x.foo(); >a + x.foo() : string @@ -58,6 +61,7 @@ class C { >x['foo']() : string >x['foo'] : () => string >x : U +>'foo' : string return a + x.foo(); >a + x.foo() : string @@ -141,6 +145,7 @@ var r2b = i.foo['foo'](); >i.foo : B >i : I >foo : B +>'foo' : string var a: { >a : { (): U; (x: U): U; (x: U, y: T): U; } @@ -193,6 +198,7 @@ var r3b = a()['foo'](); >a()['foo'] : () => string >a() : A >a : { (): U; (x: U): U; (x: U, y: T): U; } +>'foo' : string // parameter supplied for type argument inference to succeed var aB = new B(); @@ -218,6 +224,7 @@ var r3d = a(aB, aB)['foo'](); >a : { (): U; (x: U): U; (x: U, y: T): U; } >aB : B >aB : B +>'foo' : string var b = { >b : { foo: (x: U, y: T) => string; } @@ -240,6 +247,7 @@ var b = { >x['foo']() : string >x['foo'] : () => string >x : U +>'foo' : string return a + x.foo(); >a + x.foo() : string diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.types b/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.types index 038c7962284..9d25bebea37 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.types +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithoutConstraints.types @@ -15,6 +15,7 @@ class C { >x['toString']() : string >x['toString'] : () => string >x : T +>'toString' : string return a + x.toString(); >a + x.toString() : string @@ -63,6 +64,7 @@ var r2b = i.foo['toString'](); >i.foo : number >i : I >foo : number +>'toString' : string var a: { >a : () => T @@ -85,6 +87,7 @@ var r3b: string = a()['toString'](); >a()['toString'] : () => string >a() : {} >a : () => T +>'toString' : string var b = { >b : { foo: (x: T) => string; } @@ -102,6 +105,7 @@ var b = { >x['toString']() : string >x['toString'] : () => string >x : T +>'toString' : string return a + x.toString(); >a + x.toString() : string @@ -119,4 +123,5 @@ var r4 = b.foo(1); >b.foo : (x: T) => string >b : { foo: (x: T) => string; } >foo : (x: T) => string +>1 : number diff --git a/tests/baselines/reference/propertyNameWithoutTypeAnnotation.types b/tests/baselines/reference/propertyNameWithoutTypeAnnotation.types index 520567d33a1..9bc56de3867 100644 --- a/tests/baselines/reference/propertyNameWithoutTypeAnnotation.types +++ b/tests/baselines/reference/propertyNameWithoutTypeAnnotation.types @@ -26,6 +26,7 @@ var b = { foo: null >foo : null +>null : null } // These should all be of type 'any' @@ -43,6 +44,7 @@ var r2 = (null).foo; >(null) : I >null : I >I : I +>null : null >foo : any var r3 = a.foo; diff --git a/tests/baselines/reference/propertyNamesWithStringLiteral.types b/tests/baselines/reference/propertyNamesWithStringLiteral.types index 89e5771a4b0..9c3eb5f2015 100644 --- a/tests/baselines/reference/propertyNamesWithStringLiteral.types +++ b/tests/baselines/reference/propertyNamesWithStringLiteral.types @@ -35,6 +35,7 @@ var a = Color.namedColors["azure"]; >Color.namedColors : NamedColors >Color : typeof Color >namedColors : NamedColors +>"azure" : string var a = Color.namedColors.blue; // Should not error >a : _Color @@ -50,4 +51,5 @@ var a = Color.namedColors["pale blue"]; // should not error >Color.namedColors : NamedColors >Color : typeof Color >namedColors : NamedColors +>"pale blue" : string diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types b/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types index 241b3cfc7a1..98e5c120c3d 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinClass.types @@ -77,6 +77,7 @@ class C2 { >this.x : string >this : C2 >x : string +>null : null protected set y(x) { () => { this.y = this.x; } } >y : any @@ -106,6 +107,7 @@ class C2 { >this.x : string >this : typeof C2 >x : string +>null : null protected static set y(x) { >y : any diff --git a/tests/baselines/reference/protoAsIndexInIndexExpression.types b/tests/baselines/reference/protoAsIndexInIndexExpression.types index bde87801fa5..56650cbf4eb 100644 --- a/tests/baselines/reference/protoAsIndexInIndexExpression.types +++ b/tests/baselines/reference/protoAsIndexInIndexExpression.types @@ -17,6 +17,7 @@ WorkspacePrototype['__proto__'] = EntityPrototype; >WorkspacePrototype['__proto__'] = EntityPrototype : any >WorkspacePrototype['__proto__'] : any >WorkspacePrototype : { serialize: () => any; } +>'__proto__' : string >EntityPrototype : any var o = { @@ -24,11 +25,14 @@ var o = { >{ "__proto__": 0} : { "__proto__": number; } "__proto__": 0 +>0 : number + }; class C { >C : C "__proto__" = 0; +>0 : number } === tests/cases/compiler/protoAsIndexInIndexExpression_0.ts === export var x; diff --git a/tests/baselines/reference/protoInIndexer.types b/tests/baselines/reference/protoInIndexer.types index 66eb61a05ef..48e8b5d56dc 100644 --- a/tests/baselines/reference/protoInIndexer.types +++ b/tests/baselines/reference/protoInIndexer.types @@ -7,5 +7,7 @@ class X { >this['__proto__'] = null : null >this['__proto__'] : any >this : X +>'__proto__' : string +>null : null } } diff --git a/tests/baselines/reference/prototypeOnConstructorFunctions.types b/tests/baselines/reference/prototypeOnConstructorFunctions.types index 53e374b9894..8d1b16e7a21 100644 --- a/tests/baselines/reference/prototypeOnConstructorFunctions.types +++ b/tests/baselines/reference/prototypeOnConstructorFunctions.types @@ -23,4 +23,5 @@ i.const.prototype.prop = "yo"; >const : new (options?: any, element?: any) => any >prototype : any >prop : any +>"yo" : string diff --git a/tests/baselines/reference/qualifiedName_ImportDeclarations-entity-names-referencing-a-var.types b/tests/baselines/reference/qualifiedName_ImportDeclarations-entity-names-referencing-a-var.types index d438d846bf4..1c710562ebb 100644 --- a/tests/baselines/reference/qualifiedName_ImportDeclarations-entity-names-referencing-a-var.types +++ b/tests/baselines/reference/qualifiedName_ImportDeclarations-entity-names-referencing-a-var.types @@ -4,6 +4,7 @@ module Alpha { export var x = 100; >x : number +>100 : number } module Beta { diff --git a/tests/baselines/reference/quotedPropertyName1.types b/tests/baselines/reference/quotedPropertyName1.types index 0ca2ecba536..4a4e73529b3 100644 --- a/tests/baselines/reference/quotedPropertyName1.types +++ b/tests/baselines/reference/quotedPropertyName1.types @@ -3,4 +3,5 @@ class Test1 { >Test1 : Test1 "prop1" = 0; +>0 : number } diff --git a/tests/baselines/reference/quotedPropertyName2.types b/tests/baselines/reference/quotedPropertyName2.types index dc460caa551..fe737758e3e 100644 --- a/tests/baselines/reference/quotedPropertyName2.types +++ b/tests/baselines/reference/quotedPropertyName2.types @@ -3,4 +3,5 @@ class Test1 { >Test1 : Test1 static "prop1" = 0; +>0 : number } diff --git a/tests/baselines/reference/quotedPropertyName3.types b/tests/baselines/reference/quotedPropertyName3.types index f90ca7c6242..53d375f7621 100644 --- a/tests/baselines/reference/quotedPropertyName3.types +++ b/tests/baselines/reference/quotedPropertyName3.types @@ -11,6 +11,7 @@ class Test { >() => this["prop1"] : () => number >this["prop1"] : number >this : Test +>"prop1" : string var y: number = x(); >y : number diff --git a/tests/baselines/reference/randomSemicolons1.types b/tests/baselines/reference/randomSemicolons1.types index e77dcad34e3..48a7c307314 100644 --- a/tests/baselines/reference/randomSemicolons1.types +++ b/tests/baselines/reference/randomSemicolons1.types @@ -2,6 +2,7 @@ ; ; var a = 1; >a : number +>1 : number ; diff --git a/tests/baselines/reference/reboundBaseClassSymbol.types b/tests/baselines/reference/reboundBaseClassSymbol.types index 1a62a7f71cb..9c62d838f42 100644 --- a/tests/baselines/reference/reboundBaseClassSymbol.types +++ b/tests/baselines/reference/reboundBaseClassSymbol.types @@ -8,6 +8,7 @@ module Foo { var A = 1; >A : number +>1 : number interface B extends A { b: string; } >B : B diff --git a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types index 49a97bdb656..482ec707e49 100644 --- a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types +++ b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types @@ -14,6 +14,7 @@ export class MemberName { public prefix: string = ""; >prefix : string +>"" : string } export class MemberNameArray extends MemberName { >MemberNameArray : MemberNameArray diff --git a/tests/baselines/reference/recursiveComplicatedClasses.types b/tests/baselines/reference/recursiveComplicatedClasses.types index d969bbfcea0..247b9ee27c5 100644 --- a/tests/baselines/reference/recursiveComplicatedClasses.types +++ b/tests/baselines/reference/recursiveComplicatedClasses.types @@ -5,6 +5,7 @@ class Signature { public parameters: ParameterSymbol[] = null; >parameters : ParameterSymbol[] >ParameterSymbol : ParameterSymbol +>null : null } function aEnclosesB(a: Symbol) { @@ -13,6 +14,7 @@ function aEnclosesB(a: Symbol) { >Symbol : Symbol return true; +>true : boolean } class Symbol { diff --git a/tests/baselines/reference/recursiveFunctionTypes1.types b/tests/baselines/reference/recursiveFunctionTypes1.types index b78494ba24c..52cf90f1059 100644 --- a/tests/baselines/reference/recursiveFunctionTypes1.types +++ b/tests/baselines/reference/recursiveFunctionTypes1.types @@ -5,6 +5,7 @@ class C { static g(t: typeof C.g){ } >g : (t: typeof C.g) => void >t : (t: typeof C.g) => void +>C.g : (t: typeof C.g) => void >C : typeof C >g : (t: typeof C.g) => void } diff --git a/tests/baselines/reference/recursiveInference1.types b/tests/baselines/reference/recursiveInference1.types index 3fef5dbb805..58bb13d18e7 100644 --- a/tests/baselines/reference/recursiveInference1.types +++ b/tests/baselines/reference/recursiveInference1.types @@ -5,19 +5,23 @@ function fib(x:number) { return x <= 1 ? x : fib(x - 1) + fib(x - 2); } >x <= 1 ? x : fib(x - 1) + fib(x - 2) : any >x <= 1 : boolean >x : number +>1 : number >x : number >fib(x - 1) + fib(x - 2) : any >fib(x - 1) : any >fib : (x: number) => any >x - 1 : number >x : number +>1 : number >fib(x - 2) : any >fib : (x: number) => any >x - 2 : number >x : number +>2 : number var result = fib(5); >result : any >fib(5) : any >fib : (x: number) => any +>5 : number diff --git a/tests/baselines/reference/recursiveInitializer.types b/tests/baselines/reference/recursiveInitializer.types index 540553ea529..f5bc2338902 100644 --- a/tests/baselines/reference/recursiveInitializer.types +++ b/tests/baselines/reference/recursiveInitializer.types @@ -22,6 +22,7 @@ var s1 = s1 + ''; >s1 : any >s1 + '' : string >s1 : any +>'' : string var s2 /* any */ = s2 + s2; >s2 : any @@ -38,6 +39,7 @@ var s3 : string = s3 + s3; var s4 = '' + s4; >s4 : any >'' + s4 : string +>'' : string >s4 : any // boolean unless otherwise specified diff --git a/tests/baselines/reference/recursiveMods.types b/tests/baselines/reference/recursiveMods.types index a02156a6e9b..d7f28f84975 100644 --- a/tests/baselines/reference/recursiveMods.types +++ b/tests/baselines/reference/recursiveMods.types @@ -14,6 +14,7 @@ export module Foo { >C : C if (true) { return Bar();} +>true : boolean >Bar() : C >Bar : () => C diff --git a/tests/baselines/reference/recursiveReturns.types b/tests/baselines/reference/recursiveReturns.types index dfb54f126a3..c4d9fd31981 100644 --- a/tests/baselines/reference/recursiveReturns.types +++ b/tests/baselines/reference/recursiveReturns.types @@ -21,6 +21,7 @@ function R3(n:number) { if (n == 0) { >n == 0 : boolean >n : number +>0 : number //return; } diff --git a/tests/baselines/reference/recursiveTypesWithTypeof.types b/tests/baselines/reference/recursiveTypesWithTypeof.types index 14ff5a6d5b9..864c136743d 100644 --- a/tests/baselines/reference/recursiveTypesWithTypeof.types +++ b/tests/baselines/reference/recursiveTypesWithTypeof.types @@ -59,6 +59,7 @@ var g: { x: typeof g; }; var g: typeof g.x; >g : { x: any; } +>g.x : { x: any; } >g : { x: any; } >x : { x: any; } @@ -145,11 +146,13 @@ var k = k[0]; >k : { [s: string]: any; [n: number]: any; } >k[0] : { [s: string]: any; [n: number]: any; } >k : { [s: string]: any; [n: number]: any; } +>0 : number var k = k['']; >k : { [s: string]: any; [n: number]: any; } >k[''] : { [s: string]: any; [n: number]: any; } >k : { [s: string]: any; [n: number]: any; } +>'' : string // Hybrid - contains type literals as well as type arguments // These two are recursive @@ -163,6 +166,7 @@ var hy1 = hy1[0].x; >hy1[0].x : { x: any[]; }[] >hy1[0] : { x: any[]; } >hy1 : { x: any[]; }[] +>0 : number >x : { x: any[]; }[] var hy2: { x: Array }; @@ -177,6 +181,7 @@ var hy2 = hy2.x[0]; >hy2.x : { x: any[]; }[] >hy2 : { x: any[]; } >x : { x: any[]; }[] +>0 : number interface Foo2 { } >Foo2 : Foo2 diff --git a/tests/baselines/reference/regExpWithSlashInCharClass.types b/tests/baselines/reference/regExpWithSlashInCharClass.types index c868594e457..40eed3c109c 100644 --- a/tests/baselines/reference/regExpWithSlashInCharClass.types +++ b/tests/baselines/reference/regExpWithSlashInCharClass.types @@ -3,17 +3,26 @@ var foo1 = "a/".replace(/.[/]/, ""); >foo1 : string >"a/".replace(/.[/]/, "") : string >"a/".replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>"a/" : string >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>/.[/]/ : RegExp +>"" : string var foo2 = "a//".replace(/.[//]/g, ""); >foo2 : string >"a//".replace(/.[//]/g, "") : string >"a//".replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>"a//" : string >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>/.[//]/g : RegExp +>"" : string var foo3 = "a/".replace(/.[/no sleep /till/]/, "bugfix"); >foo3 : string >"a/".replace(/.[/no sleep /till/]/, "bugfix") : string >"a/".replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>"a/" : string >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } +>/.[/no sleep /till/]/ : RegExp +>"bugfix" : string diff --git a/tests/baselines/reference/requireEmitSemicolon.types b/tests/baselines/reference/requireEmitSemicolon.types index 692cfcfe63f..d04b542f4f1 100644 --- a/tests/baselines/reference/requireEmitSemicolon.types +++ b/tests/baselines/reference/requireEmitSemicolon.types @@ -23,6 +23,7 @@ export module Database { >P : typeof P >Models : typeof P.Models >Person : typeof P.Models.Person +>"Rock" : string } } } diff --git a/tests/baselines/reference/reservedWords.types b/tests/baselines/reference/reservedWords.types index 769039a76bf..4c76e056ce2 100644 --- a/tests/baselines/reference/reservedWords.types +++ b/tests/baselines/reference/reservedWords.types @@ -5,15 +5,19 @@ var obj = { if: 0, >if : number +>0 : number debugger: 2, >debugger : number +>2 : number break: 3, >break : number +>3 : number function: 4 >function : number +>4 : number } //This compiles. @@ -24,17 +28,22 @@ var obj2 = { if: 0, >if : number +>0 : number while: 1, >while : number +>1 : number debugger: 2, >debugger : number +>2 : number break: 3, >break : number +>3 : number function: 4 >function : number +>4 : number } diff --git a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types index c4aec3ea8c2..8a0e1bbc79a 100644 --- a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types +++ b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types @@ -4,6 +4,7 @@ module rionegrensis { export class caniventer extends Lanthanum.nitidus { >caniventer : caniventer +>Lanthanum.nitidus : unknown >Lanthanum : typeof Lanthanum >nitidus : Lanthanum.nitidus >petrophilus : unknown @@ -89,6 +90,7 @@ module rionegrensis { >veraecrucis : veraecrucis >T0 : T0 >T1 : T1 +>trivirgatus.mixtus : unknown >trivirgatus : typeof trivirgatus >mixtus : trivirgatus.mixtus >gabriellae : unknown @@ -514,6 +516,7 @@ module julianae { >oralis : oralis >T0 : T0 >T1 : T1 +>caurinus.psilurus : unknown >caurinus : typeof caurinus >psilurus : caurinus.psilurus @@ -751,6 +754,7 @@ module julianae { } export class sumatrana extends Lanthanum.jugularis { >sumatrana : sumatrana +>Lanthanum.jugularis : unknown >Lanthanum : typeof Lanthanum >jugularis : Lanthanum.jugularis @@ -1276,6 +1280,7 @@ module julianae { } export class durangae extends dogramacii.aurata { >durangae : durangae +>dogramacii.aurata : unknown >dogramacii : typeof dogramacii >aurata : dogramacii.aurata @@ -1429,6 +1434,7 @@ module Lanthanum { >nitidus : nitidus >T0 : T0 >T1 : T1 +>argurus.gilbertii : unknown >argurus : typeof argurus >gilbertii : argurus.gilbertii >lavali : unknown @@ -1598,6 +1604,7 @@ module Lanthanum { } export class megalonyx extends caurinus.johorensis { >megalonyx : megalonyx +>caurinus.johorensis : unknown >caurinus : typeof caurinus >johorensis : caurinus.johorensis >caurinus : unknown @@ -1984,6 +1991,7 @@ module rendalli { export class zuluensis extends julianae.steerii { >zuluensis : zuluensis +>julianae.steerii : unknown >julianae : typeof julianae >steerii : julianae.steerii @@ -2418,6 +2426,7 @@ module rendalli { >crenulata : crenulata >T0 : T0 >T1 : T1 +>trivirgatus.falconeri : unknown >trivirgatus : typeof trivirgatus >falconeri : trivirgatus.falconeri @@ -2612,6 +2621,7 @@ module trivirgatus { >mixtus : mixtus >T0 : T0 >T1 : T1 +>argurus.pygmaea : unknown >argurus : typeof argurus >pygmaea : argurus.pygmaea >argurus : unknown @@ -3349,6 +3359,7 @@ module ruatanica { export class americanus extends imperfecta.ciliolabrum { >americanus : americanus +>imperfecta.ciliolabrum : unknown >imperfecta : typeof imperfecta >ciliolabrum : imperfecta.ciliolabrum >argurus : unknown @@ -3418,6 +3429,7 @@ module lavali { export class wilsoni extends Lanthanum.nitidus { >wilsoni : wilsoni +>Lanthanum.nitidus : unknown >Lanthanum : typeof Lanthanum >nitidus : Lanthanum.nitidus >rionegrensis : unknown @@ -3638,6 +3650,7 @@ module lavali { } export class otion extends howi.coludo { >otion : otion +>howi.coludo : unknown >howi : typeof howi >coludo : howi.coludo >argurus : unknown @@ -4112,6 +4125,7 @@ module lavali { } export class thaeleri extends argurus.oreas { >thaeleri : thaeleri +>argurus.oreas : unknown >argurus : typeof argurus >oreas : argurus.oreas @@ -4275,6 +4289,7 @@ module lavali { } export class lepturus extends Lanthanum.suillus { >lepturus : lepturus +>Lanthanum.suillus : unknown >Lanthanum : typeof Lanthanum >suillus : Lanthanum.suillus >dammermani : unknown @@ -4350,6 +4365,7 @@ module dogramacii { export class robustulus extends lavali.wilsoni { >robustulus : robustulus +>lavali.wilsoni : unknown >lavali : typeof lavali >wilsoni : lavali.wilsoni @@ -4924,6 +4940,7 @@ module lutreolus { export class schlegeli extends lavali.beisa { >schlegeli : schlegeli +>lavali.beisa : unknown >lavali : typeof lavali >beisa : lavali.beisa @@ -5661,6 +5678,7 @@ module panglima { >amphibius : amphibius >T0 : T0 >T1 : T1 +>caurinus.johorensis : unknown >caurinus : typeof caurinus >johorensis : caurinus.johorensis >Lanthanum : unknown @@ -5794,6 +5812,7 @@ module panglima { >fundatus : fundatus >T0 : T0 >T1 : T1 +>lutreolus.schlegeli : unknown >lutreolus : typeof lutreolus >schlegeli : lutreolus.schlegeli @@ -5899,6 +5918,7 @@ module panglima { >abidi : abidi >T0 : T0 >T1 : T1 +>argurus.dauricus : unknown >argurus : typeof argurus >dauricus : argurus.dauricus >argurus : unknown @@ -6113,6 +6133,7 @@ module minutus { >himalayana : himalayana >T0 : T0 >T1 : T1 +>lutreolus.punicus : unknown >lutreolus : typeof lutreolus >punicus : lutreolus.punicus @@ -6356,6 +6377,7 @@ module caurinus { >mahaganus : mahaganus >T0 : T0 >T1 : T1 +>panglima.fundatus : unknown >panglima : typeof panglima >fundatus : panglima.fundatus >quasiater : unknown @@ -6584,6 +6606,7 @@ module howi { >angulatus : angulatus >T0 : T0 >T1 : T1 +>sagitta.stolzmanni : unknown >sagitta : typeof sagitta >stolzmanni : sagitta.stolzmanni @@ -6791,6 +6814,7 @@ module sagitta { export class walkeri extends minutus.portoricensis { >walkeri : walkeri +>minutus.portoricensis : unknown >minutus : typeof minutus >portoricensis : minutus.portoricensis @@ -6822,6 +6846,7 @@ module minutus { >inez : inez >T0 : T0 >T1 : T1 +>samarensis.pelurus : unknown >samarensis : typeof samarensis >pelurus : samarensis.pelurus >argurus : unknown @@ -6855,6 +6880,7 @@ module macrorhinos { export class konganensis extends imperfecta.lasiurus { >konganensis : konganensis +>imperfecta.lasiurus : unknown >imperfecta : typeof imperfecta >lasiurus : imperfecta.lasiurus >caurinus : unknown @@ -6870,6 +6896,7 @@ module panamensis { >linulus : linulus >T0 : T0 >T1 : T1 +>ruatanica.hector : unknown >ruatanica : typeof ruatanica >hector : ruatanica.hector >julianae : unknown @@ -7330,6 +7357,7 @@ module samarensis { >pelurus : pelurus >T0 : T0 >T1 : T1 +>sagitta.stolzmanni : unknown >sagitta : typeof sagitta >stolzmanni : sagitta.stolzmanni @@ -7587,6 +7615,7 @@ module samarensis { >fuscus : fuscus >T0 : T0 >T1 : T1 +>macrorhinos.daphaenodon : unknown >macrorhinos : typeof macrorhinos >daphaenodon : macrorhinos.daphaenodon @@ -8064,6 +8093,7 @@ module sagitta { >leptoceros : leptoceros >T0 : T0 >T1 : T1 +>caurinus.johorensis : unknown >caurinus : typeof caurinus >johorensis : caurinus.johorensis >argurus : unknown @@ -8175,6 +8205,7 @@ module daubentonii { >nigricans : nigricans >T0 : T0 >T1 : T1 +>sagitta.stolzmanni : unknown >sagitta : typeof sagitta >stolzmanni : sagitta.stolzmanni @@ -8207,6 +8238,7 @@ module argurus { >pygmaea : pygmaea >T0 : T0 >T1 : T1 +>rendalli.moojeni : unknown >rendalli : typeof rendalli >moojeni : rendalli.moojeni >macrorhinos : unknown @@ -8258,6 +8290,7 @@ module chrysaeolus { >sarasinorum : sarasinorum >T0 : T0 >T1 : T1 +>caurinus.psilurus : unknown >caurinus : typeof caurinus >psilurus : caurinus.psilurus @@ -8500,6 +8533,7 @@ module argurus { export class oreas extends lavali.wilsoni { >oreas : oreas +>lavali.wilsoni : unknown >lavali : typeof lavali >wilsoni : lavali.wilsoni @@ -9129,6 +9163,7 @@ module provocax { export class melanoleuca extends lavali.wilsoni { >melanoleuca : melanoleuca +>lavali.wilsoni : unknown >lavali : typeof lavali >wilsoni : lavali.wilsoni @@ -9275,6 +9310,7 @@ module howi { export class marcanoi extends Lanthanum.megalonyx { >marcanoi : marcanoi +>Lanthanum.megalonyx : unknown >Lanthanum : typeof Lanthanum >megalonyx : Lanthanum.megalonyx @@ -10362,6 +10398,7 @@ module gabriellae { >klossii : klossii >T0 : T0 >T1 : T1 +>imperfecta.lasiurus : unknown >imperfecta : typeof imperfecta >lasiurus : imperfecta.lasiurus >dogramacii : unknown @@ -10871,6 +10908,7 @@ module imperfecta { >ciliolabrum : ciliolabrum >T0 : T0 >T1 : T1 +>dogramacii.robustulus : unknown >dogramacii : typeof dogramacii >robustulus : dogramacii.robustulus @@ -11034,6 +11072,7 @@ module petrophilus { >sodyi : sodyi >T0 : T0 >T1 : T1 +>quasiater.bobrinskoi : unknown >quasiater : typeof quasiater >bobrinskoi : quasiater.bobrinskoi @@ -11167,6 +11206,7 @@ module caurinus { export class megaphyllus extends imperfecta.lasiurus> { >megaphyllus : megaphyllus +>imperfecta.lasiurus : unknown >imperfecta : typeof imperfecta >lasiurus : imperfecta.lasiurus >julianae : unknown @@ -11600,6 +11640,7 @@ module lutreolus { >cor : cor >T0 : T0 >T1 : T1 +>panglima.fundatus : unknown >panglima : typeof panglima >fundatus : panglima.fundatus >panamensis : unknown @@ -11846,6 +11887,7 @@ module argurus { export class germaini extends gabriellae.amicus { >germaini : germaini +>gabriellae.amicus : unknown >gabriellae : typeof gabriellae >amicus : gabriellae.amicus @@ -12058,6 +12100,7 @@ module dammermani { export class melanops extends minutus.inez { >melanops : melanops +>minutus.inez : unknown >minutus : typeof minutus >inez : minutus.inez >sagitta : unknown @@ -12307,6 +12350,7 @@ module argurus { export class peninsulae extends patas.uralensis { >peninsulae : peninsulae +>patas.uralensis : unknown >patas : typeof patas >uralensis : patas.uralensis @@ -12771,6 +12815,7 @@ module ruatanica { >Praseodymium : Praseodymium >T0 : T0 >T1 : T1 +>ruatanica.hector : unknown >ruatanica : typeof ruatanica >hector : hector >lutreolus : unknown @@ -13118,6 +13163,7 @@ module caurinus { >johorensis : johorensis >T0 : T0 >T1 : T1 +>lutreolus.punicus : unknown >lutreolus : typeof lutreolus >punicus : lutreolus.punicus @@ -13564,6 +13610,7 @@ module caurinus { export class psilurus extends lutreolus.punicus { >psilurus : psilurus +>lutreolus.punicus : unknown >lutreolus : typeof lutreolus >punicus : lutreolus.punicus diff --git a/tests/baselines/reference/restParameterNoTypeAnnotation.types b/tests/baselines/reference/restParameterNoTypeAnnotation.types index 0298ff37ca5..eed17802d57 100644 --- a/tests/baselines/reference/restParameterNoTypeAnnotation.types +++ b/tests/baselines/reference/restParameterNoTypeAnnotation.types @@ -7,6 +7,7 @@ function foo(...rest) { >x : number >rest[0] : any >rest : any[] +>0 : number return x; >x : number diff --git a/tests/baselines/reference/returnStatement1.types b/tests/baselines/reference/returnStatement1.types index b7a668bfa03..ff30148af5a 100644 --- a/tests/baselines/reference/returnStatement1.types +++ b/tests/baselines/reference/returnStatement1.types @@ -13,4 +13,5 @@ function f() { }; ("harmless extra line"); >("harmless extra line") : string +>"harmless extra line" : string } diff --git a/tests/baselines/reference/returnStatements.types b/tests/baselines/reference/returnStatements.types index 5437c835784..e5332b2e6ac 100644 --- a/tests/baselines/reference/returnStatements.types +++ b/tests/baselines/reference/returnStatements.types @@ -2,9 +2,11 @@ // all the following should be valid function fn1(): number { return 1; } >fn1 : () => number +>1 : number function fn2(): string { return ''; } >fn2 : () => string +>'' : string function fn3(): void { return undefined; } >fn3 : () => void @@ -15,15 +17,18 @@ function fn4(): void { return; } function fn5(): boolean { return true; } >fn5 : () => boolean +>true : boolean function fn6(): Date { return new Date(12); } >fn6 : () => Date >Date : Date >new Date(12) : Date >Date : DateConstructor +>12 : number function fn7(): any { return null; } >fn7 : () => any +>null : null function fn8(): any { return; } // OK, eq. to 'return undefined' >fn8 : () => any @@ -54,6 +59,7 @@ function fn10(): I { return { id: 12 }; } >I : I >{ id: 12 } : { id: number; } >id : number +>12 : number function fn11(): I { return new C(); } >fn11 : () => I @@ -70,4 +76,5 @@ function fn12(): C { return new D(); } function fn13(): C { return null; } >fn13 : () => C >C : C +>null : null diff --git a/tests/baselines/reference/reverseInferenceInContextualInstantiation.types b/tests/baselines/reference/reverseInferenceInContextualInstantiation.types index d38d0423e84..881f6c6941f 100644 --- a/tests/baselines/reference/reverseInferenceInContextualInstantiation.types +++ b/tests/baselines/reference/reverseInferenceInContextualInstantiation.types @@ -6,6 +6,7 @@ function compare(a: T, b: T): number { return 0; } >T : T >b : T >T : T +>0 : number var x: number[]; >x : number[] diff --git a/tests/baselines/reference/reversedRecusiveTypeInstantiation.types b/tests/baselines/reference/reversedRecusiveTypeInstantiation.types index fad3c15489c..fcbdab34e5a 100644 --- a/tests/baselines/reference/reversedRecusiveTypeInstantiation.types +++ b/tests/baselines/reference/reversedRecusiveTypeInstantiation.types @@ -30,5 +30,6 @@ a.zPos2Pos1.xPos1 = 1 >a : A >zPos2Pos1 : A >xPos1 : number +>1 : number diff --git a/tests/baselines/reference/scannerES3NumericLiteral1.types b/tests/baselines/reference/scannerES3NumericLiteral1.types index 96f7ad835c2..0a1108c7ca9 100644 --- a/tests/baselines/reference/scannerES3NumericLiteral1.types +++ b/tests/baselines/reference/scannerES3NumericLiteral1.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript3/scannerES3NumericLiteral1.ts === 0 -No type information for this code. \ No newline at end of file +>0 : number + diff --git a/tests/baselines/reference/scannerES3NumericLiteral2.types b/tests/baselines/reference/scannerES3NumericLiteral2.types index d51f3292e5f..8fae044c217 100644 --- a/tests/baselines/reference/scannerES3NumericLiteral2.types +++ b/tests/baselines/reference/scannerES3NumericLiteral2.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript3/scannerES3NumericLiteral2.ts === 01 -No type information for this code. \ No newline at end of file +>01 : number + diff --git a/tests/baselines/reference/scannerES3NumericLiteral5.types b/tests/baselines/reference/scannerES3NumericLiteral5.types index d147c48a336..2a5367e5b17 100644 --- a/tests/baselines/reference/scannerES3NumericLiteral5.types +++ b/tests/baselines/reference/scannerES3NumericLiteral5.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript3/scannerES3NumericLiteral5.ts === 1e0 -No type information for this code. \ No newline at end of file +>1e0 : number + diff --git a/tests/baselines/reference/scannerES3NumericLiteral7.types b/tests/baselines/reference/scannerES3NumericLiteral7.types index c615dd1ebfa..d5ffa0ea131 100644 --- a/tests/baselines/reference/scannerES3NumericLiteral7.types +++ b/tests/baselines/reference/scannerES3NumericLiteral7.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript3/scannerES3NumericLiteral7.ts === 1e+0 -No type information for this code. \ No newline at end of file +>1e+0 : number + diff --git a/tests/baselines/reference/scannerNumericLiteral1.types b/tests/baselines/reference/scannerNumericLiteral1.types index e6ea5432ea5..a3eebc411fa 100644 --- a/tests/baselines/reference/scannerNumericLiteral1.types +++ b/tests/baselines/reference/scannerNumericLiteral1.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript5/scannerNumericLiteral1.ts === 0 -No type information for this code. \ No newline at end of file +>0 : number + diff --git a/tests/baselines/reference/scannerNumericLiteral5.types b/tests/baselines/reference/scannerNumericLiteral5.types index d9cc2f1414b..86ab1a903e0 100644 --- a/tests/baselines/reference/scannerNumericLiteral5.types +++ b/tests/baselines/reference/scannerNumericLiteral5.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript5/scannerNumericLiteral5.ts === 1e0 -No type information for this code. \ No newline at end of file +>1e0 : number + diff --git a/tests/baselines/reference/scannerNumericLiteral7.types b/tests/baselines/reference/scannerNumericLiteral7.types index f7ccc497e99..25ce9275290 100644 --- a/tests/baselines/reference/scannerNumericLiteral7.types +++ b/tests/baselines/reference/scannerNumericLiteral7.types @@ -1,3 +1,4 @@ === tests/cases/conformance/scanner/ecmascript5/scannerNumericLiteral7.ts === 1e+0 -No type information for this code. \ No newline at end of file +>1e+0 : number + diff --git a/tests/baselines/reference/scannerStringLiteralWithContainingNullCharacter1.types b/tests/baselines/reference/scannerStringLiteralWithContainingNullCharacter1.types index 0f491bbb18a2e5c6ae626270c8e85c5fefa57c7e..43eadd8c2918d41dbe14a88bc9f0895ee1368afc 100644 GIT binary patch delta 26 hcmbQt*uprWP}ojMfk8n@!AhaHq$o2lotKN33jkSJ1}^{r delta 41 vcmZo+oXj|(P{}V}p`@}PRUtDkEx#x?u_QA;PXWkMD9OkyR!GiIN!0@YGvp4+ diff --git a/tests/baselines/reference/scannerUnicodeEscapeInKeyword1.types b/tests/baselines/reference/scannerUnicodeEscapeInKeyword1.types index 73acf3fd594..a73ee57b791 100644 --- a/tests/baselines/reference/scannerUnicodeEscapeInKeyword1.types +++ b/tests/baselines/reference/scannerUnicodeEscapeInKeyword1.types @@ -1,4 +1,5 @@ === tests/cases/conformance/scanner/ecmascript5/scannerUnicodeEscapeInKeyword1.ts === \u0076ar x = "hello"; >x : string +>"hello" : string diff --git a/tests/baselines/reference/selfInCallback.types b/tests/baselines/reference/selfInCallback.types index ed078d574d4..0f9b0f3a671 100644 --- a/tests/baselines/reference/selfInCallback.types +++ b/tests/baselines/reference/selfInCallback.types @@ -4,6 +4,7 @@ class C { public p1 = 0; >p1 : number +>0 : number public callback(cb:()=>void) {cb();} >callback : (cb: () => void) => void @@ -24,5 +25,6 @@ class C { >this.p1 : number >this : C >p1 : number +>1 : number } } diff --git a/tests/baselines/reference/selfInLambdas.types b/tests/baselines/reference/selfInLambdas.types index 42a58a9294f..e8905432e75 100644 --- a/tests/baselines/reference/selfInLambdas.types +++ b/tests/baselines/reference/selfInLambdas.types @@ -28,6 +28,7 @@ var o = { counter: 0, >counter : number +>0 : number start: function() { >start : () => void @@ -66,6 +67,7 @@ class X { private value = "value"; >value : string +>"value" : string public foo() { >foo : () => void diff --git a/tests/baselines/reference/separateCompilationNonAmbientConstEnum.types b/tests/baselines/reference/separateCompilationNonAmbientConstEnum.types index d444cbd1493..ce55b80f41d 100644 --- a/tests/baselines/reference/separateCompilationNonAmbientConstEnum.types +++ b/tests/baselines/reference/separateCompilationNonAmbientConstEnum.types @@ -3,6 +3,7 @@ const enum E { X = 100 }; >E : E >X : E +>100 : number var e = E.X; >e : E diff --git a/tests/baselines/reference/sourceMap-FileWithComments.types b/tests/baselines/reference/sourceMap-FileWithComments.types index ecb32311c4a..f6b87c2e4c4 100644 --- a/tests/baselines/reference/sourceMap-FileWithComments.types +++ b/tests/baselines/reference/sourceMap-FileWithComments.types @@ -50,11 +50,14 @@ module Shapes { >origin : Point >new Point(0, 0) : Point >Point : typeof Point +>0 : number +>0 : number } // Variable comment after class var a = 10; >a : number +>10 : number export function foo() { >foo : () => void @@ -65,6 +68,7 @@ module Shapes { */ var b = 10; >b : number +>10 : number } /** Local Variable */ @@ -75,6 +79,8 @@ var p: IPoint = new Shapes.Point(3, 4); >Shapes.Point : typeof Shapes.Point >Shapes : typeof Shapes >Point : typeof Shapes.Point +>3 : number +>4 : number var dist = p.getDist(); >dist : number diff --git a/tests/baselines/reference/sourceMap-InterfacePrecedingVariableDeclaration1.types b/tests/baselines/reference/sourceMap-InterfacePrecedingVariableDeclaration1.types index a27c426105c..fb361a53bd5 100644 --- a/tests/baselines/reference/sourceMap-InterfacePrecedingVariableDeclaration1.types +++ b/tests/baselines/reference/sourceMap-InterfacePrecedingVariableDeclaration1.types @@ -5,4 +5,5 @@ interface I {} var x = 0; >x : number +>0 : number diff --git a/tests/baselines/reference/sourceMap-LineBreaks.types b/tests/baselines/reference/sourceMap-LineBreaks.types index cc2eebc973d..1e0220906da 100644 --- a/tests/baselines/reference/sourceMap-LineBreaks.types +++ b/tests/baselines/reference/sourceMap-LineBreaks.types @@ -1,30 +1,40 @@ === tests/cases/compiler/sourceMap-LineBreaks.ts === var endsWithlineSeparator = 10; 
var endsWithParagraphSeparator = 10; 
var endsWithNextLine = 1;…var endsWithLineFeed = 1; >endsWithlineSeparator : number +>10 : number var endsWithCarriageReturnLineFeed = 1; >endsWithParagraphSeparator : number +>10 : number var endsWithCarriageReturn = 1; var endsWithLineFeedCarriageReturn = 1; >endsWithNextLine : number +>1 : number >endsWithLineFeed : number +>1 : number var endsWithLineFeedCarriageReturnLineFeed = 1; >endsWithCarriageReturnLineFeed : number +>1 : number >endsWithCarriageReturn : number +>1 : number var stringLiteralWithLineFeed = "line 1\ >endsWithLineFeedCarriageReturn : number +>1 : number line 2"; var stringLiteralWithCarriageReturnLineFeed = "line 1\ >endsWithLineFeedCarriageReturnLineFeed : number +>1 : number line 2"; var stringLiteralWithCarriageReturn = "line 1\ line 2"; >stringLiteralWithLineFeed : string +>"line 1\line 2" : string var stringLiteralWithLineSeparator = "line 1\
line 2";
var stringLiteralWithParagraphSeparator = "line 1\
line 2";
var stringLiteralWithNextLine = "line 1\…line 2"; >stringLiteralWithCarriageReturnLineFeed : string +>"line 1\line 2" : string diff --git a/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.types b/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.types index 3d71b5a5ca1..827f523e277 100644 --- a/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.types +++ b/tests/baselines/reference/sourceMap-StringLiteralWithNewLine.types @@ -19,9 +19,11 @@ module Foo { var x = "test1"; >x : string +>"test1" : string var y = "test 2\ >y : string +>"test 2\isn't this a lot of fun" : string isn't this a lot of fun"; var z = window.document; diff --git a/tests/baselines/reference/sourceMapValidationClass.types b/tests/baselines/reference/sourceMapValidationClass.types index 1e10c244da3..e3b30a37227 100644 --- a/tests/baselines/reference/sourceMapValidationClass.types +++ b/tests/baselines/reference/sourceMapValidationClass.types @@ -12,15 +12,18 @@ class Greeter { return "

" + this.greeting + "

"; >"

" + this.greeting + "

" : string >"

" + this.greeting : string +>"

" : string >this.greeting : string >this : Greeter >greeting : string +>"

" : string } private x: string; >x : string private x1: number = 10; >x1 : number +>10 : number private fn() { >fn : () => string diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.types b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.types index 894576a2c96..5cca47a0a41 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.types +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructor.types @@ -4,7 +4,9 @@ class Greeter { public a = 10; >a : number +>10 : number public nameA = "Ten"; >nameA : string +>"Ten" : string } diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types index 6b0b25acf56..266fe496193 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndCapturedThisStatement.types @@ -4,6 +4,7 @@ class Greeter { public a = 10; >a : number +>10 : number public returnA = () => this.a; >returnA : () => number diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types index e1a3c814520..12d8d56cf6e 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types @@ -9,7 +9,9 @@ class Greeter extends AbstractGreeter { public a = 10; >a : number +>10 : number public nameA = "Ten"; >nameA : string +>"Ten" : string } diff --git a/tests/baselines/reference/sourceMapValidationClasses.types b/tests/baselines/reference/sourceMapValidationClasses.types index 4f391c86f65..97e168d4701 100644 --- a/tests/baselines/reference/sourceMapValidationClasses.types +++ b/tests/baselines/reference/sourceMapValidationClasses.types @@ -4,6 +4,7 @@ module Foo.Bar { >Bar : typeof Bar "use strict"; +>"use strict" : string class Greeter { >Greeter : Greeter @@ -18,9 +19,11 @@ module Foo.Bar { return "

" + this.greeting + "

"; >"

" + this.greeting + "

" : string >"

" + this.greeting : string +>"

" : string >this.greeting : string >this : Greeter >greeting : string +>"

" : string } } @@ -40,6 +43,7 @@ module Foo.Bar { >greeter : Greeter >new Greeter("Hello, world!") : Greeter >Greeter : typeof Greeter +>"Hello, world!" : string var str = greeter.greet(); >str : string @@ -62,12 +66,14 @@ module Foo.Bar { >greeters[0] = new Greeter(greeting) : Greeter >greeters[0] : Greeter >greeters : Greeter[] +>0 : number >new Greeter(greeting) : Greeter >Greeter : typeof Greeter >greeting : string for (var i = 0; i < restGreetings.length; i++) { >i : number +>0 : number >i < restGreetings.length : boolean >i : number >restGreetings.length : number @@ -96,10 +102,14 @@ module Foo.Bar { >b : Greeter[] >foo2("Hello", "World", "!") : Greeter[] >foo2 : (greeting: string, ...restGreetings: string[]) => Greeter[] +>"Hello" : string +>"World" : string +>"!" : string // This is simple signle line comment for (var j = 0; j < b.length; j++) { >j : number +>0 : number >j < b.length : boolean >j : number >b.length : number diff --git a/tests/baselines/reference/sourceMapValidationDecorators.types b/tests/baselines/reference/sourceMapValidationDecorators.types index 05b512fa439..182f68570bc 100644 --- a/tests/baselines/reference/sourceMapValidationDecorators.types +++ b/tests/baselines/reference/sourceMapValidationDecorators.types @@ -48,6 +48,7 @@ declare function ParameterDecorator2(x: number): (target: Function, key: string @ClassDecorator2(10) >ClassDecorator2(10) : (target: Function) => void >ClassDecorator2 : (x: number) => (target: Function) => void +>10 : number class Greeter { >Greeter : Greeter @@ -59,6 +60,7 @@ class Greeter { @ParameterDecorator2(20) >ParameterDecorator2(20) : (target: Function, key: string | symbol, paramIndex: number) => void >ParameterDecorator2 : (x: number) => (target: Function, key: string | symbol, paramIndex: number) => void +>20 : number public greeting: string, >greeting : string @@ -69,6 +71,7 @@ class Greeter { @ParameterDecorator2(30) >ParameterDecorator2(30) : (target: Function, key: string | symbol, paramIndex: number) => void >ParameterDecorator2 : (x: number) => (target: Function, key: string | symbol, paramIndex: number) => void +>30 : number ...b: string[]) { >b : string[] @@ -80,6 +83,7 @@ class Greeter { @PropertyDecorator2(40) >PropertyDecorator2(40) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>40 : number greet() { >greet : () => string @@ -87,9 +91,11 @@ class Greeter { return "

" + this.greeting + "

"; >"

" + this.greeting + "

" : string >"

" + this.greeting : string +>"

" : string >this.greeting : string >this : Greeter >greeting : string +>"

" : string } @PropertyDecorator1 @@ -98,6 +104,7 @@ class Greeter { @PropertyDecorator2(50) >PropertyDecorator2(50) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>50 : number private x: string; >x : string @@ -108,9 +115,11 @@ class Greeter { @PropertyDecorator2(60) >PropertyDecorator2(60) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>60 : number private static x1: number = 10; >x1 : number +>10 : number private fn( >fn : (x: number) => string @@ -121,6 +130,7 @@ class Greeter { @ParameterDecorator2(70) >ParameterDecorator2(70) : (target: Function, key: string | symbol, paramIndex: number) => void >ParameterDecorator2 : (x: number) => (target: Function, key: string | symbol, paramIndex: number) => void +>70 : number x: number) { >x : number @@ -137,6 +147,7 @@ class Greeter { @PropertyDecorator2(80) >PropertyDecorator2(80) : (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void >PropertyDecorator2 : (x: number) => (target: Object, key: string | symbol, descriptor?: PropertyDescriptor) => void +>80 : number get greetings() { >greetings : string @@ -156,6 +167,7 @@ class Greeter { @ParameterDecorator2(90) >ParameterDecorator2(90) : (target: Function, key: string | symbol, paramIndex: number) => void >ParameterDecorator2 : (x: number) => (target: Function, key: string | symbol, paramIndex: number) => void +>90 : number greetings: string) { >greetings : string diff --git a/tests/baselines/reference/sourceMapValidationDo.types b/tests/baselines/reference/sourceMapValidationDo.types index 21bace62317..7623a483fd1 100644 --- a/tests/baselines/reference/sourceMapValidationDo.types +++ b/tests/baselines/reference/sourceMapValidationDo.types @@ -1,6 +1,7 @@ === tests/cases/compiler/sourceMapValidationDo.ts === var i = 0; >i : number +>0 : number do { @@ -11,6 +12,7 @@ do } while (i < 10); >i < 10 : boolean >i : number +>10 : number do { i++; @@ -20,4 +22,5 @@ do { } while (i < 20); >i < 20 : boolean >i : number +>20 : number diff --git a/tests/baselines/reference/sourceMapValidationFunctionExpressions.types b/tests/baselines/reference/sourceMapValidationFunctionExpressions.types index cd1c82c5819..9ddfd93b89d 100644 --- a/tests/baselines/reference/sourceMapValidationFunctionExpressions.types +++ b/tests/baselines/reference/sourceMapValidationFunctionExpressions.types @@ -1,6 +1,7 @@ === tests/cases/compiler/sourceMapValidationFunctionExpressions.ts === var greetings = 0; >greetings : number +>0 : number var greet = (greeting: string): number => { >greet : (greeting: string) => number @@ -17,6 +18,7 @@ var greet = (greeting: string): number => { greet("Hello"); >greet("Hello") : number >greet : (greeting: string) => number +>"Hello" : string var incrGreetings = () => greetings++; >incrGreetings : () => number diff --git a/tests/baselines/reference/sourceMapValidationFunctions.types b/tests/baselines/reference/sourceMapValidationFunctions.types index 0d110ece2d2..82cb550a8aa 100644 --- a/tests/baselines/reference/sourceMapValidationFunctions.types +++ b/tests/baselines/reference/sourceMapValidationFunctions.types @@ -1,6 +1,7 @@ === tests/cases/compiler/sourceMapValidationFunctions.ts === var greetings = 0; >greetings : number +>0 : number function greet(greeting: string): number { >greet : (greeting: string) => number @@ -17,6 +18,7 @@ function greet2(greeting: string, n = 10, x?: string, ...restParams: string[]): >greet2 : (greeting: string, n?: number, x?: string, ...restParams: string[]) => number >greeting : string >n : number +>10 : number >x : string >restParams : string[] @@ -31,6 +33,7 @@ function foo(greeting: string, n = 10, x?: string, ...restParams: string[]) >foo : (greeting: string, n?: number, x?: string, ...restParams: string[]) => void >greeting : string >n : number +>10 : number >x : string >restParams : string[] { diff --git a/tests/baselines/reference/sourceMapValidationIfElse.types b/tests/baselines/reference/sourceMapValidationIfElse.types index 4d67d912752..30de2f11450 100644 --- a/tests/baselines/reference/sourceMapValidationIfElse.types +++ b/tests/baselines/reference/sourceMapValidationIfElse.types @@ -1,10 +1,12 @@ === tests/cases/compiler/sourceMapValidationIfElse.ts === var i = 10; >i : number +>10 : number if (i == 10) { >i == 10 : boolean >i : number +>10 : number i++; >i++ : number @@ -16,6 +18,7 @@ if (i == 10) { if (i == 10) >i == 10 : boolean >i : number +>10 : number { i++; >i++ : number @@ -24,6 +27,7 @@ if (i == 10) else if (i == 20) { >i == 20 : boolean >i : number +>20 : number i--; >i-- : number @@ -32,10 +36,12 @@ else if (i == 20) { } else if (i == 30) { >i == 30 : boolean >i : number +>30 : number i += 70; >i += 70 : number >i : number +>70 : number } else { i--; diff --git a/tests/baselines/reference/sourceMapValidationLabeled.types b/tests/baselines/reference/sourceMapValidationLabeled.types index 179dc343755..c7950018f8d 100644 --- a/tests/baselines/reference/sourceMapValidationLabeled.types +++ b/tests/baselines/reference/sourceMapValidationLabeled.types @@ -1,5 +1,8 @@ === tests/cases/compiler/sourceMapValidationLabeled.ts === x: +>x : unknown + var b = 10; >b : number +>10 : number diff --git a/tests/baselines/reference/sourceMapValidationModule.types b/tests/baselines/reference/sourceMapValidationModule.types index 6c77a0b9b44..2c653270650 100644 --- a/tests/baselines/reference/sourceMapValidationModule.types +++ b/tests/baselines/reference/sourceMapValidationModule.types @@ -4,6 +4,7 @@ module m2 { var a = 10; >a : number +>10 : number a++; >a++ : number @@ -17,6 +18,7 @@ module m3 { export var x = 30; >x : number +>30 : number } export function foo() { diff --git a/tests/baselines/reference/sourceMapValidationSwitch.types b/tests/baselines/reference/sourceMapValidationSwitch.types index ec520418963..a594004a548 100644 --- a/tests/baselines/reference/sourceMapValidationSwitch.types +++ b/tests/baselines/reference/sourceMapValidationSwitch.types @@ -1,17 +1,21 @@ === tests/cases/compiler/sourceMapValidationSwitch.ts === var x = 10; >x : number +>10 : number switch (x) { >x : number case 5: +>5 : number + x++; >x++ : number >x : number break; case 10: +>10 : number { x--; >x-- : number @@ -25,17 +29,21 @@ switch (x) { >x : number >x *10 : number >x : number +>10 : number } switch (x) >x : number { case 5: +>5 : number + x++; >x++ : number >x : number break; case 10: +>10 : number { x--; >x-- : number @@ -50,5 +58,6 @@ switch (x) >x : number >x * 10 : number >x : number +>10 : number } } diff --git a/tests/baselines/reference/sourceMapValidationTryCatchFinally.types b/tests/baselines/reference/sourceMapValidationTryCatchFinally.types index 66039a96642..9159ee5aa45 100644 --- a/tests/baselines/reference/sourceMapValidationTryCatchFinally.types +++ b/tests/baselines/reference/sourceMapValidationTryCatchFinally.types @@ -1,6 +1,7 @@ === tests/cases/compiler/sourceMapValidationTryCatchFinally.ts === var x = 10; >x : number +>10 : number try { x = x + 1; @@ -8,6 +9,7 @@ try { >x : number >x + 1 : number >x : number +>1 : number } catch (e) { >e : any @@ -17,6 +19,7 @@ try { >x : number >x - 1 : number >x : number +>1 : number } finally { x = x * 10; @@ -24,6 +27,7 @@ try { >x : number >x * 10 : number >x : number +>10 : number } try { @@ -32,6 +36,7 @@ try >x : number >x + 1 : number >x : number +>1 : number throw new Error(); >new Error() : Error @@ -45,6 +50,7 @@ catch (e) >x : number >x - 1 : number >x : number +>1 : number } finally { @@ -53,4 +59,5 @@ finally >x : number >x * 10 : number >x : number +>10 : number } diff --git a/tests/baselines/reference/sourceMapValidationVariables.types b/tests/baselines/reference/sourceMapValidationVariables.types index fa200da2b31..2bacc7b526f 100644 --- a/tests/baselines/reference/sourceMapValidationVariables.types +++ b/tests/baselines/reference/sourceMapValidationVariables.types @@ -1,16 +1,19 @@ === tests/cases/compiler/sourceMapValidationVariables.ts === var a = 10; >a : number +>10 : number var b; >b : any var c = 10, d, e; >c : number +>10 : number >d : any >e : any var c2, d2 = 10; >c2 : any >d2 : number +>10 : number diff --git a/tests/baselines/reference/sourceMapValidationWhile.types b/tests/baselines/reference/sourceMapValidationWhile.types index 41dc90dfddc..9225b93e08c 100644 --- a/tests/baselines/reference/sourceMapValidationWhile.types +++ b/tests/baselines/reference/sourceMapValidationWhile.types @@ -1,10 +1,12 @@ === tests/cases/compiler/sourceMapValidationWhile.ts === var a = 10; >a : number +>10 : number while (a == 10) { >a == 10 : boolean >a : number +>10 : number a++; >a++ : number @@ -13,6 +15,7 @@ while (a == 10) { while (a == 10) >a == 10 : boolean >a : number +>10 : number { a++; >a++ : number diff --git a/tests/baselines/reference/sourceMapValidationWithComments.types b/tests/baselines/reference/sourceMapValidationWithComments.types index c5725c7d96c..26971f0aaab 100644 --- a/tests/baselines/reference/sourceMapValidationWithComments.types +++ b/tests/baselines/reference/sourceMapValidationWithComments.types @@ -8,6 +8,7 @@ class DebugClass { // Start Debugger Test Code var i = 0; >i : number +>0 : number i++; >i++ : number @@ -49,5 +50,6 @@ class DebugClass { return true; +>true : boolean } } diff --git a/tests/baselines/reference/sourceMapWithMultipleFilesWithCopyright.types b/tests/baselines/reference/sourceMapWithMultipleFilesWithCopyright.types index d72fd90b0c6..8e9cda7377a 100644 --- a/tests/baselines/reference/sourceMapWithMultipleFilesWithCopyright.types +++ b/tests/baselines/reference/sourceMapWithMultipleFilesWithCopyright.types @@ -19,9 +19,11 @@ var x = { a: 10, >a : number +>10 : number b: 20 >b : number +>20 : number }; diff --git a/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.types b/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.types index 6e6d6672c16..561be8ce783 100644 --- a/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.types +++ b/tests/baselines/reference/sourceMapWithMultipleFilesWithFileEndingWithInterface.types @@ -4,6 +4,7 @@ module M { export var X = 1; >X : number +>1 : number } interface Navigator { >Navigator : Navigator diff --git a/tests/baselines/reference/sourcemapValidationDuplicateNames.types b/tests/baselines/reference/sourcemapValidationDuplicateNames.types index d5862720ede..ccc6caa23b4 100644 --- a/tests/baselines/reference/sourcemapValidationDuplicateNames.types +++ b/tests/baselines/reference/sourcemapValidationDuplicateNames.types @@ -4,6 +4,7 @@ module m1 { var x = 10; >x : number +>10 : number export class c { >c : c diff --git a/tests/baselines/reference/specializationsShouldNotAffectEachOther.types b/tests/baselines/reference/specializationsShouldNotAffectEachOther.types index 9bf91e6fe42..f666fd8fe21 100644 --- a/tests/baselines/reference/specializationsShouldNotAffectEachOther.types +++ b/tests/baselines/reference/specializationsShouldNotAffectEachOther.types @@ -19,6 +19,7 @@ function foo() { >seriesExtent : (series: any) => any >(series) => null : (series: any) => any >series : any +>null : null var series2: number[]; >series2 : number[] @@ -31,6 +32,7 @@ function foo() { >seriesExtent : (series: any) => any return null; +>null : null } diff --git a/tests/baselines/reference/specializeVarArgs1.types b/tests/baselines/reference/specializeVarArgs1.types index 4cdf5790983..97b46876e66 100644 --- a/tests/baselines/reference/specializeVarArgs1.types +++ b/tests/baselines/reference/specializeVarArgs1.types @@ -27,6 +27,7 @@ function observableArray(): ObservableArray { return null;} >T : T >ObservableArray : ObservableArray >T : T +>null : null @@ -40,4 +41,5 @@ a.push('Some Value'); >a.push : (...values: string[]) => any >a : ObservableArray >push : (...values: string[]) => any +>'Some Value' : string diff --git a/tests/baselines/reference/staticFactory1.types b/tests/baselines/reference/staticFactory1.types index ed275442fb5..538728de2df 100644 --- a/tests/baselines/reference/staticFactory1.types +++ b/tests/baselines/reference/staticFactory1.types @@ -4,6 +4,7 @@ class Base { foo() { return 1; } >foo : () => number +>1 : number static create() { >create : () => Base @@ -20,6 +21,7 @@ class Derived extends Base { foo() { return 2; } >foo : () => number +>2 : number } var d = Derived.create(); >d : Base diff --git a/tests/baselines/reference/staticInstanceResolution.types b/tests/baselines/reference/staticInstanceResolution.types index 1a4d3de09a0..255242252e3 100644 --- a/tests/baselines/reference/staticInstanceResolution.types +++ b/tests/baselines/reference/staticInstanceResolution.types @@ -18,6 +18,7 @@ class Comment { >comments[0].getDocCommentText : () => void >comments[0] : Comment >comments : Comment[] +>0 : number >getDocCommentText : () => void var c: Comment; diff --git a/tests/baselines/reference/staticInstanceResolution2.types b/tests/baselines/reference/staticInstanceResolution2.types index c5fcd89fb89..200e3336a28 100644 --- a/tests/baselines/reference/staticInstanceResolution2.types +++ b/tests/baselines/reference/staticInstanceResolution2.types @@ -7,6 +7,7 @@ A.hasOwnProperty('foo'); >A.hasOwnProperty : (v: string) => boolean >A : typeof A >hasOwnProperty : (v: string) => boolean +>'foo' : string class B { >B : B @@ -18,6 +19,7 @@ B.hasOwnProperty('foo'); >B.hasOwnProperty : (v: string) => boolean >B : typeof B >hasOwnProperty : (v: string) => boolean +>'foo' : string diff --git a/tests/baselines/reference/staticInstanceResolution3.types b/tests/baselines/reference/staticInstanceResolution3.types index b442aebd31f..ef5c1cc5166 100644 --- a/tests/baselines/reference/staticInstanceResolution3.types +++ b/tests/baselines/reference/staticInstanceResolution3.types @@ -10,6 +10,7 @@ WinJS.Promise.timeout(10); >WinJS : typeof WinJS >Promise : typeof WinJS.Promise >timeout : (delay: number) => WinJS.Promise +>10 : number === tests/cases/compiler/staticInstanceResolution3_0.ts === export class Promise { @@ -21,6 +22,7 @@ export class Promise { >Promise : Promise return null; +>null : null } } diff --git a/tests/baselines/reference/staticMemberAccessOffDerivedType1.types b/tests/baselines/reference/staticMemberAccessOffDerivedType1.types index abae26973b0..55b9c83969b 100644 --- a/tests/baselines/reference/staticMemberAccessOffDerivedType1.types +++ b/tests/baselines/reference/staticMemberAccessOffDerivedType1.types @@ -6,6 +6,7 @@ class SomeBase { >GetNumber : () => number return 2; +>2 : number } } class P extends SomeBase { diff --git a/tests/baselines/reference/staticMemberInitialization.types b/tests/baselines/reference/staticMemberInitialization.types index 56fe4f58ce2..518b2fce25f 100644 --- a/tests/baselines/reference/staticMemberInitialization.types +++ b/tests/baselines/reference/staticMemberInitialization.types @@ -4,6 +4,7 @@ class C { static x = 1; >x : number +>1 : number } var c = new C(); diff --git a/tests/baselines/reference/staticMemberWithStringAndNumberNames.types b/tests/baselines/reference/staticMemberWithStringAndNumberNames.types index 3cb60e1f8fa..e23ac90d59a 100644 --- a/tests/baselines/reference/staticMemberWithStringAndNumberNames.types +++ b/tests/baselines/reference/staticMemberWithStringAndNumberNames.types @@ -3,35 +3,44 @@ class C { >C : C static "foo" = 0; +>0 : number + static 0 = 1; +>1 : number x = C['foo']; >x : number >C['foo'] : number >C : typeof C +>'foo' : string x2 = C['0']; >x2 : number >C['0'] : number >C : typeof C +>'0' : string x3 = C[0]; >x3 : number >C[0] : number >C : typeof C +>0 : number static s = C['foo']; >s : number >C['foo'] : number >C : typeof C +>'foo' : string static s2 = C['0']; >s2 : number >C['0'] : number >C : typeof C +>'0' : string static s3 = C[0]; >s3 : number >C[0] : number >C : typeof C +>0 : number } diff --git a/tests/baselines/reference/stradac.types b/tests/baselines/reference/stradac.types index 6fc9bb282be..acdb54f45bd 100644 --- a/tests/baselines/reference/stradac.types +++ b/tests/baselines/reference/stradac.types @@ -1,6 +1,7 @@ === tests/cases/compiler/stradac.ts === var x = 10; >x : number +>10 : number // C++-style comment diff --git a/tests/baselines/reference/strictModeWordInExportDeclaration.types b/tests/baselines/reference/strictModeWordInExportDeclaration.types index 8a54d7275d2..aa5f8e84f82 100644 --- a/tests/baselines/reference/strictModeWordInExportDeclaration.types +++ b/tests/baselines/reference/strictModeWordInExportDeclaration.types @@ -1,7 +1,10 @@ === tests/cases/compiler/strictModeWordInExportDeclaration.ts === "use strict" +>"use strict" : string + var x = 1; >x : number +>1 : number export { x as foo } >x : number diff --git a/tests/baselines/reference/stringHasStringValuedNumericIndexer.types b/tests/baselines/reference/stringHasStringValuedNumericIndexer.types index 242a357acde..ce9504358eb 100644 --- a/tests/baselines/reference/stringHasStringValuedNumericIndexer.types +++ b/tests/baselines/reference/stringHasStringValuedNumericIndexer.types @@ -2,4 +2,6 @@ var str: string = ""[0]; >str : string >""[0] : string +>"" : string +>0 : number diff --git a/tests/baselines/reference/stringIndexingResults.types b/tests/baselines/reference/stringIndexingResults.types index 0b1840ee06f..9f613312e5a 100644 --- a/tests/baselines/reference/stringIndexingResults.types +++ b/tests/baselines/reference/stringIndexingResults.types @@ -7,6 +7,7 @@ class C { y = ''; >y : string +>'' : string } var c: C; @@ -17,16 +18,19 @@ var r1 = c['y']; >r1 : string >c['y'] : string >c : C +>'y' : string var r2 = c['a']; >r2 : string >c['a'] : string >c : C +>'a' : string var r3 = c[1]; >r3 : string >c[1] : string >c : C +>1 : number interface I { >I : I @@ -46,16 +50,19 @@ var r4 = i['y']; >r4 : string >i['y'] : string >i : I +>'y' : string var r5 = i['a']; >r5 : string >i['a'] : string >i : I +>'a' : string var r6 = i[1]; >r6 : string >i[1] : string >i : I +>1 : number var a: { >a : { [x: string]: string; y: string; } @@ -71,35 +78,42 @@ var r7 = a['y']; >r7 : string >a['y'] : string >a : { [x: string]: string; y: string; } +>'y' : string var r8 = a['a']; >r8 : string >a['a'] : string >a : { [x: string]: string; y: string; } +>'a' : string var r9 = a[1]; >r9 : string >a[1] : string >a : { [x: string]: string; y: string; } +>1 : number var b: { [x: string]: string } = { y: '' } >b : { [x: string]: string; } >x : string >{ y: '' } : { [x: string]: string; y: string; } >y : string +>'' : string var r10 = b['y']; >r10 : string >b['y'] : string >b : { [x: string]: string; } +>'y' : string var r11 = b['a']; >r11 : string >b['a'] : string >b : { [x: string]: string; } +>'a' : string var r12 = b[1]; >r12 : string >b[1] : string >b : { [x: string]: string; } +>1 : number diff --git a/tests/baselines/reference/stringLiteralObjectLiteralDeclaration1.types b/tests/baselines/reference/stringLiteralObjectLiteralDeclaration1.types index 8a68a436577..3f06c5eaa75 100644 --- a/tests/baselines/reference/stringLiteralObjectLiteralDeclaration1.types +++ b/tests/baselines/reference/stringLiteralObjectLiteralDeclaration1.types @@ -5,5 +5,6 @@ module m1 { export var n = { 'foo bar': 4 }; >n : { 'foo bar': number; } >{ 'foo bar': 4 } : { 'foo bar': number; } +>4 : number } diff --git a/tests/baselines/reference/stringLiteralPropertyNameWithLineContinuation1.types b/tests/baselines/reference/stringLiteralPropertyNameWithLineContinuation1.types index 612d36fe6ad..ee5b5b27b54 100644 --- a/tests/baselines/reference/stringLiteralPropertyNameWithLineContinuation1.types +++ b/tests/baselines/reference/stringLiteralPropertyNameWithLineContinuation1.types @@ -6,10 +6,13 @@ var x = {'text\ ': string; } ':'hello'} +>'hello' : string + x.text = "bar" >x.text = "bar" : string >x.text : string >x : { 'text\ ': string; } >text : string +>"bar" : string diff --git a/tests/baselines/reference/stringNamedPropertyAccess.types b/tests/baselines/reference/stringNamedPropertyAccess.types index 180259cab6e..2d0b585f828 100644 --- a/tests/baselines/reference/stringNamedPropertyAccess.types +++ b/tests/baselines/reference/stringNamedPropertyAccess.types @@ -13,11 +13,13 @@ var r1 = c["a b"]; >r1 : number >c["a b"] : number >c : C +>"a b" : string var r1b = C['c d']; >r1b : number >C['c d'] : number >C : typeof C +>'c d' : string interface I { >I : I @@ -32,6 +34,7 @@ var r2 = i["a b"]; >r2 : number >i["a b"] : number >i : I +>"a b" : string var a: { >a : { "a b": number; } @@ -42,15 +45,18 @@ var r3 = a["a b"]; >r3 : number >a["a b"] : number >a : { "a b": number; } +>"a b" : string var b = { >b : { "a b": number; } >{ "a b": 1} : { "a b": number; } "a b": 1 +>1 : number } var r4 = b["a b"]; >r4 : number >b["a b"] : number >b : { "a b": number; } +>"a b" : string diff --git a/tests/baselines/reference/stringPropCodeGen.types b/tests/baselines/reference/stringPropCodeGen.types index 423ab2ffa0e..9b061a510e1 100644 --- a/tests/baselines/reference/stringPropCodeGen.types +++ b/tests/baselines/reference/stringPropCodeGen.types @@ -7,6 +7,7 @@ var a = { >function() { } : () => void "bar" : 5 +>5 : number }; diff --git a/tests/baselines/reference/stringPropertyAccess.types b/tests/baselines/reference/stringPropertyAccess.types index 43ef2487334..05409140353 100644 --- a/tests/baselines/reference/stringPropertyAccess.types +++ b/tests/baselines/reference/stringPropertyAccess.types @@ -1,6 +1,7 @@ === tests/cases/conformance/types/primitives/string/stringPropertyAccess.ts === var x = ''; >x : string +>'' : string var a = x.charAt(0); >a : string @@ -8,6 +9,7 @@ var a = x.charAt(0); >x.charAt : (pos: number) => string >x : string >charAt : (pos: number) => string +>0 : number var b = x.hasOwnProperty('charAt'); >b : boolean @@ -15,16 +17,21 @@ var b = x.hasOwnProperty('charAt'); >x.hasOwnProperty : (v: string) => boolean >x : string >hasOwnProperty : (v: string) => boolean +>'charAt' : string var c = x['charAt'](0); >c : string >x['charAt'](0) : string >x['charAt'] : (pos: number) => string >x : string +>'charAt' : string +>0 : number var e = x['hasOwnProperty']('toFixed'); >e : boolean >x['hasOwnProperty']('toFixed') : boolean >x['hasOwnProperty'] : (v: string) => boolean >x : string +>'hasOwnProperty' : string +>'toFixed' : string diff --git a/tests/baselines/reference/structural1.types b/tests/baselines/reference/structural1.types index dcbfc8a3bb7..8ad3c679286 100644 --- a/tests/baselines/reference/structural1.types +++ b/tests/baselines/reference/structural1.types @@ -23,6 +23,8 @@ module M { >f : (i: I) => void >{salt:2,pepper:0} : { salt: number; pepper: number; } >salt : number +>2 : number >pepper : number +>0 : number } diff --git a/tests/baselines/reference/styleOptions.types b/tests/baselines/reference/styleOptions.types index 76c95abb3c6..f0c0e93161c 100644 --- a/tests/baselines/reference/styleOptions.types +++ b/tests/baselines/reference/styleOptions.types @@ -3,9 +3,11 @@ var x = 1; >x : number +>1 : number var y = 1; >y : number +>1 : number var t = x == y; >t : boolean diff --git a/tests/baselines/reference/subtypesOfAny.types b/tests/baselines/reference/subtypesOfAny.types index ec88559ce9b..efa9fd1cd82 100644 --- a/tests/baselines/reference/subtypesOfAny.types +++ b/tests/baselines/reference/subtypesOfAny.types @@ -187,6 +187,7 @@ module f { export var bar = 1; >bar : number +>1 : number } interface I15 { >I15 : I15 @@ -209,6 +210,7 @@ module c { export var bar = 1; >bar : number +>1 : number } interface I16 { >I16 : I16 diff --git a/tests/baselines/reference/subtypingTransitivity.types b/tests/baselines/reference/subtypingTransitivity.types index a4a7fcc79fe..0a41e045d98 100644 --- a/tests/baselines/reference/subtypingTransitivity.types +++ b/tests/baselines/reference/subtypingTransitivity.types @@ -39,6 +39,7 @@ d.x = ''; >d.x : string >d : D >x : string +>'' : string b = d; >b = d : D @@ -50,4 +51,5 @@ b.x = 1; // assigned number to string >b.x : Object >b : B >x : Object +>1 : number diff --git a/tests/baselines/reference/subtypingWithCallSignatures.types b/tests/baselines/reference/subtypingWithCallSignatures.types index 49b5bf299ab..50e773882d0 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures.types +++ b/tests/baselines/reference/subtypingWithCallSignatures.types @@ -18,6 +18,7 @@ module CallSignature { >foo1 : { (cb: (x: number) => void): (x: number) => void; (cb: any): any; } >(x: number) => 1 : (x: number) => number >x : number +>1 : number var r2 = foo1((x: T) => ''); // ok because base returns void >r2 : (x: number) => void @@ -27,6 +28,7 @@ module CallSignature { >T : T >x : T >T : T +>'' : string declare function foo2(cb: (x: number, y: number) => void): typeof cb; >foo2 : { (cb: (x: number, y: number) => void): (x: number, y: number) => void; (cb: any): any; } @@ -46,6 +48,7 @@ module CallSignature { >(x: number, y: number) => 1 : (x: number, y: number) => number >x : number >y : number +>1 : number var r4 = foo2((x: T) => ''); // ok because base returns void >r4 : (x: number, y: number) => void @@ -55,4 +58,5 @@ module CallSignature { >T : T >x : T >T : T +>'' : string } diff --git a/tests/baselines/reference/subtypingWithCallSignatures2.types b/tests/baselines/reference/subtypingWithCallSignatures2.types index a2669bf6e65..8a56e05a9c2 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures2.types +++ b/tests/baselines/reference/subtypingWithCallSignatures2.types @@ -322,6 +322,7 @@ var r1arg2 = (x: number) => [1]; >(x: number) => [1] : (x: number) => number[] >x : number >[1] : number[] +>1 : number var r1 = foo1(r1arg1); // any, return types are not subtype of first overload >r1 : any @@ -348,12 +349,14 @@ var r2arg1 = (x: T) => ['']; >x : T >T : T >[''] : string[] +>'' : string var r2arg2 = (x: number) => ['']; >r2arg2 : (x: number) => string[] >(x: number) => [''] : (x: number) => string[] >x : number >[''] : string[] +>'' : string var r2 = foo2(r2arg1); >r2 : (x: number) => string[] @@ -420,6 +423,7 @@ var r4arg2 = (x: string, y: number) => ''; >(x: string, y: number) => '' : (x: string, y: number) => string >x : string >y : number +>'' : string var r4 = foo4(r4arg1); // any >r4 : any @@ -450,12 +454,14 @@ var r5arg1 = (x: (arg: T) => U) => null; >U : U >null : T >T : T +>null : null var r5arg2 = (x: (arg: string) => number) => ''; >r5arg2 : (x: (arg: string) => number) => string >(x: (arg: string) => number) => '' : (x: (arg: string) => number) => string >x : (arg: string) => number >arg : string +>'' : string var r5 = foo5(r5arg1); // any >r5 : any @@ -488,6 +494,7 @@ var r6arg1 = (x: (arg: T) => U) => null; >U : U >null : T >T : T +>null : null var r6arg2 = (x: (arg: Base) => Derived) => null; >r6arg2 : (x: (arg: Base) => Derived) => Base @@ -498,6 +505,7 @@ var r6arg2 = (x: (arg: Base) => Derived) => null; >Derived : Derived >null : Base >Base : Base +>null : null var r6 = foo6(r6arg1); // any >r6 : any @@ -533,6 +541,7 @@ var r7arg1 = (x: (arg: T) => U) => (r: T) => >T : T >null : U >U : U +>null : null var r7arg2 = (x: (arg: Base) => Derived) => (r: Base) => null; >r7arg2 : (x: (arg: Base) => Derived) => (r: Base) => Derived @@ -546,6 +555,7 @@ var r7arg2 = (x: (arg: Base) => Derived) => (r: Base) => null; >Base : Base >null : Derived >Derived : Derived +>null : null var r7 = foo7(r7arg1); // any >r7 : any @@ -585,6 +595,7 @@ var r8arg1 = (x: (arg: T) => U, y: (arg2: T) >T : T >null : U >U : U +>null : null var r8arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => null; >r8arg2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived @@ -602,6 +613,7 @@ var r8arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base >Base : Base >null : Derived >Derived : Derived +>null : null var r8 = foo8(r8arg1); // any >r8 : any @@ -642,6 +654,7 @@ var r9arg1 = (x: (arg: T) => U, y: (arg2: { f >T : T >null : U >U : U +>null : null var r9arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => null; >r9arg2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived @@ -659,6 +672,7 @@ var r9arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base >Base : Base >null : Derived >Derived : Derived +>null : null var r9 = foo9(r9arg1); // any >r9 : any @@ -687,6 +701,7 @@ var r10arg1 = (...x: T[]) => x[0]; >T : T >x[0] : T >x : T[] +>0 : number var r10arg2 = (...x: Derived[]) => null; >r10arg2 : (...x: Derived[]) => Derived @@ -695,6 +710,7 @@ var r10arg2 = (...x: Derived[]) => null; >Derived : Derived >null : Derived >Derived : Derived +>null : null var r10 = foo10(r10arg1); // any >r10 : any @@ -735,6 +751,7 @@ var r11arg2 = (x: { foo: string }, y: { foo: string; bar: string }) => nul >bar : string >null : Base >Base : Base +>null : null var r11 = foo11(r11arg1); // any >r11 : any @@ -768,6 +785,7 @@ var r12arg1 = >(x: Array, y: T) => >n >>null : Derived[] >Array : T[] >Derived : Derived +>null : null var r12arg2 = (x: Array, y: Array) => >null; >r12arg2 : (x: Base[], y: Derived2[]) => Derived[] @@ -781,6 +799,7 @@ var r12arg2 = (x: Array, y: Array) => >null; >>null : Derived[] >Array : T[] >Derived : Derived +>null : null var r12 = foo12(r12arg1); // any >r12 : (x: Base[], y: Derived2[]) => Derived[] @@ -825,6 +844,7 @@ var r13arg2 = (x: Array, y: Array) => >null; >>null : Derived[] >Array : T[] >Derived : Derived +>null : null var r13 = foo13(r13arg1); // any >r13 : any @@ -865,6 +885,7 @@ var r14arg2 = (x: { a: string; b: number }) => null; >b : number >null : Object >Object : Object +>null : null var r14 = foo14(r14arg1); // any >r14 : any @@ -892,6 +913,7 @@ var r15arg1 = (x: T) => null >T : T >null : T[] >T : T +>null : null var r15 = foo15(r15arg1); // any >r15 : any @@ -907,6 +929,7 @@ var r16arg1 = (x: T) => [1]; >x : T >T : T >[1] : number[] +>1 : number var r16 = foo16(r16arg1); >r16 : { (x: T): number[]; (x: U): number[]; } @@ -924,6 +947,7 @@ var r17arg1 = (x: (a: T) => T) => null; >T : T >null : T[] >T : T +>null : null var r17 = foo17(r17arg1); // any >r17 : any @@ -941,6 +965,7 @@ var r18arg1 = (x: (a: T) => T) => null; >T : T >null : T[] >T : T +>null : null var r18 = foo18(r18arg1); >r18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } diff --git a/tests/baselines/reference/subtypingWithCallSignatures3.types b/tests/baselines/reference/subtypingWithCallSignatures3.types index cc2d47d3a33..379810b2541 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures3.types +++ b/tests/baselines/reference/subtypingWithCallSignatures3.types @@ -216,6 +216,7 @@ module Errors { >T : T >null : U[] >U : U +>null : null var r1a = [(x: number) => [''], (x: T) => null]; >r1a : ((x: T) => U[])[] @@ -223,6 +224,7 @@ module Errors { >(x: number) => [''] : (x: number) => string[] >x : number >[''] : string[] +>'' : string >(x: T) => null : (x: T) => U[] >T : T >U : U @@ -230,6 +232,7 @@ module Errors { >T : T >null : U[] >U : U +>null : null var r1b = [(x: T) => null, (x: number) => ['']]; >r1b : ((x: T) => U[])[] @@ -241,9 +244,11 @@ module Errors { >T : T >null : U[] >U : U +>null : null >(x: number) => [''] : (x: number) => string[] >x : number >[''] : string[] +>'' : string var r2arg = (x: (arg: T) => U) => (r: T) => null; >r2arg : (x: (arg: T) => U) => (r: T) => V @@ -263,6 +268,7 @@ module Errors { >T : T >null : V >V : V +>null : null var r2arg2 = (x: (arg: Base) => Derived) => (r: Base) => null; >r2arg2 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 @@ -276,6 +282,7 @@ module Errors { >Base : Base >null : Derived2 >Derived2 : Derived2 +>null : null var r2 = foo7(r2arg); // any >r2 : any @@ -315,6 +322,7 @@ module Errors { >T : T >null : U >U : U +>null : null var r3arg2 = (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => null; >r3arg2 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived @@ -332,6 +340,7 @@ module Errors { >Base : Base >null : Derived >Derived : Derived +>null : null var r3 = foo8(r3arg); // any >r3 : any @@ -360,6 +369,7 @@ module Errors { >T : T >null : T >T : T +>null : null var r4arg2 = (...x: Base[]) => null; >r4arg2 : (...x: Base[]) => Base @@ -368,6 +378,7 @@ module Errors { >Base : Base >null : Base >Base : Base +>null : null var r4 = foo10(r4arg); // any >r4 : any @@ -398,6 +409,7 @@ module Errors { >T : T >null : T >T : T +>null : null var r5arg2 = (x: { foo: string }, y: { foo: string; bar: string }) => null; >r5arg2 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base @@ -409,6 +421,7 @@ module Errors { >bar : string >null : Base >Base : Base +>null : null var r5 = foo11(r5arg); // any >r5 : any @@ -440,6 +453,7 @@ module Errors { >>null : Derived[] >Array : T[] >Derived : Derived +>null : null var r6arg2 = >(x: Array, y: Array) => null; >r6arg2 : (x: Base[], y: Base[]) => T @@ -455,6 +469,7 @@ module Errors { >Base : Base >null : T >T : T +>null : null var r6 = foo12(r6arg); // (x: Array, y: Array) => Array >r6 : (x: Base[], y: Derived2[]) => Derived[] @@ -485,6 +500,7 @@ module Errors { >T : T >null : T >T : T +>null : null var r7arg2 = (x: { a: string; b: number }) => 1; >r7arg2 : (x: { a: string; b: number; }) => number @@ -492,6 +508,7 @@ module Errors { >x : { a: string; b: number; } >a : string >b : number +>1 : number var r7 = foo15(r7arg); // any >r7 : any @@ -521,6 +538,7 @@ module Errors { >T : T >b : T >T : T +>1 : number var r7c = foo15(r7arg3); // (x: { a: string; b: number }) => number): number; >r7c : (x: { a: string; b: number; }) => number @@ -550,6 +568,7 @@ module Errors { >T : T >null : T[] >T : T +>null : null var r8 = foo16(r8arg); // any >r8 : any @@ -566,6 +585,7 @@ module Errors { >T : T >T : T >null : any[] +>null : null var r9 = foo17(r9arg); // (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; >r9 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } @@ -597,6 +617,7 @@ module WithGenericSignaturesInBaseType { >x : T >T : T >[''] : string[] +>'' : string var r2 = foo2(r2arg2); // (x:T) => T[] since we can infer from generic signatures now >r2 : (x: T) => T[] @@ -624,6 +645,7 @@ module WithGenericSignaturesInBaseType { >T : T >null : T[] >T : T +>null : null var r3 = foo3(r3arg2); // any >r3 : any diff --git a/tests/baselines/reference/subtypingWithCallSignatures4.types b/tests/baselines/reference/subtypingWithCallSignatures4.types index 0325552187b..e76d36114e9 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures4.types +++ b/tests/baselines/reference/subtypingWithCallSignatures4.types @@ -227,6 +227,7 @@ var r1arg = (x: T) => null; >T : T >null : T[] >T : T +>null : null var r1arg2 = (x: T) => null; >r1arg2 : (x: T) => T[] @@ -236,6 +237,7 @@ var r1arg2 = (x: T) => null; >T : T >null : T[] >T : T +>null : null var r1 = foo1(r1arg); >r1 : any @@ -262,6 +264,7 @@ var r2arg = (x: T) => ['']; >x : T >T : T >[''] : string[] +>'' : string var r2arg2 = (x: T) => ['']; >r2arg2 : (x: T) => string[] @@ -270,6 +273,7 @@ var r2arg2 = (x: T) => ['']; >x : T >T : T >[''] : string[] +>'' : string var r2 = foo2(r2arg); >r2 : any @@ -297,6 +301,7 @@ var r3arg = (x: T) => null; >T : T >null : T >T : T +>null : null var r3arg2 = (x: T) => { }; >r3arg2 : (x: T) => void @@ -332,6 +337,7 @@ var r4arg = (x: T, y: U) => ''; >T : T >y : U >U : U +>'' : string var r4arg2 = (x: T, y: U) => ''; >r4arg2 : (x: T, y: U) => string @@ -342,6 +348,7 @@ var r4arg2 = (x: T, y: U) => ''; >T : T >y : U >U : U +>'' : string var r4 = foo4(r4arg); >r4 : any @@ -372,6 +379,7 @@ var r5arg = (x: (arg: T) => U) => null; >U : U >null : T >T : T +>null : null var r5arg2 = (x: (arg: T) => U) => null; >r5arg2 : (x: (arg: T) => U) => T @@ -384,6 +392,7 @@ var r5arg2 = (x: (arg: T) => U) => null; >U : U >null : T >T : T +>null : null var r5 = foo5(r5arg); >r5 : any @@ -416,6 +425,7 @@ var r6arg = (x: (arg: T) => U) => null; >U : U >null : T >T : T +>null : null var r6arg2 = (x: (arg: T) => Derived) => null; >r6arg2 : (x: (arg: T) => Derived) => T @@ -428,6 +438,7 @@ var r6arg2 = (x: (arg: T) => Derived) => null; >Derived : Derived >null : T >T : T +>null : null var r6 = foo6(r6arg); >r6 : any @@ -462,6 +473,7 @@ var r11arg = (x: { foo: T }, y: { foo: U; bar: U }) => null; >U : U >null : Base >Base : Base +>null : null var r11arg2 = (x: { foo: T }, y: { foo: T; bar: T }) => null; >r11arg2 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base @@ -477,6 +489,7 @@ var r11arg2 = (x: { foo: T }, y: { foo: T; bar: T }) => null; >T : T >null : Base >Base : Base +>null : null var r11 = foo11(r11arg); >r11 : any @@ -508,6 +521,7 @@ var r15arg = (x: { a: U; b: V; }) => null; >V : V >null : U[] >U : U +>null : null var r15arg2 = (x: { a: T; b: T }) => null; >r15arg2 : (x: { a: T; b: T; }) => T[] @@ -520,6 +534,7 @@ var r15arg2 = (x: { a: T; b: T }) => null; >T : T >null : T[] >T : T +>null : null var r15 = foo15(r15arg); >r15 : any @@ -551,6 +566,7 @@ var r16arg = (x: { a: T; b: T }) => null; >T : T >null : T[] >T : T +>null : null var r16arg2 = (x: { a: T; b: T }) => null; >r16arg2 : (x: { a: T; b: T; }) => T[] @@ -564,6 +580,7 @@ var r16arg2 = (x: { a: T; b: T }) => null; >T : T >null : T[] >T : T +>null : null var r16 = foo16(r16arg); >r16 : any @@ -593,6 +610,7 @@ var r17arg = (x: (a: T) => T) => null; >T : T >null : T[] >T : T +>null : null var r17 = foo17(r17arg); >r17 : any @@ -609,6 +627,7 @@ var r18arg = (x: (a: T) => T) => null; >T : T >T : T >null : any[] +>null : null var r18 = foo18(r18arg); >r18 : any diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality.types b/tests/baselines/reference/subtypingWithObjectMembersOptionality.types index d60045d363b..815f2d60740 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality.types +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality.types @@ -82,10 +82,12 @@ var b = { Foo: null }; >Foo : Derived >null : Derived >Derived : Derived +>null : null var r = true ? a : b; >r : { Foo?: Base; } >true ? a : b : { Foo?: Base; } +>true : boolean >a : { Foo?: Base; } >b : { Foo: Derived; } @@ -151,10 +153,12 @@ module TwoLevels { >Foo : Derived2 >null : Derived2 >Derived2 : Derived2 +>null : null var r = true ? a : b; >r : { Foo?: Base; } >true ? a : b : { Foo?: Base; } +>true : boolean >a : { Foo?: Base; } >b : { Foo: Derived2; } } diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types b/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types index 055863e0bfa..000d1cdc8ed 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types @@ -71,6 +71,7 @@ var b: { Foo2: Derived; } var r = true ? a : b; // ok >r : { Foo?: Base; } | { Foo2: Derived; } >true ? a : b : { Foo?: Base; } | { Foo2: Derived; } +>true : boolean >a : { Foo?: Base; } >b : { Foo2: Derived; } diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types b/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types index 96204004b64..2dcda59f46f 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types @@ -71,6 +71,7 @@ var b: { Foo2?: Derived; } var r = true ? a : b; // ok >r : { Foo: Base; } | { Foo2?: Derived; } >true ? a : b : { Foo: Base; } | { Foo2?: Derived; } +>true : boolean >a : { Foo: Base; } >b : { Foo2?: Derived; } diff --git a/tests/baselines/reference/super2.types b/tests/baselines/reference/super2.types index 86fb33227de..a3807f03099 100644 --- a/tests/baselines/reference/super2.types +++ b/tests/baselines/reference/super2.types @@ -7,12 +7,14 @@ class Base5 { >x : () => string return "BaseX"; +>"BaseX" : string } public y() { >y : () => string return "BaseY"; +>"BaseY" : string } } @@ -24,6 +26,7 @@ class Sub5 extends Base5 { >x : () => string return "SubX"; +>"SubX" : string } } @@ -59,6 +62,7 @@ class Base6 { >x : () => string return "BaseX"; +>"BaseX" : string } } @@ -70,6 +74,7 @@ class Sub6 extends Base6 { >y : () => string return "SubY"; +>"SubY" : string } } diff --git a/tests/baselines/reference/superCalls.types b/tests/baselines/reference/superCalls.types index ef983183f9c..ce5353df329 100644 --- a/tests/baselines/reference/superCalls.types +++ b/tests/baselines/reference/superCalls.types @@ -4,6 +4,7 @@ class Base { x = 43; >x : number +>43 : number constructor(n: string) { >n : string @@ -25,12 +26,14 @@ class Derived extends Base { super(''); >super('') : void >super : typeof Base +>'' : string //type of super call expression is void var p = super(''); >p : void >super('') : void >super : typeof Base +>'' : string var p = v(); >p : void @@ -51,6 +54,7 @@ class OtherDerived extends OtherBase { constructor() { var p = ''; >p : string +>'' : string super(); >super() : void diff --git a/tests/baselines/reference/switchBreakStatements.types b/tests/baselines/reference/switchBreakStatements.types index 5fe223e43bb..4102c0a4f6f 100644 --- a/tests/baselines/reference/switchBreakStatements.types +++ b/tests/baselines/reference/switchBreakStatements.types @@ -1,57 +1,124 @@ === tests/cases/conformance/statements/breakStatements/switchBreakStatements.ts === switch ('') { +>'' : string + case 'a': +>'a' : string + break; } ONE: +>ONE : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + break ONE; +>ONE : unknown } TWO: +>TWO : unknown + THREE: +>THREE : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + break THREE; +>THREE : unknown } FOUR: +>FOUR : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + FIVE: +>FIVE : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + break FOUR; +>FOUR : unknown } } switch ('') { +>'' : string + case 'a': +>'a' : string + SIX: +>SIX : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + break SIX; +>SIX : unknown } } SEVEN: +>SEVEN : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + switch ('') { +>'' : string + case 'a': +>'a' : string + switch ('') { +>'' : string + case 'a': +>'a' : string + break SEVEN; +>SEVEN : unknown + EIGHT: +>EIGHT : unknown + switch ('') { +>'' : string + case 'a': +>'a' : string + var fn = function () { } >fn : () => void >function () { } : () => void break EIGHT; +>EIGHT : unknown } } } diff --git a/tests/baselines/reference/switchCases.types b/tests/baselines/reference/switchCases.types index 50bc606e944..154ea011cde 100644 --- a/tests/baselines/reference/switchCases.types +++ b/tests/baselines/reference/switchCases.types @@ -1,7 +1,10 @@ === tests/cases/compiler/switchCases.ts === switch(0) { -No type information for this code. case 1: -No type information for this code. break; -No type information for this code.} -No type information for this code. -No type information for this code. \ No newline at end of file +>0 : number + + case 1: +>1 : number + + break; +} + diff --git a/tests/baselines/reference/switchFallThroughs.types b/tests/baselines/reference/switchFallThroughs.types index dfca84cfa4c..7a88985741c 100644 --- a/tests/baselines/reference/switchFallThroughs.types +++ b/tests/baselines/reference/switchFallThroughs.types @@ -7,21 +7,36 @@ function R1(index: number) { >index : number case 0: +>0 : number + case 1: +>1 : number + case 2: +>2 : number + var a = 'a'; >a : string +>'a' : string return a; >a : string case 3: +>3 : number + case 4: { +>4 : number + return 'b'; +>'b' : string } case 5: +>5 : number + default: return 'c'; +>'c' : string } } diff --git a/tests/baselines/reference/switchStatements.types b/tests/baselines/reference/switchStatements.types index 4dd7b9904d6..a5679547c12 100644 --- a/tests/baselines/reference/switchStatements.types +++ b/tests/baselines/reference/switchStatements.types @@ -7,6 +7,7 @@ module M { >x : number return ''; +>'' : string } } @@ -17,21 +18,32 @@ switch (x) { >x : any case '': +>'' : string + case 12: +>12 : number + case true: +>true : boolean + case null: +>null : null + case undefined: >undefined : undefined case new Date(12): >new Date(12) : Date >Date : DateConstructor +>12 : number case new Object(): >new Object() : Object >Object : ObjectConstructor case /[a-z]/: +>/[a-z]/ : RegExp + case[]: >[] : undefined[] @@ -41,9 +53,11 @@ switch (x) { case { id: 12 }: >{ id: 12 } : { id: number; } >id : number +>12 : number case['a']: >['a'] : string[] +>'a' : string case typeof x: >typeof x : string @@ -58,11 +72,13 @@ switch (x) { >M.fn : (x: number) => string >M : typeof M >fn : (x: number) => string +>1 : number case (x: number) => '': >(x: number) => '' : (x: number) => string >T : T >x : number +>'' : string case ((x: number) => '')(2): >((x: number) => '')(2) : string @@ -70,6 +86,8 @@ switch (x) { >(x: number) => '' : (x: number) => string >T : T >x : number +>'' : string +>2 : number default: } @@ -95,7 +113,9 @@ switch (new C()) { case { id: 12, name: '' }: >{ id: 12, name: '' } : { id: number; name: string; } >id : number +>12 : number >name : string +>'' : string case new C(): >new C() : C @@ -103,21 +123,32 @@ switch (new C()) { } switch ('') { } +>'' : string + switch (12) { } +>12 : number + switch (true) { } +>true : boolean + switch (null) { } +>null : null + switch (undefined) { } >undefined : undefined switch (new Date(12)) { } >new Date(12) : Date >Date : DateConstructor +>12 : number switch (new Object()) { } >new Object() : Object >Object : ObjectConstructor switch (/[a-z]/) { } +>/[a-z]/ : RegExp + switch ([]) { } >[] : undefined[] @@ -127,14 +158,17 @@ switch ({}) { } switch ({ id: 12 }) { } >{ id: 12 } : { id: number; } >id : number +>12 : number switch (['a']) { } >['a'] : string[] +>'a' : string switch ((x: number) => '') { } >(x: number) => '' : (x: number) => string >T : T >x : number +>'' : string switch (((x: T) => '')(1)) { } >((x: T) => '')(1) : string @@ -143,6 +177,8 @@ switch (((x: T) => '')(1)) { } >T : T >x : T >T : T +>'' : string +>1 : number diff --git a/tests/baselines/reference/symbolDeclarationEmit10.types b/tests/baselines/reference/symbolDeclarationEmit10.types index 194893ef00f..0d8d54c28de 100644 --- a/tests/baselines/reference/symbolDeclarationEmit10.types +++ b/tests/baselines/reference/symbolDeclarationEmit10.types @@ -7,6 +7,7 @@ var obj = { >Symbol.isConcatSpreadable : symbol >Symbol : SymbolConstructor >isConcatSpreadable : symbol +>'' : string set [Symbol.isConcatSpreadable](x) { } >Symbol.isConcatSpreadable : symbol diff --git a/tests/baselines/reference/symbolDeclarationEmit11.types b/tests/baselines/reference/symbolDeclarationEmit11.types index 9189e69dc04..30f92266eb2 100644 --- a/tests/baselines/reference/symbolDeclarationEmit11.types +++ b/tests/baselines/reference/symbolDeclarationEmit11.types @@ -6,6 +6,7 @@ class C { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number static [Symbol.isConcatSpreadable]() { } >Symbol.isConcatSpreadable : symbol @@ -16,6 +17,7 @@ class C { >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>"" : string static set [Symbol.toPrimitive](x) { } >Symbol.toPrimitive : symbol diff --git a/tests/baselines/reference/symbolDeclarationEmit13.types b/tests/baselines/reference/symbolDeclarationEmit13.types index 92ad2ad0f68..ce77ec9b38b 100644 --- a/tests/baselines/reference/symbolDeclarationEmit13.types +++ b/tests/baselines/reference/symbolDeclarationEmit13.types @@ -6,6 +6,7 @@ class C { >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>"" : string set [Symbol.toStringTag](x) { } >Symbol.toStringTag : symbol diff --git a/tests/baselines/reference/symbolDeclarationEmit14.types b/tests/baselines/reference/symbolDeclarationEmit14.types index f72bd774709..5e975a6eae4 100644 --- a/tests/baselines/reference/symbolDeclarationEmit14.types +++ b/tests/baselines/reference/symbolDeclarationEmit14.types @@ -6,9 +6,11 @@ class C { >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>"" : string get [Symbol.toStringTag]() { return ""; } >Symbol.toStringTag : symbol >Symbol : SymbolConstructor >toStringTag : symbol +>"" : string } diff --git a/tests/baselines/reference/symbolDeclarationEmit2.types b/tests/baselines/reference/symbolDeclarationEmit2.types index 4147eeae401..10727836712 100644 --- a/tests/baselines/reference/symbolDeclarationEmit2.types +++ b/tests/baselines/reference/symbolDeclarationEmit2.types @@ -6,4 +6,5 @@ class C { >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>"" : string } diff --git a/tests/baselines/reference/symbolDeclarationEmit4.types b/tests/baselines/reference/symbolDeclarationEmit4.types index 5c3c0b0d6b6..51e4135b498 100644 --- a/tests/baselines/reference/symbolDeclarationEmit4.types +++ b/tests/baselines/reference/symbolDeclarationEmit4.types @@ -6,6 +6,7 @@ class C { >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>"" : string set [Symbol.toPrimitive](x) { } >Symbol.toPrimitive : symbol diff --git a/tests/baselines/reference/symbolDeclarationEmit8.types b/tests/baselines/reference/symbolDeclarationEmit8.types index 75d39748e22..e14bc5c395b 100644 --- a/tests/baselines/reference/symbolDeclarationEmit8.types +++ b/tests/baselines/reference/symbolDeclarationEmit8.types @@ -7,4 +7,5 @@ var obj = { >Symbol.isConcatSpreadable : symbol >Symbol : SymbolConstructor >isConcatSpreadable : symbol +>0 : number } diff --git a/tests/baselines/reference/symbolProperty1.types b/tests/baselines/reference/symbolProperty1.types index 55c86c14f6e..f39d98853d2 100644 --- a/tests/baselines/reference/symbolProperty1.types +++ b/tests/baselines/reference/symbolProperty1.types @@ -8,6 +8,7 @@ var x = { [s]: 0, >s : symbol +>0 : number [s]() { }, >s : symbol @@ -16,5 +17,6 @@ var x = { >s : symbol return 0; +>0 : number } } diff --git a/tests/baselines/reference/symbolProperty18.types b/tests/baselines/reference/symbolProperty18.types index 8dd74112a8d..772e6aff2f7 100644 --- a/tests/baselines/reference/symbolProperty18.types +++ b/tests/baselines/reference/symbolProperty18.types @@ -7,11 +7,13 @@ var i = { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number [Symbol.toStringTag]() { return "" }, >Symbol.toStringTag : symbol >Symbol : SymbolConstructor >toStringTag : symbol +>"" : string set [Symbol.toPrimitive](p: boolean) { } >Symbol.toPrimitive : symbol @@ -44,4 +46,5 @@ i[Symbol.toPrimitive] = false; >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>false : boolean diff --git a/tests/baselines/reference/symbolProperty19.types b/tests/baselines/reference/symbolProperty19.types index 705c2b8bdf7..c8746296817 100644 --- a/tests/baselines/reference/symbolProperty19.types +++ b/tests/baselines/reference/symbolProperty19.types @@ -9,6 +9,7 @@ var i = { >iterator : symbol >{ p: null } : { p: null; } >p : null +>null : null [Symbol.toStringTag]() { return { p: undefined }; } >Symbol.toStringTag : symbol diff --git a/tests/baselines/reference/symbolProperty2.types b/tests/baselines/reference/symbolProperty2.types index 37fe9d13bdb..df49130520a 100644 --- a/tests/baselines/reference/symbolProperty2.types +++ b/tests/baselines/reference/symbolProperty2.types @@ -10,6 +10,7 @@ var x = { [s]: 0, >s : symbol +>0 : number [s]() { }, >s : symbol @@ -18,5 +19,6 @@ var x = { >s : symbol return 0; +>0 : number } } diff --git a/tests/baselines/reference/symbolProperty21.types b/tests/baselines/reference/symbolProperty21.types index cb4b5e74473..e2cda0a896f 100644 --- a/tests/baselines/reference/symbolProperty21.types +++ b/tests/baselines/reference/symbolProperty21.types @@ -39,15 +39,18 @@ foo({ >Symbol.isConcatSpreadable : symbol >Symbol : SymbolConstructor >isConcatSpreadable : symbol +>"" : string [Symbol.toPrimitive]: 0, >Symbol.toPrimitive : symbol >Symbol : SymbolConstructor >toPrimitive : symbol +>0 : number [Symbol.unscopables]: true >Symbol.unscopables : symbol >Symbol : SymbolConstructor >unscopables : symbol +>true : boolean }); diff --git a/tests/baselines/reference/symbolProperty22.types b/tests/baselines/reference/symbolProperty22.types index 64fb5fc234c..29d16b1553e 100644 --- a/tests/baselines/reference/symbolProperty22.types +++ b/tests/baselines/reference/symbolProperty22.types @@ -28,6 +28,7 @@ declare function foo(p1: T, p2: I): U; foo("", { [Symbol.unscopables]: s => s.length }); >foo("", { [Symbol.unscopables]: s => s.length }) : number >foo : (p1: T, p2: I) => U +>"" : string >{ [Symbol.unscopables]: s => s.length } : { [Symbol.unscopables]: (s: string) => number; } >Symbol.unscopables : symbol >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/symbolProperty23.types b/tests/baselines/reference/symbolProperty23.types index b28ecb2dbe4..b34a208a907 100644 --- a/tests/baselines/reference/symbolProperty23.types +++ b/tests/baselines/reference/symbolProperty23.types @@ -18,5 +18,6 @@ class C implements I { >toPrimitive : symbol return true; +>true : boolean } } diff --git a/tests/baselines/reference/symbolProperty26.types b/tests/baselines/reference/symbolProperty26.types index 3971ccb402d..386761c98f9 100644 --- a/tests/baselines/reference/symbolProperty26.types +++ b/tests/baselines/reference/symbolProperty26.types @@ -8,6 +8,7 @@ class C1 { >toStringTag : symbol return ""; +>"" : string } } @@ -21,5 +22,6 @@ class C2 extends C1 { >toStringTag : symbol return ""; +>"" : string } } diff --git a/tests/baselines/reference/symbolProperty27.types b/tests/baselines/reference/symbolProperty27.types index 5a5261a11b5..d8ff2f2f116 100644 --- a/tests/baselines/reference/symbolProperty27.types +++ b/tests/baselines/reference/symbolProperty27.types @@ -22,5 +22,6 @@ class C2 extends C1 { >toStringTag : symbol return ""; +>"" : string } } diff --git a/tests/baselines/reference/symbolProperty28.types b/tests/baselines/reference/symbolProperty28.types index ef5aa0f3003..6eddebf44d8 100644 --- a/tests/baselines/reference/symbolProperty28.types +++ b/tests/baselines/reference/symbolProperty28.types @@ -10,6 +10,7 @@ class C1 { return { x: "" }; >{ x: "" } : { x: string; } >x : string +>"" : string } } diff --git a/tests/baselines/reference/symbolProperty4.types b/tests/baselines/reference/symbolProperty4.types index b8aac1f2770..93b4417b8ae 100644 --- a/tests/baselines/reference/symbolProperty4.types +++ b/tests/baselines/reference/symbolProperty4.types @@ -6,6 +6,7 @@ var x = { [Symbol()]: 0, >Symbol() : symbol >Symbol : SymbolConstructor +>0 : number [Symbol()]() { }, >Symbol() : symbol @@ -16,5 +17,6 @@ var x = { >Symbol : SymbolConstructor return 0; +>0 : number } } diff --git a/tests/baselines/reference/symbolProperty40.types b/tests/baselines/reference/symbolProperty40.types index a87a6ea28a8..c349a705a29 100644 --- a/tests/baselines/reference/symbolProperty40.types +++ b/tests/baselines/reference/symbolProperty40.types @@ -37,6 +37,7 @@ c[Symbol.iterator](""); >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>"" : string c[Symbol.iterator](0); >c[Symbol.iterator](0) : number @@ -45,4 +46,5 @@ c[Symbol.iterator](0); >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number diff --git a/tests/baselines/reference/symbolProperty41.types b/tests/baselines/reference/symbolProperty41.types index 94032c194d6..61b71dfe246 100644 --- a/tests/baselines/reference/symbolProperty41.types +++ b/tests/baselines/reference/symbolProperty41.types @@ -40,6 +40,7 @@ c[Symbol.iterator](""); >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>"" : string c[Symbol.iterator]("hello"); >c[Symbol.iterator]("hello") : { x: string; hello: string; } @@ -48,4 +49,5 @@ c[Symbol.iterator]("hello"); >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>"hello" : string diff --git a/tests/baselines/reference/symbolProperty45.types b/tests/baselines/reference/symbolProperty45.types index 24a74729aec..946ceeb9ea1 100644 --- a/tests/baselines/reference/symbolProperty45.types +++ b/tests/baselines/reference/symbolProperty45.types @@ -8,6 +8,7 @@ class C { >hasInstance : symbol return ""; +>"" : string } get [Symbol.toPrimitive]() { >Symbol.toPrimitive : symbol @@ -15,5 +16,6 @@ class C { >toPrimitive : symbol return ""; +>"" : string } } diff --git a/tests/baselines/reference/symbolProperty5.types b/tests/baselines/reference/symbolProperty5.types index e1fb096ebc4..4af020dca1b 100644 --- a/tests/baselines/reference/symbolProperty5.types +++ b/tests/baselines/reference/symbolProperty5.types @@ -7,6 +7,7 @@ var x = { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number [Symbol.toPrimitive]() { }, >Symbol.toPrimitive : symbol @@ -19,5 +20,6 @@ var x = { >toStringTag : symbol return 0; +>0 : number } } diff --git a/tests/baselines/reference/symbolProperty55.types b/tests/baselines/reference/symbolProperty55.types index 34b32e27eae..8c438bbf445 100644 --- a/tests/baselines/reference/symbolProperty55.types +++ b/tests/baselines/reference/symbolProperty55.types @@ -7,6 +7,7 @@ var obj = { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number }; diff --git a/tests/baselines/reference/symbolProperty56.types b/tests/baselines/reference/symbolProperty56.types index 8fc2e97b751..87998908745 100644 --- a/tests/baselines/reference/symbolProperty56.types +++ b/tests/baselines/reference/symbolProperty56.types @@ -7,6 +7,7 @@ var obj = { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number }; @@ -23,4 +24,5 @@ module M { >obj : { [Symbol.iterator]: number; } >Symbol["iterator"] : any >Symbol : {} +>"iterator" : string } diff --git a/tests/baselines/reference/symbolProperty57.types b/tests/baselines/reference/symbolProperty57.types index 013c008ce12..b0c02052e58 100644 --- a/tests/baselines/reference/symbolProperty57.types +++ b/tests/baselines/reference/symbolProperty57.types @@ -7,6 +7,7 @@ var obj = { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number }; @@ -16,4 +17,5 @@ obj[Symbol["nonsense"]]; >obj : { [Symbol.iterator]: number; } >Symbol["nonsense"] : any >Symbol : SymbolConstructor +>"nonsense" : string diff --git a/tests/baselines/reference/symbolProperty6.types b/tests/baselines/reference/symbolProperty6.types index 20c5d0c6c8b..a378acf1bbe 100644 --- a/tests/baselines/reference/symbolProperty6.types +++ b/tests/baselines/reference/symbolProperty6.types @@ -6,6 +6,7 @@ class C { >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol +>0 : number [Symbol.unscopables]: number; >Symbol.unscopables : symbol @@ -23,5 +24,6 @@ class C { >toStringTag : symbol return 0; +>0 : number } } diff --git a/tests/baselines/reference/symbolType11.types b/tests/baselines/reference/symbolType11.types index 21de110854c..903c4ec0ecc 100644 --- a/tests/baselines/reference/symbolType11.types +++ b/tests/baselines/reference/symbolType11.types @@ -5,6 +5,7 @@ var s = Symbol.for("logical"); >Symbol.for : (key: string) => symbol >Symbol : SymbolConstructor >for : (key: string) => symbol +>"logical" : string s && s; >s && s : symbol @@ -18,6 +19,7 @@ s && []; 0 && s; >0 && s : symbol +>0 : number >s : symbol s || s; @@ -28,6 +30,7 @@ s || s; s || 1; >s || 1 : number | symbol >s : symbol +>1 : number ({}) || s; >({}) || s : {} diff --git a/tests/baselines/reference/symbolType17.types b/tests/baselines/reference/symbolType17.types index b86d5a70ff7..a6174f7a3ae 100644 --- a/tests/baselines/reference/symbolType17.types +++ b/tests/baselines/reference/symbolType17.types @@ -14,6 +14,7 @@ if (typeof x === "symbol") { >typeof x === "symbol" : boolean >typeof x : string >x : symbol | Foo +>"symbol" : string x; >x : symbol diff --git a/tests/baselines/reference/symbolType18.types b/tests/baselines/reference/symbolType18.types index 1693c6e2499..db4fb30378f 100644 --- a/tests/baselines/reference/symbolType18.types +++ b/tests/baselines/reference/symbolType18.types @@ -14,6 +14,7 @@ if (typeof x === "object") { >typeof x === "object" : boolean >typeof x : string >x : symbol | Foo +>"object" : string x; >x : Foo diff --git a/tests/baselines/reference/symbolType19.types b/tests/baselines/reference/symbolType19.types index d01fbfa87fe..33c4f5ac07c 100644 --- a/tests/baselines/reference/symbolType19.types +++ b/tests/baselines/reference/symbolType19.types @@ -13,6 +13,7 @@ if (typeof x === "number") { >typeof x === "number" : boolean >typeof x : string >x : symbol | E +>"number" : string x; >x : E diff --git a/tests/baselines/reference/taggedTemplateContextualTyping1.types b/tests/baselines/reference/taggedTemplateContextualTyping1.types index a6432d34f81..93ca81f8446 100644 --- a/tests/baselines/reference/taggedTemplateContextualTyping1.types +++ b/tests/baselines/reference/taggedTemplateContextualTyping1.types @@ -48,16 +48,21 @@ function tempTag1(...rest: any[]): T { // and it is an error to invoke an any-typed value with type arguments, // so this test will error. tempTag1 `${ x => { x(undefined); return x; } }${ 10 }`; +>tempTag1 `${ x => { x(undefined); return x; } }${ 10 }` : number >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; } +>`${ x => { x(undefined); return x; } }${ 10 }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : number >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>10 : number tempTag1 `${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }`; +>tempTag1 `${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }` : number >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; } +>`${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : number @@ -70,9 +75,12 @@ tempTag1 `${ x => { x(undefined); return x; } }${ y => >y : (p: T) => T >undefined : undefined >y : (p: T) => T +>10 : number tempTag1 `${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }`; +>tempTag1 `${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }` : any >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; } +>`${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : number @@ -92,7 +100,9 @@ tempTag1 `${ x => { x(undefined); return x; } }${ (y: >undefined : undefined tempTag1 `${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }`; +>tempTag1 `${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }` : any >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; } +>`${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }` : string >(x: (p: T) => T) => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >T : T diff --git a/tests/baselines/reference/taggedTemplateContextualTyping2.types b/tests/baselines/reference/taggedTemplateContextualTyping2.types index 9ca7386dc34..8fcfc02c62b 100644 --- a/tests/baselines/reference/taggedTemplateContextualTyping2.types +++ b/tests/baselines/reference/taggedTemplateContextualTyping2.types @@ -50,16 +50,21 @@ function tempTag2(...rest: any[]): any { // and it is an error to invoke an any-typed value with type arguments, // so this test will error. tempTag2 `${ x => { x(undefined); return x; } }${ 0 }`; +>tempTag2 `${ x => { x(undefined); return x; } }${ 0 }` : number >tempTag2 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: number): number; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: string): string; } +>`${ x => { x(undefined); return x; } }${ 0 }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : number >x : (p: T) => T >undefined : undefined >x : (p: T) => T +>0 : number tempTag2 `${ x => { x(undefined); return x; } }${ y => { y(null); return y; } }${ "hello" }`; +>tempTag2 `${ x => { x(undefined); return x; } }${ y => { y(null); return y; } }${ "hello" }` : string >tempTag2 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: number): number; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: string): string; } +>`${ x => { x(undefined); return x; } }${ y => { y(null); return y; } }${ "hello" }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : string @@ -70,10 +75,14 @@ tempTag2 `${ x => { x(undefined); return x; } }${ y => { yy : (p: T) => T >y(null) : number >y : (p: T) => T +>null : null >y : (p: T) => T +>"hello" : string tempTag2 `${ x => { x(undefined); return x; } }${ undefined }${ "hello" }`; +>tempTag2 `${ x => { x(undefined); return x; } }${ undefined }${ "hello" }` : string >tempTag2 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: number): number; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: string): string; } +>`${ x => { x(undefined); return x; } }${ undefined }${ "hello" }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T >x(undefined) : string @@ -81,4 +90,5 @@ tempTag2 `${ x => { x(undefined); return x; } }${ undefined }${ >undefined : undefined >x : (p: T) => T >undefined : undefined +>"hello" : string diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types index 37f583efd59..329ce9c3b21 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types @@ -5,5 +5,8 @@ function f(...args: any[]) { } f `\x0D${ "Interrupted CRLF" }\x0A`; +>f `\x0D${ "Interrupted CRLF" }\x0A` : void >f : (...args: any[]) => void +>`\x0D${ "Interrupted CRLF" }\x0A` : string +>"Interrupted CRLF" : string diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types index b96c0664e2f..f350b6137a7 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types @@ -5,5 +5,8 @@ function f(...args: any[]) { } f `\x0D${ "Interrupted CRLF" }\x0A`; +>f `\x0D${ "Interrupted CRLF" }\x0A` : void >f : (...args: any[]) => void +>`\x0D${ "Interrupted CRLF" }\x0A` : string +>"Interrupted CRLF" : string diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.types b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.types index db793591222..e40e80fe7f9 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.types +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01.types @@ -8,5 +8,7 @@ function f(...x: any[]) { } f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` +>f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` : void >f : (...x: any[]) => void +>`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` : string diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01_ES6.types b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01_ES6.types index e1e63197c90..8a1c5f434a8 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes01_ES6.types @@ -7,5 +7,7 @@ function f(...x: any[]) { } f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` +>f `0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` : void >f : (...x: any[]) => void +>`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` : string diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types index 3ee1a72f8e2..9b02e0d3fb3 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types @@ -1,5 +1,35 @@ === tests/cases/conformance/es6/templates/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.ts === -No type information for this code. -No type information for this code.`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` -No type information for this code. \ No newline at end of file + +`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` +>`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string + diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types index 727aa7daeb0..ed229126283 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types @@ -7,5 +7,36 @@ function f(...x: any[]) { } f `0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` +>f `0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` : void >f : (...x: any[]) => void +>`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types index 6fa83bbde3d..83a0f2cf9f4 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types @@ -32,7 +32,13 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; >new new f `abc${ 0 }def`.member("hello")(42) : new () => boolean >new f `abc${ 0 }def`.member("hello") : new (n: number) => new () => boolean >f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean +>f `abc${ 0 }def` : I >f : I +>`abc${ 0 }def` : string +>0 : number >member : new (s: string) => new (n: number) => new () => boolean +>"hello" : string +>42 : number +>true : boolean diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types index 29a429a1435..c240b7ced11 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types @@ -32,7 +32,13 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; >new new f `abc${ 0 }def`.member("hello")(42) : new () => boolean >new f `abc${ 0 }def`.member("hello") : new (n: number) => new () => boolean >f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean +>f `abc${ 0 }def` : I >f : I +>`abc${ 0 }def` : string +>0 : number >member : new (s: string) => new (n: number) => new () => boolean +>"hello" : string +>42 : number +>true : boolean diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.types b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.types index ec687ac0fae..52f7a517a4a 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.types +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplate.types @@ -5,7 +5,9 @@ function f(...args: any[]): void { } f ` +>f `\` : void >f : (...args: any[]) => void +>`\` : string \ diff --git a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplateES6.types b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplateES6.types index 7047f7194c3..35374be6436 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplateES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithMultilineTemplateES6.types @@ -5,7 +5,9 @@ function f(...args: any[]): void { } f ` +>f `\` : void >f : (...args: any[]) => void +>`\` : string \ diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types index 0863ac3fafc..77353e9b3ce 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types @@ -21,13 +21,17 @@ function foo1(...stuff: any[]): any { var a = foo1 `${1}`; // string >a : string +>foo1 `${1}` : string >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } +>`${1}` : string +>1 : number var b = foo1([], 1); // number >b : number >foo1([], 1) : number >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } >[] : undefined[] +>1 : number function foo2(strs: string[], x: number): number; >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } @@ -50,11 +54,15 @@ function foo2(...stuff: any[]): any { var c = foo2 `${1}`; // number >c : number +>foo2 `${1}` : number >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } +>`${1}` : string +>1 : number var d = foo2([], 1); // number >d : number >foo2([], 1) : number >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } >[] : undefined[] +>1 : number diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types index d9d918b37bd..306bf38cac4 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types @@ -20,13 +20,17 @@ function foo1(...stuff: any[]): any { var a = foo1 `${1}`; // string >a : string +>foo1 `${1}` : string >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } +>`${1}` : string +>1 : number var b = foo1([], 1); // number >b : number >foo1([], 1) : number >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } >[] : undefined[] +>1 : number function foo2(strs: string[], x: number): number; >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } @@ -49,11 +53,15 @@ function foo2(...stuff: any[]): any { var c = foo2 `${1}`; // number >c : number +>foo2 `${1}` : number >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } +>`${1}` : string +>1 : number var d = foo2([], 1); // number >d : number >foo2([], 1) : number >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } >[] : undefined[] +>1 : number diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types index a9b7c9dfdca..0db2a3bb963 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types @@ -3,64 +3,110 @@ var f: any; >f : any f `abc` +>f `abc` : any >f : any +>`abc` : string f `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f.g.h `abc` +>f.g.h `abc` : any >f.g.h : any >f.g : any >f : any >g : any >h : any +>`abc` : string f.g.h `abc${1}def${2}ghi`; +>f.g.h `abc${1}def${2}ghi` : any >f.g.h : any >f.g : any >f : any >g : any >h : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc`.member >f `abc`.member : any +>f `abc` : any >f : any +>`abc` : string >member : any f `abc${1}def${2}ghi`.member; >f `abc${1}def${2}ghi`.member : any +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number >member : any f `abc`["member"]; >f `abc`["member"] : any +>f `abc` : any >f : any +>`abc` : string +>"member" : string f `abc${1}def${2}ghi`["member"]; >f `abc${1}def${2}ghi`["member"] : any +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string f `abc`["member"].someOtherTag `abc${1}def${2}ghi`; +>f `abc`["member"].someOtherTag `abc${1}def${2}ghi` : any >f `abc`["member"].someOtherTag : any >f `abc`["member"] : any +>f `abc` : any >f : any +>`abc` : string +>"member" : string >someOtherTag : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc${1}def${2}ghi`["member"].someOtherTag `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi`["member"].someOtherTag `abc${1}def${2}ghi` : any >f `abc${1}def${2}ghi`["member"].someOtherTag : any >f `abc${1}def${2}ghi`["member"] : any +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string >someOtherTag : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f.thisIsNotATag(`abc`); >f.thisIsNotATag(`abc`) : any >f.thisIsNotATag : any >f : any >thisIsNotATag : any +>`abc` : string f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag(`abc${1}def${2}ghi`) : any >f.thisIsNotATag : any >f : any >thisIsNotATag : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types index bb651fe1d25..1a6ffb5eba0 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types @@ -3,64 +3,110 @@ var f: any; >f : any f `abc` +>f `abc` : any >f : any +>`abc` : string f `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f.g.h `abc` +>f.g.h `abc` : any >f.g.h : any >f.g : any >f : any >g : any >h : any +>`abc` : string f.g.h `abc${1}def${2}ghi`; +>f.g.h `abc${1}def${2}ghi` : any >f.g.h : any >f.g : any >f : any >g : any >h : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc`.member >f `abc`.member : any +>f `abc` : any >f : any +>`abc` : string >member : any f `abc${1}def${2}ghi`.member; >f `abc${1}def${2}ghi`.member : any +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number >member : any f `abc`["member"]; >f `abc`["member"] : any +>f `abc` : any >f : any +>`abc` : string +>"member" : string f `abc${1}def${2}ghi`["member"]; >f `abc${1}def${2}ghi`["member"] : any +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string f `abc`["member"].someOtherTag `abc${1}def${2}ghi`; +>f `abc`["member"].someOtherTag `abc${1}def${2}ghi` : any >f `abc`["member"].someOtherTag : any >f `abc`["member"] : any +>f `abc` : any >f : any +>`abc` : string +>"member" : string >someOtherTag : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc${1}def${2}ghi`["member"].someOtherTag `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi`["member"].someOtherTag `abc${1}def${2}ghi` : any >f `abc${1}def${2}ghi`["member"].someOtherTag : any >f `abc${1}def${2}ghi`["member"] : any +>f `abc${1}def${2}ghi` : any >f : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string >someOtherTag : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f.thisIsNotATag(`abc`); >f.thisIsNotATag(`abc`) : any >f.thisIsNotATag : any >f : any >thisIsNotATag : any +>`abc` : string f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag(`abc${1}def${2}ghi`) : any >f.thisIsNotATag : any >f : any >thisIsNotATag : any +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types index 5c8ba71188b..2c992a2d233 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types @@ -33,50 +33,90 @@ var f: I; >I : I f `abc` +>f `abc` : I >f : I +>`abc` : string f `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc`.member >f `abc`.member : I +>f `abc` : I >f : I +>`abc` : string >member : I f `abc${1}def${2}ghi`.member; >f `abc${1}def${2}ghi`.member : I +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number >member : I f `abc`["member"]; >f `abc`["member"] : I +>f `abc` : I >f : I +>`abc` : string +>"member" : string f `abc${1}def${2}ghi`["member"]; >f `abc${1}def${2}ghi`["member"] : I +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string f `abc`[0].member `abc${1}def${2}ghi`; +>f `abc`[0].member `abc${1}def${2}ghi` : I >f `abc`[0].member : I >f `abc`[0] : I +>f `abc` : I >f : I +>`abc` : string +>0 : number >member : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi` : I >f `abc${1}def${2}ghi`["member"].member : I >f `abc${1}def${2}ghi`["member"] : I +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string >member : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f.thisIsNotATag(`abc`); >f.thisIsNotATag(`abc`) : void >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void +>`abc` : string f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag(`abc${1}def${2}ghi`) : void >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types b/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types index e0b16ebe392..4bda0f3fbb0 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types @@ -33,50 +33,90 @@ var f: I; >I : I f `abc` +>f `abc` : I >f : I +>`abc` : string f `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc`.member >f `abc`.member : I +>f `abc` : I >f : I +>`abc` : string >member : I f `abc${1}def${2}ghi`.member; >f `abc${1}def${2}ghi`.member : I +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number >member : I f `abc`["member"]; >f `abc`["member"] : I +>f `abc` : I >f : I +>`abc` : string +>"member" : string f `abc${1}def${2}ghi`["member"]; >f `abc${1}def${2}ghi`["member"] : I +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string f `abc`[0].member `abc${1}def${2}ghi`; +>f `abc`[0].member `abc${1}def${2}ghi` : I >f `abc`[0].member : I >f `abc`[0] : I +>f `abc` : I >f : I +>`abc` : string +>0 : number >member : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi`; +>f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi` : I >f `abc${1}def${2}ghi`["member"].member : I >f `abc${1}def${2}ghi`["member"] : I +>f `abc${1}def${2}ghi` : I >f : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number +>"member" : string >member : I +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number f.thisIsNotATag(`abc`); >f.thisIsNotATag(`abc`) : void >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void +>`abc` : string f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag(`abc${1}def${2}ghi`) : void >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void +>`abc${1}def${2}ghi` : string +>1 : number +>2 : number diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types index 30c27d376d1..7b09b5c5746 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types @@ -5,5 +5,8 @@ function f(...args: any[]) { } f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; +>f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'` : void >f : (...args: any[]) => void +>`'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'` : string +>" should be converted to " : string diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types index d3c9ad68c21..ad4c5cc67a9 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types @@ -5,5 +5,8 @@ function f(...args: any[]) { } f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'`; +>f `'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'` : void >f : (...args: any[]) => void +>`'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'` : string +>" should be converted to " : string diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.types b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.types index 89027983cba..e8c94095445 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.types +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapes.types @@ -5,5 +5,7 @@ function f(...args: any[]) { } f `\t\n\v\f\r\\`; +>f `\t\n\v\f\r\\` : void >f : (...args: any[]) => void +>`\t\n\v\f\r\\` : string diff --git a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapesES6.types b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapesES6.types index 5aeef9207eb..a4fa109cec7 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapesES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithWhitespaceEscapesES6.types @@ -5,5 +5,7 @@ function f(...args: any[]) { } f `\t\n\v\f\r\\`; +>f `\t\n\v\f\r\\` : void >f : (...args: any[]) => void +>`\t\n\v\f\r\\` : string diff --git a/tests/baselines/reference/targetTypeArgs.types b/tests/baselines/reference/targetTypeArgs.types index 80c99ff9ff3..cda814d52c5 100644 --- a/tests/baselines/reference/targetTypeArgs.types +++ b/tests/baselines/reference/targetTypeArgs.types @@ -7,6 +7,7 @@ function foo(callback: (x: string) => void) { callback("hello"); >callback("hello") : void >callback : (x: string) => void +>"hello" : string } foo(function(x) { x }); @@ -20,6 +21,7 @@ foo(function(x) { x }); >[1].forEach(function(v,i,a) { v }) : void >[1].forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void >[1] : number[] +>1 : number >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void >function(v,i,a) { v } : (v: number, i: number, a: number[]) => void >v : number @@ -31,46 +33,55 @@ foo(function(x) { x }); >["hello"].every(function(v,i,a) {return true;}) : boolean >["hello"].every : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => boolean >["hello"] : string[] +>"hello" : string >every : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => boolean >function(v,i,a) {return true;} : (v: string, i: number, a: string[]) => boolean >v : string >i : number >a : string[] +>true : boolean [1].every(function(v,i,a) {return true;}); >[1].every(function(v,i,a) {return true;}) : boolean >[1].every : (callbackfn: (value: number, index: number, array: number[]) => boolean, thisArg?: any) => boolean >[1] : number[] +>1 : number >every : (callbackfn: (value: number, index: number, array: number[]) => boolean, thisArg?: any) => boolean >function(v,i,a) {return true;} : (v: number, i: number, a: number[]) => boolean >v : number >i : number >a : number[] +>true : boolean [1].every(function(v,i,a) {return true;}); >[1].every(function(v,i,a) {return true;}) : boolean >[1].every : (callbackfn: (value: number, index: number, array: number[]) => boolean, thisArg?: any) => boolean >[1] : number[] +>1 : number >every : (callbackfn: (value: number, index: number, array: number[]) => boolean, thisArg?: any) => boolean >function(v,i,a) {return true;} : (v: number, i: number, a: number[]) => boolean >v : number >i : number >a : number[] +>true : boolean ["s"].every(function(v,i,a) {return true;}); >["s"].every(function(v,i,a) {return true;}) : boolean >["s"].every : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => boolean >["s"] : string[] +>"s" : string >every : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => boolean >function(v,i,a) {return true;} : (v: string, i: number, a: string[]) => boolean >v : string >i : number >a : string[] +>true : boolean ["s"].forEach(function(v,i,a) { v }); >["s"].forEach(function(v,i,a) { v }) : void >["s"].forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void >["s"] : string[] +>"s" : string >forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void >function(v,i,a) { v } : (v: string, i: number, a: string[]) => void >v : string diff --git a/tests/baselines/reference/targetTypeCalls.types b/tests/baselines/reference/targetTypeCalls.types index c87ac2743c4..6e9c1ca190d 100644 --- a/tests/baselines/reference/targetTypeCalls.types +++ b/tests/baselines/reference/targetTypeCalls.types @@ -14,6 +14,7 @@ var fra2: (v:any)=>number = function() { return function () { return 0; } }() // >function() { return function () { return 0; } }() : () => number >function() { return function () { return 0; } } : () => () => number >function () { return 0; } : () => number +>0 : number var fra3: (v:any)=>string = function() { return function() { return function(v) {return v;};}(); }() // should work >fra3 : (v: any) => string diff --git a/tests/baselines/reference/targetTypeObjectLiteral.types b/tests/baselines/reference/targetTypeObjectLiteral.types index f63a505162b..8f77c11f7b6 100644 --- a/tests/baselines/reference/targetTypeObjectLiteral.types +++ b/tests/baselines/reference/targetTypeObjectLiteral.types @@ -8,6 +8,7 @@ var z: { x: number; y: (w:string)=>number;} = { x: 12, >x : number +>12 : number y: function(w) { >y : (w: string) => number @@ -15,6 +16,7 @@ var z: { x: number; y: (w:string)=>number;} = { >w : string return 0; +>0 : number } diff --git a/tests/baselines/reference/targetTypeObjectLiteralToAny.types b/tests/baselines/reference/targetTypeObjectLiteralToAny.types index ebbafd39d8d..b6bd1e91051 100644 --- a/tests/baselines/reference/targetTypeObjectLiteralToAny.types +++ b/tests/baselines/reference/targetTypeObjectLiteralToAny.types @@ -25,6 +25,7 @@ function suggest(){ >text : string >keyword : string >type : string +>"keyword" : string }); } diff --git a/tests/baselines/reference/targetTypeTest2.types b/tests/baselines/reference/targetTypeTest2.types index 0000e65b8a7..25b36f948c6 100644 --- a/tests/baselines/reference/targetTypeTest2.types +++ b/tests/baselines/reference/targetTypeTest2.types @@ -5,6 +5,9 @@ var a : any[] = [1,2,"3"]; >a : any[] >[1,2,"3"] : (string | number)[] +>1 : number +>2 : number +>"3" : string function func1(stuff:any[]) { return stuff; } diff --git a/tests/baselines/reference/templateStringBinaryOperations.types b/tests/baselines/reference/templateStringBinaryOperations.types index 094c82f3678..d4b8c531ef4 100644 --- a/tests/baselines/reference/templateStringBinaryOperations.types +++ b/tests/baselines/reference/templateStringBinaryOperations.types @@ -2,244 +2,440 @@ var a = 1 + `${ 3 }`; >a : string >1 + `${ 3 }` : string +>1 : number +>`${ 3 }` : string +>3 : number var b = 1 + `2${ 3 }`; >b : string >1 + `2${ 3 }` : string +>1 : number +>`2${ 3 }` : string +>3 : number var c = 1 + `${ 3 }4`; >c : string >1 + `${ 3 }4` : string +>1 : number +>`${ 3 }4` : string +>3 : number var d = 1 + `2${ 3 }4`; >d : string >1 + `2${ 3 }4` : string +>1 : number +>`2${ 3 }4` : string +>3 : number var e = `${ 3 }` + 5; >e : string >`${ 3 }` + 5 : string +>`${ 3 }` : string +>3 : number +>5 : number var f = `2${ 3 }` + 5; >f : string >`2${ 3 }` + 5 : string +>`2${ 3 }` : string +>3 : number +>5 : number var g = `${ 3 }4` + 5; >g : string >`${ 3 }4` + 5 : string +>`${ 3 }4` : string +>3 : number +>5 : number var h = `2${ 3 }4` + 5; >h : string >`2${ 3 }4` + 5 : string +>`2${ 3 }4` : string +>3 : number +>5 : number var i = 1 + `${ 3 }` + 5; >i : string >1 + `${ 3 }` + 5 : string >1 + `${ 3 }` : string +>1 : number +>`${ 3 }` : string +>3 : number +>5 : number var j = 1 + `2${ 3 }` + 5; >j : string >1 + `2${ 3 }` + 5 : string >1 + `2${ 3 }` : string +>1 : number +>`2${ 3 }` : string +>3 : number +>5 : number var k = 1 + `${ 3 }4` + 5; >k : string >1 + `${ 3 }4` + 5 : string >1 + `${ 3 }4` : string +>1 : number +>`${ 3 }4` : string +>3 : number +>5 : number var l = 1 + `2${ 3 }4` + 5; >l : string >1 + `2${ 3 }4` + 5 : string >1 + `2${ 3 }4` : string +>1 : number +>`2${ 3 }4` : string +>3 : number +>5 : number var a2 = 1 + `${ 3 - 4 }`; >a2 : string >1 + `${ 3 - 4 }` : string +>1 : number +>`${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number var b2 = 1 + `2${ 3 - 4 }`; >b2 : string >1 + `2${ 3 - 4 }` : string +>1 : number +>`2${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number var c2 = 1 + `${ 3 - 4 }5`; >c2 : string >1 + `${ 3 - 4 }5` : string +>1 : number +>`${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number var d2 = 1 + `2${ 3 - 4 }5`; >d2 : string >1 + `2${ 3 - 4 }5` : string +>1 : number +>`2${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number var e2 = `${ 3 - 4 }` + 6; >e2 : string >`${ 3 - 4 }` + 6 : string +>`${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var f2 = `2${ 3 - 4 }` + 6; >f2 : string >`2${ 3 - 4 }` + 6 : string +>`2${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var g2 = `${ 3 - 4 }5` + 6; >g2 : string >`${ 3 - 4 }5` + 6 : string +>`${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var h2 = `2${ 3 - 4 }5` + 6; >h2 : string >`2${ 3 - 4 }5` + 6 : string +>`2${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var i2 = 1 + `${ 3 - 4 }` + 6; >i2 : string >1 + `${ 3 - 4 }` + 6 : string >1 + `${ 3 - 4 }` : string +>1 : number +>`${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var j2 = 1 + `2${ 3 - 4 }` + 6; >j2 : string >1 + `2${ 3 - 4 }` + 6 : string >1 + `2${ 3 - 4 }` : string +>1 : number +>`2${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var k2 = 1 + `${ 3 - 4 }5` + 6; >k2 : string >1 + `${ 3 - 4 }5` + 6 : string >1 + `${ 3 - 4 }5` : string +>1 : number +>`${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var l2 = 1 + `2${ 3 - 4 }5` + 6; >l2 : string >1 + `2${ 3 - 4 }5` + 6 : string >1 + `2${ 3 - 4 }5` : string +>1 : number +>`2${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var a3 = 1 + `${ 3 * 4 }`; >a3 : string >1 + `${ 3 * 4 }` : string +>1 : number +>`${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number var b3 = 1 + `2${ 3 * 4 }`; >b3 : string >1 + `2${ 3 * 4 }` : string +>1 : number +>`2${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number var c3 = 1 + `${ 3 * 4 }5`; >c3 : string >1 + `${ 3 * 4 }5` : string +>1 : number +>`${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number var d3 = 1 + `2${ 3 * 4 }5`; >d3 : string >1 + `2${ 3 * 4 }5` : string +>1 : number +>`2${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number var e3 = `${ 3 * 4 }` + 6; >e3 : string >`${ 3 * 4 }` + 6 : string +>`${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var f3 = `2${ 3 * 4 }` + 6; >f3 : string >`2${ 3 * 4 }` + 6 : string +>`2${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var g3 = `${ 3 * 4 }5` + 6; >g3 : string >`${ 3 * 4 }5` + 6 : string +>`${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var h3 = `2${ 3 * 4 }5` + 6; >h3 : string >`2${ 3 * 4 }5` + 6 : string +>`2${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var i3 = 1 + `${ 3 * 4 }` + 6; >i3 : string >1 + `${ 3 * 4 }` + 6 : string >1 + `${ 3 * 4 }` : string +>1 : number +>`${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var j3 = 1 + `2${ 3 * 4 }` + 6; >j3 : string >1 + `2${ 3 * 4 }` + 6 : string >1 + `2${ 3 * 4 }` : string +>1 : number +>`2${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var k3 = 1 + `${ 3 * 4 }5` + 6; >k3 : string >1 + `${ 3 * 4 }5` + 6 : string >1 + `${ 3 * 4 }5` : string +>1 : number +>`${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var l3 = 1 + `2${ 3 * 4 }5` + 6; >l3 : string >1 + `2${ 3 * 4 }5` + 6 : string >1 + `2${ 3 * 4 }5` : string +>1 : number +>`2${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var a4 = 1 + `${ 3 & 4 }`; >a4 : string >1 + `${ 3 & 4 }` : string +>1 : number +>`${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number var b4 = 1 + `2${ 3 & 4 }`; >b4 : string >1 + `2${ 3 & 4 }` : string +>1 : number +>`2${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number var c4 = 1 + `${ 3 & 4 }5`; >c4 : string >1 + `${ 3 & 4 }5` : string +>1 : number +>`${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number var d4 = 1 + `2${ 3 & 4 }5`; >d4 : string >1 + `2${ 3 & 4 }5` : string +>1 : number +>`2${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number var e4 = `${ 3 & 4 }` + 6; >e4 : string >`${ 3 & 4 }` + 6 : string +>`${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var f4 = `2${ 3 & 4 }` + 6; >f4 : string >`2${ 3 & 4 }` + 6 : string +>`2${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var g4 = `${ 3 & 4 }5` + 6; >g4 : string >`${ 3 & 4 }5` + 6 : string +>`${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var h4 = `2${ 3 & 4 }5` + 6; >h4 : string >`2${ 3 & 4 }5` + 6 : string +>`2${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var i4 = 1 + `${ 3 & 4 }` + 6; >i4 : string >1 + `${ 3 & 4 }` + 6 : string >1 + `${ 3 & 4 }` : string +>1 : number +>`${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var j4 = 1 + `2${ 3 & 4 }` + 6; >j4 : string >1 + `2${ 3 & 4 }` + 6 : string >1 + `2${ 3 & 4 }` : string +>1 : number +>`2${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var k4 = 1 + `${ 3 & 4 }5` + 6; >k4 : string >1 + `${ 3 & 4 }5` + 6 : string >1 + `${ 3 & 4 }5` : string +>1 : number +>`${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var l4 = 1 + `2${ 3 & 4 }5` + 6; >l4 : string >1 + `2${ 3 & 4 }5` + 6 : string >1 + `2${ 3 & 4 }5` : string +>1 : number +>`2${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number diff --git a/tests/baselines/reference/templateStringBinaryOperationsES6.types b/tests/baselines/reference/templateStringBinaryOperationsES6.types index a79885904e2..a20da835a81 100644 --- a/tests/baselines/reference/templateStringBinaryOperationsES6.types +++ b/tests/baselines/reference/templateStringBinaryOperationsES6.types @@ -2,244 +2,440 @@ var a = 1 + `${ 3 }`; >a : string >1 + `${ 3 }` : string +>1 : number +>`${ 3 }` : string +>3 : number var b = 1 + `2${ 3 }`; >b : string >1 + `2${ 3 }` : string +>1 : number +>`2${ 3 }` : string +>3 : number var c = 1 + `${ 3 }4`; >c : string >1 + `${ 3 }4` : string +>1 : number +>`${ 3 }4` : string +>3 : number var d = 1 + `2${ 3 }4`; >d : string >1 + `2${ 3 }4` : string +>1 : number +>`2${ 3 }4` : string +>3 : number var e = `${ 3 }` + 5; >e : string >`${ 3 }` + 5 : string +>`${ 3 }` : string +>3 : number +>5 : number var f = `2${ 3 }` + 5; >f : string >`2${ 3 }` + 5 : string +>`2${ 3 }` : string +>3 : number +>5 : number var g = `${ 3 }4` + 5; >g : string >`${ 3 }4` + 5 : string +>`${ 3 }4` : string +>3 : number +>5 : number var h = `2${ 3 }4` + 5; >h : string >`2${ 3 }4` + 5 : string +>`2${ 3 }4` : string +>3 : number +>5 : number var i = 1 + `${ 3 }` + 5; >i : string >1 + `${ 3 }` + 5 : string >1 + `${ 3 }` : string +>1 : number +>`${ 3 }` : string +>3 : number +>5 : number var j = 1 + `2${ 3 }` + 5; >j : string >1 + `2${ 3 }` + 5 : string >1 + `2${ 3 }` : string +>1 : number +>`2${ 3 }` : string +>3 : number +>5 : number var k = 1 + `${ 3 }4` + 5; >k : string >1 + `${ 3 }4` + 5 : string >1 + `${ 3 }4` : string +>1 : number +>`${ 3 }4` : string +>3 : number +>5 : number var l = 1 + `2${ 3 }4` + 5; >l : string >1 + `2${ 3 }4` + 5 : string >1 + `2${ 3 }4` : string +>1 : number +>`2${ 3 }4` : string +>3 : number +>5 : number var a2 = 1 + `${ 3 - 4 }`; >a2 : string >1 + `${ 3 - 4 }` : string +>1 : number +>`${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number var b2 = 1 + `2${ 3 - 4 }`; >b2 : string >1 + `2${ 3 - 4 }` : string +>1 : number +>`2${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number var c2 = 1 + `${ 3 - 4 }5`; >c2 : string >1 + `${ 3 - 4 }5` : string +>1 : number +>`${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number var d2 = 1 + `2${ 3 - 4 }5`; >d2 : string >1 + `2${ 3 - 4 }5` : string +>1 : number +>`2${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number var e2 = `${ 3 - 4 }` + 6; >e2 : string >`${ 3 - 4 }` + 6 : string +>`${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var f2 = `2${ 3 - 4 }` + 6; >f2 : string >`2${ 3 - 4 }` + 6 : string +>`2${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var g2 = `${ 3 - 4 }5` + 6; >g2 : string >`${ 3 - 4 }5` + 6 : string +>`${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var h2 = `2${ 3 - 4 }5` + 6; >h2 : string >`2${ 3 - 4 }5` + 6 : string +>`2${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var i2 = 1 + `${ 3 - 4 }` + 6; >i2 : string >1 + `${ 3 - 4 }` + 6 : string >1 + `${ 3 - 4 }` : string +>1 : number +>`${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var j2 = 1 + `2${ 3 - 4 }` + 6; >j2 : string >1 + `2${ 3 - 4 }` + 6 : string >1 + `2${ 3 - 4 }` : string +>1 : number +>`2${ 3 - 4 }` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var k2 = 1 + `${ 3 - 4 }5` + 6; >k2 : string >1 + `${ 3 - 4 }5` + 6 : string >1 + `${ 3 - 4 }5` : string +>1 : number +>`${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var l2 = 1 + `2${ 3 - 4 }5` + 6; >l2 : string >1 + `2${ 3 - 4 }5` + 6 : string >1 + `2${ 3 - 4 }5` : string +>1 : number +>`2${ 3 - 4 }5` : string >3 - 4 : number +>3 : number +>4 : number +>6 : number var a3 = 1 + `${ 3 * 4 }`; >a3 : string >1 + `${ 3 * 4 }` : string +>1 : number +>`${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number var b3 = 1 + `2${ 3 * 4 }`; >b3 : string >1 + `2${ 3 * 4 }` : string +>1 : number +>`2${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number var c3 = 1 + `${ 3 * 4 }5`; >c3 : string >1 + `${ 3 * 4 }5` : string +>1 : number +>`${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number var d3 = 1 + `2${ 3 * 4 }5`; >d3 : string >1 + `2${ 3 * 4 }5` : string +>1 : number +>`2${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number var e3 = `${ 3 * 4 }` + 6; >e3 : string >`${ 3 * 4 }` + 6 : string +>`${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var f3 = `2${ 3 * 4 }` + 6; >f3 : string >`2${ 3 * 4 }` + 6 : string +>`2${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var g3 = `${ 3 * 4 }5` + 6; >g3 : string >`${ 3 * 4 }5` + 6 : string +>`${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var h3 = `2${ 3 * 4 }5` + 6; >h3 : string >`2${ 3 * 4 }5` + 6 : string +>`2${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var i3 = 1 + `${ 3 * 4 }` + 6; >i3 : string >1 + `${ 3 * 4 }` + 6 : string >1 + `${ 3 * 4 }` : string +>1 : number +>`${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var j3 = 1 + `2${ 3 * 4 }` + 6; >j3 : string >1 + `2${ 3 * 4 }` + 6 : string >1 + `2${ 3 * 4 }` : string +>1 : number +>`2${ 3 * 4 }` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var k3 = 1 + `${ 3 * 4 }5` + 6; >k3 : string >1 + `${ 3 * 4 }5` + 6 : string >1 + `${ 3 * 4 }5` : string +>1 : number +>`${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var l3 = 1 + `2${ 3 * 4 }5` + 6; >l3 : string >1 + `2${ 3 * 4 }5` + 6 : string >1 + `2${ 3 * 4 }5` : string +>1 : number +>`2${ 3 * 4 }5` : string >3 * 4 : number +>3 : number +>4 : number +>6 : number var a4 = 1 + `${ 3 & 4 }`; >a4 : string >1 + `${ 3 & 4 }` : string +>1 : number +>`${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number var b4 = 1 + `2${ 3 & 4 }`; >b4 : string >1 + `2${ 3 & 4 }` : string +>1 : number +>`2${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number var c4 = 1 + `${ 3 & 4 }5`; >c4 : string >1 + `${ 3 & 4 }5` : string +>1 : number +>`${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number var d4 = 1 + `2${ 3 & 4 }5`; >d4 : string >1 + `2${ 3 & 4 }5` : string +>1 : number +>`2${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number var e4 = `${ 3 & 4 }` + 6; >e4 : string >`${ 3 & 4 }` + 6 : string +>`${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var f4 = `2${ 3 & 4 }` + 6; >f4 : string >`2${ 3 & 4 }` + 6 : string +>`2${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var g4 = `${ 3 & 4 }5` + 6; >g4 : string >`${ 3 & 4 }5` + 6 : string +>`${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var h4 = `2${ 3 & 4 }5` + 6; >h4 : string >`2${ 3 & 4 }5` + 6 : string +>`2${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var i4 = 1 + `${ 3 & 4 }` + 6; >i4 : string >1 + `${ 3 & 4 }` + 6 : string >1 + `${ 3 & 4 }` : string +>1 : number +>`${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var j4 = 1 + `2${ 3 & 4 }` + 6; >j4 : string >1 + `2${ 3 & 4 }` + 6 : string >1 + `2${ 3 & 4 }` : string +>1 : number +>`2${ 3 & 4 }` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var k4 = 1 + `${ 3 & 4 }5` + 6; >k4 : string >1 + `${ 3 & 4 }5` + 6 : string >1 + `${ 3 & 4 }5` : string +>1 : number +>`${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number var l4 = 1 + `2${ 3 & 4 }5` + 6; >l4 : string >1 + `2${ 3 & 4 }5` + 6 : string >1 + `2${ 3 & 4 }5` : string +>1 : number +>`2${ 3 & 4 }5` : string >3 & 4 : number +>3 : number +>4 : number +>6 : number diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes01.types b/tests/baselines/reference/templateStringControlCharacterEscapes01.types index 9a7a04c99a4..3d3b6801d5f 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes01.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes01.types @@ -3,4 +3,5 @@ var x = `\0\x00\u0000 0 00 0000`; >x : string +>`\0\x00\u0000 0 00 0000` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes01_ES6.types b/tests/baselines/reference/templateStringControlCharacterEscapes01_ES6.types index 5decfbc2924..6744a6e7700 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes01_ES6.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes01_ES6.types @@ -2,4 +2,5 @@ var x = `\0\x00\u0000 0 00 0000`; >x : string +>`\0\x00\u0000 0 00 0000` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes02.types b/tests/baselines/reference/templateStringControlCharacterEscapes02.types index f47a3f69a77..9be908cc7b7 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes02.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes02.types @@ -3,4 +3,5 @@ var x = `\x19\u0019 19`; >x : string +>`\x19\u0019 19` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes02_ES6.types b/tests/baselines/reference/templateStringControlCharacterEscapes02_ES6.types index e7e123e0ab3..72116686d62 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes02_ES6.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes02_ES6.types @@ -2,4 +2,5 @@ var x = `\x19\u0019 19`; >x : string +>`\x19\u0019 19` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes03.types b/tests/baselines/reference/templateStringControlCharacterEscapes03.types index 23410460560..b2a944b2c21 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes03.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes03.types @@ -3,4 +3,5 @@ var x = `\x1F\u001f 1F 1f`; >x : string +>`\x1F\u001f 1F 1f` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes03_ES6.types b/tests/baselines/reference/templateStringControlCharacterEscapes03_ES6.types index 03642563b8a..ac296c10cdb 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes03_ES6.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes03_ES6.types @@ -2,4 +2,5 @@ var x = `\x1F\u001f 1F 1f`; >x : string +>`\x1F\u001f 1F 1f` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes04.types b/tests/baselines/reference/templateStringControlCharacterEscapes04.types index 00aca41a83a..07a674840fc 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes04.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes04.types @@ -3,4 +3,5 @@ var x = `\x20\u0020 20`; >x : string +>`\x20\u0020 20` : string diff --git a/tests/baselines/reference/templateStringControlCharacterEscapes04_ES6.types b/tests/baselines/reference/templateStringControlCharacterEscapes04_ES6.types index 0b993a8b2dc..5f1c1dab862 100644 --- a/tests/baselines/reference/templateStringControlCharacterEscapes04_ES6.types +++ b/tests/baselines/reference/templateStringControlCharacterEscapes04_ES6.types @@ -2,4 +2,5 @@ var x = `\x20\u0020 20`; >x : string +>`\x20\u0020 20` : string diff --git a/tests/baselines/reference/templateStringInArray.types b/tests/baselines/reference/templateStringInArray.types index ef727f59b24..04cc09a1005 100644 --- a/tests/baselines/reference/templateStringInArray.types +++ b/tests/baselines/reference/templateStringInArray.types @@ -2,4 +2,8 @@ var x = [1, 2, `abc${ 123 }def`]; >x : (string | number)[] >[1, 2, `abc${ 123 }def`] : (string | number)[] +>1 : number +>2 : number +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInArrowFunction.types b/tests/baselines/reference/templateStringInArrowFunction.types index 2c157815897..a059e440d5a 100644 --- a/tests/baselines/reference/templateStringInArrowFunction.types +++ b/tests/baselines/reference/templateStringInArrowFunction.types @@ -3,5 +3,6 @@ var x = x => `abc${ x }def`; >x : (x: any) => string >x => `abc${ x }def` : (x: any) => string >x : any +>`abc${ x }def` : string >x : any diff --git a/tests/baselines/reference/templateStringInArrowFunctionES6.types b/tests/baselines/reference/templateStringInArrowFunctionES6.types index 5f66590d490..72611067793 100644 --- a/tests/baselines/reference/templateStringInArrowFunctionES6.types +++ b/tests/baselines/reference/templateStringInArrowFunctionES6.types @@ -3,5 +3,6 @@ var x = x => `abc${ x }def`; >x : (x: any) => string >x => `abc${ x }def` : (x: any) => string >x : any +>`abc${ x }def` : string >x : any diff --git a/tests/baselines/reference/templateStringInConditional.types b/tests/baselines/reference/templateStringInConditional.types index b4ff36b3891..bb5de339533 100644 --- a/tests/baselines/reference/templateStringInConditional.types +++ b/tests/baselines/reference/templateStringInConditional.types @@ -2,4 +2,10 @@ var x = `abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def`; >x : string >`abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def` : string +>`abc${ " " }def` : string +>" " : string +>`abc${ " " }def` : string +>" " : string +>`abc${ " " }def` : string +>" " : string diff --git a/tests/baselines/reference/templateStringInConditionalES6.types b/tests/baselines/reference/templateStringInConditionalES6.types index c211ced2583..060b81b2ab7 100644 --- a/tests/baselines/reference/templateStringInConditionalES6.types +++ b/tests/baselines/reference/templateStringInConditionalES6.types @@ -2,4 +2,10 @@ var x = `abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def`; >x : string >`abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def` : string +>`abc${ " " }def` : string +>" " : string +>`abc${ " " }def` : string +>" " : string +>`abc${ " " }def` : string +>" " : string diff --git a/tests/baselines/reference/templateStringInDeleteExpression.types b/tests/baselines/reference/templateStringInDeleteExpression.types index 88693e5a9bb..ff950555fb9 100644 --- a/tests/baselines/reference/templateStringInDeleteExpression.types +++ b/tests/baselines/reference/templateStringInDeleteExpression.types @@ -1,4 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringInDeleteExpression.ts === delete `abc${0}abc`; >delete `abc${0}abc` : boolean +>`abc${0}abc` : string +>0 : number diff --git a/tests/baselines/reference/templateStringInDeleteExpressionES6.types b/tests/baselines/reference/templateStringInDeleteExpressionES6.types index d67d4d8c703..a182754dc68 100644 --- a/tests/baselines/reference/templateStringInDeleteExpressionES6.types +++ b/tests/baselines/reference/templateStringInDeleteExpressionES6.types @@ -1,4 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringInDeleteExpressionES6.ts === delete `abc${0}abc`; >delete `abc${0}abc` : boolean +>`abc${0}abc` : string +>0 : number diff --git a/tests/baselines/reference/templateStringInEqualityChecks.types b/tests/baselines/reference/templateStringInEqualityChecks.types index a942d4bce98..51a450e5245 100644 --- a/tests/baselines/reference/templateStringInEqualityChecks.types +++ b/tests/baselines/reference/templateStringInEqualityChecks.types @@ -3,15 +3,27 @@ var x = `abc${0}abc` === `abc` || >x : boolean >`abc${0}abc` === `abc` || `abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" && "abc0abc" !== `abc${0}abc` : boolean >`abc${0}abc` === `abc` : boolean +>`abc${0}abc` : string +>0 : number +>`abc` : string `abc` !== `abc${0}abc` && >`abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" && "abc0abc" !== `abc${0}abc` : boolean >`abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" : boolean >`abc` !== `abc${0}abc` : boolean +>`abc` : string +>`abc${0}abc` : string +>0 : number `abc${0}abc` == "abc0abc" && >`abc${0}abc` == "abc0abc" : boolean +>`abc${0}abc` : string +>0 : number +>"abc0abc" : string "abc0abc" !== `abc${0}abc`; >"abc0abc" !== `abc${0}abc` : boolean +>"abc0abc" : string +>`abc${0}abc` : string +>0 : number diff --git a/tests/baselines/reference/templateStringInEqualityChecksES6.types b/tests/baselines/reference/templateStringInEqualityChecksES6.types index ffe300ccd38..37e5e4a8c28 100644 --- a/tests/baselines/reference/templateStringInEqualityChecksES6.types +++ b/tests/baselines/reference/templateStringInEqualityChecksES6.types @@ -3,15 +3,27 @@ var x = `abc${0}abc` === `abc` || >x : boolean >`abc${0}abc` === `abc` || `abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" && "abc0abc" !== `abc${0}abc` : boolean >`abc${0}abc` === `abc` : boolean +>`abc${0}abc` : string +>0 : number +>`abc` : string `abc` !== `abc${0}abc` && >`abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" && "abc0abc" !== `abc${0}abc` : boolean >`abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" : boolean >`abc` !== `abc${0}abc` : boolean +>`abc` : string +>`abc${0}abc` : string +>0 : number `abc${0}abc` == "abc0abc" && >`abc${0}abc` == "abc0abc" : boolean +>`abc${0}abc` : string +>0 : number +>"abc0abc" : string "abc0abc" !== `abc${0}abc`; >"abc0abc" !== `abc${0}abc` : boolean +>"abc0abc" : string +>`abc${0}abc` : string +>0 : number diff --git a/tests/baselines/reference/templateStringInFunctionExpression.types b/tests/baselines/reference/templateStringInFunctionExpression.types index 1ec389488ec..62e34b5fc2d 100644 --- a/tests/baselines/reference/templateStringInFunctionExpression.types +++ b/tests/baselines/reference/templateStringInFunctionExpression.types @@ -5,5 +5,11 @@ var x = function y() { >y : () => string `abc${ 0 }def` +>`abc${ 0 }def` : string +>0 : number + return `abc${ 0 }def`; +>`abc${ 0 }def` : string +>0 : number + }; diff --git a/tests/baselines/reference/templateStringInFunctionExpressionES6.types b/tests/baselines/reference/templateStringInFunctionExpressionES6.types index a31558fbe37..268928125c5 100644 --- a/tests/baselines/reference/templateStringInFunctionExpressionES6.types +++ b/tests/baselines/reference/templateStringInFunctionExpressionES6.types @@ -5,5 +5,11 @@ var x = function y() { >y : () => string `abc${ 0 }def` +>`abc${ 0 }def` : string +>0 : number + return `abc${ 0 }def`; +>`abc${ 0 }def` : string +>0 : number + }; diff --git a/tests/baselines/reference/templateStringInInOperator.types b/tests/baselines/reference/templateStringInInOperator.types index da35bdc499c..881f37221fe 100644 --- a/tests/baselines/reference/templateStringInInOperator.types +++ b/tests/baselines/reference/templateStringInInOperator.types @@ -2,7 +2,11 @@ var x = `${ "hi" }` in { hi: 10, hello: 20}; >x : boolean >`${ "hi" }` in { hi: 10, hello: 20} : boolean +>`${ "hi" }` : string +>"hi" : string >{ hi: 10, hello: 20} : { hi: number; hello: number; } >hi : number +>10 : number >hello : number +>20 : number diff --git a/tests/baselines/reference/templateStringInInOperatorES6.types b/tests/baselines/reference/templateStringInInOperatorES6.types index 7af0d7a2f48..4297338ba56 100644 --- a/tests/baselines/reference/templateStringInInOperatorES6.types +++ b/tests/baselines/reference/templateStringInInOperatorES6.types @@ -2,7 +2,11 @@ var x = `${ "hi" }` in { hi: 10, hello: 20}; >x : boolean >`${ "hi" }` in { hi: 10, hello: 20} : boolean +>`${ "hi" }` : string +>"hi" : string >{ hi: 10, hello: 20} : { hi: number; hello: number; } >hi : number +>10 : number >hello : number +>20 : number diff --git a/tests/baselines/reference/templateStringInIndexExpression.types b/tests/baselines/reference/templateStringInIndexExpression.types index a0270b850ab..ff5461158ab 100644 --- a/tests/baselines/reference/templateStringInIndexExpression.types +++ b/tests/baselines/reference/templateStringInIndexExpression.types @@ -1,4 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringInIndexExpression.ts === `abc${0}abc`[`0`]; >`abc${0}abc`[`0`] : any +>`abc${0}abc` : string +>0 : number +>`0` : string diff --git a/tests/baselines/reference/templateStringInIndexExpressionES6.types b/tests/baselines/reference/templateStringInIndexExpressionES6.types index aceb22da529..153bed9f97a 100644 --- a/tests/baselines/reference/templateStringInIndexExpressionES6.types +++ b/tests/baselines/reference/templateStringInIndexExpressionES6.types @@ -1,4 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringInIndexExpressionES6.ts === `abc${0}abc`[`0`]; >`abc${0}abc`[`0`] : any +>`abc${0}abc` : string +>0 : number +>`0` : string diff --git a/tests/baselines/reference/templateStringInParentheses.types b/tests/baselines/reference/templateStringInParentheses.types index 7e597dc0108..29436a32d2a 100644 --- a/tests/baselines/reference/templateStringInParentheses.types +++ b/tests/baselines/reference/templateStringInParentheses.types @@ -2,4 +2,6 @@ var x = (`abc${0}abc`); >x : string >(`abc${0}abc`) : string +>`abc${0}abc` : string +>0 : number diff --git a/tests/baselines/reference/templateStringInParenthesesES6.types b/tests/baselines/reference/templateStringInParenthesesES6.types index 3afb3530dee..0d4d89ef3a9 100644 --- a/tests/baselines/reference/templateStringInParenthesesES6.types +++ b/tests/baselines/reference/templateStringInParenthesesES6.types @@ -2,4 +2,6 @@ var x = (`abc${0}abc`); >x : string >(`abc${0}abc`) : string +>`abc${0}abc` : string +>0 : number diff --git a/tests/baselines/reference/templateStringInPropertyAssignment.types b/tests/baselines/reference/templateStringInPropertyAssignment.types index ff5ecb410db..a8ba0351311 100644 --- a/tests/baselines/reference/templateStringInPropertyAssignment.types +++ b/tests/baselines/reference/templateStringInPropertyAssignment.types @@ -5,4 +5,7 @@ var x = { a: `abc${ 123 }def${ 456 }ghi` >a : string +>`abc${ 123 }def${ 456 }ghi` : string +>123 : number +>456 : number } diff --git a/tests/baselines/reference/templateStringInPropertyAssignmentES6.types b/tests/baselines/reference/templateStringInPropertyAssignmentES6.types index fafc9f12a48..5da8d9ac6f9 100644 --- a/tests/baselines/reference/templateStringInPropertyAssignmentES6.types +++ b/tests/baselines/reference/templateStringInPropertyAssignmentES6.types @@ -5,4 +5,7 @@ var x = { a: `abc${ 123 }def${ 456 }ghi` >a : string +>`abc${ 123 }def${ 456 }ghi` : string +>123 : number +>456 : number } diff --git a/tests/baselines/reference/templateStringInSwitchAndCase.types b/tests/baselines/reference/templateStringInSwitchAndCase.types index 26ec05dbca6..0949aa21fde 100644 --- a/tests/baselines/reference/templateStringInSwitchAndCase.types +++ b/tests/baselines/reference/templateStringInSwitchAndCase.types @@ -1,8 +1,19 @@ === tests/cases/conformance/es6/templates/templateStringInSwitchAndCase.ts === switch (`abc${0}abc`) { -No type information for this code. case `abc`: -No type information for this code. case `123`: -No type information for this code. case `abc${0}abc`: -No type information for this code. `def${1}def`; -No type information for this code.} -No type information for this code. \ No newline at end of file +>`abc${0}abc` : string +>0 : number + + case `abc`: +>`abc` : string + + case `123`: +>`123` : string + + case `abc${0}abc`: +>`abc${0}abc` : string +>0 : number + + `def${1}def`; +>`def${1}def` : string +>1 : number +} diff --git a/tests/baselines/reference/templateStringInSwitchAndCaseES6.types b/tests/baselines/reference/templateStringInSwitchAndCaseES6.types index 6bd8772ff49..a9ba35c8599 100644 --- a/tests/baselines/reference/templateStringInSwitchAndCaseES6.types +++ b/tests/baselines/reference/templateStringInSwitchAndCaseES6.types @@ -1,8 +1,19 @@ === tests/cases/conformance/es6/templates/templateStringInSwitchAndCaseES6.ts === switch (`abc${0}abc`) { -No type information for this code. case `abc`: -No type information for this code. case `123`: -No type information for this code. case `abc${0}abc`: -No type information for this code. `def${1}def`; -No type information for this code.} -No type information for this code. \ No newline at end of file +>`abc${0}abc` : string +>0 : number + + case `abc`: +>`abc` : string + + case `123`: +>`123` : string + + case `abc${0}abc`: +>`abc${0}abc` : string +>0 : number + + `def${1}def`; +>`def${1}def` : string +>1 : number +} diff --git a/tests/baselines/reference/templateStringInTypeAssertion.types b/tests/baselines/reference/templateStringInTypeAssertion.types index 006ba12c1c6..73ed437adb3 100644 --- a/tests/baselines/reference/templateStringInTypeAssertion.types +++ b/tests/baselines/reference/templateStringInTypeAssertion.types @@ -2,4 +2,6 @@ var x = `abc${ 123 }def`; >x : any >`abc${ 123 }def` : any +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInTypeAssertionES6.types b/tests/baselines/reference/templateStringInTypeAssertionES6.types index 26d7ccc2e60..26d4689f939 100644 --- a/tests/baselines/reference/templateStringInTypeAssertionES6.types +++ b/tests/baselines/reference/templateStringInTypeAssertionES6.types @@ -2,4 +2,6 @@ var x = `abc${ 123 }def`; >x : any >`abc${ 123 }def` : any +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInTypeOf.types b/tests/baselines/reference/templateStringInTypeOf.types index 8b94bc7ea1a..550828b3a47 100644 --- a/tests/baselines/reference/templateStringInTypeOf.types +++ b/tests/baselines/reference/templateStringInTypeOf.types @@ -2,4 +2,6 @@ var x = typeof `abc${ 123 }def`; >x : string >typeof `abc${ 123 }def` : string +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInTypeOfES6.types b/tests/baselines/reference/templateStringInTypeOfES6.types index 457af8de0de..b04e37426a4 100644 --- a/tests/baselines/reference/templateStringInTypeOfES6.types +++ b/tests/baselines/reference/templateStringInTypeOfES6.types @@ -2,4 +2,6 @@ var x = typeof `abc${ 123 }def`; >x : string >typeof `abc${ 123 }def` : string +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInUnaryPlus.types b/tests/baselines/reference/templateStringInUnaryPlus.types index 4746f2c1fc7..bab86198433 100644 --- a/tests/baselines/reference/templateStringInUnaryPlus.types +++ b/tests/baselines/reference/templateStringInUnaryPlus.types @@ -2,4 +2,6 @@ var x = +`abc${ 123 }def`; >x : number >+`abc${ 123 }def` : number +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInUnaryPlusES6.types b/tests/baselines/reference/templateStringInUnaryPlusES6.types index 67ad03fc53c..d632e8e2965 100644 --- a/tests/baselines/reference/templateStringInUnaryPlusES6.types +++ b/tests/baselines/reference/templateStringInUnaryPlusES6.types @@ -2,4 +2,6 @@ var x = +`abc${ 123 }def`; >x : number >+`abc${ 123 }def` : number +>`abc${ 123 }def` : string +>123 : number diff --git a/tests/baselines/reference/templateStringInWhile.types b/tests/baselines/reference/templateStringInWhile.types index 1b080f31f1c..fe4931455e2 100644 --- a/tests/baselines/reference/templateStringInWhile.types +++ b/tests/baselines/reference/templateStringInWhile.types @@ -1,5 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringInWhile.ts === while (`abc${0}abc`) { -No type information for this code. `def${1}def`; -No type information for this code.} -No type information for this code. \ No newline at end of file +>`abc${0}abc` : string +>0 : number + + `def${1}def`; +>`def${1}def` : string +>1 : number +} diff --git a/tests/baselines/reference/templateStringInWhileES6.types b/tests/baselines/reference/templateStringInWhileES6.types index d4ef3b02fe2..ef2c3d02cae 100644 --- a/tests/baselines/reference/templateStringInWhileES6.types +++ b/tests/baselines/reference/templateStringInWhileES6.types @@ -1,5 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringInWhileES6.ts === while (`abc${0}abc`) { -No type information for this code. `def${1}def`; -No type information for this code.} -No type information for this code. \ No newline at end of file +>`abc${0}abc` : string +>0 : number + + `def${1}def`; +>`def${1}def` : string +>1 : number +} diff --git a/tests/baselines/reference/templateStringMultiline1.types b/tests/baselines/reference/templateStringMultiline1.types index 3b169c1b1cb..521d2a8382f 100644 --- a/tests/baselines/reference/templateStringMultiline1.types +++ b/tests/baselines/reference/templateStringMultiline1.types @@ -1,8 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringMultiline1.ts === -No type information for this code. -No type information for this code.// newlines are -No type information for this code.` -No type information for this code.\ -No type information for this code.` -No type information for this code. \ No newline at end of file + +// newlines are +` +>`\` : string + +\ +` diff --git a/tests/baselines/reference/templateStringMultiline1_ES6.types b/tests/baselines/reference/templateStringMultiline1_ES6.types index 5e4716ac607..36e60c240f9 100644 --- a/tests/baselines/reference/templateStringMultiline1_ES6.types +++ b/tests/baselines/reference/templateStringMultiline1_ES6.types @@ -1,7 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringMultiline1_ES6.ts === -No type information for this code.// newlines are -No type information for this code.` -No type information for this code.\ -No type information for this code.` -No type information for this code. \ No newline at end of file +// newlines are +` +>`\` : string + +\ +` diff --git a/tests/baselines/reference/templateStringMultiline2.types b/tests/baselines/reference/templateStringMultiline2.types index b4b341416c9..97f7f1bd577 100644 --- a/tests/baselines/reference/templateStringMultiline2.types +++ b/tests/baselines/reference/templateStringMultiline2.types @@ -1,8 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringMultiline2.ts === -No type information for this code. -No type information for this code.// newlines are -No type information for this code.` -No type information for this code.\ -No type information for this code.` -No type information for this code. \ No newline at end of file + +// newlines are +` +>`\` : string + +\ +` diff --git a/tests/baselines/reference/templateStringMultiline2_ES6.types b/tests/baselines/reference/templateStringMultiline2_ES6.types index 288191d3d0f..e05b245cfc7 100644 --- a/tests/baselines/reference/templateStringMultiline2_ES6.types +++ b/tests/baselines/reference/templateStringMultiline2_ES6.types @@ -1,7 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringMultiline2_ES6.ts === -No type information for this code.// newlines are -No type information for this code.` -No type information for this code.\ -No type information for this code.` -No type information for this code. \ No newline at end of file +// newlines are +` +>`\` : string + +\ +` diff --git a/tests/baselines/reference/templateStringMultiline3.types b/tests/baselines/reference/templateStringMultiline3.types index a0e1f6f8871..d059e2fc146 100644 --- a/tests/baselines/reference/templateStringMultiline3.types +++ b/tests/baselines/reference/templateStringMultiline3.types @@ -1,8 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringMultiline3.ts === -No type information for this code. -No type information for this code.// newlines are -No type information for this code.` -No type information for this code.\ -No type information for this code.` -No type information for this code. \ No newline at end of file + +// newlines are +` +>`\` : string + +\ +` diff --git a/tests/baselines/reference/templateStringMultiline3_ES6.types b/tests/baselines/reference/templateStringMultiline3_ES6.types index e4fa8a7edf4..5cb97d1b8b4 100644 --- a/tests/baselines/reference/templateStringMultiline3_ES6.types +++ b/tests/baselines/reference/templateStringMultiline3_ES6.types @@ -1,7 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringMultiline3_ES6.ts === -No type information for this code.// newlines are -No type information for this code.` -No type information for this code.\ -No type information for this code.` -No type information for this code. \ No newline at end of file +// newlines are +` +>`\` : string + +\ +` diff --git a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01.types b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01.types index 2b77345f8ff..e64394e106f 100644 --- a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01.types +++ b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringPlainCharactersThatArePartsOfEscapes01.ts === -No type information for this code.`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` -No type information for this code. \ No newline at end of file +`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` +>`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` : string + diff --git a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01_ES6.types b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01_ES6.types index 33c8839e194..0f49547ba70 100644 --- a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01_ES6.types +++ b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes01_ES6.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringPlainCharactersThatArePartsOfEscapes01_ES6.ts === -No type information for this code.`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` -No type information for this code. \ No newline at end of file +`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` +>`0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2028 2029 0085 t v f b r n` : string + diff --git a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types index f630d9e71e6..e7cc81af06c 100644 --- a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types +++ b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types @@ -1,5 +1,35 @@ === tests/cases/conformance/es6/templates/templateStringPlainCharactersThatArePartsOfEscapes02.ts === -No type information for this code. -No type information for this code.`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` -No type information for this code. \ No newline at end of file + +`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` +>`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string + diff --git a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types index 934e0fc495c..9b91b5db72c 100644 --- a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types +++ b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types @@ -1,4 +1,34 @@ === tests/cases/conformance/es6/templates/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.ts === -No type information for this code.`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` -No type information for this code. \ No newline at end of file +`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` +>`0${ " " }1${ " " }2${ " " }3${ " " }4${ " " }5${ " " }6${ " " }7${ " " }8${ " " }9${ " " }10${ " " }11${ " " }12${ " " }13${ " " }14${ " " }15${ " " }16${ " " }17${ " " }18${ " " }19${ " " }20${ " " }2028${ " " }2029${ " " }0085${ " " }t${ " " }v${ " " }f${ " " }b${ " " }r${ " " }n` : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string +>" " : string + diff --git a/tests/baselines/reference/templateStringTermination1.types b/tests/baselines/reference/templateStringTermination1.types index 5c3cf73af45..bdfa46ec46c 100644 --- a/tests/baselines/reference/templateStringTermination1.types +++ b/tests/baselines/reference/templateStringTermination1.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringTermination1.ts === -No type information for this code.`` -No type information for this code. \ No newline at end of file +`` +>`` : string + diff --git a/tests/baselines/reference/templateStringTermination1_ES6.types b/tests/baselines/reference/templateStringTermination1_ES6.types index b0829b31b67..9aa852a576a 100644 --- a/tests/baselines/reference/templateStringTermination1_ES6.types +++ b/tests/baselines/reference/templateStringTermination1_ES6.types @@ -1,3 +1,4 @@ === tests/cases/conformance/es6/templates/templateStringTermination1_ES6.ts === `` -No type information for this code. \ No newline at end of file +>`` : string + diff --git a/tests/baselines/reference/templateStringTermination2.types b/tests/baselines/reference/templateStringTermination2.types index 927f257c21f..d5e6f9e15a9 100644 --- a/tests/baselines/reference/templateStringTermination2.types +++ b/tests/baselines/reference/templateStringTermination2.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringTermination2.ts === -No type information for this code.`\\` -No type information for this code. \ No newline at end of file +`\\` +>`\\` : string + diff --git a/tests/baselines/reference/templateStringTermination2_ES6.types b/tests/baselines/reference/templateStringTermination2_ES6.types index 21bc0e07a23..bd8859a493f 100644 --- a/tests/baselines/reference/templateStringTermination2_ES6.types +++ b/tests/baselines/reference/templateStringTermination2_ES6.types @@ -1,3 +1,4 @@ === tests/cases/conformance/es6/templates/templateStringTermination2_ES6.ts === `\\` -No type information for this code. \ No newline at end of file +>`\\` : string + diff --git a/tests/baselines/reference/templateStringTermination3.types b/tests/baselines/reference/templateStringTermination3.types index a59aef6bfea..0338dbf4c84 100644 --- a/tests/baselines/reference/templateStringTermination3.types +++ b/tests/baselines/reference/templateStringTermination3.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringTermination3.ts === -No type information for this code.`\`` -No type information for this code. \ No newline at end of file +`\`` +>`\`` : string + diff --git a/tests/baselines/reference/templateStringTermination3_ES6.types b/tests/baselines/reference/templateStringTermination3_ES6.types index 8d0119ee5c7..86ed6373bab 100644 --- a/tests/baselines/reference/templateStringTermination3_ES6.types +++ b/tests/baselines/reference/templateStringTermination3_ES6.types @@ -1,3 +1,4 @@ === tests/cases/conformance/es6/templates/templateStringTermination3_ES6.ts === `\`` -No type information for this code. \ No newline at end of file +>`\`` : string + diff --git a/tests/baselines/reference/templateStringTermination4.types b/tests/baselines/reference/templateStringTermination4.types index ecf2ad9749f..da45817ddd0 100644 --- a/tests/baselines/reference/templateStringTermination4.types +++ b/tests/baselines/reference/templateStringTermination4.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringTermination4.ts === -No type information for this code.`\\\\` -No type information for this code. \ No newline at end of file +`\\\\` +>`\\\\` : string + diff --git a/tests/baselines/reference/templateStringTermination4_ES6.types b/tests/baselines/reference/templateStringTermination4_ES6.types index 18f5d6f7bd7..92c07f768a4 100644 --- a/tests/baselines/reference/templateStringTermination4_ES6.types +++ b/tests/baselines/reference/templateStringTermination4_ES6.types @@ -1,3 +1,4 @@ === tests/cases/conformance/es6/templates/templateStringTermination4_ES6.ts === `\\\\` -No type information for this code. \ No newline at end of file +>`\\\\` : string + diff --git a/tests/baselines/reference/templateStringTermination5.types b/tests/baselines/reference/templateStringTermination5.types index 8ae94a18038..87641ff2298 100644 --- a/tests/baselines/reference/templateStringTermination5.types +++ b/tests/baselines/reference/templateStringTermination5.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringTermination5.ts === -No type information for this code.`\\\\\\` -No type information for this code. \ No newline at end of file +`\\\\\\` +>`\\\\\\` : string + diff --git a/tests/baselines/reference/templateStringTermination5_ES6.types b/tests/baselines/reference/templateStringTermination5_ES6.types index c687c51df9f..193608250d9 100644 --- a/tests/baselines/reference/templateStringTermination5_ES6.types +++ b/tests/baselines/reference/templateStringTermination5_ES6.types @@ -1,3 +1,4 @@ === tests/cases/conformance/es6/templates/templateStringTermination5_ES6.ts === `\\\\\\` -No type information for this code. \ No newline at end of file +>`\\\\\\` : string + diff --git a/tests/baselines/reference/templateStringWhitespaceEscapes1.types b/tests/baselines/reference/templateStringWhitespaceEscapes1.types index 6c1598e0549..1aa3d2b4924 100644 --- a/tests/baselines/reference/templateStringWhitespaceEscapes1.types +++ b/tests/baselines/reference/templateStringWhitespaceEscapes1.types @@ -1,5 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWhitespaceEscapes1.ts === -No type information for this code. -No type information for this code.`\t\n\v\f\r`; -No type information for this code. \ No newline at end of file + +`\t\n\v\f\r`; +>`\t\n\v\f\r` : string + diff --git a/tests/baselines/reference/templateStringWhitespaceEscapes1_ES6.types b/tests/baselines/reference/templateStringWhitespaceEscapes1_ES6.types index 53a6c6f9cf9..25e0134afbe 100644 --- a/tests/baselines/reference/templateStringWhitespaceEscapes1_ES6.types +++ b/tests/baselines/reference/templateStringWhitespaceEscapes1_ES6.types @@ -1,4 +1,5 @@ === tests/cases/conformance/es6/templates/templateStringWhitespaceEscapes1_ES6.ts === -No type information for this code.`\t\n\v\f\r`; -No type information for this code. \ No newline at end of file +`\t\n\v\f\r`; +>`\t\n\v\f\r` : string + diff --git a/tests/baselines/reference/templateStringWhitespaceEscapes2.types b/tests/baselines/reference/templateStringWhitespaceEscapes2.types index 7c7de875379..14f029cf999 100644 --- a/tests/baselines/reference/templateStringWhitespaceEscapes2.types +++ b/tests/baselines/reference/templateStringWhitespaceEscapes2.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWhitespaceEscapes2.ts === -No type information for this code. -No type information for this code.// , , , , , -No type information for this code.`\u0009\u000B\u000C\u0020\u00A0\uFEFF`; -No type information for this code. \ No newline at end of file + +// , , , , , +`\u0009\u000B\u000C\u0020\u00A0\uFEFF`; +>`\u0009\u000B\u000C\u0020\u00A0\uFEFF` : string + diff --git a/tests/baselines/reference/templateStringWhitespaceEscapes2_ES6.types b/tests/baselines/reference/templateStringWhitespaceEscapes2_ES6.types index 834ce22cc32..ff509c1913f 100644 --- a/tests/baselines/reference/templateStringWhitespaceEscapes2_ES6.types +++ b/tests/baselines/reference/templateStringWhitespaceEscapes2_ES6.types @@ -1,5 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWhitespaceEscapes2_ES6.ts === -No type information for this code.// , , , , , -No type information for this code.`\u0009\u000B\u000C\u0020\u00A0\uFEFF`; -No type information for this code. \ No newline at end of file +// , , , , , +`\u0009\u000B\u000C\u0020\u00A0\uFEFF`; +>`\u0009\u000B\u000C\u0020\u00A0\uFEFF` : string + diff --git a/tests/baselines/reference/templateStringWithEmbeddedAddition.types b/tests/baselines/reference/templateStringWithEmbeddedAddition.types index 3a6bf864cb6..02173dc026f 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedAddition.types +++ b/tests/baselines/reference/templateStringWithEmbeddedAddition.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedAddition.ts === var x = `abc${ 10 + 10 }def`; >x : string +>`abc${ 10 + 10 }def` : string >10 + 10 : number +>10 : number +>10 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types b/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types index 699162a3783..ec33cee95f1 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedAdditionES6.ts === var x = `abc${ 10 + 10 }def`; >x : string +>`abc${ 10 + 10 }def` : string >10 + 10 : number +>10 : number +>10 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedArray.types b/tests/baselines/reference/templateStringWithEmbeddedArray.types index 4c022d8a401..2842936c502 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArray.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArray.types @@ -1,5 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArray.ts === var x = `abc${ [1,2,3] }def`; >x : string +>`abc${ [1,2,3] }def` : string >[1,2,3] : number[] +>1 : number +>2 : number +>3 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types b/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types index 06876fa3f0e..2f8e67f0539 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types @@ -1,5 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArrayES6.ts === var x = `abc${ [1,2,3] }def`; >x : string +>`abc${ [1,2,3] }def` : string >[1,2,3] : number[] +>1 : number +>2 : number +>3 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types b/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types index d6f25761999..9e8d81e7ab8 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArrowFunction.ts === var x = `abc${ x => x }def`; >x : string +>`abc${ x => x }def` : string >x => x : (x: any) => any >x : any >x : any diff --git a/tests/baselines/reference/templateStringWithEmbeddedArrowFunctionES6.types b/tests/baselines/reference/templateStringWithEmbeddedArrowFunctionES6.types index 748f457f22b..a7adad63130 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArrowFunctionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArrowFunctionES6.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArrowFunctionES6.ts === var x = `abc${ x => x }def`; >x : string +>`abc${ x => x }def` : string >x => x : (x: any) => any >x : any >x : any diff --git a/tests/baselines/reference/templateStringWithEmbeddedComments.types b/tests/baselines/reference/templateStringWithEmbeddedComments.types index a375ef6ab6f..46a5fd3b091 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedComments.types +++ b/tests/baselines/reference/templateStringWithEmbeddedComments.types @@ -1,14 +1,18 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedComments.ts === `head${ // single line comment -No type information for this code.10 -No type information for this code.} -No type information for this code.middle${ -No type information for this code./* Multi- -No type information for this code. * line -No type information for this code. * comment -No type information for this code. */ -No type information for this code. 20 -No type information for this code. // closing comment -No type information for this code.} -No type information for this code.tail`; -No type information for this code. \ No newline at end of file +>`head${ // single line comment10}middle${/* Multi- * line * comment */ 20 // closing comment}tail` : string + +10 +>10 : number +} +middle${ +/* Multi- + * line + * comment + */ + 20 +>20 : number + + // closing comment +} +tail`; diff --git a/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types b/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types index 0c79ee294d9..0eaf40cafac 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types @@ -1,14 +1,18 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedCommentsES6.ts === `head${ // single line comment -No type information for this code.10 -No type information for this code.} -No type information for this code.middle${ -No type information for this code./* Multi- -No type information for this code. * line -No type information for this code. * comment -No type information for this code. */ -No type information for this code. 20 -No type information for this code. // closing comment -No type information for this code.} -No type information for this code.tail`; -No type information for this code. \ No newline at end of file +>`head${ // single line comment10}middle${/* Multi- * line * comment */ 20 // closing comment}tail` : string + +10 +>10 : number +} +middle${ +/* Multi- + * line + * comment + */ + 20 +>20 : number + + // closing comment +} +tail`; diff --git a/tests/baselines/reference/templateStringWithEmbeddedConditional.types b/tests/baselines/reference/templateStringWithEmbeddedConditional.types index de4249792e7..7ec1ef97a30 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedConditional.types +++ b/tests/baselines/reference/templateStringWithEmbeddedConditional.types @@ -1,5 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedConditional.ts === var x = `abc${ true ? false : " " }def`; >x : string +>`abc${ true ? false : " " }def` : string >true ? false : " " : string | boolean +>true : boolean +>false : boolean +>" " : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types b/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types index 3fa96510f41..5453880ce16 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types @@ -1,5 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedConditionalES6.ts === var x = `abc${ true ? false : " " }def`; >x : string +>`abc${ true ? false : " " }def` : string >true ? false : " " : string | boolean +>true : boolean +>false : boolean +>" " : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedDivision.types b/tests/baselines/reference/templateStringWithEmbeddedDivision.types index e742733a23c..440d162933b 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedDivision.types +++ b/tests/baselines/reference/templateStringWithEmbeddedDivision.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedDivision.ts === var x = `abc${ 1 / 1 }def`; >x : string +>`abc${ 1 / 1 }def` : string >1 / 1 : number +>1 : number +>1 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types b/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types index 20bdc9449d1..7a5980bae9e 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedDivisionES6.ts === var x = `abc${ 1 / 1 }def`; >x : string +>`abc${ 1 / 1 }def` : string >1 / 1 : number +>1 : number +>1 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types index e66313848a6..19a37ae86f4 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types +++ b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedFunctionExpression.ts === var x = `abc${ function y() { return y; } }def`; >x : string +>`abc${ function y() { return y; } }def` : string >function y() { return y; } : () => any >y : () => any >y : () => any diff --git a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpressionES6.types b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpressionES6.types index e5c55c2736c..c7a4f2e2bc4 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpressionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpressionES6.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedFunctionExpressionES6.ts === var x = `abc${ function y() { return y; } }def`; >x : string +>`abc${ function y() { return y; } }def` : string >function y() { return y; } : () => any >y : () => any >y : () => any diff --git a/tests/baselines/reference/templateStringWithEmbeddedInOperator.types b/tests/baselines/reference/templateStringWithEmbeddedInOperator.types index bff1ea66e1d..d693dd276d1 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedInOperator.types +++ b/tests/baselines/reference/templateStringWithEmbeddedInOperator.types @@ -1,8 +1,12 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedInOperator.ts === var x = `abc${ "hi" in { hi: 10, hello: 20} }def`; >x : string +>`abc${ "hi" in { hi: 10, hello: 20} }def` : string >"hi" in { hi: 10, hello: 20} : boolean +>"hi" : string >{ hi: 10, hello: 20} : { hi: number; hello: number; } >hi : number +>10 : number >hello : number +>20 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types b/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types index 6bba79af40d..ff5be5f4d82 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types @@ -1,8 +1,12 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedInOperatorES6.ts === var x = `abc${ "hi" in { hi: 10, hello: 20} }def`; >x : string +>`abc${ "hi" in { hi: 10, hello: 20} }def` : string >"hi" in { hi: 10, hello: 20} : boolean +>"hi" : string >{ hi: 10, hello: 20} : { hi: number; hello: number; } >hi : number +>10 : number >hello : number +>20 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedModulo.types b/tests/baselines/reference/templateStringWithEmbeddedModulo.types index 0c24f566846..fc5d3d2560d 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedModulo.types +++ b/tests/baselines/reference/templateStringWithEmbeddedModulo.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedModulo.ts === var x = `abc${ 1 % 1 }def`; >x : string +>`abc${ 1 % 1 }def` : string >1 % 1 : number +>1 : number +>1 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types b/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types index 02f42a956b9..35ae5473bef 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedModuloES6.ts === var x = `abc${ 1 % 1 }def`; >x : string +>`abc${ 1 % 1 }def` : string >1 % 1 : number +>1 : number +>1 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types b/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types index 60c7bab0d1e..6d81cabc169 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types +++ b/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedMultiplication.ts === var x = `abc${ 7 * 6 }def`; >x : string +>`abc${ 7 * 6 }def` : string >7 * 6 : number +>7 : number +>6 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types b/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types index 5c078b9c1ed..c4235f8535e 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types @@ -1,5 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedMultiplicationES6.ts === var x = `abc${ 7 * 6 }def`; >x : string +>`abc${ 7 * 6 }def` : string >7 * 6 : number +>7 : number +>6 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types b/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types index d5b038d3445..bcc90c42c74 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types @@ -1,6 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperator.ts === var x = `abc${ new String("Hi") }def`; >x : string +>`abc${ new String("Hi") }def` : string >new String("Hi") : String >String : StringConstructor +>"Hi" : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types index d6899f3eb53..be58edbe4d8 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types @@ -1,6 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperatorES6.ts === var x = `abc${ new String("Hi") }def`; >x : string +>`abc${ new String("Hi") }def` : string >new String("Hi") : String >String : StringConstructor +>"Hi" : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types index 0b053e532d8..0ff7fc140bb 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types +++ b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types @@ -1,7 +1,10 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedObjectLiteral.ts === var x = `abc${ { x: 10, y: 20 } }def`; >x : string +>`abc${ { x: 10, y: 20 } }def` : string >{ x: 10, y: 20 } : { x: number; y: number; } >x : number +>10 : number >y : number +>20 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types index 1cf1783fec8..4a5df4707b7 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types @@ -1,7 +1,10 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedObjectLiteralES6.ts === var x = `abc${ { x: 10, y: 20 } }def`; >x : string +>`abc${ { x: 10, y: 20 } }def` : string >{ x: 10, y: 20 } : { x: number; y: number; } >x : number +>10 : number >y : number +>20 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types b/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types index f63f684222e..acda0c7a7ec 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types @@ -1,4 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTemplateString.ts === var x = `123${ `456 ${ " | " } 654` }321 123${ `456 ${ " | " } 654` }321`; >x : string +>`123${ `456 ${ " | " } 654` }321 123${ `456 ${ " | " } 654` }321` : string +>`456 ${ " | " } 654` : string +>" | " : string +>`456 ${ " | " } 654` : string +>" | " : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types b/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types index 05816bbcbce..252765cb7c0 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types @@ -1,4 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTemplateStringES6.ts === var x = `123${ `456 ${ " | " } 654` }321 123${ `456 ${ " | " } 654` }321`; >x : string +>`123${ `456 ${ " | " } 654` }321 123${ `456 ${ " | " } 654` }321` : string +>`456 ${ " | " } 654` : string +>" | " : string +>`456 ${ " | " } 654` : string +>" | " : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types index 8b0b5ab37d0..98254cad8b7 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types @@ -1,7 +1,10 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeAssertionOnAddition.ts === var x = `abc${ (10 + 10) }def`; >x : string +>`abc${ (10 + 10) }def` : string >(10 + 10) : any >(10 + 10) : number >10 + 10 : number +>10 : number +>10 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types index 007fdb64736..ac74625f57a 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types @@ -1,7 +1,10 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeAssertionOnAdditionES6.ts === var x = `abc${ (10 + 10) }def`; >x : string +>`abc${ (10 + 10) }def` : string >(10 + 10) : any >(10 + 10) : number >10 + 10 : number +>10 : number +>10 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types index ebf391981f1..e63ea3aac69 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types @@ -1,5 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeOfOperator.ts === var x = `abc${ typeof "hi" }def`; >x : string +>`abc${ typeof "hi" }def` : string >typeof "hi" : string +>"hi" : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types index cf14a0a0880..0692eaccb5e 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types @@ -1,5 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeOfOperatorES6.ts === var x = `abc${ typeof "hi" }def`; >x : string +>`abc${ typeof "hi" }def` : string >typeof "hi" : string +>"hi" : string diff --git a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types index 62ffab420ad..9c6c4bc9213 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types +++ b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedUnaryPlus.ts === var x = `abc${ +Infinity }def`; >x : string +>`abc${ +Infinity }def` : string >+Infinity : number >Infinity : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types index 7a002d79b6f..4a957f636e6 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types @@ -1,6 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedUnaryPlusES6.ts === var x = `abc${ +Infinity }def`; >x : string +>`abc${ +Infinity }def` : string >+Infinity : number >Infinity : number diff --git a/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types b/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types index c901d674306..f88ca5e7493 100644 --- a/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types +++ b/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types @@ -1,40 +1,73 @@ === tests/cases/conformance/es6/templates/templateStringWithEmptyLiteralPortions.ts === var a = ``; >a : string +>`` : string var b = `${ 0 }`; >b : string +>`${ 0 }` : string +>0 : number var c = `1${ 0 }`; >c : string +>`1${ 0 }` : string +>0 : number var d = `${ 0 }2`; >d : string +>`${ 0 }2` : string +>0 : number var e = `1${ 0 }2`; >e : string +>`1${ 0 }2` : string +>0 : number var f = `${ 0 }${ 0 }`; >f : string +>`${ 0 }${ 0 }` : string +>0 : number +>0 : number var g = `1${ 0 }${ 0 }`; >g : string +>`1${ 0 }${ 0 }` : string +>0 : number +>0 : number var h = `${ 0 }2${ 0 }`; >h : string +>`${ 0 }2${ 0 }` : string +>0 : number +>0 : number var i = `1${ 0 }2${ 0 }`; >i : string +>`1${ 0 }2${ 0 }` : string +>0 : number +>0 : number var j = `${ 0 }${ 0 }3`; >j : string +>`${ 0 }${ 0 }3` : string +>0 : number +>0 : number var k = `1${ 0 }${ 0 }3`; >k : string +>`1${ 0 }${ 0 }3` : string +>0 : number +>0 : number var l = `${ 0 }2${ 0 }3`; >l : string +>`${ 0 }2${ 0 }3` : string +>0 : number +>0 : number var m = `1${ 0 }2${ 0 }3`; >m : string +>`1${ 0 }2${ 0 }3` : string +>0 : number +>0 : number diff --git a/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types b/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types index d70dd29e4da..068da7f9484 100644 --- a/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types +++ b/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types @@ -1,40 +1,73 @@ === tests/cases/conformance/es6/templates/templateStringWithEmptyLiteralPortionsES6.ts === var a = ``; >a : string +>`` : string var b = `${ 0 }`; >b : string +>`${ 0 }` : string +>0 : number var c = `1${ 0 }`; >c : string +>`1${ 0 }` : string +>0 : number var d = `${ 0 }2`; >d : string +>`${ 0 }2` : string +>0 : number var e = `1${ 0 }2`; >e : string +>`1${ 0 }2` : string +>0 : number var f = `${ 0 }${ 0 }`; >f : string +>`${ 0 }${ 0 }` : string +>0 : number +>0 : number var g = `1${ 0 }${ 0 }`; >g : string +>`1${ 0 }${ 0 }` : string +>0 : number +>0 : number var h = `${ 0 }2${ 0 }`; >h : string +>`${ 0 }2${ 0 }` : string +>0 : number +>0 : number var i = `1${ 0 }2${ 0 }`; >i : string +>`1${ 0 }2${ 0 }` : string +>0 : number +>0 : number var j = `${ 0 }${ 0 }3`; >j : string +>`${ 0 }${ 0 }3` : string +>0 : number +>0 : number var k = `1${ 0 }${ 0 }3`; >k : string +>`1${ 0 }${ 0 }3` : string +>0 : number +>0 : number var l = `${ 0 }2${ 0 }3`; >l : string +>`${ 0 }2${ 0 }3` : string +>0 : number +>0 : number var m = `1${ 0 }2${ 0 }3`; >m : string +>`1${ 0 }2${ 0 }3` : string +>0 : number +>0 : number diff --git a/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types b/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types index 66070a70ec7..9adee375396 100644 --- a/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types +++ b/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types @@ -1,3 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWithOpenCommentInStringPortion.ts === ` /**head ${ 10 } // still middle ${ 20 } /* still tail ` -No type information for this code. \ No newline at end of file +>` /**head ${ 10 } // still middle ${ 20 } /* still tail ` : string +>10 : number +>20 : number + diff --git a/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types b/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types index 08b5484f3ab..ea1513756de 100644 --- a/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types +++ b/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types @@ -1,3 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWithOpenCommentInStringPortionES6.ts === ` /**head ${ 10 } // still middle ${ 20 } /* still tail ` -No type information for this code. \ No newline at end of file +>` /**head ${ 10 } // still middle ${ 20 } /* still tail ` : string +>10 : number +>20 : number + diff --git a/tests/baselines/reference/templateStringWithPropertyAccess.types b/tests/baselines/reference/templateStringWithPropertyAccess.types index ae9dbb5249d..6afb7402970 100644 --- a/tests/baselines/reference/templateStringWithPropertyAccess.types +++ b/tests/baselines/reference/templateStringWithPropertyAccess.types @@ -2,5 +2,8 @@ `abc${0}abc`.indexOf(`abc`); >`abc${0}abc`.indexOf(`abc`) : number >`abc${0}abc`.indexOf : (searchString: string, position?: number) => number +>`abc${0}abc` : string +>0 : number >indexOf : (searchString: string, position?: number) => number +>`abc` : string diff --git a/tests/baselines/reference/templateStringWithPropertyAccessES6.types b/tests/baselines/reference/templateStringWithPropertyAccessES6.types index 80ea8a0ef8b..bdbded8be4a 100644 --- a/tests/baselines/reference/templateStringWithPropertyAccessES6.types +++ b/tests/baselines/reference/templateStringWithPropertyAccessES6.types @@ -2,5 +2,8 @@ `abc${0}abc`.indexOf(`abc`); >`abc${0}abc`.indexOf(`abc`) : number >`abc${0}abc`.indexOf : (searchString: string, position?: number) => number +>`abc${0}abc` : string +>0 : number >indexOf : (searchString: string, position?: number) => number +>`abc` : string diff --git a/tests/baselines/reference/ternaryExpressionSourceMap.types b/tests/baselines/reference/ternaryExpressionSourceMap.types index cfec705748a..d74a175635a 100644 --- a/tests/baselines/reference/ternaryExpressionSourceMap.types +++ b/tests/baselines/reference/ternaryExpressionSourceMap.types @@ -2,11 +2,14 @@ var x = 1; >x : number +>1 : number var foo = x ? () => 0 : () => 0; >foo : () => number >x ? () => 0 : () => 0 : () => number >x : number >() => 0 : () => number +>0 : number >() => 0 : () => number +>0 : number diff --git a/tests/baselines/reference/thisBinding2.types b/tests/baselines/reference/thisBinding2.types index 441a8f575c0..5b6b5213524 100644 --- a/tests/baselines/reference/thisBinding2.types +++ b/tests/baselines/reference/thisBinding2.types @@ -17,6 +17,7 @@ class C { var x = 1; >x : number +>1 : number return this.x; >this.x : number @@ -34,6 +35,7 @@ class C { var x = 1; >x : number +>1 : number return this.x; >this.x : any @@ -55,6 +57,7 @@ var messenger = { message: "Hello World", >message : string +>"Hello World" : string start: function () { >start : () => number @@ -68,6 +71,7 @@ var messenger = { >this.message : any >this : any >message : any +>3000 : number } }; diff --git a/tests/baselines/reference/thisCapture1.types b/tests/baselines/reference/thisCapture1.types index 1b867dea6b5..05eabf5c914 100644 --- a/tests/baselines/reference/thisCapture1.types +++ b/tests/baselines/reference/thisCapture1.types @@ -4,6 +4,7 @@ class X { private y = 0; >y : number +>0 : number public getSettings(keys: string[]): any { >getSettings : (keys: string[]) => any @@ -26,6 +27,7 @@ class X { >this.y : number >this : X >y : number +>0 : number }).promise(); >promise : any diff --git a/tests/baselines/reference/thisInGenericStaticMembers.types b/tests/baselines/reference/thisInGenericStaticMembers.types index ea05ed83473..8d4aabe2812 100644 --- a/tests/baselines/reference/thisInGenericStaticMembers.types +++ b/tests/baselines/reference/thisInGenericStaticMembers.types @@ -30,6 +30,7 @@ class A { >one : (source: T, value: number) => T >T : T >source : T +>42 : number } } @@ -59,6 +60,7 @@ class B { >this : typeof B >one : (source: B, value: number) => B >source : B +>42 : number } } diff --git a/tests/baselines/reference/thisInInnerFunctions.types b/tests/baselines/reference/thisInInnerFunctions.types index b47b917a469..2d0c3363b18 100644 --- a/tests/baselines/reference/thisInInnerFunctions.types +++ b/tests/baselines/reference/thisInInnerFunctions.types @@ -4,6 +4,7 @@ class Foo { x = "hello"; >x : string +>"hello" : string bar() { >bar : () => void @@ -16,6 +17,7 @@ class Foo { >this.y : any >this : any >y : any +>"hi" : string var f = () => this.y; // 'this' should be not type to 'Foo' either >f : () => any diff --git a/tests/baselines/reference/thisInLambda.types b/tests/baselines/reference/thisInLambda.types index ebc32449f07..ef4d7557abd 100644 --- a/tests/baselines/reference/thisInLambda.types +++ b/tests/baselines/reference/thisInLambda.types @@ -4,6 +4,7 @@ class Foo { x = "hello"; >x : string +>"hello" : string bar() { >bar : () => void diff --git a/tests/baselines/reference/thisInPropertyBoundDeclarations.types b/tests/baselines/reference/thisInPropertyBoundDeclarations.types index 196cf4e2ddc..596632f1691 100644 --- a/tests/baselines/reference/thisInPropertyBoundDeclarations.types +++ b/tests/baselines/reference/thisInPropertyBoundDeclarations.types @@ -131,12 +131,15 @@ class B { >' ' + function() { } + ' ' + (() => () => () => this) : string >' ' + function() { } + ' ' : string >' ' + function() { } : string +>' ' : string function() { >function() { } : () => void } + ' ' + +>' ' : string + (() => () => () => this); >(() => () => () => this) : () => () => () => B >() => () => () => this : () => () => () => B diff --git a/tests/baselines/reference/thisInStaticMethod1.types b/tests/baselines/reference/thisInStaticMethod1.types index fd7c4dcf48e..fdee20c21bf 100644 --- a/tests/baselines/reference/thisInStaticMethod1.types +++ b/tests/baselines/reference/thisInStaticMethod1.types @@ -4,6 +4,7 @@ class foo { static x = 3; >x : number +>3 : number static bar() { >bar : () => number diff --git a/tests/baselines/reference/throwInEnclosingStatements.types b/tests/baselines/reference/throwInEnclosingStatements.types index dc5b8fb76a5..f3ae0bacd60 100644 --- a/tests/baselines/reference/throwInEnclosingStatements.types +++ b/tests/baselines/reference/throwInEnclosingStatements.types @@ -21,6 +21,8 @@ switch (y) { >y : string case 'a': +>'a' : string + throw y; >y : string @@ -31,10 +33,12 @@ switch (y) { var z = 0; >z : number +>0 : number while (z < 10) { >z < 10 : boolean >z : number +>10 : number throw z; >z : number @@ -42,6 +46,7 @@ while (z < 10) { for (var i = 0; ;) { throw i; } >i : number +>0 : number >i : number for (var idx in {}) { throw idx; } @@ -50,13 +55,17 @@ for (var idx in {}) { throw idx; } >idx : any do { throw null; }while(true) +>null : null +>true : boolean var j = 0; >j : number +>0 : number while (j < 0) { throw j; } >j < 0 : boolean >j : number +>0 : number >j : number class C { @@ -88,6 +97,7 @@ var aa = { id:12, >id : number +>12 : number biz() { >biz : () => void diff --git a/tests/baselines/reference/throwStatements.types b/tests/baselines/reference/throwStatements.types index 08271fd0ac2..3d365a1b65a 100644 --- a/tests/baselines/reference/throwStatements.types +++ b/tests/baselines/reference/throwStatements.types @@ -39,6 +39,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number >x : string +>42 : number module M { >M : typeof M @@ -61,12 +62,14 @@ module M { var aNumber = 9.9; >aNumber : number +>9.9 : number throw aNumber; >aNumber : number var aString = 'this is a string'; >aString : string +>'this is a string' : string throw aString; >aString : string @@ -75,6 +78,7 @@ var aDate = new Date(12); >aDate : Date >new Date(12) : Date >Date : DateConstructor +>12 : number throw aDate; >aDate : Date @@ -89,6 +93,7 @@ throw anObject; var anAny = null; >anAny : any +>null : null throw anAny; >anAny : any @@ -129,6 +134,7 @@ var anObjectLiteral = { id: 12 }; >anObjectLiteral : { id: number; } >{ id: 12 } : { id: number; } >id : number +>12 : number throw anObjectLiteral; >anObjectLiteral : { id: number; } @@ -143,11 +149,13 @@ throw aFunction; throw aFunction(''); >aFunction('') : number >aFunction : (x: string) => number +>'' : string var aLambda = (x) => 2; >aLambda : (x: any) => number >(x) => 2 : (x: any) => number >x : any +>2 : number throw aLambda; >aLambda : (x: any) => number @@ -155,6 +163,7 @@ throw aLambda; throw aLambda(1); >aLambda(1) : number >aLambda : (x: any) => number +>1 : number var aModule = M; >aModule : typeof M @@ -195,34 +204,50 @@ throw x; // literals throw 0.0; +>0.0 : number + throw false; +>false : boolean + throw null; +>null : null + throw undefined; >undefined : undefined throw 'a string'; +>'a string' : string + throw function () { return 'a string' }; >function () { return 'a string' } : () => string +>'a string' : string throw (x:T) => 42; >(x:T) => 42 : (x: T) => number >T : T >x : T >T : T +>42 : number throw { x: 12, y: 13 }; >{ x: 12, y: 13 } : { x: number; y: number; } >x : number +>12 : number >y : number +>13 : number throw []; >[] : undefined[] throw ['a', ['b']]; >['a', ['b']] : (string | string[])[] +>'a' : string >['b'] : string[] +>'b' : string throw /[a-z]/; +>/[a-z]/ : RegExp + throw new Date(); >new Date() : Date >Date : DateConstructor diff --git a/tests/baselines/reference/toStringOnPrimitives.types b/tests/baselines/reference/toStringOnPrimitives.types index d4ef8993ed6..4d7227f248a 100644 --- a/tests/baselines/reference/toStringOnPrimitives.types +++ b/tests/baselines/reference/toStringOnPrimitives.types @@ -2,10 +2,12 @@ true.toString() >true.toString() : string >true.toString : () => string +>true : boolean >toString : () => string var aBool = false; >aBool : boolean +>false : boolean aBool.toString(); >aBool.toString() : string @@ -16,5 +18,6 @@ aBool.toString(); 1..toString(); >1..toString() : string >1..toString : (radix?: number) => string +>1. : number >toString : (radix?: number) => string diff --git a/tests/baselines/reference/topLevel.types b/tests/baselines/reference/topLevel.types index 4476ec55134..d7ed4a27001 100644 --- a/tests/baselines/reference/topLevel.types +++ b/tests/baselines/reference/topLevel.types @@ -48,17 +48,21 @@ class Point implements IPoint { >"("+this.x+","+this.y : string >"("+this.x+"," : string >"("+this.x : string +>"(" : string >this.x : any >this : Point >x : any +>"," : string >this.y : any >this : Point >y : any +>")" : string } } var result=""; >result : string +>"" : string result+=(new Point(3,4).move(2,2)); >result+=(new Point(3,4).move(2,2)) : string @@ -68,7 +72,11 @@ result+=(new Point(3,4).move(2,2)); >new Point(3,4).move : (xo: number, yo: number) => Point >new Point(3,4) : Point >Point : typeof Point +>3 : number +>4 : number >move : (xo: number, yo: number) => Point +>2 : number +>2 : number module M { >M : typeof M @@ -77,6 +85,8 @@ module M { >origin : Point >new Point(0,0) : Point >Point : typeof Point +>0 : number +>0 : number } result+=(M.origin.move(1,1)); @@ -89,5 +99,7 @@ result+=(M.origin.move(1,1)); >M : typeof M >origin : Point >move : (xo: number, yo: number) => Point +>1 : number +>1 : number diff --git a/tests/baselines/reference/topLevelAmbientModule.types b/tests/baselines/reference/topLevelAmbientModule.types index 7d01be9ae6f..c5bcfa3a5bf 100644 --- a/tests/baselines/reference/topLevelAmbientModule.types +++ b/tests/baselines/reference/topLevelAmbientModule.types @@ -9,6 +9,7 @@ var z = foo.x + 10; >foo.x : number >foo : typeof foo >x : number +>10 : number === tests/cases/conformance/externalModules/foo_0.ts === declare module "foo" { diff --git a/tests/baselines/reference/topLevelExports.types b/tests/baselines/reference/topLevelExports.types index c4076a80239..ab156991506 100644 --- a/tests/baselines/reference/topLevelExports.types +++ b/tests/baselines/reference/topLevelExports.types @@ -1,6 +1,7 @@ === tests/cases/compiler/topLevelExports.ts === export var foo = 3; >foo : number +>3 : number function log(n:number) { return n;} >log : (n: number) => number diff --git a/tests/baselines/reference/trailingCommasES3.types b/tests/baselines/reference/trailingCommasES3.types index 51fa689623b..98777c6b37f 100644 --- a/tests/baselines/reference/trailingCommasES3.types +++ b/tests/baselines/reference/trailingCommasES3.types @@ -4,18 +4,23 @@ var o1 = { a: 1, b: 2 }; >o1 : { a: number; b: number; } >{ a: 1, b: 2 } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number var o2 = { a: 1, b: 2, }; >o2 : { a: number; b: number; } >{ a: 1, b: 2, } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number var o3 = { a: 1, }; >o3 : { a: number; } >{ a: 1, } : { a: number; } >a : number +>1 : number var o4 = {}; >o4 : {} @@ -24,14 +29,19 @@ var o4 = {}; var a1 = [1, 2]; >a1 : number[] >[1, 2] : number[] +>1 : number +>2 : number var a2 = [1, 2, ]; >a2 : number[] >[1, 2, ] : number[] +>1 : number +>2 : number var a3 = [1, ]; >a3 : number[] >[1, ] : number[] +>1 : number var a4 = []; >a4 : any[] @@ -40,8 +50,12 @@ var a4 = []; var a5 = [1, , ]; >a5 : number[] >[1, , ] : number[] +>1 : number +> : undefined var a6 = [, , ]; >a6 : any[] >[, , ] : undefined[] +> : undefined +> : undefined diff --git a/tests/baselines/reference/trailingCommasES5.types b/tests/baselines/reference/trailingCommasES5.types index 2cfb2060435..498f70df94a 100644 --- a/tests/baselines/reference/trailingCommasES5.types +++ b/tests/baselines/reference/trailingCommasES5.types @@ -4,18 +4,23 @@ var o1 = { a: 1, b: 2 }; >o1 : { a: number; b: number; } >{ a: 1, b: 2 } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number var o2 = { a: 1, b: 2, }; >o2 : { a: number; b: number; } >{ a: 1, b: 2, } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number var o3 = { a: 1, }; >o3 : { a: number; } >{ a: 1, } : { a: number; } >a : number +>1 : number var o4 = {}; >o4 : {} @@ -24,14 +29,19 @@ var o4 = {}; var a1 = [1, 2]; >a1 : number[] >[1, 2] : number[] +>1 : number +>2 : number var a2 = [1, 2, ]; >a2 : number[] >[1, 2, ] : number[] +>1 : number +>2 : number var a3 = [1, ]; >a3 : number[] >[1, ] : number[] +>1 : number var a4 = []; >a4 : any[] @@ -40,8 +50,12 @@ var a4 = []; var a5 = [1, , ]; >a5 : number[] >[1, , ] : number[] +>1 : number +> : undefined var a6 = [, , ]; >a6 : any[] >[, , ] : undefined[] +> : undefined +> : undefined diff --git a/tests/baselines/reference/transitiveTypeArgumentInference1.types b/tests/baselines/reference/transitiveTypeArgumentInference1.types index 105f581c3e0..78f5b2becdd 100644 --- a/tests/baselines/reference/transitiveTypeArgumentInference1.types +++ b/tests/baselines/reference/transitiveTypeArgumentInference1.types @@ -14,6 +14,7 @@ interface I1 { var i: I1 = null; >i : I1 >I1 : I1 +>null : null class C { >C : C diff --git a/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.types b/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.types index 9c4f8a0eb8c..e9ed0031928 100644 --- a/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.types +++ b/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads.types @@ -63,6 +63,7 @@ var r = b.foo(true); // returns Date >b.foo : { (x: boolean): number; (x: string): string; (x: boolean): Date; (x: Date): string; } >b : B >foo : { (x: boolean): number; (x: string): string; (x: boolean): Date; (x: Date): string; } +>true : boolean // add generic overload interface C { @@ -109,6 +110,8 @@ var r2 = c.foo(1, 2); // number >c.foo : { (x: boolean, y: Date): string; (x: string, y: string): number; (x: W, y: W): W; } >c : C >foo : { (x: boolean, y: Date): string; (x: string, y: string): number; (x: W, y: W): W; } +>1 : number +>2 : number // add generic overload that would be ambiguous interface D { @@ -160,4 +163,6 @@ var r3 = d.foo(1, 1); // boolean, last definition wins >d.foo : { (x: A, y: A): Date; (x: W, y: W): boolean; } >d : D >foo : { (x: A, y: A): Date; (x: W, y: W): boolean; } +>1 : number +>1 : number diff --git a/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads2.types b/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads2.types index 46fa17d31a6..afbafba4920 100644 --- a/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads2.types +++ b/tests/baselines/reference/twoMergedInterfacesWithDifferingOverloads2.types @@ -28,11 +28,14 @@ var r2 = a(1); >r2 : number >a(1) : number >a : A +>1 : number var r3 = a(1, 2); >r3 : boolean >a(1, 2) : boolean >a : A +>1 : number +>2 : number module G { >G : typeof G @@ -80,14 +83,19 @@ module G { >r2 : boolean >a(true) : boolean >a : A +>true : boolean var r3 = a(true, 2); >r3 : boolean >a(true, 2) : boolean >a : A +>true : boolean +>2 : number var r4 = a(1, true); >r4 : number >a(1, true) : number >a : A +>1 : number +>true : boolean } diff --git a/tests/baselines/reference/typeAliases.types b/tests/baselines/reference/typeAliases.types index f6e4afd571e..c762a568b32 100644 --- a/tests/baselines/reference/typeAliases.types +++ b/tests/baselines/reference/typeAliases.types @@ -191,6 +191,7 @@ type Meters = number enum E { x = 10 } >E : E >x : E +>10 : number declare function f15(a: string): boolean; >f15 : { (a: string): boolean; (a: number): string; } @@ -231,11 +232,14 @@ var y: StringAndBoolean = ["1", false]; >y : [string, boolean] >StringAndBoolean : [string, boolean] >["1", false] : [string, boolean] +>"1" : string +>false : boolean y[0].toLowerCase(); >y[0].toLowerCase() : string >y[0].toLowerCase : () => string >y[0] : string >y : [string, boolean] +>0 : number >toLowerCase : () => string diff --git a/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.types b/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.types index 27fcd05bb28..d0c881c1c5d 100644 --- a/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.types +++ b/tests/baselines/reference/typeAnnotationBestCommonTypeInArrayLiteral.types @@ -28,16 +28,31 @@ var menuData: IMenuItem[] = [ >{ "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" } : { "id": string; "type": string; "link": string; "icon": string; } "id": "ourLogo", +>"ourLogo" : string + "type": "image", +>"image" : string + "link": "", +>"" : string + "icon": "modules/menu/logo.svg" +>"modules/menu/logo.svg" : string + }, { >{ "id": "productName", "type": "default", "link": "", "text": "Product Name" } : { "id": string; "type": string; "link": string; "text": string; } "id": "productName", +>"productName" : string + "type": "default", +>"default" : string + "link": "", +>"" : string + "text": "Product Name" +>"Product Name" : string } ]; diff --git a/tests/baselines/reference/typeArgInference.types b/tests/baselines/reference/typeArgInference.types index 2a3f7403009..d553e0fe8d4 100644 --- a/tests/baselines/reference/typeArgInference.types +++ b/tests/baselines/reference/typeArgInference.types @@ -39,7 +39,9 @@ var o = { a: 3, b: "test" }; >o : { a: number; b: string; } >{ a: 3, b: "test" } : { a: number; b: string; } >a : number +>3 : number >b : string +>"test" : string var x: I; >x : I diff --git a/tests/baselines/reference/typeArgInferenceWithNull.types b/tests/baselines/reference/typeArgInferenceWithNull.types index f480e7c169c..93ded4267eb 100644 --- a/tests/baselines/reference/typeArgInferenceWithNull.types +++ b/tests/baselines/reference/typeArgInferenceWithNull.types @@ -10,6 +10,7 @@ function fn4(n: T) { } fn4(null); >fn4(null) : void >fn4 : (n: T) => void +>null : null function fn5(n: T) { } >fn5 : (n: T) => void @@ -23,6 +24,7 @@ fn5({ x: null }); >fn5 : (n: T) => void >{ x: null } : { x: null; } >x : null +>null : null function fn6(n: T, fun: (x: T) => void, n2: T) { } >fn6 : (n: T, fun: (x: T) => void, n2: T) => void @@ -41,8 +43,10 @@ fn6({ x: null }, y => { }, { x: "" }); // y has type { x: any }, but ideally wou >fn6 : (n: T, fun: (x: T) => void, n2: T) => void >{ x: null } : { x: null; } >x : null +>null : null >y => { } : (y: { x: string; }) => void >y : { x: string; } >{ x: "" } : { x: string; } >x : string +>"" : string diff --git a/tests/baselines/reference/typeArgumentInferenceOrdering.types b/tests/baselines/reference/typeArgumentInferenceOrdering.types index 62371562c96..1bbeadcf4d5 100644 --- a/tests/baselines/reference/typeArgumentInferenceOrdering.types +++ b/tests/baselines/reference/typeArgumentInferenceOrdering.types @@ -6,6 +6,7 @@ function foo(f: { y: T }): T { return null } >y : T >T : T >T : T +>null : null var x = foo(new C()).x; // was Error that property x does not exist on type {} >x : () => Goo diff --git a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types index a3ed77e3488..23d2c3167d6 100644 --- a/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types +++ b/tests/baselines/reference/typeCheckObjectCreationExpressionWithUndefinedCallResolutionData.types @@ -19,5 +19,6 @@ var classes = undefined; return new classes(null); >new classes(null) : any >classes : any +>null : null } diff --git a/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types b/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types index f599f1f7ddf..6714ecf5570 100644 --- a/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types +++ b/tests/baselines/reference/typeGuardOfFormExpr1AndExpr2.types @@ -44,9 +44,11 @@ if (typeof strOrNumOrBool !== "string" && typeof strOrNumOrBool !== "number") { >typeof strOrNumOrBool !== "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >typeof strOrNumOrBool !== "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : number | boolean +>"number" : string bool = strOrNumOrBool; // boolean >bool = strOrNumOrBool : boolean @@ -66,12 +68,15 @@ if (typeof strOrNumOrBoolOrC !== "string" && typeof strOrNumOrBoolOrC !== "numbe >typeof strOrNumOrBoolOrC !== "string" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : string | number | boolean | C +>"string" : string >typeof strOrNumOrBoolOrC !== "number" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : number | boolean | C +>"number" : string >typeof strOrNumOrBoolOrC !== "boolean" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : boolean | C +>"boolean" : string c = strOrNumOrBoolOrC; // C >c = strOrNumOrBoolOrC : C @@ -91,12 +96,15 @@ if (typeof strOrNumOrBoolOrC !== "string" && typeof strOrNumOrBoolOrC !== "numbe >typeof strOrNumOrBoolOrC !== "string" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : string | number | boolean | C +>"string" : string >typeof strOrNumOrBoolOrC !== "number" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : number | boolean | C +>"number" : string >typeof strOrNumOrBool === "boolean" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"boolean" : string cOrBool = strOrNumOrBoolOrC; // C | boolean >cOrBool = strOrNumOrBoolOrC : boolean | C @@ -124,6 +132,7 @@ if (typeof strOrNumOrBool !== "string" && numOrBool !== strOrNumOrBool) { >typeof strOrNumOrBool !== "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >numOrBool !== strOrNumOrBool : boolean >numOrBool : number | boolean >strOrNumOrBool : number | boolean diff --git a/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.types b/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.types index 95152a589e5..2cad437ddeb 100644 --- a/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.types +++ b/tests/baselines/reference/typeGuardOfFormExpr1OrExpr2.types @@ -44,9 +44,11 @@ if (typeof strOrNumOrBool === "string" || typeof strOrNumOrBool === "number") { >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >typeof strOrNumOrBool === "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : number | boolean +>"number" : string strOrNum = strOrNumOrBool; // string | number >strOrNum = strOrNumOrBool : string | number @@ -66,12 +68,15 @@ if (typeof strOrNumOrBoolOrC === "string" || typeof strOrNumOrBoolOrC === "numbe >typeof strOrNumOrBoolOrC === "string" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : string | number | boolean | C +>"string" : string >typeof strOrNumOrBoolOrC === "number" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : number | boolean | C +>"number" : string >typeof strOrNumOrBoolOrC === "boolean" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : boolean | C +>"boolean" : string strOrNumOrBool = strOrNumOrBoolOrC; // string | number | boolean >strOrNumOrBool = strOrNumOrBoolOrC : string | number | boolean @@ -91,12 +96,15 @@ if (typeof strOrNumOrBoolOrC === "string" || typeof strOrNumOrBoolOrC === "numbe >typeof strOrNumOrBoolOrC === "string" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : string | number | boolean | C +>"string" : string >typeof strOrNumOrBoolOrC === "number" : boolean >typeof strOrNumOrBoolOrC : string >strOrNumOrBoolOrC : number | boolean | C +>"number" : string >typeof strOrNumOrBool !== "boolean" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"boolean" : string var r1: string | number | boolean | C = strOrNumOrBoolOrC; // string | number | boolean | C >r1 : string | number | boolean | C @@ -124,6 +132,7 @@ if (typeof strOrNumOrBool === "string" || numOrBool !== strOrNumOrBool) { >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >numOrBool !== strOrNumOrBool : boolean >numOrBool : number | boolean >strOrNumOrBool : number | boolean diff --git a/tests/baselines/reference/typeGuardOfFormNotExpr.types b/tests/baselines/reference/typeGuardOfFormNotExpr.types index 22d1d71f412..a99db08efab 100644 --- a/tests/baselines/reference/typeGuardOfFormNotExpr.types +++ b/tests/baselines/reference/typeGuardOfFormNotExpr.types @@ -28,6 +28,7 @@ if (!(typeof strOrNum === "string")) { >typeof strOrNum === "string" : boolean >typeof strOrNum : string >strOrNum : string | number +>"string" : string num === strOrNum; // number >num === strOrNum : boolean @@ -48,9 +49,11 @@ if (!(typeof strOrNumOrBool === "string" || typeof strOrNumOrBool === "number")) >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >typeof strOrNumOrBool === "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : number | boolean +>"number" : string bool = strOrNumOrBool; // boolean >bool = strOrNumOrBool : boolean @@ -71,11 +74,13 @@ if (!(typeof strOrNumOrBool !== "string") || !(typeof strOrNumOrBool !== "number >typeof strOrNumOrBool !== "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >!(typeof strOrNumOrBool !== "number") : boolean >(typeof strOrNumOrBool !== "number") : boolean >typeof strOrNumOrBool !== "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : number | boolean +>"number" : string strOrNum = strOrNumOrBool; // string | number >strOrNum = strOrNumOrBool : string | number @@ -96,9 +101,11 @@ if (!(typeof strOrNumOrBool !== "string" && typeof strOrNumOrBool !== "number")) >typeof strOrNumOrBool !== "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >typeof strOrNumOrBool !== "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : number | boolean +>"number" : string strOrNum = strOrNumOrBool; // string | number >strOrNum = strOrNumOrBool : string | number @@ -119,11 +126,13 @@ if (!(typeof strOrNumOrBool === "string") && !(typeof strOrNumOrBool === "number >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >!(typeof strOrNumOrBool === "number") : boolean >(typeof strOrNumOrBool === "number") : boolean >typeof strOrNumOrBool === "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : number | boolean +>"number" : string bool = strOrNumOrBool; // boolean >bool = strOrNumOrBool : boolean @@ -144,6 +153,7 @@ if (!(typeof strOrNumOrBool === "string") && numOrBool !== strOrNumOrBool) { >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string >numOrBool !== strOrNumOrBool : boolean >numOrBool : number | boolean >strOrNumOrBool : number | boolean diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types index 6bbf5c87c40..9d9f28548be 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfBoolean.types @@ -48,6 +48,7 @@ if (typeof strOrBool === "boolean") { >typeof strOrBool === "boolean" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"boolean" : string bool = strOrBool; // boolean >bool = strOrBool : boolean @@ -64,6 +65,7 @@ if (typeof numOrBool === "boolean") { >typeof numOrBool === "boolean" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"boolean" : string bool = numOrBool; // boolean >bool = numOrBool : boolean @@ -80,6 +82,7 @@ if (typeof strOrNumOrBool === "boolean") { >typeof strOrNumOrBool === "boolean" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"boolean" : string bool = strOrNumOrBool; // boolean >bool = strOrNumOrBool : boolean @@ -96,6 +99,7 @@ if (typeof boolOrC === "boolean") { >typeof boolOrC === "boolean" : boolean >typeof boolOrC : string >boolOrC : boolean | C +>"boolean" : string bool = boolOrC; // boolean >bool = boolOrC : boolean @@ -114,6 +118,7 @@ if (typeof strOrNum === "boolean") { >typeof strOrNum === "boolean" : boolean >typeof strOrNum : string >strOrNum : string | number +>"boolean" : string var z1: string | number = strOrNum; // string | number >z1 : string | number @@ -133,6 +138,7 @@ if (typeof strOrBool !== "boolean") { >typeof strOrBool !== "boolean" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"boolean" : string str = strOrBool; // string >str = strOrBool : string @@ -149,6 +155,7 @@ if (typeof numOrBool !== "boolean") { >typeof numOrBool !== "boolean" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"boolean" : string num = numOrBool; // number >num = numOrBool : number @@ -165,6 +172,7 @@ if (typeof strOrNumOrBool !== "boolean") { >typeof strOrNumOrBool !== "boolean" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"boolean" : string strOrNum = strOrNumOrBool; // string | number >strOrNum = strOrNumOrBool : string | number @@ -181,6 +189,7 @@ if (typeof boolOrC !== "boolean") { >typeof boolOrC !== "boolean" : boolean >typeof boolOrC : string >boolOrC : boolean | C +>"boolean" : string c = boolOrC; // C >c = boolOrC : C @@ -199,6 +208,7 @@ if (typeof strOrNum !== "boolean") { >typeof strOrNum !== "boolean" : boolean >typeof strOrNum : string >strOrNum : string | number +>"boolean" : string var z1: string | number = strOrNum; // string | number >z1 : string | number diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types b/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types index 14d4cd61c51..4bfc8fe6bf1 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfEqualEqualHasNoEffect.types @@ -21,6 +21,7 @@ if (typeof strOrNum == "string") { >typeof strOrNum == "string" : boolean >typeof strOrNum : string >strOrNum : string | number +>"string" : string var r1 = strOrNum; // string | number >r1 : string | number @@ -36,6 +37,7 @@ if (typeof strOrBool == "boolean") { >typeof strOrBool == "boolean" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"boolean" : string var r2 = strOrBool; // string | boolean >r2 : string | boolean @@ -51,6 +53,7 @@ if (typeof numOrBool == "number") { >typeof numOrBool == "number" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"number" : string var r3 = numOrBool; // number | boolean >r3 : number | boolean @@ -66,6 +69,7 @@ if (typeof strOrC == "Object") { >typeof strOrC == "Object" : boolean >typeof strOrC : string >strOrC : string | C +>"Object" : string var r4 = strOrC; // string | C >r4 : string | C diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types b/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types index 322799f6f7a..6eabeb25ede 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfNotEqualHasNoEffect.types @@ -21,6 +21,7 @@ if (typeof strOrNum != "string") { >typeof strOrNum != "string" : boolean >typeof strOrNum : string >strOrNum : string | number +>"string" : string var r1 = strOrNum; // string | number >r1 : string | number @@ -36,6 +37,7 @@ if (typeof strOrBool != "boolean") { >typeof strOrBool != "boolean" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"boolean" : string var r2 = strOrBool; // string | boolean >r2 : string | boolean @@ -51,6 +53,7 @@ if (typeof numOrBool != "number") { >typeof numOrBool != "number" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"number" : string var r3 = numOrBool; // number | boolean >r3 : number | boolean @@ -66,6 +69,7 @@ if (typeof strOrC != "Object") { >typeof strOrC != "Object" : boolean >typeof strOrC : string >strOrC : string | C +>"Object" : string var r4 = strOrC; // string | C >r4 : string | C diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types index 1949f5aa17d..d3caef24efd 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfNumber.types @@ -48,6 +48,7 @@ if (typeof strOrNum === "number") { >typeof strOrNum === "number" : boolean >typeof strOrNum : string >strOrNum : string | number +>"number" : string num = strOrNum; // number >num = strOrNum : number @@ -64,6 +65,7 @@ if (typeof numOrBool === "number") { >typeof numOrBool === "number" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"number" : string num = numOrBool; // number >num = numOrBool : number @@ -79,6 +81,7 @@ if (typeof strOrNumOrBool === "number") { >typeof strOrNumOrBool === "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"number" : string num = strOrNumOrBool; // number >num = strOrNumOrBool : number @@ -95,6 +98,7 @@ if (typeof numOrC === "number") { >typeof numOrC === "number" : boolean >typeof numOrC : string >numOrC : number | C +>"number" : string num = numOrC; // number >num = numOrC : number @@ -113,6 +117,7 @@ if (typeof strOrBool === "number") { >typeof strOrBool === "number" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"number" : string var y1: string | boolean = strOrBool; // string | boolean >y1 : string | boolean @@ -131,6 +136,7 @@ if (typeof strOrNum !== "number") { >typeof strOrNum !== "number" : boolean >typeof strOrNum : string >strOrNum : string | number +>"number" : string str === strOrNum; // string >str === strOrNum : boolean @@ -147,6 +153,7 @@ if (typeof numOrBool !== "number") { >typeof numOrBool !== "number" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"number" : string var x: number | boolean = numOrBool; // number | boolean >x : number | boolean @@ -162,6 +169,7 @@ if (typeof strOrNumOrBool !== "number") { >typeof strOrNumOrBool !== "number" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"number" : string strOrBool = strOrNumOrBool; // string | boolean >strOrBool = strOrNumOrBool : string | boolean @@ -178,6 +186,7 @@ if (typeof numOrC !== "number") { >typeof numOrC !== "number" : boolean >typeof numOrC : string >numOrC : number | C +>"number" : string c = numOrC; // C >c = numOrC : C @@ -196,6 +205,7 @@ if (typeof strOrBool !== "number") { >typeof strOrBool !== "number" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"number" : string var y1: string | boolean = strOrBool; // string | boolean >y1 : string | boolean diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfOther.types b/tests/baselines/reference/typeGuardOfFormTypeOfOther.types index 04060571f83..e0fd443ef63 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfOther.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfOther.types @@ -52,6 +52,7 @@ if (typeof strOrC === "Object") { >typeof strOrC === "Object" : boolean >typeof strOrC : string >strOrC : string | C +>"Object" : string c = strOrC; // C >c = strOrC : C @@ -68,6 +69,7 @@ if (typeof numOrC === "Object") { >typeof numOrC === "Object" : boolean >typeof numOrC : string >numOrC : number | C +>"Object" : string c = numOrC; // C >c = numOrC : C @@ -84,6 +86,7 @@ if (typeof boolOrC === "Object") { >typeof boolOrC === "Object" : boolean >typeof boolOrC : string >boolOrC : boolean | C +>"Object" : string c = boolOrC; // C >c = boolOrC : C @@ -102,6 +105,7 @@ if (typeof strOrNumOrBool === "Object") { >typeof strOrNumOrBool === "Object" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"Object" : string var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean >q1 : string | number | boolean @@ -120,6 +124,7 @@ if (typeof strOrC !== "Object") { >typeof strOrC !== "Object" : boolean >typeof strOrC : string >strOrC : string | C +>"Object" : string var r2: string | C = strOrC; // string | C >r2 : string | C @@ -136,6 +141,7 @@ if (typeof numOrC !== "Object") { >typeof numOrC !== "Object" : boolean >typeof numOrC : string >numOrC : number | C +>"Object" : string var r3: number | C = numOrC; // number | C >r3 : number | C @@ -152,6 +158,7 @@ if (typeof boolOrC !== "Object") { >typeof boolOrC !== "Object" : boolean >typeof boolOrC : string >boolOrC : boolean | C +>"Object" : string var r4: boolean | C = boolOrC; // boolean | C >r4 : boolean | C @@ -170,6 +177,7 @@ if (typeof strOrNumOrBool !== "Object") { >typeof strOrNumOrBool !== "Object" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"Object" : string var q1: string | number | boolean = strOrNumOrBool; // string | number | boolean >q1 : string | number | boolean diff --git a/tests/baselines/reference/typeGuardOfFormTypeOfString.types b/tests/baselines/reference/typeGuardOfFormTypeOfString.types index 90719fce92b..d6a382261ac 100644 --- a/tests/baselines/reference/typeGuardOfFormTypeOfString.types +++ b/tests/baselines/reference/typeGuardOfFormTypeOfString.types @@ -48,6 +48,7 @@ if (typeof strOrNum === "string") { >typeof strOrNum === "string" : boolean >typeof strOrNum : string >strOrNum : string | number +>"string" : string str = strOrNum; // string >str = strOrNum : string @@ -64,6 +65,7 @@ if (typeof strOrBool === "string") { >typeof strOrBool === "string" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"string" : string str = strOrBool; // string >str = strOrBool : string @@ -80,6 +82,7 @@ if (typeof strOrNumOrBool === "string") { >typeof strOrNumOrBool === "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string str = strOrNumOrBool; // string >str = strOrNumOrBool : string @@ -96,6 +99,7 @@ if (typeof strOrC === "string") { >typeof strOrC === "string" : boolean >typeof strOrC : string >strOrC : string | C +>"string" : string str = strOrC; // string >str = strOrC : string @@ -114,6 +118,7 @@ if (typeof numOrBool === "string") { >typeof numOrBool === "string" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"string" : string var x1: number | boolean = numOrBool; // number | boolean >x1 : number | boolean @@ -132,6 +137,7 @@ if (typeof strOrNum !== "string") { >typeof strOrNum !== "string" : boolean >typeof strOrNum : string >strOrNum : string | number +>"string" : string num === strOrNum; // number >num === strOrNum : boolean @@ -148,6 +154,7 @@ if (typeof strOrBool !== "string") { >typeof strOrBool !== "string" : boolean >typeof strOrBool : string >strOrBool : string | boolean +>"string" : string bool = strOrBool; // boolean >bool = strOrBool : boolean @@ -164,6 +171,7 @@ if (typeof strOrNumOrBool !== "string") { >typeof strOrNumOrBool !== "string" : boolean >typeof strOrNumOrBool : string >strOrNumOrBool : string | number | boolean +>"string" : string numOrBool = strOrNumOrBool; // number | boolean >numOrBool = strOrNumOrBool : number | boolean @@ -180,6 +188,7 @@ if (typeof strOrC !== "string") { >typeof strOrC !== "string" : boolean >typeof strOrC : string >strOrC : string | C +>"string" : string c = strOrC; // C >c = strOrC : C @@ -198,6 +207,7 @@ if (typeof numOrBool !== "string") { >typeof numOrBool !== "string" : boolean >typeof numOrBool : string >numOrBool : number | boolean +>"string" : string var x1: number | boolean = numOrBool; // number | boolean >x1 : number | boolean diff --git a/tests/baselines/reference/typeGuardsDefeat.types b/tests/baselines/reference/typeGuardsDefeat.types index 5daaa75d979..d3a017bd913 100644 --- a/tests/baselines/reference/typeGuardsDefeat.types +++ b/tests/baselines/reference/typeGuardsDefeat.types @@ -11,11 +11,13 @@ function foo(x: number | string) { x = 10; >x = 10 : number >x : string | number +>10 : number } if (typeof x === "string") { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string f(); >f() : void @@ -40,6 +42,7 @@ function foo2(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string return x.length; // string >x.length : number @@ -61,6 +64,7 @@ function foo2(x: number | string) { x = "hello"; >x = "hello" : string >x : string | number +>"hello" : string f(); >f() : number @@ -74,6 +78,7 @@ function foo3(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string return x.length; // string >x.length : number @@ -91,6 +96,7 @@ function foo3(x: number | string) { x = "hello"; >x = "hello" : string >x : string | number +>"hello" : string f(); >f() : number diff --git a/tests/baselines/reference/typeGuardsInClassAccessors.types b/tests/baselines/reference/typeGuardsInClassAccessors.types index 48ea732f3d7..bdba5e9c116 100644 --- a/tests/baselines/reference/typeGuardsInClassAccessors.types +++ b/tests/baselines/reference/typeGuardsInClassAccessors.types @@ -28,6 +28,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -43,6 +44,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -63,6 +65,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -75,6 +78,7 @@ class ClassWithAccessors { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -90,6 +94,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -106,6 +111,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -121,6 +127,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -141,6 +148,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -153,6 +161,7 @@ class ClassWithAccessors { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -168,6 +177,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -184,6 +194,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -199,6 +210,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -219,6 +231,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -231,6 +244,7 @@ class ClassWithAccessors { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -246,6 +260,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -262,6 +277,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -277,6 +293,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -297,6 +314,7 @@ class ClassWithAccessors { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -309,6 +327,7 @@ class ClassWithAccessors { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -324,6 +343,7 @@ class ClassWithAccessors { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number diff --git a/tests/baselines/reference/typeGuardsInClassMethods.types b/tests/baselines/reference/typeGuardsInClassMethods.types index fa44347cd5c..b3e20c88ed3 100644 --- a/tests/baselines/reference/typeGuardsInClassMethods.types +++ b/tests/baselines/reference/typeGuardsInClassMethods.types @@ -23,6 +23,7 @@ class C1 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -38,6 +39,7 @@ class C1 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -50,6 +52,7 @@ class C1 { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -67,6 +70,7 @@ class C1 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -82,6 +86,7 @@ class C1 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -94,6 +99,7 @@ class C1 { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -111,6 +117,7 @@ class C1 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -126,6 +133,7 @@ class C1 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -138,6 +146,7 @@ class C1 { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -155,6 +164,7 @@ class C1 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -170,6 +180,7 @@ class C1 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -182,6 +193,7 @@ class C1 { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -199,6 +211,7 @@ class C1 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -214,6 +227,7 @@ class C1 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -226,6 +240,7 @@ class C1 { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number diff --git a/tests/baselines/reference/typeGuardsInConditionalExpression.types b/tests/baselines/reference/typeGuardsInConditionalExpression.types index 14b35480cd8..dffcca7e2be 100644 --- a/tests/baselines/reference/typeGuardsInConditionalExpression.types +++ b/tests/baselines/reference/typeGuardsInConditionalExpression.types @@ -15,6 +15,7 @@ function foo(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? x.length // string >x.length : number @@ -35,12 +36,14 @@ function foo2(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? (x = 10 && x)// string | number >(x = 10 && x) : string | number >x = 10 && x : string | number >x : string | number >10 && x : string | number +>10 : number >x : string | number : x; // string | number @@ -57,12 +60,14 @@ function foo3(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? (x = "Hello" && x) // string | number >(x = "Hello" && x) : string | number >x = "Hello" && x : string | number >x : string | number >"Hello" && x : string | number +>"Hello" : string >x : string | number : x; // string | number @@ -79,6 +84,7 @@ function foo4(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? x // string | number >x : string | number @@ -88,6 +94,7 @@ function foo4(x: number | string) { >x = 10 && x : string | number >x : string | number >10 && x : string | number +>10 : number >x : string | number } function foo5(x: number | string) { @@ -100,6 +107,7 @@ function foo5(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? x // string | number >x : string | number @@ -109,6 +117,7 @@ function foo5(x: number | string) { >x = "hello" && x : string | number >x : string | number >"hello" && x : string | number +>"hello" : string >x : string | number } function foo6(x: number | string) { @@ -121,12 +130,14 @@ function foo6(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? (x = 10 && x) // string | number >(x = 10 && x) : string | number >x = 10 && x : string | number >x : string | number >10 && x : string | number +>10 : number >x : string | number : (x = "hello" && x); // string | number @@ -134,6 +145,7 @@ function foo6(x: number | string) { >x = "hello" && x : string | number >x : string | number >"hello" && x : string | number +>"hello" : string >x : string | number } function foo7(x: number | string | boolean) { @@ -145,16 +157,19 @@ function foo7(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x === "hello" // string >x === "hello" : boolean >x : string +>"hello" : string : typeof x === "boolean" >typeof x === "boolean" ? x // boolean : x == 10 : boolean >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x // boolean >x : boolean @@ -162,6 +177,7 @@ function foo7(x: number | string | boolean) { : x == 10; // number >x == 10 : boolean >x : number +>10 : number } function foo8(x: number | string | boolean) { >foo8 : (x: string | number | boolean) => boolean @@ -175,10 +191,12 @@ function foo8(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x === "hello" >x === "hello" : boolean >x : string +>"hello" : string : ((b = x) && // number | boolean >((b = x) && // number | boolean (typeof x === "boolean" ? x // boolean : x == 10)) : boolean @@ -194,6 +212,7 @@ function foo8(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x // boolean >x : boolean @@ -201,6 +220,7 @@ function foo8(x: number | string | boolean) { : x == 10)); // number >x == 10 : boolean >x : number +>10 : number } function foo9(x: number | string) { >foo9 : (x: string | number) => boolean @@ -208,6 +228,7 @@ function foo9(x: number | string) { var y = 10; >y : number +>10 : number // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" @@ -215,6 +236,7 @@ function foo9(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? ((y = x.length) && x === "hello") // string >((y = x.length) && x === "hello") : boolean @@ -227,10 +249,12 @@ function foo9(x: number | string) { >length : number >x === "hello" : boolean >x : string +>"hello" : string : x === 10; // number >x === 10 : boolean >x : number +>10 : number } function foo10(x: number | string | boolean) { >foo10 : (x: string | number | boolean) => string @@ -245,6 +269,7 @@ function foo10(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x // string >x : string @@ -262,6 +287,7 @@ function foo10(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : number | boolean +>"number" : string && x.toString()); // x is number >x.toString() : string @@ -283,6 +309,7 @@ function foo11(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x // number | boolean | string - changed in the false branch >x : string | number | boolean @@ -301,11 +328,13 @@ function foo11(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string && (x = 10) // assignment to x >(x = 10) : number >x = 10 : number >x : string | number | boolean +>10 : number && x); // x is number | boolean | string >x : string | number | boolean @@ -324,12 +353,14 @@ function foo12(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? (x = 10 && x.toString().length) // number | boolean | string - changed here >(x = 10 && x.toString().length) : number >x = 10 && x.toString().length : number >x : string | number | boolean >10 && x.toString().length : number +>10 : number >x.toString().length : number >x.toString() : string >x.toString : () => string @@ -350,6 +381,7 @@ function foo12(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string && x); // x is number >x : number diff --git a/tests/baselines/reference/typeGuardsInConditionalExpression.types.pull b/tests/baselines/reference/typeGuardsInConditionalExpression.types.pull index 147a24b690a..3965abfe962 100644 --- a/tests/baselines/reference/typeGuardsInConditionalExpression.types.pull +++ b/tests/baselines/reference/typeGuardsInConditionalExpression.types.pull @@ -15,6 +15,7 @@ function foo(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? x.length // string >x.length : number @@ -35,12 +36,14 @@ function foo2(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? (x = 10 && x)// string | number >(x = 10 && x) : string | number >x = 10 && x : string | number >x : string | number >10 && x : string | number +>10 : number >x : string | number : x; // string | number @@ -57,12 +60,14 @@ function foo3(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? (x = "Hello" && x) // string | number >(x = "Hello" && x) : string | number >x = "Hello" && x : string | number >x : string | number >"Hello" && x : string | number +>"Hello" : string >x : string | number : x; // string | number @@ -79,6 +84,7 @@ function foo4(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? x // string | number >x : string | number @@ -88,6 +94,7 @@ function foo4(x: number | string) { >x = 10 && x : string | number >x : string | number >10 && x : string | number +>10 : number >x : string | number } function foo5(x: number | string) { @@ -100,6 +107,7 @@ function foo5(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? x // string | number >x : string | number @@ -109,6 +117,7 @@ function foo5(x: number | string) { >x = "hello" && x : string | number >x : string | number >"hello" && x : string | number +>"hello" : string >x : string | number } function foo6(x: number | string) { @@ -121,12 +130,14 @@ function foo6(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? (x = 10 && x) // string | number >(x = 10 && x) : string | number >x = 10 && x : string | number >x : string | number >10 && x : string | number +>10 : number >x : string | number : (x = "hello" && x); // string | number @@ -134,6 +145,7 @@ function foo6(x: number | string) { >x = "hello" && x : string | number >x : string | number >"hello" && x : string | number +>"hello" : string >x : string | number } function foo7(x: number | string | boolean) { @@ -145,16 +157,19 @@ function foo7(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x === "hello" // string >x === "hello" : boolean >x : string +>"hello" : string : typeof x === "boolean" >typeof x === "boolean" ? x // boolean : x == 10 : boolean >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x // boolean >x : boolean @@ -162,6 +177,7 @@ function foo7(x: number | string | boolean) { : x == 10; // number >x == 10 : boolean >x : number +>10 : number } function foo8(x: number | string | boolean) { >foo8 : (x: string | number | boolean) => boolean @@ -175,10 +191,12 @@ function foo8(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x === "hello" >x === "hello" : boolean >x : string +>"hello" : string : ((b = x) && // number | boolean >((b = x) && // number | boolean (typeof x === "boolean" ? x // boolean : x == 10)) : boolean @@ -194,6 +212,7 @@ function foo8(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x // boolean >x : boolean @@ -201,6 +220,7 @@ function foo8(x: number | string | boolean) { : x == 10)); // number >x == 10 : boolean >x : number +>10 : number } function foo9(x: number | string) { >foo9 : (x: string | number) => boolean @@ -208,6 +228,7 @@ function foo9(x: number | string) { var y = 10; >y : number +>10 : number // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop return typeof x === "string" @@ -215,6 +236,7 @@ function foo9(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string ? ((y = x.length) && x === "hello") // string >((y = x.length) && x === "hello") : boolean @@ -227,10 +249,12 @@ function foo9(x: number | string) { >length : number >x === "hello" : boolean >x : string +>"hello" : string : x === 10; // number >x === 10 : boolean >x : number +>10 : number } function foo10(x: number | string | boolean) { >foo10 : (x: string | number | boolean) => string @@ -245,6 +269,7 @@ function foo10(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x // string >x : string @@ -262,6 +287,7 @@ function foo10(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : number | boolean +>"number" : string && x.toString()); // x is number >x.toString() : string @@ -283,6 +309,7 @@ function foo11(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x // number | boolean | string - changed in the false branch >x : string | number | boolean @@ -301,11 +328,13 @@ function foo11(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string && (x = 10) // assignment to x >(x = 10) : number >x = 10 : number >x : string | number | boolean +>10 : number && x); // x is number | boolean | string >x : string | number | boolean @@ -324,12 +353,14 @@ function foo12(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? (x = 10 && x.toString().length) // number | boolean | string - changed here >(x = 10 && x.toString().length) : number >x = 10 && x.toString().length : number >x : string | number | boolean >10 && x.toString().length : number +>10 : number >x.toString().length : number >x.toString() : string >x.toString : (radix?: number) => string @@ -350,6 +381,7 @@ function foo12(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string && x); // x is number >x : number diff --git a/tests/baselines/reference/typeGuardsInExternalModule.types b/tests/baselines/reference/typeGuardsInExternalModule.types index 09038ef1c1a..e20063719f5 100644 --- a/tests/baselines/reference/typeGuardsInExternalModule.types +++ b/tests/baselines/reference/typeGuardsInExternalModule.types @@ -13,6 +13,7 @@ if (typeof var1 === "string") { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string num = var1.length; // string >num = var1.length : number @@ -39,6 +40,7 @@ if (typeof var2 === "string") { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string // export makes the var property and not variable strOrNum = var2; // string | number diff --git a/tests/baselines/reference/typeGuardsInFunction.types b/tests/baselines/reference/typeGuardsInFunction.types index a7b25f486aa..5ae489ce48a 100644 --- a/tests/baselines/reference/typeGuardsInFunction.types +++ b/tests/baselines/reference/typeGuardsInFunction.types @@ -22,6 +22,7 @@ function f(param: string | number) { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -37,6 +38,7 @@ function f(param: string | number) { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -49,6 +51,7 @@ function f(param: string | number) { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -73,6 +76,7 @@ function f1(param: string | number) { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -85,6 +89,7 @@ function f1(param: string | number) { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -97,6 +102,7 @@ function f1(param: string | number) { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -112,6 +118,7 @@ function f1(param: string | number) { >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number +>"string" : string >var3.length : number >var3 : string >length : number @@ -123,6 +130,7 @@ function f1(param: string | number) { >typeof param1 === "string" : boolean >typeof param1 : string >param1 : string | number +>"string" : string >param1.length : number >param1 : string >length : number @@ -152,6 +160,7 @@ function f2(param: string | number) { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -164,6 +173,7 @@ function f2(param: string | number) { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -176,6 +186,7 @@ function f2(param: string | number) { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -191,6 +202,7 @@ function f2(param: string | number) { >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number +>"string" : string >var3.length : number >var3 : string >length : number @@ -202,6 +214,7 @@ function f2(param: string | number) { >typeof param1 === "string" : boolean >typeof param1 : string >param1 : string | number +>"string" : string >param1.length : number >param1 : string >length : number @@ -234,6 +247,7 @@ function f3(param: string | number) { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -246,6 +260,7 @@ function f3(param: string | number) { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -258,6 +273,7 @@ function f3(param: string | number) { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -273,6 +289,7 @@ function f3(param: string | number) { >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number +>"string" : string >var3.length : number >var3 : string >length : number @@ -284,6 +301,7 @@ function f3(param: string | number) { >typeof param1 === "string" : boolean >typeof param1 : string >param1 : string | number +>"string" : string >param1.length : number >param1 : string >length : number @@ -314,6 +332,7 @@ strOrNum = typeof f4() === "string" && f4(); // string | number >typeof f4() : string >f4() : string | number >f4 : () => string | number +>"string" : string >f4() : string | number >f4 : () => string | number diff --git a/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types b/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types index 3d914b5c80b..600b2720404 100644 --- a/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types +++ b/tests/baselines/reference/typeGuardsInFunctionAndModuleBlock.types @@ -10,6 +10,7 @@ function foo(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x >x : string @@ -28,6 +29,7 @@ function foo(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x.toString() // boolean >x.toString() : string @@ -52,6 +54,7 @@ function foo2(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x >x : string @@ -71,6 +74,7 @@ function foo2(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x.toString() // boolean >x.toString() : string @@ -96,6 +100,7 @@ function foo3(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x >x : string @@ -114,6 +119,7 @@ function foo3(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x.toString() // boolean >x.toString() : string @@ -138,6 +144,7 @@ function foo4(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string ? x >x : string @@ -157,6 +164,7 @@ function foo4(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x.toString() // boolean >x.toString() : string @@ -182,6 +190,7 @@ function foo5(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string var y = x; // string; >y : string @@ -216,6 +225,7 @@ module m { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string y = x // string; >y = x : string @@ -230,6 +240,7 @@ module m { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x.toString() // boolean >x.toString() : string @@ -266,6 +277,7 @@ module m1 { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string y = x // string; >y = x : string @@ -280,6 +292,7 @@ module m1 { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string ? x.toString() // boolean >x.toString() : string diff --git a/tests/baselines/reference/typeGuardsInGlobal.types b/tests/baselines/reference/typeGuardsInGlobal.types index 08b681dbb05..b64c1edcc13 100644 --- a/tests/baselines/reference/typeGuardsInGlobal.types +++ b/tests/baselines/reference/typeGuardsInGlobal.types @@ -13,6 +13,7 @@ if (typeof var1 === "string") { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string num = var1.length; // string >num = var1.length : number diff --git a/tests/baselines/reference/typeGuardsInIfStatement.types b/tests/baselines/reference/typeGuardsInIfStatement.types index f443c0d7e0d..59a9ff512af 100644 --- a/tests/baselines/reference/typeGuardsInIfStatement.types +++ b/tests/baselines/reference/typeGuardsInIfStatement.types @@ -13,6 +13,7 @@ function foo(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string return x.length; // string >x.length : number @@ -34,10 +35,12 @@ function foo2(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string x = 10; >x = 10 : number >x : string | number +>10 : number return x; // string | number >x : string | number @@ -56,10 +59,12 @@ function foo3(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string x = "Hello"; // even though assigned using same type as narrowed expression >x = "Hello" : string >x : string | number +>"Hello" : string return x; // string | number >x : string | number @@ -78,6 +83,7 @@ function foo4(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string return x; // string | number >x : string | number @@ -86,6 +92,7 @@ function foo4(x: number | string) { x = 10; // even though assigned number - this should result in x to be string | number >x = 10 : number >x : string | number +>10 : number return x; // string | number >x : string | number @@ -100,6 +107,7 @@ function foo5(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string return x; // string | number >x : string | number @@ -108,6 +116,7 @@ function foo5(x: number | string) { x = "hello"; >x = "hello" : string >x : string | number +>"hello" : string return x; // string | number >x : string | number @@ -122,10 +131,12 @@ function foo6(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string x = 10; >x = 10 : number >x : string | number +>10 : number return x; // string | number >x : string | number @@ -134,6 +145,7 @@ function foo6(x: number | string) { x = "hello"; >x = "hello" : string >x : string | number +>"hello" : string return x; // string | number >x : string | number @@ -147,15 +159,18 @@ function foo7(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string return x === "hello"; // string >x === "hello" : boolean >x : string +>"hello" : string } else if (typeof x === "boolean") { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string return x; // boolean >x : boolean @@ -164,6 +179,7 @@ function foo7(x: number | string | boolean) { return x == 10; // number >x == 10 : boolean >x : number +>10 : number } } function foo8(x: number | string | boolean) { @@ -174,10 +190,12 @@ function foo8(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string return x === "hello"; // string >x === "hello" : boolean >x : string +>"hello" : string } else { var b: number | boolean = x; // number | boolean @@ -188,6 +206,7 @@ function foo8(x: number | string | boolean) { >typeof x === "boolean" : boolean >typeof x : string >x : number | boolean +>"boolean" : string return x; // boolean >x : boolean @@ -196,6 +215,7 @@ function foo8(x: number | string | boolean) { return x == 10; // number >x == 10 : boolean >x : number +>10 : number } } } @@ -205,11 +225,13 @@ function foo9(x: number | string) { var y = 10; >y : number +>10 : number if (typeof x === "string") { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string // usage of x or assignment to separate variable shouldn't cause narrowing of type to stop y = x.length; @@ -222,11 +244,13 @@ function foo9(x: number | string) { return x === "hello"; // string >x === "hello" : boolean >x : string +>"hello" : string } else { return x == 10; // number >x == 10 : boolean >x : number +>10 : number } } function foo10(x: number | string | boolean) { @@ -238,10 +262,12 @@ function foo10(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string return x === "hello"; // string >x === "hello" : boolean >x : string +>"hello" : string } else { var y: boolean | string; @@ -256,10 +282,12 @@ function foo10(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : number | boolean +>"number" : string ? x === 10 // number >x === 10 : boolean >x : number +>10 : number : x; // x should be boolean >x : boolean @@ -275,6 +303,7 @@ function foo11(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string return x; // string | number | boolean - x changed in else branch >x : string | number | boolean @@ -292,6 +321,7 @@ function foo11(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string ? ( >( // change value of x x = 10 && x.toString() // number | boolean | string ) : string @@ -301,6 +331,7 @@ function foo11(x: number | string | boolean) { >x = 10 && x.toString() : string >x : string | number | boolean >10 && x.toString() : string +>10 : number >x.toString() : string >x.toString : () => string >x : string | number | boolean @@ -334,6 +365,7 @@ function foo12(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string return x.toString(); // string | number | boolean - x changed in else branch >x.toString() : string @@ -345,6 +377,7 @@ function foo12(x: number | string | boolean) { x = 10; >x = 10 : number >x : string | number | boolean +>10 : number var b = x; // number | boolean | string >b : string | number | boolean @@ -355,6 +388,7 @@ function foo12(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string ? x.toString() // number >x.toString() : string diff --git a/tests/baselines/reference/typeGuardsInModule.types b/tests/baselines/reference/typeGuardsInModule.types index 82a0345b170..6b6c552f0cc 100644 --- a/tests/baselines/reference/typeGuardsInModule.types +++ b/tests/baselines/reference/typeGuardsInModule.types @@ -24,6 +24,7 @@ module m1 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -36,6 +37,7 @@ module m1 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string num = var2.length; // string >num = var2.length : number @@ -59,6 +61,7 @@ module m1 { >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number +>"string" : string strOrNum = var3; // string | number >strOrNum = var3 : string | number @@ -93,6 +96,7 @@ module m2 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -105,6 +109,7 @@ module m2 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -117,6 +122,7 @@ module m2 { >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number +>"string" : string >var3 : string | number // variables in module declaration @@ -127,6 +133,7 @@ module m2 { >typeof var4 === "string" : boolean >typeof var4 : string >var4 : string | number +>"string" : string num = var4.length; // string >num = var4.length : number @@ -150,6 +157,7 @@ module m2 { >typeof var5 === "string" : boolean >typeof var5 : string >var5 : string | number +>"string" : string strOrNum = var5; // string | number >strOrNum = var5 : string | number @@ -177,6 +185,7 @@ module m3.m4 { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -189,6 +198,7 @@ module m3.m4 { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string num = var2.length; // string >num = var2.length : number @@ -212,6 +222,7 @@ module m3.m4 { >typeof var3 === "string" : boolean >typeof var3 : string >var3 : string | number +>"string" : string strOrNum = var3; // string | number >strOrNum = var3 : string | number diff --git a/tests/baselines/reference/typeGuardsInProperties.types b/tests/baselines/reference/typeGuardsInProperties.types index 46e9ec0d42c..2167eb88642 100644 --- a/tests/baselines/reference/typeGuardsInProperties.types +++ b/tests/baselines/reference/typeGuardsInProperties.types @@ -37,6 +37,7 @@ class C1 { >this.pp1 : string | number >this : C1 >pp1 : string | number +>"string" : string >this.pp1 : string | number >this : C1 >pp1 : string | number @@ -50,6 +51,7 @@ class C1 { >this.pp2 : string | number >this : C1 >pp2 : string | number +>"string" : string >this.pp2 : string | number >this : C1 >pp2 : string | number @@ -63,6 +65,7 @@ class C1 { >this.pp3 : string | number >this : C1 >pp3 : string | number +>"string" : string >this.pp3 : string | number >this : C1 >pp3 : string | number @@ -81,6 +84,7 @@ strOrNum = typeof c1.pp2 === "string" && c1.pp2; // string | number >c1.pp2 : string | number >c1 : C1 >pp2 : string | number +>"string" : string >c1.pp2 : string | number >c1 : C1 >pp2 : string | number @@ -94,6 +98,7 @@ strOrNum = typeof c1.pp3 === "string" && c1.pp3; // string | number >c1.pp3 : string | number >c1 : C1 >pp3 : string | number +>"string" : string >c1.pp3 : string | number >c1 : C1 >pp3 : string | number @@ -114,6 +119,7 @@ strOrNum = typeof obj1.x === "string" && obj1.x; // string | number >obj1.x : string | number >obj1 : { x: string | number; } >x : string | number +>"string" : string >obj1.x : string | number >obj1 : { x: string | number; } >x : string | number diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types index 884c1cc1f5e..10b72e3fbd1 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types +++ b/tests/baselines/reference/typeGuardsInRightOperandOfAndAndOperator.types @@ -11,10 +11,12 @@ function foo(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string >x.length === 10 : boolean >x.length : number >x : string >length : number +>10 : number } function foo2(x: number | string) { >foo2 : (x: string | number) => string | number @@ -26,11 +28,13 @@ function foo2(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string >((x = 10) && x) : string | number >(x = 10) && x : string | number >(x = 10) : number >x = 10 : number >x : string | number +>10 : number >x : string | number } function foo3(x: number | string) { @@ -43,11 +47,13 @@ function foo3(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string >((x = "hello") && x) : string | number >(x = "hello") && x : string | number >(x = "hello") : string >x = "hello" : string >x : string | number +>"hello" : string >x : string | number } function foo4(x: number | string | boolean) { @@ -60,11 +66,13 @@ function foo4(x: number | string | boolean) { >typeof x !== "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string && typeof x !== "number" // number | boolean >typeof x !== "number" : boolean >typeof x : string >x : number | boolean +>"number" : string && x; // boolean >x : boolean @@ -82,6 +90,7 @@ function foo5(x: number | string | boolean) { >typeof x !== "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string && ((b = x) && (typeof x !== "number" // number | boolean >((b = x) && (typeof x !== "number" // number | boolean && x)) : boolean @@ -95,6 +104,7 @@ function foo5(x: number | string | boolean) { >typeof x !== "number" : boolean >typeof x : string >x : number | boolean +>"number" : string && x)); // boolean >x : boolean @@ -109,6 +119,7 @@ function foo6(x: number | string | boolean) { >typeof x !== "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string && (typeof x !== "number" // number | boolean >(typeof x !== "number" // number | boolean ? x // boolean : x === 10) : boolean @@ -116,6 +127,7 @@ function foo6(x: number | string | boolean) { >typeof x !== "number" : boolean >typeof x : string >x : number | boolean +>"number" : string ? x // boolean >x : boolean @@ -123,6 +135,7 @@ function foo6(x: number | string | boolean) { : x === 10) // number >x === 10 : boolean >x : number +>10 : number } function foo7(x: number | string | boolean) { >foo7 : (x: string | number | boolean) => string @@ -141,6 +154,7 @@ function foo7(x: number | string | boolean) { >typeof x !== "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string && ((z = x) // string | number | boolean - x changed deeper in conditional expression >((z = x) // string | number | boolean - x changed deeper in conditional expression && (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()))) : string @@ -156,6 +170,7 @@ function foo7(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string // change value of x ? (x = 10 && x.toString()) // number | boolean | string @@ -163,6 +178,7 @@ function foo7(x: number | string | boolean) { >x = 10 && x.toString() : string >x : string | number | boolean >10 && x.toString() : string +>10 : number >x.toString() : string >x.toString : () => string >x : string | number | boolean @@ -192,11 +208,13 @@ function foo8(x: number | string) { >typeof x !== "string" : boolean >typeof x : string >x : string | number +>"string" : string && (x = 10) // change x - number| string >(x = 10) : number >x = 10 : number >x : string | number +>10 : number && (typeof x === "number" >(typeof x === "number" ? x // number : x.length) : number @@ -204,6 +222,7 @@ function foo8(x: number | string) { >typeof x === "number" : boolean >typeof x : string >x : string | number +>"number" : string ? x // number >x : number diff --git a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types index 8940d50c2d4..81160323429 100644 --- a/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types +++ b/tests/baselines/reference/typeGuardsInRightOperandOfOrOrOperator.types @@ -11,10 +11,12 @@ function foo(x: number | string) { >typeof x !== "string" : boolean >typeof x : string >x : string | number +>"string" : string >x.length === 10 : boolean >x.length : number >x : string >length : number +>10 : number } function foo2(x: number | string) { >foo2 : (x: string | number) => string | number | boolean @@ -26,11 +28,13 @@ function foo2(x: number | string) { >typeof x !== "string" : boolean >typeof x : string >x : string | number +>"string" : string >((x = 10) || x) : string | number >(x = 10) || x : string | number >(x = 10) : number >x = 10 : number >x : string | number +>10 : number >x : string | number } function foo3(x: number | string) { @@ -43,11 +47,13 @@ function foo3(x: number | string) { >typeof x !== "string" : boolean >typeof x : string >x : string | number +>"string" : string >((x = "hello") || x) : string | number >(x = "hello") || x : string | number >(x = "hello") : string >x = "hello" : string >x : string | number +>"hello" : string >x : string | number } function foo4(x: number | string | boolean) { @@ -60,11 +66,13 @@ function foo4(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string || typeof x === "number" // number | boolean >typeof x === "number" : boolean >typeof x : string >x : number | boolean +>"number" : string || x; // boolean >x : boolean @@ -82,6 +90,7 @@ function foo5(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string || ((b = x) || (typeof x === "number" // number | boolean >((b = x) || (typeof x === "number" // number | boolean || x)) : number | boolean @@ -95,6 +104,7 @@ function foo5(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : number | boolean +>"number" : string || x)); // boolean >x : boolean @@ -109,6 +119,7 @@ function foo6(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string || (typeof x !== "number" // number | boolean >(typeof x !== "number" // number | boolean ? x // boolean : x === 10) : boolean @@ -116,6 +127,7 @@ function foo6(x: number | string | boolean) { >typeof x !== "number" : boolean >typeof x : string >x : number | boolean +>"number" : string ? x // boolean >x : boolean @@ -123,6 +135,7 @@ function foo6(x: number | string | boolean) { : x === 10) // number >x === 10 : boolean >x : number +>10 : number } function foo7(x: number | string | boolean) { >foo7 : (x: string | number | boolean) => string | number | boolean @@ -141,6 +154,7 @@ function foo7(x: number | string | boolean) { >typeof x === "string" : boolean >typeof x : string >x : string | number | boolean +>"string" : string || ((z = x) // string | number | boolean - x changed deeper in conditional expression >((z = x) // string | number | boolean - x changed deeper in conditional expression || (typeof x === "number" // change value of x ? (x = 10 && x.toString()) // number | boolean | string // do not change value : (y = x && x.toString()))) : string | number | boolean @@ -156,6 +170,7 @@ function foo7(x: number | string | boolean) { >typeof x === "number" : boolean >typeof x : string >x : string | number | boolean +>"number" : string // change value of x ? (x = 10 && x.toString()) // number | boolean | string @@ -163,6 +178,7 @@ function foo7(x: number | string | boolean) { >x = 10 && x.toString() : string >x : string | number | boolean >10 && x.toString() : string +>10 : number >x.toString() : string >x.toString : () => string >x : string | number | boolean @@ -192,11 +208,13 @@ function foo8(x: number | string) { >typeof x === "string" : boolean >typeof x : string >x : string | number +>"string" : string || (x = 10) // change x - number| string >(x = 10) : number >x = 10 : number >x : string | number +>10 : number || (typeof x === "number" >(typeof x === "number" ? x // number : x.length) : number @@ -204,6 +222,7 @@ function foo8(x: number | string) { >typeof x === "number" : boolean >typeof x : string >x : string | number +>"number" : string ? x // number >x : number diff --git a/tests/baselines/reference/typeGuardsObjectMethods.types b/tests/baselines/reference/typeGuardsObjectMethods.types index ecb4b8083ea..4ca691bc020 100644 --- a/tests/baselines/reference/typeGuardsObjectMethods.types +++ b/tests/baselines/reference/typeGuardsObjectMethods.types @@ -30,6 +30,7 @@ var obj1 = { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -45,6 +46,7 @@ var obj1 = { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -57,6 +59,7 @@ var obj1 = { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -76,6 +79,7 @@ var obj1 = { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -91,6 +95,7 @@ var obj1 = { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -111,6 +116,7 @@ var obj1 = { >typeof var1 === "string" : boolean >typeof var1 : string >var1 : string | number +>"string" : string >var1.length : number >var1 : string >length : number @@ -126,6 +132,7 @@ var obj1 = { >typeof var2 === "string" : boolean >typeof var2 : string >var2 : string | number +>"string" : string >var2.length : number >var2 : string >length : number @@ -138,6 +145,7 @@ var obj1 = { >typeof param === "string" : boolean >typeof param : string >param : string | number +>"string" : string >param.length : number >param : string >length : number @@ -155,6 +163,7 @@ strOrNum = typeof obj1.method(strOrNum) === "string" && obj1.method(strOrNum); >obj1 : { method(param: string | number): string | number; prop: string | number; } >method : (param: string | number) => string | number >strOrNum : string | number +>"string" : string >obj1.method(strOrNum) : string | number >obj1.method : (param: string | number) => string | number >obj1 : { method(param: string | number): string | number; prop: string | number; } @@ -171,6 +180,7 @@ strOrNum = typeof obj1.prop === "string" && obj1.prop; >obj1.prop : string | number >obj1 : { method(param: string | number): string | number; prop: string | number; } >prop : string | number +>"string" : string >obj1.prop : string | number >obj1 : { method(param: string | number): string | number; prop: string | number; } >prop : string | number diff --git a/tests/baselines/reference/typeInferenceFixEarly.types b/tests/baselines/reference/typeInferenceFixEarly.types index c009d2d809e..5c727ca3226 100644 --- a/tests/baselines/reference/typeInferenceFixEarly.types +++ b/tests/baselines/reference/typeInferenceFixEarly.types @@ -13,4 +13,5 @@ f(n => 3); >f : (p: (t: T) => T) => T >n => 3 : (n: {}) => number >n : {} +>3 : number diff --git a/tests/baselines/reference/typeInferenceReturnTypeCallback.types b/tests/baselines/reference/typeInferenceReturnTypeCallback.types index 807574ed3d8..fb26424d892 100644 --- a/tests/baselines/reference/typeInferenceReturnTypeCallback.types +++ b/tests/baselines/reference/typeInferenceReturnTypeCallback.types @@ -31,6 +31,7 @@ class Nil implements IList{ >D : D return null; +>null : null } } @@ -84,5 +85,6 @@ class Cons implements IList{ >E : E return null; +>null : null } } diff --git a/tests/baselines/reference/typeInferenceWithTupleType.types b/tests/baselines/reference/typeInferenceWithTupleType.types index 3648c0aba50..a45e72518e8 100644 --- a/tests/baselines/reference/typeInferenceWithTupleType.types +++ b/tests/baselines/reference/typeInferenceWithTupleType.types @@ -20,16 +20,20 @@ var combineResult = combine("string", 10); >combineResult : [string, number] >combine("string", 10) : [string, number] >combine : (x: T, y: U) => [T, U] +>"string" : string +>10 : number var combineEle1 = combineResult[0]; // string >combineEle1 : string >combineResult[0] : string >combineResult : [string, number] +>0 : number var combineEle2 = combineResult[1]; // number >combineEle2 : number >combineResult[1] : number >combineResult : [string, number] +>1 : number function zip(array1: T[], array2: U[]): [[T, U]] { >zip : (array1: T[], array2: U[]) => [[T, U]] @@ -70,6 +74,7 @@ function zip(array1: T[], array2: U[]): [[T, U]] { for (var i = 0; i < length; ++i) { >i : number +>0 : number >i < length : boolean >i : number >length : number @@ -98,17 +103,24 @@ var zipResult = zip(["foo", "bar"], [5, 6]); >zip(["foo", "bar"], [5, 6]) : [[string, number]] >zip : (array1: T[], array2: U[]) => [[T, U]] >["foo", "bar"] : string[] +>"foo" : string +>"bar" : string >[5, 6] : number[] +>5 : number +>6 : number var zipResultEle = zipResult[0]; // [string, number] >zipResultEle : [string, number] >zipResult[0] : [string, number] >zipResult : [[string, number]] +>0 : number var zipResultEleEle = zipResult[0][0]; // string >zipResultEleEle : string >zipResult[0][0] : string >zipResult[0] : [string, number] >zipResult : [[string, number]] +>0 : number +>0 : number diff --git a/tests/baselines/reference/typeOfPrototype.types b/tests/baselines/reference/typeOfPrototype.types index 26fa7955c34..90466787080 100644 --- a/tests/baselines/reference/typeOfPrototype.types +++ b/tests/baselines/reference/typeOfPrototype.types @@ -4,9 +4,11 @@ class Foo { bar = 3; >bar : number +>3 : number static bar = ''; >bar : string +>'' : string } Foo.prototype.bar = undefined; // Should be OK >Foo.prototype.bar = undefined : undefined diff --git a/tests/baselines/reference/typeOfThisInStaticMembers.types b/tests/baselines/reference/typeOfThisInStaticMembers.types index 65440fb1f2e..72caa4a95a9 100644 --- a/tests/baselines/reference/typeOfThisInStaticMembers.types +++ b/tests/baselines/reference/typeOfThisInStaticMembers.types @@ -35,6 +35,7 @@ var r2 = t.foo + 1; >t.foo : number >t : typeof C >foo : number +>1 : number var r3 = t.bar(); >r3 : typeof C @@ -47,6 +48,7 @@ var r4 = new t(1); >r4 : C >new t(1) : C >t : typeof C +>1 : number class C2 { >C2 : C2 @@ -88,6 +90,7 @@ var r5 = t2.foo + 1; >t2.foo : string >t2 : typeof C2 >foo : string +>1 : number var r6 = t2.bar(); >r6 : typeof C2 @@ -100,5 +103,6 @@ var r7 = new t2(''); >r7 : C2<{}> >new t2('') : C2<{}> >t2 : typeof C2 +>'' : string diff --git a/tests/baselines/reference/typeParameterAndArgumentOfSameName1.types b/tests/baselines/reference/typeParameterAndArgumentOfSameName1.types index 5811e481ebd..8e476732ded 100644 --- a/tests/baselines/reference/typeParameterAndArgumentOfSameName1.types +++ b/tests/baselines/reference/typeParameterAndArgumentOfSameName1.types @@ -13,6 +13,8 @@ function f(A: A): A { >A.toExponential : (fractionDigits?: number) => string >A : A >toExponential : (fractionDigits?: number) => string +>123 : number return null; +>null : null } diff --git a/tests/baselines/reference/typeParameterAsElementType.types b/tests/baselines/reference/typeParameterAsElementType.types index 5cbad56c5f1..10e6787ae31 100644 --- a/tests/baselines/reference/typeParameterAsElementType.types +++ b/tests/baselines/reference/typeParameterAsElementType.types @@ -11,4 +11,5 @@ function fee() { >arr : (string | T)[] >[t, ""] : (string | T)[] >t : T +>"" : string } diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.types b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.types index 21f0f4835ab..e2d41c5c136 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.types +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively.types @@ -47,19 +47,28 @@ function foo(x: T, y: U, z: V): V { return z; } foo(1, 2, 3); >foo(1, 2, 3) : number >foo : (x: T, y: U, z: V) => V +>1 : number +>2 : number +>3 : number foo({ x: 1 }, { x: 1, y: '' }, { x: 2, y: '', z: true }); >foo({ x: 1 }, { x: 1, y: '' }, { x: 2, y: '', z: true }) : { x: number; y: string; z: boolean; } >foo : (x: T, y: U, z: V) => V >{ x: 1 } : { x: number; } >x : number +>1 : number >{ x: 1, y: '' } : { x: number; y: string; } >x : number +>1 : number >y : string +>'' : string >{ x: 2, y: '', z: true } : { x: number; y: string; z: boolean; } >x : number +>2 : number >y : string +>'' : string >z : boolean +>true : boolean foo(a, b, c); >foo(a, b, c) : C @@ -75,8 +84,11 @@ foo(a, b, { foo: 1, bar: '', hm: true }); >b : B >{ foo: 1, bar: '', hm: true } : { foo: number; bar: string; hm: boolean; } >foo : number +>1 : number >bar : string +>'' : string >hm : boolean +>true : boolean foo((x: number, y) => { }, (x) => { }, () => { }); >foo((x: number, y) => { }, (x) => { }, () => { }) : () => void @@ -125,6 +137,9 @@ foo(b, b, { foo: 1, bar: '', hm: '' }); >b : B >{ foo: 1, bar: '', hm: '' } : { foo: number; bar: string; hm: string; } >foo : number +>1 : number >bar : string +>'' : string >hm : string +>'' : string diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.types b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.types index fdd66ebf435..3d51ad80832 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.types +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraintTransitively2.types @@ -47,19 +47,28 @@ function foo(x: T, y: U, z: V): V { return z; } foo(1, 2, ''); >foo(1, 2, '') : string >foo : (x: T, y: U, z: V) => V +>1 : number +>2 : number +>'' : string foo({ x: 1 }, { x: 1, y: '' }, { x: 2, y: 2, z: true }); >foo({ x: 1 }, { x: 1, y: '' }, { x: 2, y: 2, z: true }) : { x: number; y: number; z: boolean; } >foo : (x: T, y: U, z: V) => V >{ x: 1 } : { x: number; } >x : number +>1 : number >{ x: 1, y: '' } : { x: number; y: string; } >x : number +>1 : number >y : string +>'' : string >{ x: 2, y: 2, z: true } : { x: number; y: number; z: boolean; } >x : number +>2 : number >y : number +>2 : number >z : boolean +>true : boolean foo(a, b, a); >foo(a, b, a) : A @@ -74,8 +83,11 @@ foo(a, { foo: 1, bar: '', hm: true }, b); >a : A >{ foo: 1, bar: '', hm: true } : { foo: number; bar: string; hm: boolean; } >foo : number +>1 : number >bar : string +>'' : string >hm : boolean +>true : boolean >b : B foo((x: number, y: string) => { }, (x, y: boolean) => { }, () => { }); diff --git a/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.types b/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.types index 9d041b27738..c7841c1a38b 100644 --- a/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.types +++ b/tests/baselines/reference/typeParameterCompatibilityAccrossDeclarations.types @@ -10,6 +10,7 @@ var a = { >y : T >T : T >T : T +>null : null } var a2 = { >a2 : { x: (y: any) => any; } @@ -19,6 +20,7 @@ var a2 = { >x : (y: any) => any >function (y: any): any { return null; } : (y: any) => any >y : any +>null : null } export interface I { >I : I diff --git a/tests/baselines/reference/typeParameterFixingWithConstraints.types b/tests/baselines/reference/typeParameterFixingWithConstraints.types index c15f22fc974..64876952852 100644 --- a/tests/baselines/reference/typeParameterFixingWithConstraints.types +++ b/tests/baselines/reference/typeParameterFixingWithConstraints.types @@ -37,8 +37,11 @@ foo.foo({ bar: null }, bar => null, bar => null); >foo : (bar: TBar, bar1: (bar: TBar) => TBar, bar2: (bar: TBar) => TBar) => TBar >{ bar: null } : { [x: string]: null; bar: null; } >bar : null +>null : null >bar => null : (bar: IBar) => any >bar : IBar +>null : null >bar => null : (bar: IBar) => any >bar : IBar +>null : null diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.types b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.types index d6bd1b3b271..df535b5879b 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.types +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments.types @@ -57,6 +57,7 @@ var d2 = f(b, x => x.a, null); // type [B, A] >x.a : A >x : B >a : A +>null : null var d3 = f(b, x => x.b, null); // type [B, any] >d3 : [B, any] @@ -68,4 +69,5 @@ var d3 = f(b, x => x.b, null); // type [B, any] >x.b : any >x : B >b : any +>null : null diff --git a/tests/baselines/reference/typeParametersAvailableInNestedScope.types b/tests/baselines/reference/typeParametersAvailableInNestedScope.types index 8e36eb1ae67..69264e8471b 100644 --- a/tests/baselines/reference/typeParametersAvailableInNestedScope.types +++ b/tests/baselines/reference/typeParametersAvailableInNestedScope.types @@ -43,6 +43,7 @@ class C { >temp : (a: U) => T >null : T >T : T +>null : null } } @@ -60,6 +61,7 @@ c.data = c.x(null); >c.x : (a: U) => number >c : C >x : (a: U) => number +>null : null c.data = c.foo(); >c.data = c.foo() : number diff --git a/tests/baselines/reference/typeQueryWithReservedWords.types b/tests/baselines/reference/typeQueryWithReservedWords.types index d90b84fa015..34e3386606b 100644 --- a/tests/baselines/reference/typeQueryWithReservedWords.types +++ b/tests/baselines/reference/typeQueryWithReservedWords.types @@ -18,18 +18,24 @@ interface IScope { create: typeof Controller.prototype.create; >create : () => void +>Controller.prototype.create : () => void +>Controller.prototype : Controller >Controller : typeof Controller >prototype : Controller >create : () => void delete: typeof Controller.prototype.delete; // Should not error >delete : () => void +>Controller.prototype.delete : () => void +>Controller.prototype : Controller >Controller : typeof Controller >prototype : Controller >delete : () => void var: typeof Controller.prototype.var; // Should not error >var : () => void +>Controller.prototype.var : () => void +>Controller.prototype : Controller >Controller : typeof Controller >prototype : Controller >var : () => void diff --git a/tests/baselines/reference/typeVal.types b/tests/baselines/reference/typeVal.types index 76adb1e3492..d9768a9fbf7 100644 --- a/tests/baselines/reference/typeVal.types +++ b/tests/baselines/reference/typeVal.types @@ -11,11 +11,13 @@ var I:I = { I: 3}; >I : I >{ I: 3} : { I: number; } >I : number +>3 : number I.I=4; >I.I=4 : number >I.I : number >I : I >I : number +>4 : number diff --git a/tests/baselines/reference/typedArrays.types b/tests/baselines/reference/typedArrays.types index 5553aedf51b..33ae53f609d 100644 --- a/tests/baselines/reference/typedArrays.types +++ b/tests/baselines/reference/typedArrays.types @@ -11,54 +11,63 @@ function CreateTypedArrayTypes() { >typedArrays[0] = Int8Array : Int8ArrayConstructor >typedArrays[0] : any >typedArrays : any[] +>0 : number >Int8Array : Int8ArrayConstructor typedArrays[1] = Uint8Array; >typedArrays[1] = Uint8Array : Uint8ArrayConstructor >typedArrays[1] : any >typedArrays : any[] +>1 : number >Uint8Array : Uint8ArrayConstructor typedArrays[2] = Int16Array; >typedArrays[2] = Int16Array : Int16ArrayConstructor >typedArrays[2] : any >typedArrays : any[] +>2 : number >Int16Array : Int16ArrayConstructor typedArrays[3] = Uint16Array; >typedArrays[3] = Uint16Array : Uint16ArrayConstructor >typedArrays[3] : any >typedArrays : any[] +>3 : number >Uint16Array : Uint16ArrayConstructor typedArrays[4] = Int32Array; >typedArrays[4] = Int32Array : Int32ArrayConstructor >typedArrays[4] : any >typedArrays : any[] +>4 : number >Int32Array : Int32ArrayConstructor typedArrays[5] = Uint32Array; >typedArrays[5] = Uint32Array : Uint32ArrayConstructor >typedArrays[5] : any >typedArrays : any[] +>5 : number >Uint32Array : Uint32ArrayConstructor typedArrays[6] = Float32Array; >typedArrays[6] = Float32Array : Float32ArrayConstructor >typedArrays[6] : any >typedArrays : any[] +>6 : number >Float32Array : Float32ArrayConstructor typedArrays[7] = Float64Array; >typedArrays[7] = Float64Array : Float64ArrayConstructor >typedArrays[7] : any >typedArrays : any[] +>7 : number >Float64Array : Float64ArrayConstructor typedArrays[8] = Uint8ClampedArray; >typedArrays[8] = Uint8ClampedArray : Uint8ClampedArrayConstructor >typedArrays[8] : any >typedArrays : any[] +>8 : number >Uint8ClampedArray : Uint8ClampedArrayConstructor return typedArrays; @@ -77,6 +86,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[0] = new Int8Array(obj) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >new Int8Array(obj) : Int8Array >Int8Array : Int8ArrayConstructor >obj : number @@ -85,6 +95,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[1] = new Uint8Array(obj) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >new Uint8Array(obj) : Uint8Array >Uint8Array : Uint8ArrayConstructor >obj : number @@ -93,6 +104,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[2] = new Int16Array(obj) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >new Int16Array(obj) : Int16Array >Int16Array : Int16ArrayConstructor >obj : number @@ -101,6 +113,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[3] = new Uint16Array(obj) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >new Uint16Array(obj) : Uint16Array >Uint16Array : Uint16ArrayConstructor >obj : number @@ -109,6 +122,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[4] = new Int32Array(obj) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >new Int32Array(obj) : Int32Array >Int32Array : Int32ArrayConstructor >obj : number @@ -117,6 +131,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[5] = new Uint32Array(obj) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >new Uint32Array(obj) : Uint32Array >Uint32Array : Uint32ArrayConstructor >obj : number @@ -125,6 +140,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[6] = new Float32Array(obj) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >new Float32Array(obj) : Float32Array >Float32Array : Float32ArrayConstructor >obj : number @@ -133,6 +149,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[7] = new Float64Array(obj) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >new Float64Array(obj) : Float64Array >Float64Array : Float64ArrayConstructor >obj : number @@ -141,6 +158,7 @@ function CreateTypedArrayInstancesFromLength(obj: number) { >typedArrays[8] = new Uint8ClampedArray(obj) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >new Uint8ClampedArray(obj) : Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor >obj : number @@ -161,6 +179,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[0] = new Int8Array(obj) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >new Int8Array(obj) : Int8Array >Int8Array : Int8ArrayConstructor >obj : number[] @@ -169,6 +188,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[1] = new Uint8Array(obj) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >new Uint8Array(obj) : Uint8Array >Uint8Array : Uint8ArrayConstructor >obj : number[] @@ -177,6 +197,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[2] = new Int16Array(obj) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >new Int16Array(obj) : Int16Array >Int16Array : Int16ArrayConstructor >obj : number[] @@ -185,6 +206,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[3] = new Uint16Array(obj) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >new Uint16Array(obj) : Uint16Array >Uint16Array : Uint16ArrayConstructor >obj : number[] @@ -193,6 +215,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[4] = new Int32Array(obj) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >new Int32Array(obj) : Int32Array >Int32Array : Int32ArrayConstructor >obj : number[] @@ -201,6 +224,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[5] = new Uint32Array(obj) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >new Uint32Array(obj) : Uint32Array >Uint32Array : Uint32ArrayConstructor >obj : number[] @@ -209,6 +233,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[6] = new Float32Array(obj) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >new Float32Array(obj) : Float32Array >Float32Array : Float32ArrayConstructor >obj : number[] @@ -217,6 +242,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[7] = new Float64Array(obj) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >new Float64Array(obj) : Float64Array >Float64Array : Float64ArrayConstructor >obj : number[] @@ -225,6 +251,7 @@ function CreateTypedArrayInstancesFromArray(obj: number[]) { >typedArrays[8] = new Uint8ClampedArray(obj) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >new Uint8ClampedArray(obj) : Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor >obj : number[] @@ -245,6 +272,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[0] = Int8Array.from(obj) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >Int8Array.from(obj) : Int8Array >Int8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int8Array >Int8Array : Int8ArrayConstructor @@ -255,6 +283,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[1] = Uint8Array.from(obj) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >Uint8Array.from(obj) : Uint8Array >Uint8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8Array >Uint8Array : Uint8ArrayConstructor @@ -265,6 +294,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[2] = Int16Array.from(obj) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >Int16Array.from(obj) : Int16Array >Int16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int16Array >Int16Array : Int16ArrayConstructor @@ -275,6 +305,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[3] = Uint16Array.from(obj) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >Uint16Array.from(obj) : Uint16Array >Uint16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint16Array >Uint16Array : Uint16ArrayConstructor @@ -285,6 +316,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[4] = Int32Array.from(obj) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >Int32Array.from(obj) : Int32Array >Int32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int32Array >Int32Array : Int32ArrayConstructor @@ -295,6 +327,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[5] = Uint32Array.from(obj) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >Uint32Array.from(obj) : Uint32Array >Uint32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint32Array >Uint32Array : Uint32ArrayConstructor @@ -305,6 +338,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[6] = Float32Array.from(obj) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >Float32Array.from(obj) : Float32Array >Float32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float32Array >Float32Array : Float32ArrayConstructor @@ -315,6 +349,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[7] = Float64Array.from(obj) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >Float64Array.from(obj) : Float64Array >Float64Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float64Array >Float64Array : Float64ArrayConstructor @@ -325,6 +360,7 @@ function CreateIntegerTypedArraysFromArray2(obj:number[]) { >typedArrays[8] = Uint8ClampedArray.from(obj) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >Uint8ClampedArray.from(obj) : Uint8ClampedArray >Uint8ClampedArray.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor @@ -348,6 +384,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[0] = Int8Array.from(obj) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >Int8Array.from(obj) : Int8Array >Int8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int8Array >Int8Array : Int8ArrayConstructor @@ -358,6 +395,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[1] = Uint8Array.from(obj) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >Uint8Array.from(obj) : Uint8Array >Uint8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8Array >Uint8Array : Uint8ArrayConstructor @@ -368,6 +406,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[2] = Int16Array.from(obj) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >Int16Array.from(obj) : Int16Array >Int16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int16Array >Int16Array : Int16ArrayConstructor @@ -378,6 +417,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[3] = Uint16Array.from(obj) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >Uint16Array.from(obj) : Uint16Array >Uint16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint16Array >Uint16Array : Uint16ArrayConstructor @@ -388,6 +428,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[4] = Int32Array.from(obj) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >Int32Array.from(obj) : Int32Array >Int32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int32Array >Int32Array : Int32ArrayConstructor @@ -398,6 +439,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[5] = Uint32Array.from(obj) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >Uint32Array.from(obj) : Uint32Array >Uint32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint32Array >Uint32Array : Uint32ArrayConstructor @@ -408,6 +450,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[6] = Float32Array.from(obj) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >Float32Array.from(obj) : Float32Array >Float32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float32Array >Float32Array : Float32ArrayConstructor @@ -418,6 +461,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[7] = Float64Array.from(obj) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >Float64Array.from(obj) : Float64Array >Float64Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float64Array >Float64Array : Float64ArrayConstructor @@ -428,6 +472,7 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays[8] = Uint8ClampedArray.from(obj) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >Uint8ClampedArray.from(obj) : Uint8ClampedArray >Uint8ClampedArray.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor @@ -466,82 +511,127 @@ function CreateTypedArraysOf2() { >typedArrays[0] = Int8Array.of(1,2,3,4) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >Int8Array.of(1,2,3,4) : Int8Array >Int8Array.of : (...items: number[]) => Int8Array >Int8Array : Int8ArrayConstructor >of : (...items: number[]) => Int8Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[1] = Uint8Array.of(1,2,3,4); >typedArrays[1] = Uint8Array.of(1,2,3,4) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >Uint8Array.of(1,2,3,4) : Uint8Array >Uint8Array.of : (...items: number[]) => Uint8Array >Uint8Array : Uint8ArrayConstructor >of : (...items: number[]) => Uint8Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[2] = Int16Array.of(1,2,3,4); >typedArrays[2] = Int16Array.of(1,2,3,4) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >Int16Array.of(1,2,3,4) : Int16Array >Int16Array.of : (...items: number[]) => Int16Array >Int16Array : Int16ArrayConstructor >of : (...items: number[]) => Int16Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[3] = Uint16Array.of(1,2,3,4); >typedArrays[3] = Uint16Array.of(1,2,3,4) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >Uint16Array.of(1,2,3,4) : Uint16Array >Uint16Array.of : (...items: number[]) => Uint16Array >Uint16Array : Uint16ArrayConstructor >of : (...items: number[]) => Uint16Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[4] = Int32Array.of(1,2,3,4); >typedArrays[4] = Int32Array.of(1,2,3,4) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >Int32Array.of(1,2,3,4) : Int32Array >Int32Array.of : (...items: number[]) => Int32Array >Int32Array : Int32ArrayConstructor >of : (...items: number[]) => Int32Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[5] = Uint32Array.of(1,2,3,4); >typedArrays[5] = Uint32Array.of(1,2,3,4) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >Uint32Array.of(1,2,3,4) : Uint32Array >Uint32Array.of : (...items: number[]) => Uint32Array >Uint32Array : Uint32ArrayConstructor >of : (...items: number[]) => Uint32Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[6] = Float32Array.of(1,2,3,4); >typedArrays[6] = Float32Array.of(1,2,3,4) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >Float32Array.of(1,2,3,4) : Float32Array >Float32Array.of : (...items: number[]) => Float32Array >Float32Array : Float32ArrayConstructor >of : (...items: number[]) => Float32Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[7] = Float64Array.of(1,2,3,4); >typedArrays[7] = Float64Array.of(1,2,3,4) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >Float64Array.of(1,2,3,4) : Float64Array >Float64Array.of : (...items: number[]) => Float64Array >Float64Array : Float64ArrayConstructor >of : (...items: number[]) => Float64Array +>1 : number +>2 : number +>3 : number +>4 : number typedArrays[8] = Uint8ClampedArray.of(1,2,3,4); >typedArrays[8] = Uint8ClampedArray.of(1,2,3,4) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >Uint8ClampedArray.of(1,2,3,4) : Uint8ClampedArray >Uint8ClampedArray.of : (...items: number[]) => Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor >of : (...items: number[]) => Uint8ClampedArray +>1 : number +>2 : number +>3 : number +>4 : number return typedArrays; >typedArrays : any[] @@ -563,6 +653,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[0] = Int8Array.from(obj, mapFn) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >Int8Array.from(obj, mapFn) : Int8Array >Int8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int8Array >Int8Array : Int8ArrayConstructor @@ -574,6 +665,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[1] = Uint8Array.from(obj, mapFn) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >Uint8Array.from(obj, mapFn) : Uint8Array >Uint8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8Array >Uint8Array : Uint8ArrayConstructor @@ -585,6 +677,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[2] = Int16Array.from(obj, mapFn) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >Int16Array.from(obj, mapFn) : Int16Array >Int16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int16Array >Int16Array : Int16ArrayConstructor @@ -596,6 +689,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[3] = Uint16Array.from(obj, mapFn) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >Uint16Array.from(obj, mapFn) : Uint16Array >Uint16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint16Array >Uint16Array : Uint16ArrayConstructor @@ -607,6 +701,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[4] = Int32Array.from(obj, mapFn) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >Int32Array.from(obj, mapFn) : Int32Array >Int32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int32Array >Int32Array : Int32ArrayConstructor @@ -618,6 +713,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[5] = Uint32Array.from(obj, mapFn) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >Uint32Array.from(obj, mapFn) : Uint32Array >Uint32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint32Array >Uint32Array : Uint32ArrayConstructor @@ -629,6 +725,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[6] = Float32Array.from(obj, mapFn) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >Float32Array.from(obj, mapFn) : Float32Array >Float32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float32Array >Float32Array : Float32ArrayConstructor @@ -640,6 +737,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[7] = Float64Array.from(obj, mapFn) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >Float64Array.from(obj, mapFn) : Float64Array >Float64Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float64Array >Float64Array : Float64ArrayConstructor @@ -651,6 +749,7 @@ function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:n >typedArrays[8] = Uint8ClampedArray.from(obj, mapFn) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >Uint8ClampedArray.from(obj, mapFn) : Uint8ClampedArray >Uint8ClampedArray.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor @@ -679,6 +778,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[0] = Int8Array.from(obj, mapFn, thisArg) : Int8Array >typedArrays[0] : any >typedArrays : any[] +>0 : number >Int8Array.from(obj, mapFn, thisArg) : Int8Array >Int8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int8Array >Int8Array : Int8ArrayConstructor @@ -691,6 +791,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[1] = Uint8Array.from(obj, mapFn, thisArg) : Uint8Array >typedArrays[1] : any >typedArrays : any[] +>1 : number >Uint8Array.from(obj, mapFn, thisArg) : Uint8Array >Uint8Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8Array >Uint8Array : Uint8ArrayConstructor @@ -703,6 +804,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[2] = Int16Array.from(obj, mapFn, thisArg) : Int16Array >typedArrays[2] : any >typedArrays : any[] +>2 : number >Int16Array.from(obj, mapFn, thisArg) : Int16Array >Int16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int16Array >Int16Array : Int16ArrayConstructor @@ -715,6 +817,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[3] = Uint16Array.from(obj, mapFn, thisArg) : Uint16Array >typedArrays[3] : any >typedArrays : any[] +>3 : number >Uint16Array.from(obj, mapFn, thisArg) : Uint16Array >Uint16Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint16Array >Uint16Array : Uint16ArrayConstructor @@ -727,6 +830,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[4] = Int32Array.from(obj, mapFn, thisArg) : Int32Array >typedArrays[4] : any >typedArrays : any[] +>4 : number >Int32Array.from(obj, mapFn, thisArg) : Int32Array >Int32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Int32Array >Int32Array : Int32ArrayConstructor @@ -739,6 +843,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[5] = Uint32Array.from(obj, mapFn, thisArg) : Uint32Array >typedArrays[5] : any >typedArrays : any[] +>5 : number >Uint32Array.from(obj, mapFn, thisArg) : Uint32Array >Uint32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint32Array >Uint32Array : Uint32ArrayConstructor @@ -751,6 +856,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[6] = Float32Array.from(obj, mapFn, thisArg) : Float32Array >typedArrays[6] : any >typedArrays : any[] +>6 : number >Float32Array.from(obj, mapFn, thisArg) : Float32Array >Float32Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float32Array >Float32Array : Float32ArrayConstructor @@ -763,6 +869,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[7] = Float64Array.from(obj, mapFn, thisArg) : Float64Array >typedArrays[7] : any >typedArrays : any[] +>7 : number >Float64Array.from(obj, mapFn, thisArg) : Float64Array >Float64Array.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Float64Array >Float64Array : Float64ArrayConstructor @@ -775,6 +882,7 @@ function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v >typedArrays[8] = Uint8ClampedArray.from(obj, mapFn, thisArg) : Uint8ClampedArray >typedArrays[8] : any >typedArrays : any[] +>8 : number >Uint8ClampedArray.from(obj, mapFn, thisArg) : Uint8ClampedArray >Uint8ClampedArray.from : (arrayLike: ArrayLike | Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any) => Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor diff --git a/tests/baselines/reference/typedGenericPrototypeMember.types b/tests/baselines/reference/typedGenericPrototypeMember.types index 5e7e51e96b4..9e3f064de0d 100644 --- a/tests/baselines/reference/typedGenericPrototypeMember.types +++ b/tests/baselines/reference/typedGenericPrototypeMember.types @@ -16,4 +16,5 @@ List.prototype.add("abc"); // Valid because T is instantiated to any >List : typeof List >prototype : List >add : (item: any) => void +>"abc" : string diff --git a/tests/baselines/reference/typeofInterface.types b/tests/baselines/reference/typeofInterface.types index 65afe6088e7..70e3cfe6926 100644 --- a/tests/baselines/reference/typeofInterface.types +++ b/tests/baselines/reference/typeofInterface.types @@ -20,8 +20,10 @@ var k: I; var j: typeof k.foo = { a: "hello" }; >j : { a: string; } +>k.foo : { a: string; } >k : I >foo : { a: string; } >{ a: "hello" } : { a: string; } >a : string +>"hello" : string diff --git a/tests/baselines/reference/typeofModuleWithoutExports.types b/tests/baselines/reference/typeofModuleWithoutExports.types index b1468c9a88e..e0f29156c53 100644 --- a/tests/baselines/reference/typeofModuleWithoutExports.types +++ b/tests/baselines/reference/typeofModuleWithoutExports.types @@ -4,6 +4,7 @@ module M { var x = 1; >x : number +>1 : number class C { >C : C diff --git a/tests/baselines/reference/typeofOperatorWithBooleanType.types b/tests/baselines/reference/typeofOperatorWithBooleanType.types index 74df383985a..faf18084fc1 100644 --- a/tests/baselines/reference/typeofOperatorWithBooleanType.types +++ b/tests/baselines/reference/typeofOperatorWithBooleanType.types @@ -5,6 +5,7 @@ var BOOLEAN: boolean; function foo(): boolean { return true; } >foo : () => boolean +>true : boolean class A { >A : A @@ -14,6 +15,7 @@ class A { static foo() { return false; } >foo : () => boolean +>false : boolean } module M { >M : typeof M @@ -37,13 +39,16 @@ var ResultIsString1 = typeof BOOLEAN; var ResultIsString2 = typeof true; >ResultIsString2 : string >typeof true : string +>true : boolean var ResultIsString3 = typeof { x: true, y: false }; >ResultIsString3 : string >typeof { x: true, y: false } : string >{ x: true, y: false } : { x: boolean; y: boolean; } >x : boolean +>true : boolean >y : boolean +>false : boolean // boolean type expressions var ResultIsString4 = typeof objA.a; @@ -84,6 +89,7 @@ var ResultIsString8 = typeof typeof BOOLEAN; // miss assignment operators typeof true; >typeof true : string +>true : boolean typeof BOOLEAN; >typeof BOOLEAN : string @@ -97,6 +103,8 @@ typeof foo(); typeof true, false; >typeof true, false : boolean >typeof true : string +>true : boolean +>false : boolean typeof objA.a; >typeof objA.a : string @@ -121,10 +129,12 @@ var r: () => boolean; >r : () => boolean z: typeof BOOLEAN; +>z : unknown >typeof BOOLEAN : string >BOOLEAN : boolean r: typeof foo; +>r : unknown >typeof foo : string >foo : () => boolean @@ -132,27 +142,33 @@ var y = { a: true, b: false}; >y : { a: boolean; b: boolean; } >{ a: true, b: false} : { a: boolean; b: boolean; } >a : boolean +>true : boolean >b : boolean +>false : boolean z: typeof y.a; +>z : unknown >typeof y.a : string >y.a : boolean >y : { a: boolean; b: boolean; } >a : boolean z: typeof objA.a; +>z : unknown >typeof objA.a : string >objA.a : boolean >objA : A >a : boolean z: typeof A.foo; +>z : unknown >typeof A.foo : string >A.foo : () => boolean >A : typeof A >foo : () => boolean z: typeof M.n; +>z : unknown >typeof M.n : string >M.n : boolean >M : typeof M diff --git a/tests/baselines/reference/typeofOperatorWithEnumType.types b/tests/baselines/reference/typeofOperatorWithEnumType.types index 2a3ccc6a3da..0afad2ad7b3 100644 --- a/tests/baselines/reference/typeofOperatorWithEnumType.types +++ b/tests/baselines/reference/typeofOperatorWithEnumType.types @@ -26,6 +26,7 @@ var ResultIsString3 = typeof ENUM1["A"]; >typeof ENUM1["A"] : string >ENUM1["A"] : ENUM1 >ENUM1 : typeof ENUM1 +>"A" : string var ResultIsString4 = typeof (ENUM[0] + ENUM1["B"]); >ResultIsString4 : string @@ -34,8 +35,10 @@ var ResultIsString4 = typeof (ENUM[0] + ENUM1["B"]); >ENUM[0] + ENUM1["B"] : string >ENUM[0] : string >ENUM : typeof ENUM +>0 : number >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string // multiple typeof operators var ResultIsString5 = typeof typeof ENUM; @@ -53,6 +56,7 @@ var ResultIsString6 = typeof typeof typeof (ENUM[0] + ENUM1.B); >ENUM[0] + ENUM1.B : string >ENUM[0] : string >ENUM : typeof ENUM +>0 : number >ENUM1.B : ENUM1 >ENUM1 : typeof ENUM1 >B : ENUM1 @@ -70,6 +74,7 @@ typeof ENUM1["B"]; >typeof ENUM1["B"] : string >ENUM1["B"] : ENUM1 >ENUM1 : typeof ENUM1 +>"B" : string typeof ENUM, ENUM1; >typeof ENUM, ENUM1 : typeof ENUM1 @@ -82,10 +87,12 @@ enum z { }; >z : z z: typeof ENUM; +>z : unknown >typeof ENUM : string >ENUM : typeof ENUM z: typeof ENUM1; +>z : unknown >typeof ENUM1 : string >ENUM1 : typeof ENUM1 diff --git a/tests/baselines/reference/typeofOperatorWithNumberType.types b/tests/baselines/reference/typeofOperatorWithNumberType.types index 43d798d4c8e..de2969b6647 100644 --- a/tests/baselines/reference/typeofOperatorWithNumberType.types +++ b/tests/baselines/reference/typeofOperatorWithNumberType.types @@ -6,9 +6,12 @@ var NUMBER: number; var NUMBER1: number[] = [1, 2]; >NUMBER1 : number[] >[1, 2] : number[] +>1 : number +>2 : number function foo(): number { return 1; } >foo : () => number +>1 : number class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return 1; } >foo : () => number +>1 : number } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsString2 = typeof NUMBER1; var ResultIsString3 = typeof 1; >ResultIsString3 : string >typeof 1 : string +>1 : number var ResultIsString4 = typeof { x: 1, y: 2}; >ResultIsString4 : string >typeof { x: 1, y: 2} : string >{ x: 1, y: 2} : { x: number; y: number; } >x : number +>1 : number >y : number +>2 : number var ResultIsString5 = typeof { x: 1, y: (n: number) => { return n; } }; >ResultIsString5 : string >typeof { x: 1, y: (n: number) => { return n; } } : string >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } >x : number +>1 : number >y : (n: number) => number >(n: number) => { return n; } : (n: number) => number >n : number @@ -84,6 +92,7 @@ var ResultIsString8 = typeof NUMBER1[0]; >typeof NUMBER1[0] : string >NUMBER1[0] : number >NUMBER1 : number[] +>0 : number var ResultIsString9 = typeof foo(); >ResultIsString9 : string @@ -127,6 +136,7 @@ var ResultIsString13 = typeof typeof typeof (NUMBER + NUMBER); // miss assignment operators typeof 1; >typeof 1 : string +>1 : number typeof NUMBER; >typeof NUMBER : string @@ -171,14 +181,17 @@ var x: number[]; >x : number[] z: typeof NUMBER; +>z : unknown >typeof NUMBER : string >NUMBER : number x: typeof NUMBER1; +>x : unknown >typeof NUMBER1 : string >NUMBER1 : number[] r: typeof foo; +>r : unknown >typeof foo : string >foo : () => number @@ -186,27 +199,33 @@ var y = { a: 1, b: 2 }; >y : { a: number; b: number; } >{ a: 1, b: 2 } : { a: number; b: number; } >a : number +>1 : number >b : number +>2 : number z: typeof y.a; +>z : unknown >typeof y.a : string >y.a : number >y : { a: number; b: number; } >a : number z: typeof objA.a; +>z : unknown >typeof objA.a : string >objA.a : number >objA : A >a : number z: typeof A.foo; +>z : unknown >typeof A.foo : string >A.foo : () => number >A : typeof A >foo : () => number z: typeof M.n; +>z : unknown >typeof M.n : string >M.n : number >M : typeof M diff --git a/tests/baselines/reference/typeofOperatorWithStringType.types b/tests/baselines/reference/typeofOperatorWithStringType.types index fe63bc4cd36..98aadb20e21 100644 --- a/tests/baselines/reference/typeofOperatorWithStringType.types +++ b/tests/baselines/reference/typeofOperatorWithStringType.types @@ -6,9 +6,12 @@ var STRING: string; var STRING1: string[] = ["", "abc"]; >STRING1 : string[] >["", "abc"] : string[] +>"" : string +>"abc" : string function foo(): string { return "abc"; } >foo : () => string +>"abc" : string class A { >A : A @@ -18,6 +21,7 @@ class A { static foo() { return ""; } >foo : () => string +>"" : string } module M { >M : typeof M @@ -46,19 +50,23 @@ var ResultIsString2 = typeof STRING1; var ResultIsString3 = typeof ""; >ResultIsString3 : string >typeof "" : string +>"" : string var ResultIsString4 = typeof { x: "", y: "" }; >ResultIsString4 : string >typeof { x: "", y: "" } : string >{ x: "", y: "" } : { x: string; y: string; } >x : string +>"" : string >y : string +>"" : string var ResultIsString5 = typeof { x: "", y: (s: string) => { return s; } }; >ResultIsString5 : string >typeof { x: "", y: (s: string) => { return s; } } : string >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } >x : string +>"" : string >y : (s: string) => string >(s: string) => { return s; } : (s: string) => string >s : string @@ -84,6 +92,7 @@ var ResultIsString8 = typeof STRING1[0]; >typeof STRING1[0] : string >STRING1[0] : string >STRING1 : string[] +>0 : number var ResultIsString9 = typeof foo(); >ResultIsString9 : string @@ -114,6 +123,7 @@ var ResultIsString12 = typeof STRING.charAt(0); >STRING.charAt : (pos: number) => string >STRING : string >charAt : (pos: number) => string +>0 : number // multiple typeof operators var ResultIsString13 = typeof typeof STRING; @@ -135,6 +145,7 @@ var ResultIsString14 = typeof typeof typeof (STRING + STRING); // miss assignment operators typeof ""; >typeof "" : string +>"" : string typeof STRING; >typeof STRING : string @@ -170,14 +181,17 @@ var r: () => string; >r : () => string z: typeof STRING; +>z : unknown >typeof STRING : string >STRING : string x: typeof STRING1; +>x : unknown >typeof STRING1 : string >STRING1 : string[] r: typeof foo; +>r : unknown >typeof foo : string >foo : () => string @@ -185,27 +199,33 @@ var y = { a: "", b: "" }; >y : { a: string; b: string; } >{ a: "", b: "" } : { a: string; b: string; } >a : string +>"" : string >b : string +>"" : string z: typeof y.a; +>z : unknown >typeof y.a : string >y.a : string >y : { a: string; b: string; } >a : string z: typeof objA.a; +>z : unknown >typeof objA.a : string >objA.a : string >objA : A >a : string z: typeof A.foo; +>z : unknown >typeof A.foo : string >A.foo : () => string >A : typeof A >foo : () => string z: typeof M.n; +>z : unknown >typeof M.n : string >M.n : string >M : typeof M diff --git a/tests/baselines/reference/typesWithOptionalProperty.types b/tests/baselines/reference/typesWithOptionalProperty.types index bb0adcc326f..89879740732 100644 --- a/tests/baselines/reference/typesWithOptionalProperty.types +++ b/tests/baselines/reference/typesWithOptionalProperty.types @@ -32,20 +32,26 @@ var b = { foo: '' }; >b : { foo: string; } >{ foo: '' } : { foo: string; } >foo : string +>'' : string var c = { foo: '', bar: 3 }; >c : { foo: string; bar: number; } >{ foo: '', bar: 3 } : { foo: string; bar: number; } >foo : string +>'' : string >bar : number +>3 : number var d = { foo: '', bar: 3, baz: () => '' }; >d : { foo: string; bar: number; baz: () => string; } >{ foo: '', bar: 3, baz: () => '' } : { foo: string; bar: number; baz: () => string; } >foo : string +>'' : string >bar : number +>3 : number >baz : () => string >() => '' : () => string +>'' : string var i: I; >i : I diff --git a/tests/baselines/reference/typesWithSpecializedCallSignatures.types b/tests/baselines/reference/typesWithSpecializedCallSignatures.types index 0fbe9cdbf0b..fa3ac7a4ba4 100644 --- a/tests/baselines/reference/typesWithSpecializedCallSignatures.types +++ b/tests/baselines/reference/typesWithSpecializedCallSignatures.types @@ -125,6 +125,7 @@ var r1: Derived1 = c.foo('hi'); >c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >c : C >foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } +>'hi' : string var r2: Derived2 = c.foo('bye'); >r2 : Derived2 @@ -133,6 +134,7 @@ var r2: Derived2 = c.foo('bye'); >c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >c : C >foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } +>'bye' : string var r3: Base = c.foo('hm'); >r3 : Base @@ -141,4 +143,5 @@ var r3: Base = c.foo('hm'); >c.foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } >c : C >foo : { (x: 'hi'): Derived1; (x: 'bye'): Derived2; (x: string): Base; } +>'hm' : string diff --git a/tests/baselines/reference/typesWithSpecializedConstructSignatures.types b/tests/baselines/reference/typesWithSpecializedConstructSignatures.types index 134bf868a49..66e274d917a 100644 --- a/tests/baselines/reference/typesWithSpecializedConstructSignatures.types +++ b/tests/baselines/reference/typesWithSpecializedConstructSignatures.types @@ -38,6 +38,7 @@ var c = new C('a'); >c : C >new C('a') : C >C : typeof C +>'a' : string interface I { >I : I @@ -99,16 +100,19 @@ var r1 = new C('hi'); >r1 : C >new C('hi') : C >C : typeof C +>'hi' : string var r2: Derived2 = new i('bye'); >r2 : Derived2 >Derived2 : Derived2 >new i('bye') : Derived2 >i : I +>'bye' : string var r3: Base = new a('hm'); >r3 : Base >Base : Base >new a('hm') : Base >a : { new (x: 'hi'): Derived1; new (x: 'bye'): Derived2; new (x: string): Base; } +>'hm' : string diff --git a/tests/baselines/reference/unaryPlus.types b/tests/baselines/reference/unaryPlus.types index 5ca715b9fe7..fc7a038ac72 100644 --- a/tests/baselines/reference/unaryPlus.types +++ b/tests/baselines/reference/unaryPlus.types @@ -3,12 +3,14 @@ var a = +1; >a : number >+1 : number +>1 : number var b = +(""); >b : number >+("") : number >("") : any >"" : any +>"" : string enum E { some, thing }; >E : E @@ -26,12 +28,15 @@ var c = +E.some; var x = +"3"; //should be valid >x : number >+"3" : number +>"3" : string var y = -"3"; // should be valid >y : number >-"3" : number +>"3" : string var z = ~"3"; // should be valid >z : number >~"3" : number +>"3" : string diff --git a/tests/baselines/reference/uncaughtCompilerError1.types b/tests/baselines/reference/uncaughtCompilerError1.types index 1300915a803..20a3f0fbedd 100644 --- a/tests/baselines/reference/uncaughtCompilerError1.types +++ b/tests/baselines/reference/uncaughtCompilerError1.types @@ -19,19 +19,24 @@ function f() { >lineTokens : any >index : any >trim : any +>'=' : string >index > 0 : boolean >index : any +>0 : number >token.type === '' : boolean >token.type : any >token : any >type : any +>'' : string >tokens[index - 1].type === 'attribute.name.html' : boolean >tokens[index - 1].type : any >tokens[index - 1] : any >tokens : any >index - 1 : number >index : any +>1 : number >type : any +>'attribute.name.html' : string if (index === (tokens.length - 1)) { >index === (tokens.length - 1) : boolean @@ -41,11 +46,14 @@ function f() { >tokens.length : any >tokens : any >length : any +>1 : number return { appendText: '\"\"', advanceCount: 1 }; >{ appendText: '\"\"', advanceCount: 1 } : { appendText: string; advanceCount: number; } >appendText : string +>'\"\"' : string >advanceCount : number +>1 : number } else if (tokens[index + 1].type !== 'attribute.value.html' && tokens[index + 1].type !== '') { >tokens[index + 1].type !== 'attribute.value.html' && tokens[index + 1].type !== '' : boolean @@ -55,21 +63,28 @@ function f() { >tokens : any >index + 1 : any >index : any +>1 : number >type : any +>'attribute.value.html' : string >tokens[index + 1].type !== '' : boolean >tokens[index + 1].type : any >tokens[index + 1] : any >tokens : any >index + 1 : any >index : any +>1 : number >type : any +>'' : string return { appendText: '\"\"', advanceCount: 1 }; >{ appendText: '\"\"', advanceCount: 1 } : { appendText: string; advanceCount: number; } >appendText : string +>'\"\"' : string >advanceCount : number +>1 : number } return null; +>null : null } } diff --git a/tests/baselines/reference/undefinedInferentialTyping.types b/tests/baselines/reference/undefinedInferentialTyping.types index 61737ac6b6c..525181f0f4c 100644 --- a/tests/baselines/reference/undefinedInferentialTyping.types +++ b/tests/baselines/reference/undefinedInferentialTyping.types @@ -9,6 +9,7 @@ function f(arr: T[], elemnt: T): T { >T : T return null; +>null : null } var a = f([], 3); // should be number @@ -16,4 +17,5 @@ var a = f([], 3); // should be number >f([], 3) : number >f : (arr: T[], elemnt: T) => T >[] : undefined[] +>3 : number diff --git a/tests/baselines/reference/undefinedIsSubtypeOfEverything.types b/tests/baselines/reference/undefinedIsSubtypeOfEverything.types index 42f517432fa..d89f032bf29 100644 --- a/tests/baselines/reference/undefinedIsSubtypeOfEverything.types +++ b/tests/baselines/reference/undefinedIsSubtypeOfEverything.types @@ -171,6 +171,7 @@ module f { export var bar = 1; >bar : number +>1 : number } class D12 extends Base { >D12 : D12 @@ -191,6 +192,7 @@ module c { export var bar = 1; >bar : number +>1 : number } class D13 extends Base { >D13 : D13 diff --git a/tests/baselines/reference/underscoreMapFirst.types b/tests/baselines/reference/underscoreMapFirst.types index 52761647164..4de320604bd 100644 --- a/tests/baselines/reference/underscoreMapFirst.types +++ b/tests/baselines/reference/underscoreMapFirst.types @@ -127,6 +127,7 @@ class MyView extends View { >this : MyView >model : any >get : any +>"data" : string var allSeries: ISeries[][] = _.pluck(data, "series"); >allSeries : ISeries[][] @@ -136,6 +137,7 @@ class MyView extends View { >_ : typeof _ >pluck : (list: _.Collection, propertyName: string) => any[] >data : IData[] +>"series" : string return _.map(allSeries, _.first); >_.map(allSeries, _.first) : ISeries[] diff --git a/tests/baselines/reference/underscoreTest1.types b/tests/baselines/reference/underscoreTest1.types index a3347457b8a..9a4a828fe97 100644 --- a/tests/baselines/reference/underscoreTest1.types +++ b/tests/baselines/reference/underscoreTest1.types @@ -14,6 +14,9 @@ _.each([1, 2, 3], (num) => alert(num.toString())); >_ : Underscore.Static >each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >(num) => alert(num.toString()) : (num: number) => void >num : number >alert(num.toString()) : void @@ -30,8 +33,11 @@ _.each({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => alert(valu >each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >{ one: 1, two: 2, three: 3 } : { [x: string]: number; one: number; two: number; three: number; } >one : number +>1 : number >two : number +>2 : number >three : number +>3 : number >(value: number, key?: string) => alert(value.toString()) : (value: number, key?: string) => void >value : number >key : string @@ -48,10 +54,14 @@ _.map([1, 2, 3], (num) => num * 3); >_ : Underscore.Static >map : { (list: T[], iterator: Iterator, context?: any): U[]; (list: Dictionary, iterator: Iterator, context?: any): U[]; } >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >(num) => num * 3 : (num: number) => number >num : number >num * 3 : number >num : number +>3 : number _.map({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => value * 3); >_.map({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => value * 3) : number[] @@ -60,13 +70,17 @@ _.map({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => value * 3); >map : { (list: T[], iterator: Iterator, context?: any): U[]; (list: Dictionary, iterator: Iterator, context?: any): U[]; } >{ one: 1, two: 2, three: 3 } : { [x: string]: number; one: number; two: number; three: number; } >one : number +>1 : number >two : number +>2 : number >three : number +>3 : number >(value: number, key?: string) => value * 3 : (value: number, key?: string) => number >value : number >key : string >value * 3 : number >value : number +>3 : number var sum = _.reduce([1, 2, 3], (memo, num) => memo + num, 0); >sum : number @@ -75,19 +89,29 @@ var sum = _.reduce([1, 2, 3], (memo, num) => memo + num, 0); >_ : Underscore.Static >reduce : { (list: T[], iterator: Reducer, initialValue?: T, context?: any): T; (list: T[], iterator: Reducer, initialValue: U, context?: any): U; (list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; (list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; } >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >(memo, num) => memo + num : (memo: number, num: number) => number >memo : number >num : number >memo + num : number >memo : number >num : number +>0 : number var list = [[0, 1], [2, 3], [4, 5]]; >list : number[][] >[[0, 1], [2, 3], [4, 5]] : number[][] >[0, 1] : number[] +>0 : number +>1 : number >[2, 3] : number[] +>2 : number +>3 : number >[4, 5] : number[] +>4 : number +>5 : number var flat = _.reduceRight(list, (a, b) => a.concat(b), []); >flat : number[] @@ -113,11 +137,19 @@ var even = _.find([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >_ : Underscore.Static >find : { (list: T[], iterator: Iterator, context?: any): T; (list: Dictionary, iterator: Iterator, context?: any): T; } >[1, 2, 3, 4, 5, 6] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number +>6 : number >(num) => num % 2 == 0 : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number +>2 : number +>0 : number var evens = _.filter([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >evens : number[] @@ -126,27 +158,44 @@ var evens = _.filter([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >_ : Underscore.Static >filter : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; } >[1, 2, 3, 4, 5, 6] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number +>6 : number >(num) => num % 2 == 0 : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number +>2 : number +>0 : number var listOfPlays = [{ title: "Cymbeline", author: "Shakespeare", year: 1611 }, { title: "The Tempest", author: "Shakespeare", year: 1611 }, { title: "Other", author: "Not Shakespeare", year: 2012 }]; >listOfPlays : { title: string; author: string; year: number; }[] >[{ title: "Cymbeline", author: "Shakespeare", year: 1611 }, { title: "The Tempest", author: "Shakespeare", year: 1611 }, { title: "Other", author: "Not Shakespeare", year: 2012 }] : { title: string; author: string; year: number; }[] >{ title: "Cymbeline", author: "Shakespeare", year: 1611 } : { title: string; author: string; year: number; } >title : string +>"Cymbeline" : string >author : string +>"Shakespeare" : string >year : number +>1611 : number >{ title: "The Tempest", author: "Shakespeare", year: 1611 } : { title: string; author: string; year: number; } >title : string +>"The Tempest" : string >author : string +>"Shakespeare" : string >year : number +>1611 : number >{ title: "Other", author: "Not Shakespeare", year: 2012 } : { title: string; author: string; year: number; } >title : string +>"Other" : string >author : string +>"Not Shakespeare" : string >year : number +>2012 : number _.where(listOfPlays, { author: "Shakespeare", year: 1611 }); >_.where(listOfPlays, { author: "Shakespeare", year: 1611 }) : { title: string; author: string; year: number; }[] @@ -156,7 +205,9 @@ _.where(listOfPlays, { author: "Shakespeare", year: 1611 }); >listOfPlays : { title: string; author: string; year: number; }[] >{ author: "Shakespeare", year: 1611 } : { author: string; year: number; } >author : string +>"Shakespeare" : string >year : number +>1611 : number var odds = _.reject([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >odds : number[] @@ -165,11 +216,19 @@ var odds = _.reject([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >_ : Underscore.Static >reject : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; } >[1, 2, 3, 4, 5, 6] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number +>6 : number >(num) => num % 2 == 0 : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number +>2 : number +>0 : number _.all([true, 1, null, 'yes'], _.identity); >_.all([true, 1, null, 'yes'], _.identity) : boolean @@ -177,6 +236,10 @@ _.all([true, 1, null, 'yes'], _.identity); >_ : Underscore.Static >all : { (list: T[], iterator?: Iterator, context?: any): boolean; (list: Dictionary, iterator?: Iterator, context?: any): boolean; } >[true, 1, null, 'yes'] : (string | number | boolean)[] +>true : boolean +>1 : number +>null : null +>'yes' : string >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T @@ -187,6 +250,10 @@ _.any([null, 0, 'yes', false]); >_ : Underscore.Static >any : { (list: T[], iterator?: Iterator, context?: any): boolean; (list: Dictionary, iterator?: Iterator, context?: any): boolean; } >[null, 0, 'yes', false] : (string | number | boolean)[] +>null : null +>0 : number +>'yes' : string +>false : boolean _.contains([1, 2, 3], 3); >_.contains([1, 2, 3], 3) : boolean @@ -194,6 +261,10 @@ _.contains([1, 2, 3], 3); >_ : Underscore.Static >contains : { (list: T[], value: T): boolean; (list: Dictionary, value: T): boolean; } >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number +>3 : number _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); >_.invoke([[5, 1, 7], [3, 2, 1]], 'sort') : any[] @@ -202,20 +273,33 @@ _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); >invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary, methodName: string, ...args: any[]): any[]; } >[[5, 1, 7], [3, 2, 1]] : number[][] >[5, 1, 7] : number[] +>5 : number +>1 : number +>7 : number >[3, 2, 1] : number[] +>3 : number +>2 : number +>1 : number +>'sort' : string var stooges = [{ name: 'moe', age: 40 }, { name: 'larry', age: 50 }, { name: 'curly', age: 60 }]; >stooges : { name: string; age: number; }[] >[{ name: 'moe', age: 40 }, { name: 'larry', age: 50 }, { name: 'curly', age: 60 }] : { name: string; age: number; }[] >{ name: 'moe', age: 40 } : { name: string; age: number; } >name : string +>'moe' : string >age : number +>40 : number >{ name: 'larry', age: 50 } : { name: string; age: number; } >name : string +>'larry' : string >age : number +>50 : number >{ name: 'curly', age: 60 } : { name: string; age: number; } >name : string +>'curly' : string >age : number +>60 : number _.pluck(stooges, 'name'); >_.pluck(stooges, 'name') : any[] @@ -223,6 +307,7 @@ _.pluck(stooges, 'name'); >_ : Underscore.Static >pluck : { (list: any[], propertyName: string): any[]; (list: Dictionary, propertyName: string): any[]; } >stooges : { name: string; age: number; }[] +>'name' : string _.max(stooges, (stooge) => stooge.age); >_.max(stooges, (stooge) => stooge.age) : { name: string; age: number; } @@ -239,6 +324,11 @@ _.max(stooges, (stooge) => stooge.age); var numbers = [10, 5, 100, 2, 1000]; >numbers : number[] >[10, 5, 100, 2, 1000] : number[] +>10 : number +>5 : number +>100 : number +>2 : number +>1000 : number _.min(numbers); >_.min(numbers) : number @@ -253,6 +343,12 @@ _.sortBy([1, 2, 3, 4, 5, 6], (num) => Math.sin(num)); >_ : Underscore.Static >sortBy : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; (list: T[], propertyName: string): T[]; (list: Dictionary, propertyName: string): T[]; } >[1, 2, 3, 4, 5, 6] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number +>6 : number >(num) => Math.sin(num) : (num: number) => number >num : number >Math.sin(num) : number @@ -269,6 +365,9 @@ _([1.3, 2.1, 2.4]).groupBy((e: number, i?: number, list?: number[]) => Math.floo >_([1.3, 2.1, 2.4]) : Underscore.WrappedArray >_ : Underscore.Static >[1.3, 2.1, 2.4] : number[] +>1.3 : number +>2.1 : number +>2.4 : number >groupBy : { (iterator?: Iterator, context?: any): Dictionary; (propertyName: string): Dictionary; } >(e: number, i?: number, list?: number[]) => Math.floor(e) : (e: number, i?: number, list?: number[]) => number >e : number @@ -286,6 +385,9 @@ _.groupBy([1.3, 2.1, 2.4], (num: number) => Math.floor(num)); >_ : Underscore.Static >groupBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >[1.3, 2.1, 2.4] : number[] +>1.3 : number +>2.1 : number +>2.4 : number >(num: number) => Math.floor(num) : (num: number) => number >num : number >Math.floor(num) : number @@ -300,6 +402,10 @@ _.groupBy(['one', 'two', 'three'], 'length'); >_ : Underscore.Static >groupBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >['one', 'two', 'three'] : string[] +>'one' : string +>'two' : string +>'three' : string +>'length' : string _.countBy([1, 2, 3, 4, 5], (num) => num % 2 == 0 ? 'even' : 'odd'); >_.countBy([1, 2, 3, 4, 5], (num) => num % 2 == 0 ? 'even' : 'odd') : Dictionary @@ -307,12 +413,21 @@ _.countBy([1, 2, 3, 4, 5], (num) => num % 2 == 0 ? 'even' : 'odd'); >_ : Underscore.Static >countBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >[1, 2, 3, 4, 5] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number >(num) => num % 2 == 0 ? 'even' : 'odd' : (num: number) => string >num : number >num % 2 == 0 ? 'even' : 'odd' : string >num % 2 == 0 : boolean >num % 2 : number >num : number +>2 : number +>0 : number +>'even' : string +>'odd' : string _.shuffle([1, 2, 3, 4, 5, 6]); >_.shuffle([1, 2, 3, 4, 5, 6]) : number[] @@ -320,6 +435,12 @@ _.shuffle([1, 2, 3, 4, 5, 6]); >_ : Underscore.Static >shuffle : { (list: T[]): T[]; (list: Dictionary): T[]; } >[1, 2, 3, 4, 5, 6] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number +>6 : number // (function(){ return _.toArray(arguments).slice(1); })(1, 2, 3, 4); @@ -330,8 +451,11 @@ _.size({ one: 1, two: 2, three: 3 }); >size : { (list: T[]): number; (list: Dictionary): number; } >{ one: 1, two: 2, three: 3 } : { [x: string]: number; one: number; two: number; three: number; } >one : number +>1 : number >two : number +>2 : number >three : number +>3 : number /////////////////////////////////////////////////////////////////////////////////////// @@ -341,6 +465,11 @@ _.first([5, 4, 3, 2, 1]); >_ : Underscore.Static >first : { (list: T[]): T; (list: T[], count: number): T[]; } >[5, 4, 3, 2, 1] : number[] +>5 : number +>4 : number +>3 : number +>2 : number +>1 : number _.initial([5, 4, 3, 2, 1]); >_.initial([5, 4, 3, 2, 1]) : number @@ -348,6 +477,11 @@ _.initial([5, 4, 3, 2, 1]); >_ : Underscore.Static >initial : { (list: T[]): T; (list: T[], count: number): T[]; } >[5, 4, 3, 2, 1] : number[] +>5 : number +>4 : number +>3 : number +>2 : number +>1 : number _.last([5, 4, 3, 2, 1]); >_.last([5, 4, 3, 2, 1]) : number @@ -355,6 +489,11 @@ _.last([5, 4, 3, 2, 1]); >_ : Underscore.Static >last : { (list: T[]): T; (list: T[], count: number): T[]; } >[5, 4, 3, 2, 1] : number[] +>5 : number +>4 : number +>3 : number +>2 : number +>1 : number _.rest([5, 4, 3, 2, 1]); >_.rest([5, 4, 3, 2, 1]) : number[] @@ -362,6 +501,11 @@ _.rest([5, 4, 3, 2, 1]); >_ : Underscore.Static >rest : (list: T[], index?: number) => T[] >[5, 4, 3, 2, 1] : number[] +>5 : number +>4 : number +>3 : number +>2 : number +>1 : number _.compact([0, 1, false, 2, '', 3]); >_.compact([0, 1, false, 2, '', 3]) : (string | number | boolean)[] @@ -369,6 +513,12 @@ _.compact([0, 1, false, 2, '', 3]); >_ : Underscore.Static >compact : (list: T[]) => T[] >[0, 1, false, 2, '', 3] : (string | number | boolean)[] +>0 : number +>1 : number +>false : boolean +>2 : number +>'' : string +>3 : number _.flatten([1, 2, 3, 4]); >_.flatten([1, 2, 3, 4]) : {}[] @@ -376,6 +526,10 @@ _.flatten([1, 2, 3, 4]); >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, 2, 3, 4] : number[] +>1 : number +>2 : number +>3 : number +>4 : number _.flatten([1, [2]]); >_.flatten([1, [2]]) : {}[] @@ -383,7 +537,9 @@ _.flatten([1, [2]]); >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, [2]] : (number | number[])[] +>1 : number >[2] : number[] +>2 : number // typescript doesn't like the elements being different _.flatten([1, [2], [3, [[4]]]]); @@ -392,10 +548,14 @@ _.flatten([1, [2], [3, [[4]]]]); >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, [2], [3, [[4]]]] : (number | (number | number[][])[])[] +>1 : number >[2] : number[] +>2 : number >[3, [[4]]] : (number | number[][])[] +>3 : number >[[4]] : number[][] >[4] : number[] +>4 : number _.flatten([1, [2], [3, [[4]]]], true); >_.flatten([1, [2], [3, [[4]]]], true) : {}[] @@ -403,10 +563,15 @@ _.flatten([1, [2], [3, [[4]]]], true); >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, [2], [3, [[4]]]] : (number | (number | number[][])[])[] +>1 : number >[2] : number[] +>2 : number >[3, [[4]]] : (number | number[][])[] +>3 : number >[[4]] : number[][] >[4] : number[] +>4 : number +>true : boolean _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); >_.without([1, 2, 1, 0, 3, 1, 4], 0, 1) : number[] @@ -414,6 +579,15 @@ _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); >_ : Underscore.Static >without : (list: T[], ...values: T[]) => T[] >[1, 2, 1, 0, 3, 1, 4] : number[] +>1 : number +>2 : number +>1 : number +>0 : number +>3 : number +>1 : number +>4 : number +>0 : number +>1 : number _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); >_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]) : number[] @@ -421,8 +595,17 @@ _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); >_ : Underscore.Static >union : (...arrays: T[][]) => T[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >[101, 2, 1, 10] : number[] +>101 : number +>2 : number +>1 : number +>10 : number >[2, 1] : number[] +>2 : number +>1 : number _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); >_.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]) : number[] @@ -430,8 +613,17 @@ _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); >_ : Underscore.Static >intersection : (...arrays: T[][]) => T[] >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number >[101, 2, 1, 10] : number[] +>101 : number +>2 : number +>1 : number +>10 : number >[2, 1] : number[] +>2 : number +>1 : number _.difference([1, 2, 3, 4, 5], [5, 2, 10]); >_.difference([1, 2, 3, 4, 5], [5, 2, 10]) : number[] @@ -439,7 +631,15 @@ _.difference([1, 2, 3, 4, 5], [5, 2, 10]); >_ : Underscore.Static >difference : (list: T[], ...others: T[][]) => T[] >[1, 2, 3, 4, 5] : number[] +>1 : number +>2 : number +>3 : number +>4 : number +>5 : number >[5, 2, 10] : number[] +>5 : number +>2 : number +>10 : number _.uniq([1, 2, 1, 3, 1, 4]); >_.uniq([1, 2, 1, 3, 1, 4]) : number[] @@ -447,6 +647,12 @@ _.uniq([1, 2, 1, 3, 1, 4]); >_ : Underscore.Static >uniq : { (list: T[], isSorted?: boolean): T[]; (list: T[], isSorted: boolean, iterator: Iterator, context?: any): U[]; } >[1, 2, 1, 3, 1, 4] : number[] +>1 : number +>2 : number +>1 : number +>3 : number +>1 : number +>4 : number _.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); >_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]) : Tuple3[] @@ -454,8 +660,17 @@ _.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); >_ : Underscore.Static >zip : { (a0: T0[], a1: T1[]): Tuple2[]; (a0: T0[], a1: T1[], a2: T2[]): Tuple3[]; (a0: T0[], a1: T1[], a2: T2[], a3: T3[]): Tuple4[]; (...arrays: any[][]): any[][]; } >['moe', 'larry', 'curly'] : string[] +>'moe' : string +>'larry' : string +>'curly' : string >[30, 40, 50] : number[] +>30 : number +>40 : number +>50 : number >[true, false, false] : boolean[] +>true : boolean +>false : boolean +>false : boolean _.object(['moe', 'larry', 'curly'], [30, 40, 50]); >_.object(['moe', 'larry', 'curly'], [30, 40, 50]) : any @@ -463,7 +678,13 @@ _.object(['moe', 'larry', 'curly'], [30, 40, 50]); >_ : Underscore.Static >object : { (list: any[][]): any; (keys: string[], values: any[]): any; } >['moe', 'larry', 'curly'] : string[] +>'moe' : string +>'larry' : string +>'curly' : string >[30, 40, 50] : number[] +>30 : number +>40 : number +>50 : number _.object([['moe', 30], ['larry', 40], ['curly', 50]]); >_.object([['moe', 30], ['larry', 40], ['curly', 50]]) : any @@ -472,8 +693,14 @@ _.object([['moe', 30], ['larry', 40], ['curly', 50]]); >object : { (list: any[][]): any; (keys: string[], values: any[]): any; } >[['moe', 30], ['larry', 40], ['curly', 50]] : (string | number)[][] >['moe', 30] : (string | number)[] +>'moe' : string +>30 : number >['larry', 40] : (string | number)[] +>'larry' : string +>40 : number >['curly', 50] : (string | number)[] +>'curly' : string +>50 : number _.indexOf([1, 2, 3], 2); >_.indexOf([1, 2, 3], 2) : number @@ -481,6 +708,10 @@ _.indexOf([1, 2, 3], 2); >_ : Underscore.Static >indexOf : (list: T[], value: T, isSorted?: boolean) => number >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number +>2 : number _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); >_.lastIndexOf([1, 2, 3, 1, 2, 3], 2) : number @@ -488,6 +719,13 @@ _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); >_ : Underscore.Static >lastIndexOf : (list: T[], value: T, fromIndex?: number) => number >[1, 2, 3, 1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number +>1 : number +>2 : number +>3 : number +>2 : number _.sortedIndex([10, 20, 30, 40, 50], 35); >_.sortedIndex([10, 20, 30, 40, 50], 35) : number @@ -495,36 +733,52 @@ _.sortedIndex([10, 20, 30, 40, 50], 35); >_ : Underscore.Static >sortedIndex : { (list: T[], obj: T, propertyName: string): number; (list: T[], obj: T, iterator?: Iterator, context?: any): number; } >[10, 20, 30, 40, 50] : number[] +>10 : number +>20 : number +>30 : number +>40 : number +>50 : number +>35 : number _.range(10); >_.range(10) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } +>10 : number _.range(1, 11); >_.range(1, 11) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } +>1 : number +>11 : number _.range(0, 30, 5); >_.range(0, 30, 5) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } +>0 : number +>30 : number +>5 : number _.range(0, 30, 5); >_.range(0, 30, 5) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } +>0 : number +>30 : number +>5 : number _.range(0); >_.range(0) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } +>0 : number /////////////////////////////////////////////////////////////////////////////////////// @@ -535,6 +789,7 @@ var func = function (greeting) { return greeting + ': ' + this.name }; >greeting + ': ' + this.name : string >greeting + ': ' : string >greeting : any +>': ' : string >this.name : any >this : any >name : any @@ -550,6 +805,8 @@ var func2 = _.bind(func, { name: 'moe' }, 'hi'); >func : (greeting: any) => string >{ name: 'moe' } : { name: string; } >name : string +>'moe' : string +>'hi' : string func2(); >func2() : any @@ -561,6 +818,7 @@ var buttonView = { label: 'underscore', >label : string +>'underscore' : string onClick: function () { alert('clicked: ' + this.label); }, >onClick : () => void @@ -568,6 +826,7 @@ var buttonView = { >alert('clicked: ' + this.label) : void >alert : (x: string) => void >'clicked: ' + this.label : string +>'clicked: ' : string >this.label : any >this : any >label : any @@ -578,6 +837,7 @@ var buttonView = { >alert('hovering: ' + this.label) : void >alert : (x: string) => void >'hovering: ' + this.label : string +>'hovering: ' : string >this.label : any >this : any >label : any @@ -595,7 +855,9 @@ $('#underscore_button').bind('click', buttonView.onClick); >$('#underscore_button').bind : any >$('#underscore_button') : any >$ : any +>'#underscore_button' : string >bind : any +>'click' : string >buttonView.onClick : () => void >buttonView : { label: string; onClick: () => void; onHover: () => void; } >onClick : () => void @@ -613,16 +875,19 @@ var fibonacci = _.memoize(function (n) { >n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2) : any >n < 2 : boolean >n : any +>2 : number >n : any >fibonacci(n - 1) + fibonacci(n - 2) : any >fibonacci(n - 1) : any >fibonacci : (n: any) => any >n - 1 : number >n : any +>1 : number >fibonacci(n - 2) : any >fibonacci : (n: any) => any >n - 2 : number >n : any +>2 : number }); @@ -643,6 +908,8 @@ _.delay(log, 1000, 'logged later'); >_ : Underscore.Static >delay : (func: Function, wait: number, ...args: any[]) => number >log : (message?: string, ...rest: string[]) => void +>1000 : number +>'logged later' : string _.defer(function () { alert('deferred'); }); >_.defer(function () { alert('deferred'); }) : number @@ -652,12 +919,14 @@ _.defer(function () { alert('deferred'); }); >function () { alert('deferred'); } : () => void >alert('deferred') : void >alert : (x: string) => void +>'deferred' : string var updatePosition = () => alert('updating position...'); >updatePosition : () => void >() => alert('updating position...') : () => void >alert('updating position...') : void >alert : (x: string) => void +>'updating position...' : string var throttled = _.throttle(updatePosition, 100); >throttled : () => void @@ -666,12 +935,14 @@ var throttled = _.throttle(updatePosition, 100); >_ : Underscore.Static >throttle : (func: T, wait: number) => T >updatePosition : () => void +>100 : number $(null).scroll(throttled); >$(null).scroll(throttled) : any >$(null).scroll : any >$(null) : any >$ : any +>null : null >scroll : any >throttled : () => void @@ -680,6 +951,7 @@ var calculateLayout = () => alert('calculating layout...'); >() => alert('calculating layout...') : () => void >alert('calculating layout...') : void >alert : (x: string) => void +>'calculating layout...' : string var lazyLayout = _.debounce(calculateLayout, 300); >lazyLayout : () => void @@ -688,12 +960,14 @@ var lazyLayout = _.debounce(calculateLayout, 300); >_ : Underscore.Static >debounce : (func: T, wait: number, immediate?: boolean) => T >calculateLayout : () => void +>300 : number $(null).resize(lazyLayout); >$(null).resize(lazyLayout) : any >$(null).resize : any >$(null) : any >$ : any +>null : null >resize : any >lazyLayout : () => void @@ -702,6 +976,7 @@ var createApplication = () => alert('creating application...'); >() => alert('creating application...') : () => void >alert('creating application...') : void >alert : (x: string) => void +>'creating application...' : string var initialize = _.once(createApplication); >initialize : () => void @@ -727,6 +1002,7 @@ var render = () => alert("rendering..."); >() => alert("rendering...") : () => void >alert("rendering...") : void >alert : (x: string) => void +>"rendering..." : string var renderNotes = _.after(notes.length, render); >renderNotes : () => void @@ -760,6 +1036,7 @@ var hello = function (name) { return "hello: " + name; }; >function (name) { return "hello: " + name; } : (name: any) => string >name : any >"hello: " + name : string +>"hello: " : string >name : any hello = _.wrap(hello, (func, arg) => { return "before, " + func(arg) + ", after"; }); @@ -775,19 +1052,23 @@ hello = _.wrap(hello, (func, arg) => { return "before, " + func(arg) + ", after" >arg : any >"before, " + func(arg) + ", after" : string >"before, " + func(arg) : string +>"before, " : string >func(arg) : string >func : (name: any) => string >arg : any +>", after" : string hello("moe"); >hello("moe") : string >hello : (name: any) => string +>"moe" : string var greet = function (name) { return "hi: " + name; }; >greet : (name: any) => string >function (name) { return "hi: " + name; } : (name: any) => string >name : any >"hi: " + name : string +>"hi: " : string >name : any var exclaim = function (statement) { return statement + "!"; }; @@ -796,6 +1077,7 @@ var exclaim = function (statement) { return statement + "!"; }; >statement : any >statement + "!" : string >statement : any +>"!" : string var welcome = _.compose(exclaim, greet); >welcome : Function @@ -809,6 +1091,7 @@ var welcome = _.compose(exclaim, greet); welcome('moe'); >welcome('moe') : any >welcome : Function +>'moe' : string /////////////////////////////////////////////////////////////////////////////////////// @@ -819,8 +1102,11 @@ _.keys({ one: 1, two: 2, three: 3 }); >keys : (object: any) => string[] >{ one: 1, two: 2, three: 3 } : { one: number; two: number; three: number; } >one : number +>1 : number >two : number +>2 : number >three : number +>3 : number _.values({ one: 1, two: 2, three: 3 }); >_.values({ one: 1, two: 2, three: 3 }) : any[] @@ -829,8 +1115,11 @@ _.values({ one: 1, two: 2, three: 3 }); >values : (object: any) => any[] >{ one: 1, two: 2, three: 3 } : { one: number; two: number; three: number; } >one : number +>1 : number >two : number +>2 : number >three : number +>3 : number _.pairs({ one: 1, two: 2, three: 3 }); >_.pairs({ one: 1, two: 2, three: 3 }) : any[][] @@ -839,8 +1128,11 @@ _.pairs({ one: 1, two: 2, three: 3 }); >pairs : (object: any) => any[][] >{ one: 1, two: 2, three: 3 } : { one: number; two: number; three: number; } >one : number +>1 : number >two : number +>2 : number >three : number +>3 : number _.invert({ Moe: "Moses", Larry: "Louis", Curly: "Jerome" }); >_.invert({ Moe: "Moses", Larry: "Louis", Curly: "Jerome" }) : any @@ -849,8 +1141,11 @@ _.invert({ Moe: "Moses", Larry: "Louis", Curly: "Jerome" }); >invert : (object: any) => any >{ Moe: "Moses", Larry: "Louis", Curly: "Jerome" } : { Moe: string; Larry: string; Curly: string; } >Moe : string +>"Moses" : string >Larry : string +>"Louis" : string >Curly : string +>"Jerome" : string _.functions(_); >_.functions(_) : string[] @@ -866,8 +1161,10 @@ _.extend({ name: 'moe' }, { age: 50 }); >extend : (destination: T, ...sources: any[]) => T >{ name: 'moe' } : { name: string; } >name : string +>'moe' : string >{ age: 50 } : { age: number; } >age : number +>50 : number _.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age'); >_.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age') : { name: string; age: number; userid: string; } @@ -876,8 +1173,13 @@ _.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age'); >pick : (object: T, ...keys: string[]) => T >{ name: 'moe', age: 50, userid: 'moe1' } : { name: string; age: number; userid: string; } >name : string +>'moe' : string >age : number +>50 : number >userid : string +>'moe1' : string +>'name' : string +>'age' : string _.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'userid'); >_.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'userid') : { name: string; age: number; userid: string; } @@ -886,13 +1188,18 @@ _.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'userid'); >omit : (object: T, ...keys: string[]) => T >{ name: 'moe', age: 50, userid: 'moe1' } : { name: string; age: number; userid: string; } >name : string +>'moe' : string >age : number +>50 : number >userid : string +>'moe1' : string +>'userid' : string var iceCream = { flavor: "chocolate" }; >iceCream : { flavor: string; } >{ flavor: "chocolate" } : { flavor: string; } >flavor : string +>"chocolate" : string _.defaults(iceCream, { flavor: "vanilla", sprinkles: "lots" }); >_.defaults(iceCream, { flavor: "vanilla", sprinkles: "lots" }) : { flavor: string; } @@ -902,7 +1209,9 @@ _.defaults(iceCream, { flavor: "vanilla", sprinkles: "lots" }); >iceCream : { flavor: string; } >{ flavor: "vanilla", sprinkles: "lots" } : { flavor: string; sprinkles: string; } >flavor : string +>"vanilla" : string >sprinkles : string +>"lots" : string _.clone({ name: 'moe' }); >_.clone({ name: 'moe' }) : { name: string; } @@ -911,6 +1220,7 @@ _.clone({ name: 'moe' }); >clone : (object: T) => T >{ name: 'moe' } : { name: string; } >name : string +>'moe' : string _.chain([1, 2, 3, 200]) >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap(alert) .map(function (num) { return num * num }) .value() : number[] @@ -926,6 +1236,10 @@ _.chain([1, 2, 3, 200]) >_ : Underscore.Static >chain : { (list: T[]): Underscore.ChainedArray; (list: Dictionary): Underscore.ChainedDictionary; (obj: T): Underscore.ChainedObject; } >[1, 2, 3, 200] : number[] +>1 : number +>2 : number +>3 : number +>200 : number .filter(function (num) { return num % 2 == 0; }) >filter : (iterator: Iterator, context?: any) => Underscore.ChainedArray @@ -934,6 +1248,8 @@ _.chain([1, 2, 3, 200]) >num % 2 == 0 : boolean >num % 2 : number >num : number +>2 : number +>0 : number .tap(alert) >tap : (interceptor: (object: number[]) => void) => Underscore.ChainedArray @@ -958,22 +1274,34 @@ _.has({ a: 1, b: 2, c: 3 }, "b"); >has : (object: any, key: string) => boolean >{ a: 1, b: 2, c: 3 } : { a: number; b: number; c: number; } >a : number +>1 : number >b : number +>2 : number >c : number +>3 : number +>"b" : string var moe = { name: 'moe', luckyNumbers: [13, 27, 34] }; >moe : { name: string; luckyNumbers: number[]; } >{ name: 'moe', luckyNumbers: [13, 27, 34] } : { name: string; luckyNumbers: number[]; } >name : string +>'moe' : string >luckyNumbers : number[] >[13, 27, 34] : number[] +>13 : number +>27 : number +>34 : number var clone = { name: 'moe', luckyNumbers: [13, 27, 34] }; >clone : { name: string; luckyNumbers: number[]; } >{ name: 'moe', luckyNumbers: [13, 27, 34] } : { name: string; luckyNumbers: number[]; } >name : string +>'moe' : string >luckyNumbers : number[] >[13, 27, 34] : number[] +>13 : number +>27 : number +>34 : number moe == clone; >moe == clone : boolean @@ -994,6 +1322,9 @@ _.isEmpty([1, 2, 3]); >_ : Underscore.Static >isEmpty : (object: any) => boolean >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number _.isEmpty({}); >_.isEmpty({}) : boolean @@ -1010,6 +1341,8 @@ _.isElement($('body')[0]); >$('body')[0] : any >$('body') : any >$ : any +>'body' : string +>0 : number (function () { return _.isArray(arguments); })(); >(function () { return _.isArray(arguments); })() : boolean @@ -1027,6 +1360,9 @@ _.isArray([1, 2, 3]); >_ : Underscore.Static >isArray : (object: any) => boolean >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number _.isObject({}); >_.isObject({}) : boolean @@ -1040,6 +1376,7 @@ _.isObject(1); >_.isObject : (value: any) => boolean >_ : Underscore.Static >isObject : (value: any) => boolean +>1 : number // (() => { return _.isArguments(arguments); })(1, 2, 3); @@ -1049,6 +1386,9 @@ _.isArguments([1, 2, 3]); >_ : Underscore.Static >isArguments : (object: any) => boolean >[1, 2, 3] : number[] +>1 : number +>2 : number +>3 : number _.isFunction(alert); >_.isFunction(alert) : boolean @@ -1062,6 +1402,7 @@ _.isString("moe"); >_.isString : (object: any) => boolean >_ : Underscore.Static >isString : (object: any) => boolean +>"moe" : string _.isNumber(8.4 * 5); >_.isNumber(8.4 * 5) : boolean @@ -1069,6 +1410,8 @@ _.isNumber(8.4 * 5); >_ : Underscore.Static >isNumber : (object: any) => boolean >8.4 * 5 : number +>8.4 : number +>5 : number _.isFinite(-101); >_.isFinite(-101) : boolean @@ -1076,6 +1419,7 @@ _.isFinite(-101); >_ : Underscore.Static >isFinite : (object: any) => boolean >-101 : number +>101 : number _.isFinite(-Infinity); >_.isFinite(-Infinity) : boolean @@ -1090,6 +1434,7 @@ _.isBoolean(null); >_.isBoolean : (object: any) => boolean >_ : Underscore.Static >isBoolean : (object: any) => boolean +>null : null _.isDate(new Date()); >_.isDate(new Date()) : boolean @@ -1104,6 +1449,7 @@ _.isRegExp(/moe/); >_.isRegExp : (object: any) => boolean >_ : Underscore.Static >isRegExp : (object: any) => boolean +>/moe/ : RegExp _.isNaN(NaN); >_.isNaN(NaN) : boolean @@ -1129,6 +1475,7 @@ _.isNull(null); >_.isNull : (object: any) => boolean >_ : Underscore.Static >isNull : (object: any) => boolean +>null : null _.isNull(undefined); >_.isNull(undefined) : boolean @@ -1145,6 +1492,7 @@ _.isUndefined((null).missingVariable); >(null).missingVariable : any >(null) : any >null : any +>null : null >missingVariable : any /////////////////////////////////////////////////////////////////////////////////////// @@ -1160,6 +1508,7 @@ var moe2 = { name: 'moe' }; >moe2 : { name: string; } >{ name: 'moe' } : { name: string; } >name : string +>'moe' : string moe2 === _.identity(moe); >moe2 === _.identity(moe) : boolean @@ -1178,6 +1527,7 @@ _.times(3, function (n) { genie.grantWishNumber(n); }); >_.times : (n: number, iterator: Iterator, context?: any) => U[] >_ : Underscore.Static >times : (n: number, iterator: Iterator, context?: any) => U[] +>3 : number >function (n) { genie.grantWishNumber(n); } : (n: number) => void >n : number >genie.grantWishNumber(n) : any @@ -1191,6 +1541,8 @@ _.random(0, 100); >_.random : { (max: number): number; (min: number, max: number): number; } >_ : Underscore.Static >random : { (max: number): number; (min: number, max: number): number; } +>0 : number +>100 : number _.mixin({ >_.mixin({ capitalize: function (string) { return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase(); }}) : void @@ -1212,6 +1564,7 @@ _.mixin({ >string.charAt : any >string : any >charAt : any +>0 : number >toUpperCase : any >string.substring(1).toLowerCase() : any >string.substring(1).toLowerCase : any @@ -1219,6 +1572,7 @@ _.mixin({ >string.substring : any >string : any >substring : any +>1 : number >toLowerCase : any } }); @@ -1229,6 +1583,7 @@ _.mixin({ >_("fabio") : any >_("fabio") : Underscore.WrappedObject >_ : Underscore.Static +>"fabio" : string >capitalize : any _.uniqueId('contact_'); @@ -1236,19 +1591,23 @@ _.uniqueId('contact_'); >_.uniqueId : { (): number; (prefix: string): string; } >_ : Underscore.Static >uniqueId : { (): number; (prefix: string): string; } +>'contact_' : string _.escape('Curly, Larry & Moe'); >_.escape('Curly, Larry & Moe') : string >_.escape : (s: string) => string >_ : Underscore.Static >escape : (s: string) => string +>'Curly, Larry & Moe' : string var object = { cheese: 'crumpets', stuff: function () { return 'nonsense'; } }; >object : { cheese: string; stuff: () => string; } >{ cheese: 'crumpets', stuff: function () { return 'nonsense'; } } : { cheese: string; stuff: () => string; } >cheese : string +>'crumpets' : string >stuff : () => string >function () { return 'nonsense'; } : () => string +>'nonsense' : string _.result(object, 'cheese'); >_.result(object, 'cheese') : any @@ -1256,6 +1615,7 @@ _.result(object, 'cheese'); >_ : Underscore.Static >result : (object: any, property: string) => any >object : { cheese: string; stuff: () => string; } +>'cheese' : string _.result(object, 'stuff'); >_.result(object, 'stuff') : any @@ -1263,6 +1623,7 @@ _.result(object, 'stuff'); >_ : Underscore.Static >result : (object: any, property: string) => any >object : { cheese: string; stuff: () => string; } +>'stuff' : string var compiled = _.template("hello: <%= name %>"); >compiled : (data: any) => string @@ -1270,15 +1631,18 @@ var compiled = _.template("hello: <%= name %>"); >_.template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } >_ : Underscore.Static >template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } +>"hello: <%= name %>" : string compiled({ name: 'moe' }); >compiled({ name: 'moe' }) : string >compiled : (data: any) => string >{ name: 'moe' } : { name: string; } >name : string +>'moe' : string var list2 = "<% _.each(people, function(name) { %>
  • <%= name %>
  • <% }); %>"; >list2 : string +>"<% _.each(people, function(name) { %>
  • <%= name %>
  • <% }); %>" : string _.template(list2, { people: ['moe', 'curly', 'larry'] }); >_.template(list2, { people: ['moe', 'curly', 'larry'] }) : string @@ -1289,6 +1653,9 @@ _.template(list2, { people: ['moe', 'curly', 'larry'] }); >{ people: ['moe', 'curly', 'larry'] } : { people: string[]; } >people : string[] >['moe', 'curly', 'larry'] : string[] +>'moe' : string +>'curly' : string +>'larry' : string var template = _.template("<%- value %>"); >template : (data: any) => string @@ -1296,12 +1663,14 @@ var template = _.template("<%- value %>"); >_.template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } >_ : Underscore.Static >template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } +>"<%- value %>" : string template({ value: '