From 4cdc97094f972e3868493eaed0b72ec5e9348508 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Fri, 3 Apr 2015 16:17:05 -0700 Subject: [PATCH 01/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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/28] 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 7119165bd0313917ce647e46a8e34cebccc09927 Mon Sep 17 00:00:00 2001 From: Guillaume Salles Date: Sun, 12 Apr 2015 16:04:32 -0400 Subject: [PATCH 13/28] Fix issue #2677 : Labels should not get quick info --- src/services/services.ts | 4 ++++ tests/cases/fourslash/noQuickInfoForLabel.ts | 11 +++++++++++ 2 files changed, 15 insertions(+) create mode 100644 tests/cases/fourslash/noQuickInfoForLabel.ts diff --git a/src/services/services.ts b/src/services/services.ts index 19fcb46552c..748141dcf55 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3798,6 +3798,10 @@ module ts { // Try getting just type at this position and show switch (node.kind) { case SyntaxKind.Identifier: + if(isLabelName(node)){ + return undefined; + } + // Fall through. case SyntaxKind.PropertyAccessExpression: case SyntaxKind.QualifiedName: case SyntaxKind.ThisKeyword: diff --git a/tests/cases/fourslash/noQuickInfoForLabel.ts b/tests/cases/fourslash/noQuickInfoForLabel.ts new file mode 100644 index 00000000000..16ae6ef5f61 --- /dev/null +++ b/tests/cases/fourslash/noQuickInfoForLabel.ts @@ -0,0 +1,11 @@ +/// + +//// /*1*/label : while(true){ +//// break /*2*/label; +//// } + +goTo.marker('1'); +verify.not.quickInfoExists(); + +goTo.marker('2'); +verify.not.quickInfoExists(); From b416bf2d8096b126790ee1f96ab3af4e903ed58e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Mon, 13 Apr 2015 12:20:25 -0700 Subject: [PATCH 14/28] move check outside switch statement --- src/services/services.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 748141dcf55..1d006e0b14c 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3793,15 +3793,15 @@ module ts { return undefined; } + if (isLabelName(node)) { + return undefined; + } + let symbol = typeInfoResolver.getSymbolAtLocation(node); if (!symbol) { // Try getting just type at this position and show switch (node.kind) { case SyntaxKind.Identifier: - if(isLabelName(node)){ - return undefined; - } - // Fall through. case SyntaxKind.PropertyAccessExpression: case SyntaxKind.QualifiedName: case SyntaxKind.ThisKeyword: From 592e2314d4ac7ace12641d0809a028c0f6ac0341 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Mon, 13 Apr 2015 12:36:11 -0700 Subject: [PATCH 15/28] 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 | 40 +- .../reference/doWhileContinueStatements.types | 40 +- 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, 9118 insertions(+), 337 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; -}while(true) +>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; -}while(true) +>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: '