From c3e132da5972c3dafed9c1de1e07414e540fbdd3 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 3 Feb 2021 11:09:06 -0800 Subject: [PATCH 01/36] Keep extended config's raw file, include, exclude relative to itself and correct it when setting extending options (#42544) * Test when config file extends is incorrectly computed Test for #40720 * Keep extended config's raw file, include, exclude relative to itself and correct it when setting extending options Fixes #40720 --- src/compiler/commandLineParser.ts | 31 +--- src/testRunner/tsconfig.json | 1 + .../unittests/tsbuild/configFileExtends.ts | 52 ++++++ ...nce-and-both-extend-config-with-include.js | 160 +++++++++++++++++ ...th-projects-extends-config-with-include.js | 161 ++++++++++++++++++ 5 files changed, 382 insertions(+), 23 deletions(-) create mode 100644 src/testRunner/unittests/tsbuild/configFileExtends.ts create mode 100644 tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-project-uses-reference-and-both-extend-config-with-include.js create mode 100644 tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-solution-with-projects-extends-config-with-include.js diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 0fb10346440..f44eae9455f 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -2617,14 +2617,17 @@ namespace ts { if (ownConfig.extendedConfigPath) { // copy the resolution stack so it is never reused between branches in potential diamond-problem scenarios. resolutionStack = resolutionStack.concat([resolvedPath]); - const extendedConfig = getExtendedConfig(sourceFile, ownConfig.extendedConfigPath, host, basePath, resolutionStack, errors, extendedConfigCache); + const extendedConfig = getExtendedConfig(sourceFile, ownConfig.extendedConfigPath, host, resolutionStack, errors, extendedConfigCache); if (extendedConfig && isSuccessfulParsedTsconfig(extendedConfig)) { const baseRaw = extendedConfig.raw; const raw = ownConfig.raw; + let relativeDifference: string | undefined ; const setPropertyInRawIfNotUndefined = (propertyName: string) => { - const value = raw[propertyName] || baseRaw[propertyName]; - if (value) { - raw[propertyName] = value; + if (!raw[propertyName] && baseRaw[propertyName]) { + raw[propertyName] = map(baseRaw[propertyName], (path: string) => isRootedDiskPath(path) ? path : combinePaths( + relativeDifference ||= convertToRelativePath(getDirectoryPath(ownConfig.extendedConfigPath!), basePath, createGetCanonicalFileName(host.useCaseSensitiveFileNames)), + path + )); } }; setPropertyInRawIfNotUndefined("include"); @@ -2786,7 +2789,6 @@ namespace ts { sourceFile: TsConfigSourceFile | undefined, extendedConfigPath: string, host: ParseConfigHost, - basePath: string, resolutionStack: string[], errors: Push, extendedConfigCache?: ESMap @@ -2801,25 +2803,8 @@ namespace ts { else { extendedResult = readJsonConfigFile(extendedConfigPath, path => host.readFile(path)); if (!extendedResult.parseDiagnostics.length) { - const extendedDirname = getDirectoryPath(extendedConfigPath); - extendedConfig = parseConfig(/*json*/ undefined, extendedResult, host, extendedDirname, + extendedConfig = parseConfig(/*json*/ undefined, extendedResult, host, getDirectoryPath(extendedConfigPath), getBaseFileName(extendedConfigPath), resolutionStack, errors, extendedConfigCache); - - if (isSuccessfulParsedTsconfig(extendedConfig)) { - // Update the paths to reflect base path - const relativeDifference = convertToRelativePath(extendedDirname, basePath, identity); - const updatePath = (path: string) => isRootedDiskPath(path) ? path : combinePaths(relativeDifference, path); - const mapPropertiesInRawIfNotUndefined = (propertyName: string) => { - if (raw[propertyName]) { - raw[propertyName] = map(raw[propertyName], updatePath); - } - }; - - const { raw } = extendedConfig; - mapPropertiesInRawIfNotUndefined("include"); - mapPropertiesInRawIfNotUndefined("exclude"); - mapPropertiesInRawIfNotUndefined("files"); - } } if (extendedConfigCache) { extendedConfigCache.set(path, { extendedResult, extendedConfig }); diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index 1d389e21f01..d18df87b6cd 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -112,6 +112,7 @@ "unittests/services/transpile.ts", "unittests/tsbuild/amdModulesWithOut.ts", "unittests/tsbuild/configFileErrors.ts", + "unittests/tsbuild/configFileExtends.ts", "unittests/tsbuild/containerOnlyReferenced.ts", "unittests/tsbuild/declarationEmit.ts", "unittests/tsbuild/demo.ts", diff --git a/src/testRunner/unittests/tsbuild/configFileExtends.ts b/src/testRunner/unittests/tsbuild/configFileExtends.ts new file mode 100644 index 00000000000..b00a213b9d3 --- /dev/null +++ b/src/testRunner/unittests/tsbuild/configFileExtends.ts @@ -0,0 +1,52 @@ +namespace ts { + describe("unittests:: tsbuild:: configFileExtends:: when tsconfig extends another config", () => { + function getConfigExtendsWithIncludeFs() { + return loadProjectFromFiles({ + "/src/tsconfig.json": JSON.stringify({ + references: [ + { path: "./shared/tsconfig.json" }, + { path: "./webpack/tsconfig.json" } + ], + files: [] + }), + "/src/shared/tsconfig-base.json": JSON.stringify({ + include: ["./typings-base/"] + }), + "/src/shared/typings-base/globals.d.ts": `type Unrestricted = any;`, + "/src/shared/tsconfig.json": JSON.stringify({ + extends: "./tsconfig-base.json", + compilerOptions: { + composite: true, + outDir: "../target-tsc-build/", + rootDir: ".." + }, + files: ["./index.ts"] + }), + "/src/shared/index.ts": `export const a: Unrestricted = 1;`, + "/src/webpack/tsconfig.json": JSON.stringify({ + extends: "../shared/tsconfig-base.json", + compilerOptions: { + composite: true, + outDir: "../target-tsc-build/", + rootDir: ".." + }, + files: ["./index.ts"], + references: [{ path: "../shared/tsconfig.json" }] + }), + "/src/webpack/index.ts": `export const b: Unrestricted = 1;`, + }); + } + verifyTsc({ + scenario: "configFileExtends", + subScenario: "when building solution with projects extends config with include", + fs: getConfigExtendsWithIncludeFs, + commandLineArgs: ["--b", "/src/tsconfig.json", "--v", "--listFiles"], + }); + verifyTsc({ + scenario: "configFileExtends", + subScenario: "when building project uses reference and both extend config with include", + fs: getConfigExtendsWithIncludeFs, + commandLineArgs: ["--b", "/src/webpack/tsconfig.json", "--v", "--listFiles"], + }); + }); +} \ No newline at end of file diff --git a/tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-project-uses-reference-and-both-extend-config-with-include.js b/tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-project-uses-reference-and-both-extend-config-with-include.js new file mode 100644 index 00000000000..f8c8fa523a4 --- /dev/null +++ b/tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-project-uses-reference-and-both-extend-config-with-include.js @@ -0,0 +1,160 @@ +Input:: +//// [/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } +interface ReadonlyArray {} +declare const console: { log(msg: any): void; }; + +//// [/src/shared/index.ts] +export const a: Unrestricted = 1; + +//// [/src/shared/tsconfig-base.json] +{"include":["./typings-base/"]} + +//// [/src/shared/tsconfig.json] +{"extends":"./tsconfig-base.json","compilerOptions":{"composite":true,"outDir":"../target-tsc-build/","rootDir":".."},"files":["./index.ts"]} + +//// [/src/shared/typings-base/globals.d.ts] +type Unrestricted = any; + +//// [/src/tsconfig.json] + + +//// [/src/webpack/index.ts] +export const b: Unrestricted = 1; + +//// [/src/webpack/tsconfig.json] +{"extends":"../shared/tsconfig-base.json","compilerOptions":{"composite":true,"outDir":"../target-tsc-build/","rootDir":".."},"files":["./index.ts"],"references":[{"path":"../shared/tsconfig.json"}]} + + + +Output:: +/lib/tsc --b /src/webpack/tsconfig.json --v --listFiles +[12:00:00 AM] Projects in this build: + * src/shared/tsconfig.json + * src/webpack/tsconfig.json + +[12:00:00 AM] Project 'src/shared/tsconfig.json' is out of date because output file 'src/target-tsc-build/shared/index.js' does not exist + +[12:00:00 AM] Building project '/src/shared/tsconfig.json'... + +/lib/lib.d.ts +/src/shared/index.ts +/src/shared/typings-base/globals.d.ts +[12:00:00 AM] Project 'src/webpack/tsconfig.json' is out of date because output file 'src/target-tsc-build/webpack/index.js' does not exist + +[12:00:00 AM] Building project '/src/webpack/tsconfig.json'... + +/lib/lib.d.ts +/src/webpack/index.ts +/src/shared/typings-base/globals.d.ts +exitCode:: ExitStatus.Success + + +//// [/src/target-tsc-build/shared/index.d.ts] +export declare const a: Unrestricted; + + +//// [/src/target-tsc-build/shared/index.js] +"use strict"; +exports.__esModule = true; +exports.a = void 0; +exports.a = 1; + + +//// [/src/target-tsc-build/shared/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "signature": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../../shared/index.ts": { + "version": "-22125360210-export const a: Unrestricted = 1;", + "signature": "-478734393-export declare const a: Unrestricted;\r\n", + "affectsGlobalScope": false + }, + "../../shared/typings-base/globals.d.ts": { + "version": "4725476611-type Unrestricted = any;", + "signature": "4725476611-type Unrestricted = any;", + "affectsGlobalScope": true + } + }, + "options": { + "composite": true, + "outDir": "..", + "rootDir": "../..", + "listFiles": true, + "configFilePath": "../../shared/tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../../shared/index.ts", + "../../shared/typings-base/globals.d.ts" + ] + }, + "version": "FakeTSVersion" +} + +//// [/src/target-tsc-build/webpack/index.d.ts] +export declare const b: Unrestricted; + + +//// [/src/target-tsc-build/webpack/index.js] +"use strict"; +exports.__esModule = true; +exports.b = void 0; +exports.b = 1; + + +//// [/src/target-tsc-build/webpack/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "signature": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../../webpack/index.ts": { + "version": "-14405273073-export const b: Unrestricted = 1;", + "signature": "-5074241048-export declare const b: Unrestricted;\r\n", + "affectsGlobalScope": false + }, + "../../shared/typings-base/globals.d.ts": { + "version": "4725476611-type Unrestricted = any;", + "signature": "4725476611-type Unrestricted = any;", + "affectsGlobalScope": true + } + }, + "options": { + "composite": true, + "outDir": "..", + "rootDir": "../..", + "listFiles": true, + "configFilePath": "../../webpack/tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../../shared/typings-base/globals.d.ts", + "../../webpack/index.ts" + ] + }, + "version": "FakeTSVersion" +} + diff --git a/tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-solution-with-projects-extends-config-with-include.js b/tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-solution-with-projects-extends-config-with-include.js new file mode 100644 index 00000000000..7d42e37a02d --- /dev/null +++ b/tests/baselines/reference/tsbuild/configFileExtends/initial-build/when-building-solution-with-projects-extends-config-with-include.js @@ -0,0 +1,161 @@ +Input:: +//// [/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } +interface ReadonlyArray {} +declare const console: { log(msg: any): void; }; + +//// [/src/shared/index.ts] +export const a: Unrestricted = 1; + +//// [/src/shared/tsconfig-base.json] +{"include":["./typings-base/"]} + +//// [/src/shared/tsconfig.json] +{"extends":"./tsconfig-base.json","compilerOptions":{"composite":true,"outDir":"../target-tsc-build/","rootDir":".."},"files":["./index.ts"]} + +//// [/src/shared/typings-base/globals.d.ts] +type Unrestricted = any; + +//// [/src/tsconfig.json] +{"references":[{"path":"./shared/tsconfig.json"},{"path":"./webpack/tsconfig.json"}],"files":[]} + +//// [/src/webpack/index.ts] +export const b: Unrestricted = 1; + +//// [/src/webpack/tsconfig.json] +{"extends":"../shared/tsconfig-base.json","compilerOptions":{"composite":true,"outDir":"../target-tsc-build/","rootDir":".."},"files":["./index.ts"],"references":[{"path":"../shared/tsconfig.json"}]} + + + +Output:: +/lib/tsc --b /src/tsconfig.json --v --listFiles +[12:00:00 AM] Projects in this build: + * src/shared/tsconfig.json + * src/webpack/tsconfig.json + * src/tsconfig.json + +[12:00:00 AM] Project 'src/shared/tsconfig.json' is out of date because output file 'src/target-tsc-build/shared/index.js' does not exist + +[12:00:00 AM] Building project '/src/shared/tsconfig.json'... + +/lib/lib.d.ts +/src/shared/index.ts +/src/shared/typings-base/globals.d.ts +[12:00:00 AM] Project 'src/webpack/tsconfig.json' is out of date because output file 'src/target-tsc-build/webpack/index.js' does not exist + +[12:00:00 AM] Building project '/src/webpack/tsconfig.json'... + +/lib/lib.d.ts +/src/webpack/index.ts +/src/shared/typings-base/globals.d.ts +exitCode:: ExitStatus.Success + + +//// [/src/target-tsc-build/shared/index.d.ts] +export declare const a: Unrestricted; + + +//// [/src/target-tsc-build/shared/index.js] +"use strict"; +exports.__esModule = true; +exports.a = void 0; +exports.a = 1; + + +//// [/src/target-tsc-build/shared/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "signature": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../../shared/index.ts": { + "version": "-22125360210-export const a: Unrestricted = 1;", + "signature": "-478734393-export declare const a: Unrestricted;\r\n", + "affectsGlobalScope": false + }, + "../../shared/typings-base/globals.d.ts": { + "version": "4725476611-type Unrestricted = any;", + "signature": "4725476611-type Unrestricted = any;", + "affectsGlobalScope": true + } + }, + "options": { + "composite": true, + "outDir": "..", + "rootDir": "../..", + "listFiles": true, + "configFilePath": "../../shared/tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../../shared/index.ts", + "../../shared/typings-base/globals.d.ts" + ] + }, + "version": "FakeTSVersion" +} + +//// [/src/target-tsc-build/webpack/index.d.ts] +export declare const b: Unrestricted; + + +//// [/src/target-tsc-build/webpack/index.js] +"use strict"; +exports.__esModule = true; +exports.b = void 0; +exports.b = 1; + + +//// [/src/target-tsc-build/webpack/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../../lib/lib.d.ts": { + "version": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "signature": "3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true + }, + "../../webpack/index.ts": { + "version": "-14405273073-export const b: Unrestricted = 1;", + "signature": "-5074241048-export declare const b: Unrestricted;\r\n", + "affectsGlobalScope": false + }, + "../../shared/typings-base/globals.d.ts": { + "version": "4725476611-type Unrestricted = any;", + "signature": "4725476611-type Unrestricted = any;", + "affectsGlobalScope": true + } + }, + "options": { + "composite": true, + "outDir": "..", + "rootDir": "../..", + "listFiles": true, + "configFilePath": "../../webpack/tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../../lib/lib.d.ts", + "../../shared/typings-base/globals.d.ts", + "../../webpack/index.ts" + ] + }, + "version": "FakeTSVersion" +} + From 654975481f6be9c9c2c018d72fe0ac72942c872f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 3 Feb 2021 14:29:42 -0800 Subject: [PATCH 02/36] Use spaces instead of non-breaking spaces, narrow non-breaking spaces. (#42500) --- src/lib/es5.d.ts | 4 ++-- src/services/codefixes/helpers.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 0a7f8846ca0..98bb0ee676e 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -4331,8 +4331,8 @@ declare namespace Intl { interface DateTimeFormatOptions { localeMatcher?: "best fit" | "lookup"; - weekday?: "long" | "short" | "narrow"; - era?: "long" | "short" | "narrow"; + weekday?: "long" | "short" | "narrow"; + era?: "long" | "short" | "narrow"; year?: "numeric" | "2-digit"; month?: "numeric" | "2-digit" | "long" | "short" | "narrow"; day?: "numeric" | "2-digit"; diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts index e590081323f..4e91a28dafa 100644 --- a/src/services/codefixes/helpers.ts +++ b/src/services/codefixes/helpers.ts @@ -321,7 +321,7 @@ namespace ts.codefix { return typeNode; } - function createDummyParameters(argCount: number, names: (string | undefined)[] | undefined, types: (TypeNode | undefined)[] | undefined, minArgumentCount: number | undefined, inJs: boolean): ParameterDeclaration[] { + function createDummyParameters(argCount: number, names: (string | undefined)[] | undefined, types: (TypeNode | undefined)[] | undefined, minArgumentCount: number | undefined, inJs: boolean): ParameterDeclaration[] { const parameters: ParameterDeclaration[] = []; for (let i = 0; i < argCount; i++) { const newParameter = factory.createParameterDeclaration( From cce4bfbc7cf1759a87426cef522cc6cbc8c07aab Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 3 Feb 2021 14:49:03 -0800 Subject: [PATCH 03/36] Revert changes for template literal types, keeping tests. (#42588) * Revert changes for template literal types, keeping tests. * Update Baselines and/or Applied Lint Fixes Co-authored-by: TypeScript Bot --- src/compiler/checker.ts | 63 +++--- src/compiler/types.ts | 10 +- .../reference/TemplateExpression1.types | 2 +- .../accessorsOverrideProperty2.types | 2 +- .../reference/api/tsserverlibrary.d.ts | 2 - tests/baselines/reference/api/typescript.d.ts | 2 - tests/baselines/reference/asOperator3.types | 12 +- .../checkJsObjectLiteralIndexSignatures.types | 2 +- .../computedPropertyNames10_ES5.types | 2 +- .../computedPropertyNames10_ES6.types | 2 +- .../computedPropertyNames11_ES5.types | 2 +- .../computedPropertyNames11_ES6.types | 2 +- .../computedPropertyNames12_ES5.types | 2 +- .../computedPropertyNames12_ES6.types | 2 +- .../computedPropertyNames13_ES5.types | 2 +- .../computedPropertyNames13_ES6.types | 2 +- .../computedPropertyNames16_ES5.types | 2 +- .../computedPropertyNames16_ES6.types | 2 +- .../computedPropertyNames4_ES5.types | 2 +- .../computedPropertyNames4_ES6.types | 2 +- .../declFileEmitDeclarationOnly.types | 2 +- .../declarationNoDanglingGenerics.types | 2 +- ...InitializerContextualTypeFromContext.types | 4 +- .../destructuringParameterProperties4.types | 4 +- ...onentiationOperatorInTempalteString4.types | 34 ++-- ...ntiationOperatorInTempalteString4ES6.types | 34 ++-- ...onentiationOperatorInTemplateString1.types | 36 ++-- ...ntiationOperatorInTemplateString1ES6.types | 36 ++-- ...onentiationOperatorInTemplateString2.types | 38 ++-- ...ntiationOperatorInTemplateString2ES6.types | 38 ++-- ...onentiationOperatorInTemplateString3.types | 38 ++-- ...ntiationOperatorInTemplateString3ES6.types | 38 ++-- ...umConstantMemberWithTemplateLiterals.types | 2 +- .../esModuleInteropImportTSLibHasImport.types | 4 +- ...atorInTemplateStringWithSyntaxError1.types | 36 ++-- ...atorInTemplateStringWithSyntaxError2.types | 36 ++-- ...atorInTemplateStringWithSyntaxError3.types | 36 ++-- ...ionOperatorWithTemplateStringInvalid.types | 24 +-- ...OperatorWithTemplateStringInvalidES6.types | 24 +-- ...importCallExpressionDeclarationEmit1.types | 2 +- ...portCallExpressionReturnPromiseOfAny.types | 10 +- ...mportCallExpressionShouldNotGetParen.types | 2 +- .../reference/inferenceErasedSignatures.types | 2 +- ...mplateEscapeSequences(target=es2015).types | 36 ++-- ...dTemplateEscapeSequences(target=es5).types | 36 ++-- ...mplateEscapeSequences(target=esnext).types | 36 ++-- .../jsDeclarationsExportedClassAliases.types | 2 +- .../jsdocTypeFromChainedAssignment2.types | 30 +-- .../reference/noImplicitSymbolToString.types | 8 +- .../parenthesizedContexualTyping3.types | 16 +- .../privateNameFieldCallExpression.types | 4 +- .../propertyOverridesAccessors2.types | 2 +- .../reference/recursiveTypeReferences1.types | 2 +- ...teralTypesWithTemplateStrings02.errors.txt | 7 +- ...ingLiteralTypesWithTemplateStrings02.types | 2 +- .../reference/taggedTemplateChain.types | 2 +- .../taggedTemplateContextualTyping1.types | 8 +- .../taggedTemplateContextualTyping2.types | 6 +- ...gedTemplateStringsHexadecimalEscapes.types | 2 +- ...TemplateStringsHexadecimalEscapesES6.types | 2 +- ...ainCharactersThatArePartsOfEscapes02.types | 2 +- ...haractersThatArePartsOfEscapes02_ES6.types | 2 +- ...TemplateStringsTypeArgumentInference.types | 22 +- ...plateStringsTypeArgumentInferenceES6.types | 22 +- ...edTemplateStringsWithCurriedFunction.types | 2 +- ...lateStringsWithIncompatibleTypedTags.types | 18 +- ...eStringsWithIncompatibleTypedTagsES6.types | 18 +- ...ingsWithManyCallAndMemberExpressions.types | 2 +- ...sWithManyCallAndMemberExpressionsES6.types | 2 +- ...mplateStringsWithOverloadResolution1.types | 10 +- ...teStringsWithOverloadResolution1_ES6.types | 10 +- ...mplateStringsWithOverloadResolution2.types | 4 +- ...teStringsWithOverloadResolution2_ES6.types | 4 +- ...mplateStringsWithOverloadResolution3.types | 36 ++-- ...teStringsWithOverloadResolution3_ES6.types | 36 ++-- ...edTemplateStringsWithTagNamedDeclare.types | 2 +- ...emplateStringsWithTagNamedDeclareES6.types | 2 +- ...gedTemplateStringsWithTagsTypedAsAny.types | 16 +- ...TemplateStringsWithTagsTypedAsAnyES6.types | 16 +- .../taggedTemplateStringsWithTypedTags.types | 14 +- ...aggedTemplateStringsWithTypedTagsES6.types | 14 +- ...gedTemplateStringsWithUnicodeEscapes.types | 2 +- ...TemplateStringsWithUnicodeEscapesES6.types | 2 +- ...esWithIncompleteTemplateExpressions1.types | 2 +- ...esWithIncompleteTemplateExpressions2.types | 2 +- ...esWithIncompleteTemplateExpressions3.types | 2 +- ...esWithIncompleteTemplateExpressions4.types | 2 +- ...esWithIncompleteTemplateExpressions5.types | 2 +- ...esWithIncompleteTemplateExpressions6.types | 2 +- .../taggedTemplatesWithTypeArguments1.types | 18 +- .../taggedTemplatesWithTypeArguments2.types | 8 +- .../reference/templateLiteralTypes1.types | 2 +- .../templateLiteralTypes2.errors.txt | 144 +++++++++++++ .../reference/templateLiteralTypes2.js | 8 +- .../reference/templateLiteralTypes2.types | 140 ++++++------- .../templateStringBinaryOperations.types | 96 ++++----- .../templateStringBinaryOperationsES6.types | 96 ++++----- ...lateStringBinaryOperationsES6Invalid.types | 192 +++++++++--------- ...emplateStringBinaryOperationsInvalid.types | 192 +++++++++--------- .../reference/templateStringInArray.types | 2 +- .../templateStringInArrowFunction.types | 6 +- .../templateStringInArrowFunctionES6.types | 6 +- .../templateStringInCallExpression.types | 6 +- .../templateStringInCallExpressionES6.types | 6 +- .../templateStringInConditional.types | 8 +- .../templateStringInConditionalES6.types | 8 +- .../templateStringInDeleteExpression.types | 2 +- .../templateStringInDeleteExpressionES6.types | 2 +- .../reference/templateStringInDivision.types | 2 +- .../templateStringInEqualityChecks.errors.txt | 13 -- .../templateStringInEqualityChecks.types | 8 +- ...mplateStringInEqualityChecksES6.errors.txt | 13 -- .../templateStringInEqualityChecksES6.types | 8 +- .../templateStringInFunctionExpression.types | 4 +- ...emplateStringInFunctionExpressionES6.types | 4 +- .../templateStringInInOperator.types | 2 +- .../templateStringInInOperatorES6.types | 2 +- .../templateStringInIndexExpression.types | 2 +- .../templateStringInIndexExpressionES6.types | 2 +- .../templateStringInInstanceOf.types | 2 +- .../templateStringInInstanceOfES6.types | 2 +- .../templateStringInModuleName.types | 2 +- .../templateStringInModuleNameES6.types | 2 +- .../reference/templateStringInModulo.types | 2 +- .../reference/templateStringInModuloES6.types | 2 +- .../templateStringInMultiplication.types | 2 +- .../templateStringInMultiplicationES6.types | 2 +- .../templateStringInNewExpression.types | 6 +- .../templateStringInNewExpressionES6.types | 6 +- .../templateStringInNewOperator.types | 2 +- .../templateStringInNewOperatorES6.types | 2 +- .../templateStringInObjectLiteral.types | 2 +- .../templateStringInObjectLiteralES6.types | 2 +- .../templateStringInParentheses.types | 4 +- .../templateStringInParenthesesES6.types | 4 +- .../templateStringInPropertyAssignment.types | 2 +- ...emplateStringInPropertyAssignmentES6.types | 2 +- .../templateStringInPropertyName2.types | 2 +- .../templateStringInPropertyNameES6_2.types | 2 +- .../templateStringInSwitchAndCase.errors.txt | 15 -- .../templateStringInSwitchAndCase.types | 6 +- ...emplateStringInSwitchAndCaseES6.errors.txt | 15 -- .../templateStringInSwitchAndCaseES6.types | 6 +- .../templateStringInTaggedTemplate.types | 6 +- .../templateStringInTaggedTemplateES6.types | 6 +- .../templateStringInTypeAssertion.types | 2 +- .../templateStringInTypeAssertionES6.types | 2 +- .../reference/templateStringInTypeOf.types | 2 +- .../reference/templateStringInTypeOfES6.types | 2 +- .../reference/templateStringInUnaryPlus.types | 2 +- .../templateStringInUnaryPlusES6.types | 2 +- .../reference/templateStringInWhile.types | 4 +- .../reference/templateStringInWhileES6.types | 4 +- .../templateStringInYieldKeyword.types | 4 +- ...ainCharactersThatArePartsOfEscapes02.types | 2 +- ...haractersThatArePartsOfEscapes02_ES6.types | 2 +- .../templateStringWithEmbeddedAddition.types | 2 +- ...emplateStringWithEmbeddedAdditionES6.types | 2 +- .../templateStringWithEmbeddedArray.types | 2 +- .../templateStringWithEmbeddedArrayES6.types | 2 +- ...plateStringWithEmbeddedArrowFunction.types | 2 +- ...teStringWithEmbeddedArrowFunctionES6.types | 2 +- .../templateStringWithEmbeddedComments.types | 2 +- ...emplateStringWithEmbeddedCommentsES6.types | 2 +- ...emplateStringWithEmbeddedConditional.types | 4 +- ...lateStringWithEmbeddedConditionalES6.types | 4 +- .../templateStringWithEmbeddedDivision.types | 2 +- ...emplateStringWithEmbeddedDivisionES6.types | 2 +- ...StringWithEmbeddedFunctionExpression.types | 2 +- ...ingWithEmbeddedFunctionExpressionES6.types | 2 +- ...templateStringWithEmbeddedInOperator.types | 4 +- ...plateStringWithEmbeddedInOperatorES6.types | 4 +- ...templateStringWithEmbeddedInstanceOf.types | 4 +- ...plateStringWithEmbeddedInstanceOfES6.types | 4 +- .../templateStringWithEmbeddedModulo.types | 2 +- .../templateStringWithEmbeddedModuloES6.types | 2 +- ...lateStringWithEmbeddedMultiplication.types | 2 +- ...eStringWithEmbeddedMultiplicationES6.types | 2 +- ...emplateStringWithEmbeddedNewOperator.types | 2 +- ...lateStringWithEmbeddedNewOperatorES6.types | 2 +- ...plateStringWithEmbeddedObjectLiteral.types | 2 +- ...teStringWithEmbeddedObjectLiteralES6.types | 2 +- ...lateStringWithEmbeddedTemplateString.types | 6 +- ...eStringWithEmbeddedTemplateStringES6.types | 6 +- ...gWithEmbeddedTypeAssertionOnAddition.types | 2 +- ...thEmbeddedTypeAssertionOnAdditionES6.types | 2 +- ...lateStringWithEmbeddedTypeOfOperator.types | 4 +- ...eStringWithEmbeddedTypeOfOperatorES6.types | 4 +- .../templateStringWithEmbeddedUnaryPlus.types | 2 +- ...mplateStringWithEmbeddedUnaryPlusES6.types | 2 +- ...mplateStringWithEmbeddedYieldKeyword.types | 2 +- ...ateStringWithEmbeddedYieldKeywordES6.types | 2 +- ...mplateStringWithEmptyLiteralPortions.types | 24 +-- ...ateStringWithEmptyLiteralPortionsES6.types | 24 +-- ...StringWithOpenCommentInStringPortion.types | 2 +- ...ingWithOpenCommentInStringPortionES6.types | 2 +- .../templateStringWithPropertyAccess.types | 2 +- .../templateStringWithPropertyAccessES6.types | 2 +- ...lateStringsArrayTypeDefinedInES5Mode.types | 2 +- ...ateStringsArrayTypeNotDefinedES5Mode.types | 2 +- ...teStringsArrayTypeRedefinedInES6Mode.types | 2 +- .../truthinessCallExpressionCoercion.types | 2 +- .../typeGuardIntersectionTypes.types | 4 +- ...codeExtendedEscapesInTemplates20_ES5.types | 2 +- ...codeExtendedEscapesInTemplates20_ES6.types | 2 +- 205 files changed, 1217 insertions(+), 1159 deletions(-) create mode 100644 tests/baselines/reference/templateLiteralTypes2.errors.txt delete mode 100644 tests/baselines/reference/templateStringInEqualityChecks.errors.txt delete mode 100644 tests/baselines/reference/templateStringInEqualityChecksES6.errors.txt delete mode 100644 tests/baselines/reference/templateStringInSwitchAndCase.errors.txt delete mode 100644 tests/baselines/reference/templateStringInSwitchAndCaseES6.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c4b3d67ad6d..d5c65af052c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13371,7 +13371,7 @@ namespace ts { i--; const t = types[i]; const remove = - t.flags & TypeFlags.StringLikeLiteral && includes & TypeFlags.String || + t.flags & TypeFlags.StringLiteral && includes & TypeFlags.String || t.flags & TypeFlags.NumberLiteral && includes & TypeFlags.Number || t.flags & TypeFlags.BigIntLiteral && includes & TypeFlags.BigInt || t.flags & TypeFlags.UniqueESSymbol && includes & TypeFlags.ESSymbol || @@ -13442,7 +13442,7 @@ namespace ts { } switch (unionReduction) { case UnionReduction.Literal: - if (includes & (TypeFlags.FreshableLiteral | TypeFlags.UniqueESSymbol)) { + if (includes & (TypeFlags.Literal | TypeFlags.UniqueESSymbol)) { removeRedundantLiteralTypes(typeSet, includes); } if (includes & TypeFlags.StringLiteral && includes & TypeFlags.TemplateLiteral) { @@ -14041,7 +14041,6 @@ namespace ts { let type = templateLiteralTypes.get(id); if (!type) { templateLiteralTypes.set(id, type = createTemplateLiteralType(newTexts, newTypes)); - type.regularType = type; } return type; @@ -15098,28 +15097,26 @@ namespace ts { } function getFreshTypeOfLiteralType(type: Type): Type { - if (type.flags & TypeFlags.FreshableLiteral) { - if (!(type).freshType) { - const freshType = type.flags & TypeFlags.TemplateLiteral ? - createTemplateLiteralType((type).texts, (type).types) : - createLiteralType(type.flags, (type).value, (type).symbol); - freshType.regularType = type; + if (type.flags & TypeFlags.Literal) { + if (!(type).freshType) { + const freshType = createLiteralType(type.flags, (type).value, (type).symbol); + freshType.regularType = type; freshType.freshType = freshType; - (type).freshType = freshType; + (type).freshType = freshType; } - return (type).freshType; + return (type).freshType; } return type; } function getRegularTypeOfLiteralType(type: Type): Type { - return type.flags & TypeFlags.FreshableLiteral ? (type).regularType : + return type.flags & TypeFlags.Literal ? (type).regularType : type.flags & TypeFlags.Union ? ((type).regularType || ((type).regularType = mapType(type, getRegularTypeOfLiteralType) as UnionType)) : type; } function isFreshLiteralType(type: Type) { - return !!(type.flags & TypeFlags.FreshableLiteral) && (type).freshType === type; + return !!(type.flags & TypeFlags.Literal) && (type).freshType === type; } function getLiteralType(value: string): StringLiteralType; @@ -18030,20 +18027,17 @@ namespace ts { } } else if (source.flags & TypeFlags.TemplateLiteral) { - if (target.flags & TypeFlags.TemplateLiteral) { - if ((source as TemplateLiteralType).texts.length === (target as TemplateLiteralType).texts.length && - (source as TemplateLiteralType).types.length === (target as TemplateLiteralType).types.length && - every((source as TemplateLiteralType).texts, (t, i) => t === (target as TemplateLiteralType).texts[i]) && - every((instantiateType(source, makeFunctionTypeMapper(reportUnreliableMarkers)) as TemplateLiteralType).types, (t, i) => !!((target as TemplateLiteralType).types[i].flags & (TypeFlags.Any | TypeFlags.String)) || !!isRelatedTo(t, (target as TemplateLiteralType).types[i], /*reportErrors*/ false))) { - return Ternary.True; - } + if (target.flags & TypeFlags.TemplateLiteral && + (source as TemplateLiteralType).texts.length === (target as TemplateLiteralType).texts.length && + (source as TemplateLiteralType).types.length === (target as TemplateLiteralType).types.length && + every((source as TemplateLiteralType).texts, (t, i) => t === (target as TemplateLiteralType).texts[i]) && + every((instantiateType(source, makeFunctionTypeMapper(reportUnreliableMarkers)) as TemplateLiteralType).types, (t, i) => !!((target as TemplateLiteralType).types[i].flags & (TypeFlags.Any | TypeFlags.String)) || !!isRelatedTo(t, (target as TemplateLiteralType).types[i], /*reportErrors*/ false))) { + return Ternary.True; } - else { - const constraint = getBaseConstraintOfType(source); - if (result = isRelatedTo(constraint && constraint !== source ? constraint : stringType, target, reportErrors)) { - resetErrorInfo(saveErrorInfo); - return result; - } + const constraint = getBaseConstraintOfType(source); + if (constraint && constraint !== source && (result = isRelatedTo(constraint, target, reportErrors))) { + resetErrorInfo(saveErrorInfo); + return result; } } else if (source.flags & TypeFlags.StringMapping) { @@ -19538,7 +19532,7 @@ namespace ts { function getBaseTypeOfLiteralType(type: Type): Type { return type.flags & TypeFlags.EnumLiteral ? getBaseTypeOfEnumLiteralType(type) : - type.flags & TypeFlags.StringLikeLiteral ? stringType : + type.flags & TypeFlags.StringLiteral ? stringType : type.flags & TypeFlags.NumberLiteral ? numberType : type.flags & TypeFlags.BigIntLiteral ? bigintType : type.flags & TypeFlags.BooleanLiteral ? booleanType : @@ -19548,7 +19542,7 @@ namespace ts { function getWidenedLiteralType(type: Type): Type { return type.flags & TypeFlags.EnumLiteral && isFreshLiteralType(type) ? getBaseTypeOfEnumLiteralType(type) : - type.flags & TypeFlags.StringLikeLiteral && isFreshLiteralType(type) ? stringType : + type.flags & TypeFlags.StringLiteral && isFreshLiteralType(type) ? stringType : type.flags & TypeFlags.NumberLiteral && isFreshLiteralType(type) ? numberType : type.flags & TypeFlags.BigIntLiteral && isFreshLiteralType(type) ? bigintType : type.flags & TypeFlags.BooleanLiteral && isFreshLiteralType(type) ? booleanType : @@ -21042,7 +21036,7 @@ namespace ts { } function isTypeOrBaseIdenticalTo(s: Type, t: Type) { - return isTypeIdenticalTo(s, t) || !!(t.flags & TypeFlags.String && s.flags & TypeFlags.StringLikeLiteral || t.flags & TypeFlags.Number && s.flags & TypeFlags.NumberLiteral); + return isTypeIdenticalTo(s, t) || !!(t.flags & TypeFlags.String && s.flags & TypeFlags.StringLiteral || t.flags & TypeFlags.Number && s.flags & TypeFlags.NumberLiteral); } function isTypeCloselyMatchedBy(s: Type, t: Type) { @@ -31300,7 +31294,7 @@ namespace ts { texts.push(span.literal.text); types.push(isTypeAssignableTo(type, templateConstraintType) ? type : stringType); } - return getFreshTypeOfLiteralType(getTemplateLiteralType(texts, types)); + return isConstContext(node) ? getTemplateLiteralType(texts, types) : stringType; } function getContextNode(node: Expression): Node { @@ -31321,7 +31315,7 @@ namespace ts { // We strip literal freshness when an appropriate contextual type is present such that contextually typed // literals always preserve their literal types (otherwise they might widen during type inference). An alternative // here would be to not mark contextually typed literals as fresh in the first place. - const result = maybeTypeOfKind(type, TypeFlags.FreshableLiteral) && isLiteralOfContextualType(type, instantiateContextualType(contextualType, node)) ? + const result = maybeTypeOfKind(type, TypeFlags.Literal) && isLiteralOfContextualType(type, instantiateContextualType(contextualType, node)) ? getRegularTypeOfLiteralType(type) : type; return result; } @@ -31411,7 +31405,7 @@ namespace ts { // this a literal context for literals of that primitive type. For example, given a // type parameter 'T extends string', infer string literal types for T. const constraint = getBaseConstraintOfType(contextualType) || unknownType; - return maybeTypeOfKind(constraint, TypeFlags.String) && maybeTypeOfKind(candidateType, TypeFlags.StringLikeLiteral) || + return maybeTypeOfKind(constraint, TypeFlags.String) && maybeTypeOfKind(candidateType, TypeFlags.StringLiteral) || maybeTypeOfKind(constraint, TypeFlags.Number) && maybeTypeOfKind(candidateType, TypeFlags.NumberLiteral) || maybeTypeOfKind(constraint, TypeFlags.BigInt) && maybeTypeOfKind(candidateType, TypeFlags.BigIntLiteral) || maybeTypeOfKind(constraint, TypeFlags.ESSymbol) && maybeTypeOfKind(candidateType, TypeFlags.UniqueESSymbol) || @@ -31419,7 +31413,7 @@ namespace ts { } // If the contextual type is a literal of a particular primitive type, we consider this a // literal context for all literals of that primitive type. - return !!(contextualType.flags & (TypeFlags.StringLikeLiteral | TypeFlags.Index | TypeFlags.StringMapping) && maybeTypeOfKind(candidateType, TypeFlags.StringLikeLiteral) || + return !!(contextualType.flags & (TypeFlags.StringLiteral | TypeFlags.Index | TypeFlags.TemplateLiteral | TypeFlags.StringMapping) && maybeTypeOfKind(candidateType, TypeFlags.StringLiteral) || contextualType.flags & TypeFlags.NumberLiteral && maybeTypeOfKind(candidateType, TypeFlags.NumberLiteral) || contextualType.flags & TypeFlags.BigIntLiteral && maybeTypeOfKind(candidateType, TypeFlags.BigIntLiteral) || contextualType.flags & TypeFlags.BooleanLiteral && maybeTypeOfKind(candidateType, TypeFlags.BooleanLiteral) || @@ -38963,8 +38957,7 @@ namespace ts { function isLiteralConstDeclaration(node: VariableDeclaration | PropertyDeclaration | PropertySignature | ParameterDeclaration): boolean { if (isDeclarationReadonly(node) || isVariableDeclaration(node) && isVarConst(node)) { - const type = getTypeOfSymbol(getSymbolOfNode(node)); - return !!(type.flags & TypeFlags.Literal) && isFreshLiteralType(type); + return isFreshLiteralType(getTypeOfSymbol(getSymbolOfNode(node))); } return false; } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 4352e2f2171..3585ff50a8f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -4972,10 +4972,6 @@ namespace ts { Unit = Literal | UniqueESSymbol | Nullable, StringOrNumberLiteral = StringLiteral | NumberLiteral, /* @internal */ - StringLikeLiteral = StringLiteral | TemplateLiteral, - /* @internal */ - FreshableLiteral = Literal | TemplateLiteral, - /* @internal */ StringOrNumberLiteralOrUnique = StringLiteral | NumberLiteral | UniqueESSymbol, /* @internal */ DefinitelyFalsy = StringLiteral | NumberLiteral | BigIntLiteral | BooleanLiteral | Void | Undefined | Null, @@ -5069,9 +5065,7 @@ namespace ts { } /* @internal */ - export type FreshableLiteralType = LiteralType | TemplateLiteralType; - /* @internal */ - export type FreshableType = FreshableLiteralType | FreshableIntrinsicType; + export type FreshableType = LiteralType | FreshableIntrinsicType; // String literal types (TypeFlags.StringLiteral) // Numeric literal types (TypeFlags.NumberLiteral) @@ -5475,8 +5469,6 @@ namespace ts { export interface TemplateLiteralType extends InstantiableType { texts: readonly string[]; // Always one element longer than types types: readonly Type[]; // Always at least one element - freshType: TemplateLiteralType; // Fresh version of type - regularType: TemplateLiteralType; // Regular version of type } export interface StringMappingType extends InstantiableType { diff --git a/tests/baselines/reference/TemplateExpression1.types b/tests/baselines/reference/TemplateExpression1.types index a293dc672ee..e23083d83ec 100644 --- a/tests/baselines/reference/TemplateExpression1.types +++ b/tests/baselines/reference/TemplateExpression1.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/TemplateExpression1.ts === var v = `foo ${ a >v : string ->`foo ${ a : `foo ${any}` +>`foo ${ a : string >a : any diff --git a/tests/baselines/reference/accessorsOverrideProperty2.types b/tests/baselines/reference/accessorsOverrideProperty2.types index 228dc06299b..860b6f4f021 100644 --- a/tests/baselines/reference/accessorsOverrideProperty2.types +++ b/tests/baselines/reference/accessorsOverrideProperty2.types @@ -22,7 +22,7 @@ class Derived extends Base { >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->`x was set to ${value}` : `x was set to ${number}` +>`x was set to ${value}` : string >value : number } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 70e326c4c99..e8227710675 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2656,8 +2656,6 @@ declare namespace ts { export interface TemplateLiteralType extends InstantiableType { texts: readonly string[]; types: readonly Type[]; - freshType: TemplateLiteralType; - regularType: TemplateLiteralType; } export interface StringMappingType extends InstantiableType { symbol: Symbol; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 5c9fcf765b1..b8525b18064 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2656,8 +2656,6 @@ declare namespace ts { export interface TemplateLiteralType extends InstantiableType { texts: readonly string[]; types: readonly Type[]; - freshType: TemplateLiteralType; - regularType: TemplateLiteralType; } export interface StringMappingType extends InstantiableType { symbol: Symbol; diff --git a/tests/baselines/reference/asOperator3.types b/tests/baselines/reference/asOperator3.types index 1e40a6e218d..e5e319d3caf 100644 --- a/tests/baselines/reference/asOperator3.types +++ b/tests/baselines/reference/asOperator3.types @@ -5,7 +5,7 @@ declare function tag(...x: any[]): any; var a = `${123 + 456 as number}`; >a : string ->`${123 + 456 as number}` : `${number}` +>`${123 + 456 as number}` : string >123 + 456 as number : number >123 + 456 : number >123 : 123 @@ -13,7 +13,7 @@ var a = `${123 + 456 as number}`; var b = `leading ${123 + 456 as number}`; >b : string ->`leading ${123 + 456 as number}` : `leading ${number}` +>`leading ${123 + 456 as number}` : string >123 + 456 as number : number >123 + 456 : number >123 : 123 @@ -21,7 +21,7 @@ var b = `leading ${123 + 456 as number}`; var c = `${123 + 456 as number} trailing`; >c : string ->`${123 + 456 as number} trailing` : `${number} trailing` +>`${123 + 456 as number} trailing` : string >123 + 456 as number : number >123 + 456 : number >123 : 123 @@ -30,7 +30,7 @@ var c = `${123 + 456 as number} trailing`; var d = `Hello ${123} World` as string; >d : string >`Hello ${123} World` as string : string ->`Hello ${123} World` : "Hello 123 World" +>`Hello ${123} World` : string >123 : 123 var e = `Hello` as string; @@ -43,7 +43,7 @@ var f = 1 + `${1} end of string` as string; >1 + `${1} end of string` as string : string >1 + `${1} end of string` : string >1 : 1 ->`${1} end of string` : "1 end of string" +>`${1} end of string` : string >1 : 1 var g = tag `Hello ${123} World` as string; @@ -51,7 +51,7 @@ var g = tag `Hello ${123} World` as string; >tag `Hello ${123} World` as string : string >tag `Hello ${123} World` : any >tag : (...x: any[]) => any ->`Hello ${123} World` : "Hello 123 World" +>`Hello ${123} World` : string >123 : 123 var h = tag `Hello` as string; diff --git a/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types b/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types index 465cbf72e81..21653432b5a 100644 --- a/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types +++ b/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types @@ -10,7 +10,7 @@ let n = Math.random(); let s = `${n}`; >s : string ->`${n}` : `${number}` +>`${n}` : string >n : number const numericIndex = { [n]: 1 }; diff --git a/tests/baselines/reference/computedPropertyNames10_ES5.types b/tests/baselines/reference/computedPropertyNames10_ES5.types index 7c89309b32e..82d82bcc638 100644 --- a/tests/baselines/reference/computedPropertyNames10_ES5.types +++ b/tests/baselines/reference/computedPropertyNames10_ES5.types @@ -60,6 +60,6 @@ var v = { [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames10_ES6.types b/tests/baselines/reference/computedPropertyNames10_ES6.types index 355fc7c5820..c9ad6eeebb6 100644 --- a/tests/baselines/reference/computedPropertyNames10_ES6.types +++ b/tests/baselines/reference/computedPropertyNames10_ES6.types @@ -60,6 +60,6 @@ var v = { [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames11_ES5.types b/tests/baselines/reference/computedPropertyNames11_ES5.types index b66b419310d..944f4a4cfcc 100644 --- a/tests/baselines/reference/computedPropertyNames11_ES5.types +++ b/tests/baselines/reference/computedPropertyNames11_ES5.types @@ -70,7 +70,7 @@ var v = { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames11_ES6.types b/tests/baselines/reference/computedPropertyNames11_ES6.types index 40e0c98488e..1d9551ea082 100644 --- a/tests/baselines/reference/computedPropertyNames11_ES6.types +++ b/tests/baselines/reference/computedPropertyNames11_ES6.types @@ -70,7 +70,7 @@ var v = { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames12_ES5.types b/tests/baselines/reference/computedPropertyNames12_ES5.types index cc7d1a29755..63afc3bd4da 100644 --- a/tests/baselines/reference/computedPropertyNames12_ES5.types +++ b/tests/baselines/reference/computedPropertyNames12_ES5.types @@ -63,7 +63,7 @@ class C { static [`hello ${a} bye`] = 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames12_ES6.types b/tests/baselines/reference/computedPropertyNames12_ES6.types index d1da7d7aab9..f846d159eec 100644 --- a/tests/baselines/reference/computedPropertyNames12_ES6.types +++ b/tests/baselines/reference/computedPropertyNames12_ES6.types @@ -63,7 +63,7 @@ class C { static [`hello ${a} bye`] = 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames13_ES5.types b/tests/baselines/reference/computedPropertyNames13_ES5.types index 33c89a82c94..07c5cee22cd 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES5.types +++ b/tests/baselines/reference/computedPropertyNames13_ES5.types @@ -59,6 +59,6 @@ class C { static [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames13_ES6.types b/tests/baselines/reference/computedPropertyNames13_ES6.types index 57a4bb9b465..8e0111d7600 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES6.types +++ b/tests/baselines/reference/computedPropertyNames13_ES6.types @@ -59,6 +59,6 @@ class C { static [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames16_ES5.types b/tests/baselines/reference/computedPropertyNames16_ES5.types index 468f77b3229..7e6d5054098 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES5.types +++ b/tests/baselines/reference/computedPropertyNames16_ES5.types @@ -69,7 +69,7 @@ class C { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames16_ES6.types b/tests/baselines/reference/computedPropertyNames16_ES6.types index 558af27cea7..9898cbc00d4 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES6.types +++ b/tests/baselines/reference/computedPropertyNames16_ES6.types @@ -69,7 +69,7 @@ class C { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames4_ES5.types b/tests/baselines/reference/computedPropertyNames4_ES5.types index ba6d3c6d9e8..b9181140ed5 100644 --- a/tests/baselines/reference/computedPropertyNames4_ES5.types +++ b/tests/baselines/reference/computedPropertyNames4_ES5.types @@ -70,7 +70,7 @@ var v = { [`hello ${a} bye`]: 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames4_ES6.types b/tests/baselines/reference/computedPropertyNames4_ES6.types index a25ca0f7bc1..669af26ebdf 100644 --- a/tests/baselines/reference/computedPropertyNames4_ES6.types +++ b/tests/baselines/reference/computedPropertyNames4_ES6.types @@ -70,7 +70,7 @@ var v = { [`hello ${a} bye`]: 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/declFileEmitDeclarationOnly.types b/tests/baselines/reference/declFileEmitDeclarationOnly.types index f508a00cc71..9a3cf8cfc70 100644 --- a/tests/baselines/reference/declFileEmitDeclarationOnly.types +++ b/tests/baselines/reference/declFileEmitDeclarationOnly.types @@ -23,7 +23,7 @@ class HelloWorld { >Log.info : (msg: string) => void >Log : { info(msg: string): void; } >info : (msg: string) => void ->`Hello ${this.name}` : `Hello ${string}` +>`Hello ${this.name}` : string >this.name : string >this : this >name : string diff --git a/tests/baselines/reference/declarationNoDanglingGenerics.types b/tests/baselines/reference/declarationNoDanglingGenerics.types index 65c381a2e46..9fd057e32f3 100644 --- a/tests/baselines/reference/declarationNoDanglingGenerics.types +++ b/tests/baselines/reference/declarationNoDanglingGenerics.types @@ -16,7 +16,7 @@ function register(kind: string): void | never { throw new Error(`Class with kind "${kind}" is already registered.`); >new Error(`Class with kind "${kind}" is already registered.`) : Error >Error : ErrorConstructor ->`Class with kind "${kind}" is already registered.` : `Class with kind "${string}" is already registered.` +>`Class with kind "${kind}" is already registered.` : string >kind : string } kindCache[kind] = true; diff --git a/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types b/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types index 551e2e99339..d0ddb4918a0 100644 --- a/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types +++ b/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types @@ -34,7 +34,7 @@ const Parent: SFC = ({ const Child: SFC = ({ >Child : SFC ->({ children, name = "Artemis", ...props}) => `name: ${name} props: ${JSON.stringify(props)}` : ({ children, name, ...props }: Props & { children?: any; }) => `name: Apollo props: ${string}` | `name: Artemis props: ${string}` | `name: Dionysus props: ${string}` | `name: Persephone props: ${string}` +>({ children, name = "Artemis", ...props}) => `name: ${name} props: ${JSON.stringify(props)}` : ({ children, name, ...props }: Props & { children?: any; }) => string children, >children : any @@ -47,7 +47,7 @@ const Child: SFC = ({ >props : {} }) => `name: ${name} props: ${JSON.stringify(props)}`; ->`name: ${name} props: ${JSON.stringify(props)}` : `name: Apollo props: ${string}` | `name: Artemis props: ${string}` | `name: Dionysus props: ${string}` | `name: Persephone props: ${string}` +>`name: ${name} props: ${JSON.stringify(props)}` : string >name : "Apollo" | "Artemis" | "Dionysus" | "Persephone" >JSON.stringify(props) : string >JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } diff --git a/tests/baselines/reference/destructuringParameterProperties4.types b/tests/baselines/reference/destructuringParameterProperties4.types index 0f6e7d88ad5..8f49dc9ba91 100644 --- a/tests/baselines/reference/destructuringParameterProperties4.types +++ b/tests/baselines/reference/destructuringParameterProperties4.types @@ -75,10 +75,10 @@ class C2 extends C1 { >C1 : C1 public doSomethingWithSuperProperties() { ->doSomethingWithSuperProperties : () => `${any} ${any} ${any}` +>doSomethingWithSuperProperties : () => string return `${this.a} ${this.b} ${this.c}`; ->`${this.a} ${this.b} ${this.c}` : `${any} ${any} ${any}` +>`${this.a} ${this.b} ${this.c}` : string >this.a : any >this : this >a : any diff --git a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types index 0ed777f4e3c..912a26f746f 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types @@ -12,14 +12,14 @@ var s; // With TemplateTail `${t1 ** -t2} world`; ->`${t1 ** -t2} world` : `${number} world` +>`${t1 ** -t2} world` : string >t1 ** -t2 : number >t1 : number >-t2 : number >t2 : number `${(-t1) ** t2 - t1} world`; ->`${(-t1) ** t2 - t1} world` : `${number} world` +>`${(-t1) ** t2 - t1} world` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -29,7 +29,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} world`; ->`${(-++t1) ** t2 - t1} world` : `${number} world` +>`${(-++t1) ** t2 - t1} world` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -40,7 +40,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} world`; ->`${(-t1++) ** t2 - t1} world` : `${number} world` +>`${(-t1++) ** t2 - t1} world` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -51,7 +51,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } world`; ->`${(~t1) ** t2 ** --t1 } world` : `${number} world` +>`${(~t1) ** t2 ** --t1 } world` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -73,7 +73,7 @@ var s; // TempateHead & TemplateTail are empt `${t1 ** -t2} hello world ${t1 ** -t2}`; ->`${t1 ** -t2} hello world ${t1 ** -t2}` : `${number} hello world ${number}` +>`${t1 ** -t2} hello world ${t1 ** -t2}` : string >t1 ** -t2 : number >t1 : number >-t2 : number @@ -84,7 +84,7 @@ var s; >t2 : number `${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}`; ->`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : `${number} hello world ${number}` +>`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -101,7 +101,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}`; ->`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : `${number} hello world ${number}` +>`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -121,7 +121,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}`; ->`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : `${number} hello world ${number}` +>`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -141,7 +141,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }`; ->`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : `${number} hello world ${number}` +>`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -160,7 +160,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -178,7 +178,7 @@ var s; // With templateHead `hello ${(-t1) ** t2 - t1}`; ->`hello ${(-t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -188,7 +188,7 @@ var s; >t1 : number `hello ${(-++t1) ** t2 - t1}`; ->`hello ${(-++t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-++t1) ** t2 - t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -199,7 +199,7 @@ var s; >t1 : number `hello ${(-t1++) ** t2 - t1}`; ->`hello ${(-t1++) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1++) ** t2 - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -210,7 +210,7 @@ var s; >t1 : number `hello ${(~t1) ** t2 ** --t1 }`; ->`hello ${(~t1) ** t2 ** --t1 }` : `hello ${number}` +>`hello ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1)}`; ->`hello ${typeof (t1 ** t2 ** t1)}` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types index e984817fd5a..08d0d591dfb 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types @@ -12,14 +12,14 @@ var s; // With TemplateTail `${t1 ** -t2} world`; ->`${t1 ** -t2} world` : `${number} world` +>`${t1 ** -t2} world` : string >t1 ** -t2 : number >t1 : number >-t2 : number >t2 : number `${(-t1) ** t2 - t1} world`; ->`${(-t1) ** t2 - t1} world` : `${number} world` +>`${(-t1) ** t2 - t1} world` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -29,7 +29,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} world`; ->`${(-++t1) ** t2 - t1} world` : `${number} world` +>`${(-++t1) ** t2 - t1} world` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -40,7 +40,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} world`; ->`${(-t1++) ** t2 - t1} world` : `${number} world` +>`${(-t1++) ** t2 - t1} world` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -51,7 +51,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } world`; ->`${(~t1) ** t2 ** --t1 } world` : `${number} world` +>`${(~t1) ** t2 ** --t1 } world` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -73,7 +73,7 @@ var s; // TempateHead & TemplateTail are empt `${t1 ** -t2} hello world ${t1 ** -t2}`; ->`${t1 ** -t2} hello world ${t1 ** -t2}` : `${number} hello world ${number}` +>`${t1 ** -t2} hello world ${t1 ** -t2}` : string >t1 ** -t2 : number >t1 : number >-t2 : number @@ -84,7 +84,7 @@ var s; >t2 : number `${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}`; ->`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : `${number} hello world ${number}` +>`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -101,7 +101,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}`; ->`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : `${number} hello world ${number}` +>`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -121,7 +121,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}`; ->`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : `${number} hello world ${number}` +>`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -141,7 +141,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }`; ->`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : `${number} hello world ${number}` +>`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -160,7 +160,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -178,7 +178,7 @@ var s; // With templateHead `hello ${(-t1) ** t2 - t1}`; ->`hello ${(-t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -188,7 +188,7 @@ var s; >t1 : number `hello ${(-++t1) ** t2 - t1}`; ->`hello ${(-++t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-++t1) ** t2 - t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -199,7 +199,7 @@ var s; >t1 : number `hello ${(-t1++) ** t2 - t1}`; ->`hello ${(-t1++) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1++) ** t2 - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -210,7 +210,7 @@ var s; >t1 : number `hello ${(~t1) ** t2 ** --t1 }`; ->`hello ${(~t1) ** t2 ** --t1 }` : `hello ${number}` +>`hello ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1)}`; ->`hello ${typeof (t1 ** t2 ** t1)}` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types index 91e19730aff..0a40fc6f766 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types @@ -12,13 +12,13 @@ var s; // TempateHead & TemplateTail are empty `${t1 ** t2}`; ->`${t1 ** t2}` : `${number}` +>`${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}` : `${number}` +>`${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}` : `${number}` +>`${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}` : `${number}` +>`${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 }`; ->`${t1 + t2 ** t2 + t1 }` : `${number}` +>`${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) }` : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" +>`${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2}`; ->`${t1 ** t2}${t1 ** t2}` : `${number}${number}` +>`${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `${number}${number}` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1}` : `${number}${number}` +>`${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1}` : `${number}${number}` +>`${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `${number}${number}` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : "stringstring" | "stringnumber" | "stringbigint" | "stringboolean" | "stringsymbol" | "stringundefined" | "stringobject" | "stringfunction" | "numberstring" | "numbernumber" | "numberbigint" | "numberboolean" | "numbersymbol" | "numberundefined" | "numberobject" | "numberfunction" | "bigintstring" | "bigintnumber" | "bigintbigint" | "bigintboolean" | "bigintsymbol" | "bigintundefined" | "bigintobject" | "bigintfunction" | "booleanstring" | "booleannumber" | "booleanbigint" | "booleanboolean" | "booleansymbol" | "booleanundefined" | "booleanobject" | "booleanfunction" | "symbolstring" | "symbolnumber" | "symbolbigint" | "symbolboolean" | "symbolsymbol" | "symbolundefined" | "symbolobject" | "symbolfunction" | "undefinedstring" | "undefinednumber" | "undefinedbigint" | "undefinedboolean" | "undefinedsymbol" | "undefinedundefined" | "undefinedobject" | "undefinedfunction" | "objectstring" | "objectnumber" | "objectbigint" | "objectboolean" | "objectsymbol" | "objectundefined" | "objectobject" | "objectfunction" | "functionstring" | "functionnumber" | "functionbigint" | "functionboolean" | "functionsymbol" | "functionundefined" | "functionobject" | "functionfunction" +>`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2}`; ->`${t1 ** t2} hello world ${t1 ** t2}` : `${number} hello world ${number}` +>`${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types index 8f58a022c2b..9d712e6e366 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types @@ -12,13 +12,13 @@ var s; // TempateHead & TemplateTail are empty `${t1 ** t2}`; ->`${t1 ** t2}` : `${number}` +>`${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}` : `${number}` +>`${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}` : `${number}` +>`${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}` : `${number}` +>`${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 }`; ->`${t1 + t2 ** t2 + t1 }` : `${number}` +>`${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) }` : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" +>`${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2}`; ->`${t1 ** t2}${t1 ** t2}` : `${number}${number}` +>`${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `${number}${number}` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1}` : `${number}${number}` +>`${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1}` : `${number}${number}` +>`${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `${number}${number}` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : "stringstring" | "stringnumber" | "stringbigint" | "stringboolean" | "stringsymbol" | "stringundefined" | "stringobject" | "stringfunction" | "numberstring" | "numbernumber" | "numberbigint" | "numberboolean" | "numbersymbol" | "numberundefined" | "numberobject" | "numberfunction" | "bigintstring" | "bigintnumber" | "bigintbigint" | "bigintboolean" | "bigintsymbol" | "bigintundefined" | "bigintobject" | "bigintfunction" | "booleanstring" | "booleannumber" | "booleanbigint" | "booleanboolean" | "booleansymbol" | "booleanundefined" | "booleanobject" | "booleanfunction" | "symbolstring" | "symbolnumber" | "symbolbigint" | "symbolboolean" | "symbolsymbol" | "symbolundefined" | "symbolobject" | "symbolfunction" | "undefinedstring" | "undefinednumber" | "undefinedbigint" | "undefinedboolean" | "undefinedsymbol" | "undefinedundefined" | "undefinedobject" | "undefinedfunction" | "objectstring" | "objectnumber" | "objectbigint" | "objectboolean" | "objectsymbol" | "objectundefined" | "objectobject" | "objectfunction" | "functionstring" | "functionnumber" | "functionbigint" | "functionboolean" | "functionsymbol" | "functionundefined" | "functionobject" | "functionfunction" +>`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2}`; ->`${t1 ** t2} hello world ${t1 ** t2}` : `${number} hello world ${number}` +>`${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types index b2d570b2d36..9b583b03d28 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types @@ -12,13 +12,13 @@ var s; // With templateHead `hello ${t1 ** t2}`; ->`hello ${t1 ** t2}` : `hello ${number}` +>`hello ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `hello ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}` : `hello ${number}` +>`hello ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}` : `hello ${number}` +>`hello ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1 }`; ->`hello ${t1 + t2 ** t2 + t1 }` : `hello ${number}` +>`hello ${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `hello ${1 + typeof (t1 ** t2 ** t1) }`; ->`hello ${1 + typeof (t1 ** t2 ** t1) }` : `hello ${string}` +>`hello ${1 + typeof (t1 ** t2 ** t1) }` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `hello ${t1 ** t2}${t1 ** t2}`; ->`hello ${t1 ** t2}${t1 ** t2}` : `hello ${number}${number}` +>`hello ${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : "hello stringstring" | "hello stringnumber" | "hello stringbigint" | "hello stringboolean" | "hello stringsymbol" | "hello stringundefined" | "hello stringobject" | "hello stringfunction" | "hello numberstring" | "hello numbernumber" | "hello numberbigint" | "hello numberboolean" | "hello numbersymbol" | "hello numberundefined" | "hello numberobject" | "hello numberfunction" | "hello bigintstring" | "hello bigintnumber" | "hello bigintbigint" | "hello bigintboolean" | "hello bigintsymbol" | "hello bigintundefined" | "hello bigintobject" | "hello bigintfunction" | "hello booleanstring" | "hello booleannumber" | "hello booleanbigint" | "hello booleanboolean" | "hello booleansymbol" | "hello booleanundefined" | "hello booleanobject" | "hello booleanfunction" | "hello symbolstring" | "hello symbolnumber" | "hello symbolbigint" | "hello symbolboolean" | "hello symbolsymbol" | "hello symbolundefined" | "hello symbolobject" | "hello symbolfunction" | "hello undefinedstring" | "hello undefinednumber" | "hello undefinedbigint" | "hello undefinedboolean" | "hello undefinedsymbol" | "hello undefinedundefined" | "hello undefinedobject" | "hello undefinedfunction" | "hello objectstring" | "hello objectnumber" | "hello objectbigint" | "hello objectboolean" | "hello objectsymbol" | "hello objectundefined" | "hello objectobject" | "hello objectfunction" | "hello functionstring" | "hello functionnumber" | "hello functionbigint" | "hello functionboolean" | "hello functionsymbol" | "hello functionundefined" | "hello functionobject" | "hello functionfunction" +>`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `hello ${t1 ** t2} hello world ${t1 ** t2}`; ->`hello ${t1 ** t2} hello world ${t1 ** t2}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "hello string hello world string" | "hello string hello world number" | "hello string hello world bigint" | "hello string hello world boolean" | "hello string hello world symbol" | "hello string hello world undefined" | "hello string hello world object" | "hello string hello world function" | "hello number hello world string" | "hello number hello world number" | "hello number hello world bigint" | "hello number hello world boolean" | "hello number hello world symbol" | "hello number hello world undefined" | "hello number hello world object" | "hello number hello world function" | "hello bigint hello world string" | "hello bigint hello world number" | "hello bigint hello world bigint" | "hello bigint hello world boolean" | "hello bigint hello world symbol" | "hello bigint hello world undefined" | "hello bigint hello world object" | "hello bigint hello world function" | "hello boolean hello world string" | "hello boolean hello world number" | "hello boolean hello world bigint" | "hello boolean hello world boolean" | "hello boolean hello world symbol" | "hello boolean hello world undefined" | "hello boolean hello world object" | "hello boolean hello world function" | "hello symbol hello world string" | "hello symbol hello world number" | "hello symbol hello world bigint" | "hello symbol hello world boolean" | "hello symbol hello world symbol" | "hello symbol hello world undefined" | "hello symbol hello world object" | "hello symbol hello world function" | "hello undefined hello world string" | "hello undefined hello world number" | "hello undefined hello world bigint" | "hello undefined hello world boolean" | "hello undefined hello world symbol" | "hello undefined hello world undefined" | "hello undefined hello world object" | "hello undefined hello world function" | "hello object hello world string" | "hello object hello world number" | "hello object hello world bigint" | "hello object hello world boolean" | "hello object hello world symbol" | "hello object hello world undefined" | "hello object hello world object" | "hello object hello world function" | "hello function hello world string" | "hello function hello world number" | "hello function hello world bigint" | "hello function hello world boolean" | "hello function hello world symbol" | "hello function hello world undefined" | "hello function hello world object" | "hello function hello world function" +>`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types index 66a49fb6bd0..c1c6394c63e 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types @@ -12,13 +12,13 @@ var s; // With templateHead `hello ${t1 ** t2}`; ->`hello ${t1 ** t2}` : `hello ${number}` +>`hello ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `hello ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}` : `hello ${number}` +>`hello ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}` : `hello ${number}` +>`hello ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1 }`; ->`hello ${t1 + t2 ** t2 + t1 }` : `hello ${number}` +>`hello ${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `hello ${1 + typeof (t1 ** t2 ** t1) }`; ->`hello ${1 + typeof (t1 ** t2 ** t1) }` : `hello ${string}` +>`hello ${1 + typeof (t1 ** t2 ** t1) }` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `hello ${t1 ** t2}${t1 ** t2}`; ->`hello ${t1 ** t2}${t1 ** t2}` : `hello ${number}${number}` +>`hello ${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : "hello stringstring" | "hello stringnumber" | "hello stringbigint" | "hello stringboolean" | "hello stringsymbol" | "hello stringundefined" | "hello stringobject" | "hello stringfunction" | "hello numberstring" | "hello numbernumber" | "hello numberbigint" | "hello numberboolean" | "hello numbersymbol" | "hello numberundefined" | "hello numberobject" | "hello numberfunction" | "hello bigintstring" | "hello bigintnumber" | "hello bigintbigint" | "hello bigintboolean" | "hello bigintsymbol" | "hello bigintundefined" | "hello bigintobject" | "hello bigintfunction" | "hello booleanstring" | "hello booleannumber" | "hello booleanbigint" | "hello booleanboolean" | "hello booleansymbol" | "hello booleanundefined" | "hello booleanobject" | "hello booleanfunction" | "hello symbolstring" | "hello symbolnumber" | "hello symbolbigint" | "hello symbolboolean" | "hello symbolsymbol" | "hello symbolundefined" | "hello symbolobject" | "hello symbolfunction" | "hello undefinedstring" | "hello undefinednumber" | "hello undefinedbigint" | "hello undefinedboolean" | "hello undefinedsymbol" | "hello undefinedundefined" | "hello undefinedobject" | "hello undefinedfunction" | "hello objectstring" | "hello objectnumber" | "hello objectbigint" | "hello objectboolean" | "hello objectsymbol" | "hello objectundefined" | "hello objectobject" | "hello objectfunction" | "hello functionstring" | "hello functionnumber" | "hello functionbigint" | "hello functionboolean" | "hello functionsymbol" | "hello functionundefined" | "hello functionobject" | "hello functionfunction" +>`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `hello ${t1 ** t2} hello world ${t1 ** t2}`; ->`hello ${t1 ** t2} hello world ${t1 ** t2}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "hello string hello world string" | "hello string hello world number" | "hello string hello world bigint" | "hello string hello world boolean" | "hello string hello world symbol" | "hello string hello world undefined" | "hello string hello world object" | "hello string hello world function" | "hello number hello world string" | "hello number hello world number" | "hello number hello world bigint" | "hello number hello world boolean" | "hello number hello world symbol" | "hello number hello world undefined" | "hello number hello world object" | "hello number hello world function" | "hello bigint hello world string" | "hello bigint hello world number" | "hello bigint hello world bigint" | "hello bigint hello world boolean" | "hello bigint hello world symbol" | "hello bigint hello world undefined" | "hello bigint hello world object" | "hello bigint hello world function" | "hello boolean hello world string" | "hello boolean hello world number" | "hello boolean hello world bigint" | "hello boolean hello world boolean" | "hello boolean hello world symbol" | "hello boolean hello world undefined" | "hello boolean hello world object" | "hello boolean hello world function" | "hello symbol hello world string" | "hello symbol hello world number" | "hello symbol hello world bigint" | "hello symbol hello world boolean" | "hello symbol hello world symbol" | "hello symbol hello world undefined" | "hello symbol hello world object" | "hello symbol hello world function" | "hello undefined hello world string" | "hello undefined hello world number" | "hello undefined hello world bigint" | "hello undefined hello world boolean" | "hello undefined hello world symbol" | "hello undefined hello world undefined" | "hello undefined hello world object" | "hello undefined hello world function" | "hello object hello world string" | "hello object hello world number" | "hello object hello world bigint" | "hello object hello world boolean" | "hello object hello world symbol" | "hello object hello world undefined" | "hello object hello world object" | "hello object hello world function" | "hello function hello world string" | "hello function hello world number" | "hello function hello world bigint" | "hello function hello world boolean" | "hello function hello world symbol" | "hello function hello world undefined" | "hello function hello world object" | "hello function hello world function" +>`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types index f49a0220b74..431d688f3b4 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types @@ -12,13 +12,13 @@ var s; // With TemplateTail `${t1 ** t2} world`; ->`${t1 ** t2} world` : `${number} world` +>`${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1} world` : `${number} world` +>`${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1} world` : `${number} world` +>`${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1} world` : `${number} world` +>`${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 } world`; ->`${t1 + t2 ** t2 + t1 } world` : `${number} world` +>`${t1 + t2 ** t2 + t1 } world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${1 + typeof (t1 ** t2 ** t1) } world`; ->`${1 + typeof (t1 ** t2 ** t1) } world` : `${string} world` +>`${1 + typeof (t1 ** t2 ** t1) } world` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2} world`; ->`${t1 ** t2}${t1 ** t2} world` : `${number}${number} world` +>`${t1 ** t2}${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : `${number}${number} world` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : `${number}${number} world` +>`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : `${number}${number} world` +>`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : `${number}${number} world` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : "stringstring world" | "stringnumber world" | "stringbigint world" | "stringboolean world" | "stringsymbol world" | "stringundefined world" | "stringobject world" | "stringfunction world" | "numberstring world" | "numbernumber world" | "numberbigint world" | "numberboolean world" | "numbersymbol world" | "numberundefined world" | "numberobject world" | "numberfunction world" | "bigintstring world" | "bigintnumber world" | "bigintbigint world" | "bigintboolean world" | "bigintsymbol world" | "bigintundefined world" | "bigintobject world" | "bigintfunction world" | "booleanstring world" | "booleannumber world" | "booleanbigint world" | "booleanboolean world" | "booleansymbol world" | "booleanundefined world" | "booleanobject world" | "booleanfunction world" | "symbolstring world" | "symbolnumber world" | "symbolbigint world" | "symbolboolean world" | "symbolsymbol world" | "symbolundefined world" | "symbolobject world" | "symbolfunction world" | "undefinedstring world" | "undefinednumber world" | "undefinedbigint world" | "undefinedboolean world" | "undefinedsymbol world" | "undefinedundefined world" | "undefinedobject world" | "undefinedfunction world" | "objectstring world" | "objectnumber world" | "objectbigint world" | "objectboolean world" | "objectsymbol world" | "objectundefined world" | "objectobject world" | "objectfunction world" | "functionstring world" | "functionnumber world" | "functionbigint world" | "functionboolean world" | "functionsymbol world" | "functionundefined world" | "functionobject world" | "functionfunction world" +>`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2} !!`; ->`${t1 ** t2} hello world ${t1 ** t2} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2} hello world ${t1 ** t2} !!` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : "string hello world string !!" | "string hello world number !!" | "string hello world bigint !!" | "string hello world boolean !!" | "string hello world symbol !!" | "string hello world undefined !!" | "string hello world object !!" | "string hello world function !!" | "number hello world string !!" | "number hello world number !!" | "number hello world bigint !!" | "number hello world boolean !!" | "number hello world symbol !!" | "number hello world undefined !!" | "number hello world object !!" | "number hello world function !!" | "bigint hello world string !!" | "bigint hello world number !!" | "bigint hello world bigint !!" | "bigint hello world boolean !!" | "bigint hello world symbol !!" | "bigint hello world undefined !!" | "bigint hello world object !!" | "bigint hello world function !!" | "boolean hello world string !!" | "boolean hello world number !!" | "boolean hello world bigint !!" | "boolean hello world boolean !!" | "boolean hello world symbol !!" | "boolean hello world undefined !!" | "boolean hello world object !!" | "boolean hello world function !!" | "symbol hello world string !!" | "symbol hello world number !!" | "symbol hello world bigint !!" | "symbol hello world boolean !!" | "symbol hello world symbol !!" | "symbol hello world undefined !!" | "symbol hello world object !!" | "symbol hello world function !!" | "undefined hello world string !!" | "undefined hello world number !!" | "undefined hello world bigint !!" | "undefined hello world boolean !!" | "undefined hello world symbol !!" | "undefined hello world undefined !!" | "undefined hello world object !!" | "undefined hello world function !!" | "object hello world string !!" | "object hello world number !!" | "object hello world bigint !!" | "object hello world boolean !!" | "object hello world symbol !!" | "object hello world undefined !!" | "object hello world object !!" | "object hello world function !!" | "function hello world string !!" | "function hello world number !!" | "function hello world bigint !!" | "function hello world boolean !!" | "function hello world symbol !!" | "function hello world undefined !!" | "function hello world object !!" | "function hello world function !!" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types index 583c51c3804..ccbacd4c719 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types @@ -12,13 +12,13 @@ var s; // With TemplateTail `${t1 ** t2} world`; ->`${t1 ** t2} world` : `${number} world` +>`${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1} world` : `${number} world` +>`${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1} world` : `${number} world` +>`${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1} world` : `${number} world` +>`${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 } world`; ->`${t1 + t2 ** t2 + t1 } world` : `${number} world` +>`${t1 + t2 ** t2 + t1 } world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${1 + typeof (t1 ** t2 ** t1) } world`; ->`${1 + typeof (t1 ** t2 ** t1) } world` : `${string} world` +>`${1 + typeof (t1 ** t2 ** t1) } world` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2} world`; ->`${t1 ** t2}${t1 ** t2} world` : `${number}${number} world` +>`${t1 ** t2}${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : `${number}${number} world` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : `${number}${number} world` +>`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : `${number}${number} world` +>`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : `${number}${number} world` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : "stringstring world" | "stringnumber world" | "stringbigint world" | "stringboolean world" | "stringsymbol world" | "stringundefined world" | "stringobject world" | "stringfunction world" | "numberstring world" | "numbernumber world" | "numberbigint world" | "numberboolean world" | "numbersymbol world" | "numberundefined world" | "numberobject world" | "numberfunction world" | "bigintstring world" | "bigintnumber world" | "bigintbigint world" | "bigintboolean world" | "bigintsymbol world" | "bigintundefined world" | "bigintobject world" | "bigintfunction world" | "booleanstring world" | "booleannumber world" | "booleanbigint world" | "booleanboolean world" | "booleansymbol world" | "booleanundefined world" | "booleanobject world" | "booleanfunction world" | "symbolstring world" | "symbolnumber world" | "symbolbigint world" | "symbolboolean world" | "symbolsymbol world" | "symbolundefined world" | "symbolobject world" | "symbolfunction world" | "undefinedstring world" | "undefinednumber world" | "undefinedbigint world" | "undefinedboolean world" | "undefinedsymbol world" | "undefinedundefined world" | "undefinedobject world" | "undefinedfunction world" | "objectstring world" | "objectnumber world" | "objectbigint world" | "objectboolean world" | "objectsymbol world" | "objectundefined world" | "objectobject world" | "objectfunction world" | "functionstring world" | "functionnumber world" | "functionbigint world" | "functionboolean world" | "functionsymbol world" | "functionundefined world" | "functionobject world" | "functionfunction world" +>`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2} !!`; ->`${t1 ** t2} hello world ${t1 ** t2} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2} hello world ${t1 ** t2} !!` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : "string hello world string !!" | "string hello world number !!" | "string hello world bigint !!" | "string hello world boolean !!" | "string hello world symbol !!" | "string hello world undefined !!" | "string hello world object !!" | "string hello world function !!" | "number hello world string !!" | "number hello world number !!" | "number hello world bigint !!" | "number hello world boolean !!" | "number hello world symbol !!" | "number hello world undefined !!" | "number hello world object !!" | "number hello world function !!" | "bigint hello world string !!" | "bigint hello world number !!" | "bigint hello world bigint !!" | "bigint hello world boolean !!" | "bigint hello world symbol !!" | "bigint hello world undefined !!" | "bigint hello world object !!" | "bigint hello world function !!" | "boolean hello world string !!" | "boolean hello world number !!" | "boolean hello world bigint !!" | "boolean hello world boolean !!" | "boolean hello world symbol !!" | "boolean hello world undefined !!" | "boolean hello world object !!" | "boolean hello world function !!" | "symbol hello world string !!" | "symbol hello world number !!" | "symbol hello world bigint !!" | "symbol hello world boolean !!" | "symbol hello world symbol !!" | "symbol hello world undefined !!" | "symbol hello world object !!" | "symbol hello world function !!" | "undefined hello world string !!" | "undefined hello world number !!" | "undefined hello world bigint !!" | "undefined hello world boolean !!" | "undefined hello world symbol !!" | "undefined hello world undefined !!" | "undefined hello world object !!" | "undefined hello world function !!" | "object hello world string !!" | "object hello world number !!" | "object hello world bigint !!" | "object hello world boolean !!" | "object hello world symbol !!" | "object hello world undefined !!" | "object hello world object !!" | "object hello world function !!" | "function hello world string !!" | "function hello world number !!" | "function hello world bigint !!" | "function hello world boolean !!" | "function hello world symbol !!" | "function hello world undefined !!" | "function hello world object !!" | "function hello world function !!" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types b/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types index 256c73fd033..b750b8e8ab4 100644 --- a/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types +++ b/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types @@ -106,7 +106,7 @@ enum T5 { g = `1${"2"}3`, >g : T5.e ->`1${"2"}3` : "123" +>`1${"2"}3` : string >"2" : "2" h = `1`.length diff --git a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types index ed97cc86cb7..5851ad03565 100644 --- a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types +++ b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types @@ -19,8 +19,8 @@ const sayHello = (name?: string) => void (`Hello, ${name}!`); >(name?: string) => void (`Hello, ${name}!`) : (name?: string) => any >name : string >void (`Hello, ${name}!`) : undefined ->(`Hello, ${name}!`) : `Hello, ${string}!` ->`Hello, ${name}!` : `Hello, ${string}!` +>(`Hello, ${name}!`) : string +>`Hello, ${name}!` : string >name : string export default sayHello; diff --git a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types index 9a7fc688387..8c7e7d27aa8 100644 --- a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types +++ b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types @@ -13,7 +13,7 @@ var s; // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // TempateHead & TemplateTail are empty `${1 + typeof t1 ** t2 ** t1}`; ->`${1 + typeof t1 ** t2 ** t1}` : `${number}` +>`${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -24,7 +24,7 @@ var s; >t1 : number `${-t1 ** t2 - t1}`; ->`${-t1 ** t2 - t1}` : `${number}` +>`${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -33,7 +33,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1}`; ->`${-++t1 ** t2 - t1}` : `${number}` +>`${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -43,7 +43,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1}`; ->`${-t1++ ** t2 - t1}` : `${number}` +>`${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -53,7 +53,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 }`; ->`${!t1 ** t2 ** --t1 }` : `${number}` +>`${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -63,7 +63,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1}`; ->`${typeof t1 ** t2 ** t1}` : `${number}` +>`${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -72,7 +72,7 @@ var s; >t1 : number `${-t1 ** t2 - t1}${-t1 ** t2 - t1}`; ->`${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : `${number}${number}` +>`${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -87,7 +87,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}`; ->`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : `${number}${number}` +>`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -104,7 +104,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}`; ->`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : `${number}${number}` +>`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -121,7 +121,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }`; ->`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : `${number}${number}` +>`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -138,7 +138,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}`; ->`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : `${number}${number}` +>`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -153,7 +153,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}`; ->`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : `${number}${number}` +>`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -172,7 +172,7 @@ var s; >t1 : number `${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}`; ->`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : `${number} hello world ${number}` +>`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -187,7 +187,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}`; ->`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : `${number} hello world ${number}` +>`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}`; ->`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : `${number} hello world ${number}` +>`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -221,7 +221,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }`; ->`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : `${number} hello world ${number}` +>`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -238,7 +238,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}`; ->`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -253,7 +253,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}`; ->`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types index e1b1e9942a1..9cacc633c62 100644 --- a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types +++ b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types @@ -13,7 +13,7 @@ var s; // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // With templateHead `hello ${-t1 ** t2 - t1}`; ->`hello ${-t1 ** t2 - t1}` : `hello ${number}` +>`hello ${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -22,7 +22,7 @@ var s; >t1 : number `hello ${-++t1 ** t2 - t1}`; ->`hello ${-++t1 ** t2 - t1}` : `hello ${number}` +>`hello ${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -32,7 +32,7 @@ var s; >t1 : number `hello ${-t1++ ** t2 - t1}`; ->`hello ${-t1++ ** t2 - t1}` : `hello ${number}` +>`hello ${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -42,7 +42,7 @@ var s; >t1 : number `hello ${!t1 ** t2 ** --t1 }`; ->`hello ${!t1 ** t2 ** --t1 }` : `hello ${number}` +>`hello ${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `hello ${typeof t1 ** t2 ** t1}`; ->`hello ${typeof t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -61,7 +61,7 @@ var s; >t1 : number `hello ${1 + typeof t1 ** t2 ** t1}`; ->`hello ${1 + typeof t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -72,7 +72,7 @@ var s; >t1 : number `hello ${-t1 ** t2 - t1}${-t1 ** t2 - t1}`; ->`hello ${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : `hello ${number}${number}` +>`hello ${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -87,7 +87,7 @@ var s; >t1 : number `hello ${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}`; ->`hello ${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : `hello ${number}${number}` +>`hello ${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -104,7 +104,7 @@ var s; >t1 : number `hello ${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}`; ->`hello ${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : `hello ${number}${number}` +>`hello ${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -121,7 +121,7 @@ var s; >t1 : number `hello ${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }`; ->`hello ${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : `hello ${number}${number}` +>`hello ${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -138,7 +138,7 @@ var s; >t1 : number `hello ${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}`; ->`hello ${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -153,7 +153,7 @@ var s; >t1 : number `hello ${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}`; ->`hello ${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -172,7 +172,7 @@ var s; >t1 : number `hello ${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}`; ->`hello ${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : `hello ${number} hello world ${number}` +>`hello ${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -187,7 +187,7 @@ var s; >t1 : number `hello ${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}`; ->`hello ${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : `hello ${number} hello world ${number}` +>`hello ${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `hello ${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}`; ->`hello ${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : `hello ${number} hello world ${number}` +>`hello ${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }`; ->`hello ${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : `hello ${number} hello world ${number}` +>`hello ${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -238,7 +238,7 @@ var s; >t1 : number `hello ${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}`; ->`hello ${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -253,7 +253,7 @@ var s; >t1 : number `hello ${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}`; ->`hello ${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types index 527eaad4eae..36d594f3821 100644 --- a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types +++ b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types @@ -13,7 +13,7 @@ var s; // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // With TemplateTail `${-t1 ** t2 - t1} world`; ->`${-t1 ** t2 - t1} world` : `${number} world` +>`${-t1 ** t2 - t1} world` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -22,7 +22,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1} world`; ->`${-++t1 ** t2 - t1} world` : `${number} world` +>`${-++t1 ** t2 - t1} world` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -32,7 +32,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1} world`; ->`${-t1++ ** t2 - t1} world` : `${number} world` +>`${-t1++ ** t2 - t1} world` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -42,7 +42,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 } world`; ->`${!t1 ** t2 ** --t1 } world` : `${number} world` +>`${!t1 ** t2 ** --t1 } world` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1} world`; ->`${typeof t1 ** t2 ** t1} world` : `${number} world` +>`${typeof t1 ** t2 ** t1} world` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -61,7 +61,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1} world`; ->`${1 + typeof t1 ** t2 ** t1} world` : `${number} world` +>`${1 + typeof t1 ** t2 ** t1} world` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -72,7 +72,7 @@ var s; >t1 : number `${-t1 ** t2 - t1}${-t1 ** t2 - t1} world`; ->`${-t1 ** t2 - t1}${-t1 ** t2 - t1} world` : `${number}${number} world` +>`${-t1 ** t2 - t1}${-t1 ** t2 - t1} world` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -87,7 +87,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world`; ->`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world` : `${number}${number} world` +>`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -104,7 +104,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world`; ->`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world` : `${number}${number} world` +>`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -121,7 +121,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world`; ->`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world` : `${number}${number} world` +>`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -138,7 +138,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world`; ->`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world` : `${number}${number} world` +>`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -153,7 +153,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world`; ->`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world` : `${number}${number} world` +>`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -172,7 +172,7 @@ var s; >t1 : number `${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!`; ->`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!` : `${number} hello world ${number} !!` +>`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -187,7 +187,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!`; ->`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!` : `${number} hello world ${number} !!` +>`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!`; ->`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!` : `${number} hello world ${number} !!` +>`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -221,7 +221,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!`; ->`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!` : `${number} hello world ${number} !!` +>`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -238,7 +238,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!`; ->`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -253,7 +253,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!`; ->`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types index de61a9beb2b..1958e478d73 100644 --- a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types +++ b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types @@ -3,55 +3,55 @@ var a = 1 ** `${ 3 }`; >a : number >1 ** `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 ** `2${ 3 }`; >b : number >1 ** `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 ** `${ 3 }4`; >c : number >1 ** `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 ** `2${ 3 }4`; >d : number >1 ** `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` ** 5; >e : number >`${ 3 }` ** 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` ** 5; >f : number >`2${ 3 }` ** 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` ** 5; >g : number >`${ 3 }4` ** 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` ** 5; >h : number >`2${ 3 }4` ** 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -62,25 +62,25 @@ var k = 10; k **= `${ 3 }`; >k **= `${ 3 }` : number >k : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 k **= `2${ 3 }`; >k **= `2${ 3 }` : number >k : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 k **= `2${ 3 }4`; >k **= `2${ 3 }4` : number >k : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 k **= `2${ 3 }4`; >k **= `2${ 3 }4` : number >k : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 diff --git a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types index eaca3660157..6db21a24ce3 100644 --- a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types +++ b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types @@ -3,55 +3,55 @@ var a = 1 ** `${ 3 }`; >a : number >1 ** `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 ** `2${ 3 }`; >b : number >1 ** `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 ** `${ 3 }4`; >c : number >1 ** `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 ** `2${ 3 }4`; >d : number >1 ** `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` ** 5; >e : number >`${ 3 }` ** 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` ** 5; >f : number >`2${ 3 }` ** 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` ** 5; >g : number >`${ 3 }4` ** 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` ** 5; >h : number >`2${ 3 }4` ** 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -62,24 +62,24 @@ var k = 10; k **= `${ 3 }`; >k **= `${ 3 }` : number >k : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 k **= `2${ 3 }`; >k **= `2${ 3 }` : number >k : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 k **= `2${ 3 }4`; >k **= `2${ 3 }4` : number >k : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 kj **= `2${ 3 }4`; >kj **= `2${ 3 }4` : number >kj : any ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 diff --git a/tests/baselines/reference/importCallExpressionDeclarationEmit1.types b/tests/baselines/reference/importCallExpressionDeclarationEmit1.types index 2683bb3cc85..b04e37ec43e 100644 --- a/tests/baselines/reference/importCallExpressionDeclarationEmit1.types +++ b/tests/baselines/reference/importCallExpressionDeclarationEmit1.types @@ -19,7 +19,7 @@ import(getSpecifier()); var p0 = import(`${directory}\\${moduleFile}`); >p0 : Promise >import(`${directory}\\${moduleFile}`) : Promise ->`${directory}\\${moduleFile}` : `${string}\\${number}` +>`${directory}\\${moduleFile}` : string >directory : string >moduleFile : number diff --git a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types index 9592dc870d3..bfe4d8d9556 100644 --- a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types +++ b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types @@ -23,7 +23,7 @@ declare const moduleFile: number; import(`${directory}\\${moduleFile}`); >import(`${directory}\\${moduleFile}`) : Promise ->`${directory}\\${moduleFile}` : `${string}\\${number}` +>`${directory}\\${moduleFile}` : string >directory : string >moduleFile : number @@ -94,7 +94,7 @@ var p3: Promise = import(j=getSpecifier()); >getSpecifier : () => string function * loadModule(directories: string[]) { ->loadModule : (directories: string[]) => Generator<`${string}\\moduleFile`, void, string> +>loadModule : (directories: string[]) => Generator >directories : string[] for (const directory of directories) { @@ -102,14 +102,14 @@ function * loadModule(directories: string[]) { >directories : string[] const path = `${directory}\\moduleFile`; ->path : `${string}\\moduleFile` ->`${directory}\\moduleFile` : `${string}\\moduleFile` +>path : string +>`${directory}\\moduleFile` : string >directory : string import(yield path); >import(yield path) : Promise >yield path : any ->path : `${string}\\moduleFile` +>path : string } } diff --git a/tests/baselines/reference/importCallExpressionShouldNotGetParen.types b/tests/baselines/reference/importCallExpressionShouldNotGetParen.types index b9c3cde9b89..6c452283446 100644 --- a/tests/baselines/reference/importCallExpressionShouldNotGetParen.types +++ b/tests/baselines/reference/importCallExpressionShouldNotGetParen.types @@ -7,7 +7,7 @@ import(`./locales/${localeName}.js`).then(bar => { >import(`./locales/${localeName}.js`).then(bar => { let x = bar;}) : Promise >import(`./locales/${localeName}.js`).then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise >import(`./locales/${localeName}.js`) : Promise ->`./locales/${localeName}.js` : "./locales/zh-CN.js" +>`./locales/${localeName}.js` : string >localeName : "zh-CN" >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise >bar => { let x = bar;} : (bar: any) => void diff --git a/tests/baselines/reference/inferenceErasedSignatures.types b/tests/baselines/reference/inferenceErasedSignatures.types index 018a0697110..84f64ffda56 100644 --- a/tests/baselines/reference/inferenceErasedSignatures.types +++ b/tests/baselines/reference/inferenceErasedSignatures.types @@ -36,7 +36,7 @@ class SomeClass extends SomeAbstractClass { >context : number return `${context}`; ->`${context}` : `${number}` +>`${context}` : string >context : number } } diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types index 8acfa555702..08b1ed68444 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types @@ -18,21 +18,21 @@ const b = tag`123 ${100}` >b : any >tag`123 ${100}` : any >tag : (str: any, ...args: any[]) => any ->`123 ${100}` : "123 100" +>`123 ${100}` : string >100 : 100 const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; >x : any >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any >tag : (str: any, ...args: any[]) => any ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "\\u{hello} 100 \\xtraordinary 200 wonderful 300 \\uworld" +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate ->y : "hello} 100 traordinary 200 wonderful 300 world" ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "hello} 100 traordinary 200 wonderful 300 world" +>y : string +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 @@ -47,97 +47,97 @@ const a1 = tag`${ 100 }\0` // \0 >a1 : any >tag`${ 100 }\0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\0` : "100\0" +>`${ 100 }\0` : string >100 : 100 const a2 = tag`${ 100 }\00` // \\00 >a2 : any >tag`${ 100 }\00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\00` : "100\\00" +>`${ 100 }\00` : string >100 : 100 const a3 = tag`${ 100 }\u` // \\u >a3 : any >tag`${ 100 }\u` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u` : "100\\u" +>`${ 100 }\u` : string >100 : 100 const a4 = tag`${ 100 }\u0` // \\u0 >a4 : any >tag`${ 100 }\u0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0` : "100\\u0" +>`${ 100 }\u0` : string >100 : 100 const a5 = tag`${ 100 }\u00` // \\u00 >a5 : any >tag`${ 100 }\u00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u00` : "100\\u00" +>`${ 100 }\u00` : string >100 : 100 const a6 = tag`${ 100 }\u000` // \\u000 >a6 : any >tag`${ 100 }\u000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u000` : "100\\u000" +>`${ 100 }\u000` : string >100 : 100 const a7 = tag`${ 100 }\u0000` // \u0000 >a7 : any >tag`${ 100 }\u0000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0000` : "100\0" +>`${ 100 }\u0000` : string >100 : 100 const a8 = tag`${ 100 }\u{` // \\u{ >a8 : any >tag`${ 100 }\u{` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{` : "100\\u{" +>`${ 100 }\u{` : string >100 : 100 const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >a9 : any >tag`${ 100 }\u{10FFFF}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{10FFFF}` : "100􏿿" +>`${ 100 }\u{10FFFF}` : string >100 : 100 const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >a10 : any >tag`${ 100 }\u{1f622` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622` : "100\\u{1f622" +>`${ 100 }\u{1f622` : string >100 : 100 const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >a11 : any >tag`${ 100 }\u{1f622}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622}` : "100😢" +>`${ 100 }\u{1f622}` : string >100 : 100 const a12 = tag`${ 100 }\x` // \\x >a12 : any >tag`${ 100 }\x` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x` : "100\\x" +>`${ 100 }\x` : string >100 : 100 const a13 = tag`${ 100 }\x0` // \\x0 >a13 : any >tag`${ 100 }\x0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x0` : "100\\x0" +>`${ 100 }\x0` : string >100 : 100 const a14 = tag`${ 100 }\x00` // \x00 >a14 : any >tag`${ 100 }\x00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x00` : "100\0" +>`${ 100 }\x00` : string >100 : 100 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types index 8acfa555702..08b1ed68444 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types @@ -18,21 +18,21 @@ const b = tag`123 ${100}` >b : any >tag`123 ${100}` : any >tag : (str: any, ...args: any[]) => any ->`123 ${100}` : "123 100" +>`123 ${100}` : string >100 : 100 const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; >x : any >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any >tag : (str: any, ...args: any[]) => any ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "\\u{hello} 100 \\xtraordinary 200 wonderful 300 \\uworld" +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate ->y : "hello} 100 traordinary 200 wonderful 300 world" ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "hello} 100 traordinary 200 wonderful 300 world" +>y : string +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 @@ -47,97 +47,97 @@ const a1 = tag`${ 100 }\0` // \0 >a1 : any >tag`${ 100 }\0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\0` : "100\0" +>`${ 100 }\0` : string >100 : 100 const a2 = tag`${ 100 }\00` // \\00 >a2 : any >tag`${ 100 }\00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\00` : "100\\00" +>`${ 100 }\00` : string >100 : 100 const a3 = tag`${ 100 }\u` // \\u >a3 : any >tag`${ 100 }\u` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u` : "100\\u" +>`${ 100 }\u` : string >100 : 100 const a4 = tag`${ 100 }\u0` // \\u0 >a4 : any >tag`${ 100 }\u0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0` : "100\\u0" +>`${ 100 }\u0` : string >100 : 100 const a5 = tag`${ 100 }\u00` // \\u00 >a5 : any >tag`${ 100 }\u00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u00` : "100\\u00" +>`${ 100 }\u00` : string >100 : 100 const a6 = tag`${ 100 }\u000` // \\u000 >a6 : any >tag`${ 100 }\u000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u000` : "100\\u000" +>`${ 100 }\u000` : string >100 : 100 const a7 = tag`${ 100 }\u0000` // \u0000 >a7 : any >tag`${ 100 }\u0000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0000` : "100\0" +>`${ 100 }\u0000` : string >100 : 100 const a8 = tag`${ 100 }\u{` // \\u{ >a8 : any >tag`${ 100 }\u{` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{` : "100\\u{" +>`${ 100 }\u{` : string >100 : 100 const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >a9 : any >tag`${ 100 }\u{10FFFF}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{10FFFF}` : "100􏿿" +>`${ 100 }\u{10FFFF}` : string >100 : 100 const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >a10 : any >tag`${ 100 }\u{1f622` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622` : "100\\u{1f622" +>`${ 100 }\u{1f622` : string >100 : 100 const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >a11 : any >tag`${ 100 }\u{1f622}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622}` : "100😢" +>`${ 100 }\u{1f622}` : string >100 : 100 const a12 = tag`${ 100 }\x` // \\x >a12 : any >tag`${ 100 }\x` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x` : "100\\x" +>`${ 100 }\x` : string >100 : 100 const a13 = tag`${ 100 }\x0` // \\x0 >a13 : any >tag`${ 100 }\x0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x0` : "100\\x0" +>`${ 100 }\x0` : string >100 : 100 const a14 = tag`${ 100 }\x00` // \x00 >a14 : any >tag`${ 100 }\x00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x00` : "100\0" +>`${ 100 }\x00` : string >100 : 100 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types index 8acfa555702..08b1ed68444 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types @@ -18,21 +18,21 @@ const b = tag`123 ${100}` >b : any >tag`123 ${100}` : any >tag : (str: any, ...args: any[]) => any ->`123 ${100}` : "123 100" +>`123 ${100}` : string >100 : 100 const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; >x : any >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any >tag : (str: any, ...args: any[]) => any ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "\\u{hello} 100 \\xtraordinary 200 wonderful 300 \\uworld" +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate ->y : "hello} 100 traordinary 200 wonderful 300 world" ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "hello} 100 traordinary 200 wonderful 300 world" +>y : string +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 @@ -47,97 +47,97 @@ const a1 = tag`${ 100 }\0` // \0 >a1 : any >tag`${ 100 }\0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\0` : "100\0" +>`${ 100 }\0` : string >100 : 100 const a2 = tag`${ 100 }\00` // \\00 >a2 : any >tag`${ 100 }\00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\00` : "100\\00" +>`${ 100 }\00` : string >100 : 100 const a3 = tag`${ 100 }\u` // \\u >a3 : any >tag`${ 100 }\u` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u` : "100\\u" +>`${ 100 }\u` : string >100 : 100 const a4 = tag`${ 100 }\u0` // \\u0 >a4 : any >tag`${ 100 }\u0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0` : "100\\u0" +>`${ 100 }\u0` : string >100 : 100 const a5 = tag`${ 100 }\u00` // \\u00 >a5 : any >tag`${ 100 }\u00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u00` : "100\\u00" +>`${ 100 }\u00` : string >100 : 100 const a6 = tag`${ 100 }\u000` // \\u000 >a6 : any >tag`${ 100 }\u000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u000` : "100\\u000" +>`${ 100 }\u000` : string >100 : 100 const a7 = tag`${ 100 }\u0000` // \u0000 >a7 : any >tag`${ 100 }\u0000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0000` : "100\0" +>`${ 100 }\u0000` : string >100 : 100 const a8 = tag`${ 100 }\u{` // \\u{ >a8 : any >tag`${ 100 }\u{` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{` : "100\\u{" +>`${ 100 }\u{` : string >100 : 100 const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >a9 : any >tag`${ 100 }\u{10FFFF}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{10FFFF}` : "100􏿿" +>`${ 100 }\u{10FFFF}` : string >100 : 100 const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >a10 : any >tag`${ 100 }\u{1f622` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622` : "100\\u{1f622" +>`${ 100 }\u{1f622` : string >100 : 100 const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >a11 : any >tag`${ 100 }\u{1f622}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622}` : "100😢" +>`${ 100 }\u{1f622}` : string >100 : 100 const a12 = tag`${ 100 }\x` // \\x >a12 : any >tag`${ 100 }\x` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x` : "100\\x" +>`${ 100 }\x` : string >100 : 100 const a13 = tag`${ 100 }\x0` // \\x0 >a13 : any >tag`${ 100 }\x0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x0` : "100\\x0" +>`${ 100 }\x0` : string >100 : 100 const a14 = tag`${ 100 }\x00` // \x00 >a14 : any >tag`${ 100 }\x00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x00` : "100\0" +>`${ 100 }\x00` : string >100 : 100 diff --git a/tests/baselines/reference/jsDeclarationsExportedClassAliases.types b/tests/baselines/reference/jsDeclarationsExportedClassAliases.types index 9a2369a46c0..c9be4e46037 100644 --- a/tests/baselines/reference/jsDeclarationsExportedClassAliases.types +++ b/tests/baselines/reference/jsDeclarationsExportedClassAliases.types @@ -28,7 +28,7 @@ class FancyError extends Error { super(`error with status ${status}`); >super(`error with status ${status}`) : void >super : ErrorConstructor ->`error with status ${status}` : `error with status ${any}` +>`error with status ${status}` : string >status : any } } diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types index 9950788aa57..7bbcb5becab 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types @@ -20,17 +20,17 @@ mod.g('also no') >'also no' : "also no" mod.h(0) ->mod.h(0) : `hi, ${string}!` ->mod.h : (mom: string) => `hi, ${string}!` +>mod.h(0) : string +>mod.h : (mom: string) => string >mod : typeof mod ->h : (mom: string) => `hi, ${string}!` +>h : (mom: string) => string >0 : 0 mod.i(1) ->mod.i(1) : `hi, ${string}!` ->mod.i : (mom: string) => `hi, ${string}!` +>mod.i(1) : string +>mod.i : (mom: string) => string >mod : typeof mod ->i : (mom: string) => `hi, ${string}!` +>i : (mom: string) => string >1 : 1 === tests/cases/conformance/jsdoc/mod.js === @@ -55,24 +55,24 @@ exports.f = exports.g = function fg(n) { } /** @param {string} mom */ module.exports.h = module.exports.i = function hi(mom) { ->module.exports.h = module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => `hi, ${string}!` ->module.exports.h : (mom: string) => `hi, ${string}!` +>module.exports.h = module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string +>module.exports.h : (mom: string) => string >module.exports : typeof import("tests/cases/conformance/jsdoc/mod") >module : { "\"tests/cases/conformance/jsdoc/mod\"": typeof import("tests/cases/conformance/jsdoc/mod"); } >exports : typeof import("tests/cases/conformance/jsdoc/mod") ->h : (mom: string) => `hi, ${string}!` ->module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => `hi, ${string}!` ->module.exports.i : (mom: string) => `hi, ${string}!` +>h : (mom: string) => string +>module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string +>module.exports.i : (mom: string) => string >module.exports : typeof import("tests/cases/conformance/jsdoc/mod") >module : { "\"tests/cases/conformance/jsdoc/mod\"": typeof import("tests/cases/conformance/jsdoc/mod"); } >exports : typeof import("tests/cases/conformance/jsdoc/mod") ->i : (mom: string) => `hi, ${string}!` ->function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => `hi, ${string}!` ->hi : (mom: string) => `hi, ${string}!` +>i : (mom: string) => string +>function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string +>hi : (mom: string) => string >mom : string return `hi, ${mom}!`; ->`hi, ${mom}!` : `hi, ${string}!` +>`hi, ${mom}!` : string >mom : string } diff --git a/tests/baselines/reference/noImplicitSymbolToString.types b/tests/baselines/reference/noImplicitSymbolToString.types index e4ea9afa516..c21c0e07bfd 100644 --- a/tests/baselines/reference/noImplicitSymbolToString.types +++ b/tests/baselines/reference/noImplicitSymbolToString.types @@ -9,8 +9,8 @@ let str = "hello "; >"hello " : "hello " const templateStr = `hello ${symbol}`; ->templateStr : `hello ${string}` ->`hello ${symbol}` : `hello ${string}` +>templateStr : string +>`hello ${symbol}` : string >symbol : symbol const appendStr = "hello " + symbol; @@ -31,8 +31,8 @@ let symbolUnionString!: symbol | string; >symbolUnionString : string | symbol const templateStrUnion = `union with number ${symbolUnionNumber} and union with string ${symbolUnionString}`; ->templateStrUnion : `union with number ${string} and union with string ${string}` ->`union with number ${symbolUnionNumber} and union with string ${symbolUnionString}` : `union with number ${string} and union with string ${string}` +>templateStrUnion : string +>`union with number ${symbolUnionNumber} and union with string ${symbolUnionString}` : string >symbolUnionNumber : number | symbol >symbolUnionString : string | symbol diff --git a/tests/baselines/reference/parenthesizedContexualTyping3.types b/tests/baselines/reference/parenthesizedContexualTyping3.types index 2acc75d368e..d43cd213b56 100644 --- a/tests/baselines/reference/parenthesizedContexualTyping3.types +++ b/tests/baselines/reference/parenthesizedContexualTyping3.types @@ -37,7 +37,7 @@ 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} 10` +>`${ x => x } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -47,7 +47,7 @@ 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} 10` +>`${ (x => x) } ${ 10 }` : string >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -58,7 +58,7 @@ 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} 10` +>`${ ((x => x)) } ${ 10 }` : string >((x => x)) : (x: number) => number >(x => x) : (x: number) => number >x => x : (x: number) => number @@ -70,7 +70,7 @@ 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} ${string} 10` +>`${ x => x } ${ x => x } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -83,7 +83,7 @@ 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} ${string} 10` +>`${ x => x } ${ (x => x) } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -97,7 +97,7 @@ 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} ${string} 10` +>`${ x => x } ${ ((x => x)) } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -112,7 +112,7 @@ 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} ${string} 10` +>`${ (x => x) } ${ (((x => x))) } ${ 10 }` : string >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -129,7 +129,7 @@ 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} ${string} undefined` +>`${ (x => x) } ${ (((x => x))) } ${ undefined }` : string >(x => x) : (x: any) => any >x => x : (x: any) => any >x : any diff --git a/tests/baselines/reference/privateNameFieldCallExpression.types b/tests/baselines/reference/privateNameFieldCallExpression.types index 52705589dd8..21a72c92c81 100644 --- a/tests/baselines/reference/privateNameFieldCallExpression.types +++ b/tests/baselines/reference/privateNameFieldCallExpression.types @@ -78,7 +78,7 @@ class A { >this.#fieldFunc2`head${1}middle${2}tail` : void >this.#fieldFunc2 : (a: any, ...b: any[]) => void >this : this ->`head${1}middle${2}tail` : "head1middle2tail" +>`head${1}middle${2}tail` : string >1 : 1 >2 : 2 @@ -89,7 +89,7 @@ class A { >this.getInstance : () => A >this : this >getInstance : () => A ->`test${1}and${2}` : "test1and2" +>`test${1}and${2}` : string >1 : 1 >2 : 2 } diff --git a/tests/baselines/reference/propertyOverridesAccessors2.types b/tests/baselines/reference/propertyOverridesAccessors2.types index 8ea1f4449c5..b87387d052a 100644 --- a/tests/baselines/reference/propertyOverridesAccessors2.types +++ b/tests/baselines/reference/propertyOverridesAccessors2.types @@ -13,7 +13,7 @@ class Base { >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->`x was set to ${value}` : `x was set to ${number}` +>`x was set to ${value}` : string >value : number } diff --git a/tests/baselines/reference/recursiveTypeReferences1.types b/tests/baselines/reference/recursiveTypeReferences1.types index 4008c9286ac..8259f392c5b 100644 --- a/tests/baselines/reference/recursiveTypeReferences1.types +++ b/tests/baselines/reference/recursiveTypeReferences1.types @@ -445,7 +445,7 @@ function parse(node: Tree, index: number[] = []): HTMLUListElement { >'a' : "a" >{ href: `#${el.id}`, rel: 'noopener', 'data-index': idx.join('.') } : { href: string; rel: string; 'data-index': string; } >href : string ->`#${el.id}` : `#${string}` +>`#${el.id}` : string >el.id : string >el : HTMLHeadingElement >id : string diff --git a/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.errors.txt b/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.errors.txt index 21293d7c84e..4137661f0be 100644 --- a/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.errors.txt +++ b/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.errors.txt @@ -1,9 +1,12 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithTemplateStrings02.ts(1,5): error TS2322: Type '"AB\nC"' is not assignable to type '"AB\r\nC"'. +tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithTemplateStrings02.ts(3,5): error TS2322: Type 'string' is not assignable to type '"DE\nF"'. -==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithTemplateStrings02.ts (1 errors) ==== +==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesWithTemplateStrings02.ts (2 errors) ==== let abc: "AB\r\nC" = `AB ~~~ !!! error TS2322: Type '"AB\nC"' is not assignable to type '"AB\r\nC"'. C`; - let de_NEWLINE_f: "DE\nF" = `DE${"\n"}F`; \ No newline at end of file + let de_NEWLINE_f: "DE\nF" = `DE${"\n"}F`; + ~~~~~~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type '"DE\nF"'. \ No newline at end of file diff --git a/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.types b/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.types index 912ab642767..c8dcf901e53 100644 --- a/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.types +++ b/tests/baselines/reference/stringLiteralTypesWithTemplateStrings02.types @@ -6,6 +6,6 @@ let abc: "AB\r\nC" = `AB C`; let de_NEWLINE_f: "DE\nF" = `DE${"\n"}F`; >de_NEWLINE_f : "DE\nF" ->`DE${"\n"}F` : "DE\nF" +>`DE${"\n"}F` : string >"\n" : "\n" diff --git a/tests/baselines/reference/taggedTemplateChain.types b/tests/baselines/reference/taggedTemplateChain.types index 510f0846e48..9690fc22f69 100644 --- a/tests/baselines/reference/taggedTemplateChain.types +++ b/tests/baselines/reference/taggedTemplateChain.types @@ -10,6 +10,6 @@ a?.`b`; a?.`b${1}c`; >a?.`b${1}c` : any >a : any ->`b${1}c` : "b1c" +>`b${1}c` : string >1 : 1 diff --git a/tests/baselines/reference/taggedTemplateContextualTyping1.types b/tests/baselines/reference/taggedTemplateContextualTyping1.types index 09e05c65700..84af70b5b88 100644 --- a/tests/baselines/reference/taggedTemplateContextualTyping1.types +++ b/tests/baselines/reference/taggedTemplateContextualTyping1.types @@ -33,7 +33,7 @@ function tempTag1(...rest: any[]): T { tempTag1 `${ x => { x(undefined); return x; } }${ 10 }`; >tempTag1 `${ x => { x(undefined); return x; } }${ 10 }` : 10 >tempTag1 : { (templateStrs: TemplateStringsArray, f: FuncType, x: T): T; (templateStrs: TemplateStringsArray, f: FuncType, h: FuncType, x: T): T; } ->`${ x => { x(undefined); return x; } }${ 10 }` : `${string}10` +>`${ 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 @@ -45,7 +45,7 @@ tempTag1 `${ x => { x(undefined); return x; } }${ 10 } tempTag1 `${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }`; >tempTag1 `${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }` : 10 >tempTag1 : { (templateStrs: TemplateStringsArray, f: FuncType, x: T): T; (templateStrs: TemplateStringsArray, f: FuncType, h: FuncType, x: T): T; } ->`${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }` : `${string}${string}10` +>`${ 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 @@ -63,7 +63,7 @@ tempTag1 `${ x => { x(undefined); return x; } }${ y => 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: FuncType, x: T): T; (templateStrs: TemplateStringsArray, f: FuncType, h: FuncType, x: T): T; } ->`${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }` : `${string}${string}undefined` +>`${ 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 @@ -82,7 +82,7 @@ tempTag1 `${ x => { x(undefined); return x; } }${ (y: 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: FuncType, x: T): T; (templateStrs: TemplateStringsArray, f: FuncType, h: FuncType, x: T): T; } ->`${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }` : `${string}${string}undefined` +>`${ (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 >p : T diff --git a/tests/baselines/reference/taggedTemplateContextualTyping2.types b/tests/baselines/reference/taggedTemplateContextualTyping2.types index a84e76263e9..d182bb526a8 100644 --- a/tests/baselines/reference/taggedTemplateContextualTyping2.types +++ b/tests/baselines/reference/taggedTemplateContextualTyping2.types @@ -39,7 +39,7 @@ function tempTag2(...rest: any[]): any { tempTag2 `${ x => { x(undefined); return x; } }${ 0 }`; >tempTag2 `${ x => { x(undefined); return x; } }${ 0 }` : number >tempTag2 : { (templateStrs: TemplateStringsArray, f: FuncType1, x: number): number; (templateStrs: TemplateStringsArray, f: FuncType2, h: FuncType2, x: string): string; } ->`${ x => { x(undefined); return x; } }${ 0 }` : `${string}0` +>`${ 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 @@ -51,7 +51,7 @@ tempTag2 `${ x => { x(undefined); return x; } }${ 0 }`; 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: FuncType1, x: number): number; (templateStrs: TemplateStringsArray, f: FuncType2, h: FuncType2, x: string): string; } ->`${ x => { x(undefined); return x; } }${ y => { y(null); return y; } }${ "hello" }` : `${string}${string}hello` +>`${ 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 @@ -69,7 +69,7 @@ tempTag2 `${ x => { x(undefined); return x; } }${ y => { y { x(undefined); return x; } }${ undefined }${ "hello" }`; >tempTag2 `${ x => { x(undefined); return x; } }${ undefined }${ "hello" }` : string >tempTag2 : { (templateStrs: TemplateStringsArray, f: FuncType1, x: number): number; (templateStrs: TemplateStringsArray, f: FuncType2, h: FuncType2, x: string): string; } ->`${ x => { x(undefined); return x; } }${ undefined }${ "hello" }` : `${string}undefinedhello` +>`${ 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 diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types index ee58cfcd1db..e42bf52c005 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapes.types @@ -7,6 +7,6 @@ function f(...args: any[]) { f `\x0D${ "Interrupted CRLF" }\x0A`; >f `\x0D${ "Interrupted CRLF" }\x0A` : void >f : (...args: any[]) => void ->`\x0D${ "Interrupted CRLF" }\x0A` : "\rInterrupted CRLF\n" +>`\x0D${ "Interrupted CRLF" }\x0A` : string >"Interrupted CRLF" : "Interrupted CRLF" diff --git a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types index 256d9d06b47..1b5fefe9c9e 100644 --- a/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types +++ b/tests/baselines/reference/taggedTemplateStringsHexadecimalEscapesES6.types @@ -7,6 +7,6 @@ function f(...args: any[]) { f `\x0D${ "Interrupted CRLF" }\x0A`; >f `\x0D${ "Interrupted CRLF" }\x0A` : void >f : (...args: any[]) => void ->`\x0D${ "Interrupted CRLF" }\x0A` : "\rInterrupted CRLF\n" +>`\x0D${ "Interrupted CRLF" }\x0A` : string >"Interrupted CRLF" : "Interrupted CRLF" diff --git a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types index 32efe026183..d4b77f95c4f 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02.ts === `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` : "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/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types index b75054d77d1..dc6455c17a9 100644 --- a/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsPlainCharactersThatArePartsOfEscapes02_ES6.types @@ -8,7 +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` : "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/taggedTemplateStringsTypeArgumentInference.types b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types index 91462bef19b..114b37d1cf2 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types @@ -28,7 +28,7 @@ function someGenerics1a(n: T, m: number) { } someGenerics1a `${3}`; >someGenerics1a `${3}` : void >someGenerics1a : (n: T, m: number) => void ->`${3}` : "3" +>`${3}` : string >3 : 3 function someGenerics1b(n: TemplateStringsArray, m: U) { } @@ -39,7 +39,7 @@ function someGenerics1b(n: TemplateStringsArray, m: U) { } someGenerics1b `${3}`; >someGenerics1b `${3}` : void >someGenerics1b : (n: TemplateStringsArray, m: U) => void ->`${3}` : "3" +>`${3}` : string >3 : 3 // Generic tag with argument of function type whose parameter is of type parameter type @@ -111,7 +111,7 @@ function someGenerics4(strs: TemplateStringsArray, n: T, f: (x: U) => void someGenerics4 `${4}${ () => null }`; >someGenerics4 `${4}${ () => null }` : void >someGenerics4 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${4}${ () => null }` : `4${string}` +>`${4}${ () => null }` : string >4 : 4 >() => null : () => any >null : null @@ -127,7 +127,7 @@ someGenerics4 `${''}${ () => 3 }`; someGenerics4 `${ null }${ null }`; >someGenerics4 `${ null }${ null }` : void >someGenerics4 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${ null }${ null }` : "nullnull" +>`${ null }${ null }` : string >null : null >null : null @@ -142,7 +142,7 @@ function someGenerics5(strs: TemplateStringsArray, n: T, f: (x: U) => void someGenerics5 `${ 4 } ${ () => null }`; >someGenerics5 `${ 4 } ${ () => null }` : void >someGenerics5 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${ 4 } ${ () => null }` : `4 ${string}` +>`${ 4 } ${ () => null }` : string >4 : 4 >() => null : () => any >null : null @@ -158,7 +158,7 @@ someGenerics5 `${ '' }${ () => 3 }`; someGenerics5 `${null}${null}`; >someGenerics5 `${null}${null}` : void >someGenerics5 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${null}${null}` : "nullnull" +>`${null}${null}` : string >null : null >null : null @@ -285,7 +285,7 @@ var x = someGenerics8 `${ someGenerics7 }`; x `${null}${null}${null}`; >x `${null}${null}${null}` : void >x : (strs: TemplateStringsArray, a: (a: A) => A, b: (b: B) => B, c: (c: C) => C) => void ->`${null}${null}${null}` : "nullnullnull" +>`${null}${null}${null}` : string >null : null >null : null >null : null @@ -305,7 +305,7 @@ var a9a = someGenerics9 `${ '' }${ 0 }${ [] }`; >a9a : string >someGenerics9 `${ '' }${ 0 }${ [] }` : "" >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ '' }${ 0 }${ [] }` : `0${string}` +>`${ '' }${ 0 }${ [] }` : string >'' : "" >0 : 0 >[] : undefined[] @@ -333,7 +333,7 @@ var a9e = someGenerics9 `${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: >a9e : { x: number; z: Date; y?: undefined; } | { x: number; y: string; z?: undefined; } >someGenerics9 `${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: '' } }` : { x: number; z: Date; y?: undefined; } | { x: number; y: string; z?: undefined; } >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: '' } }` : `undefined${string}${string}` +>`${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: '' } }` : string >undefined : undefined >{ x: 6, z: new Date() } : { x: number; z: Date; } >x : number @@ -378,7 +378,7 @@ var a = someGenerics9 `${ 7 }${ anyVar }${ 4 }`; >a : any >someGenerics9 `${ 7 }${ anyVar }${ 4 }` : any >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ 7 }${ anyVar }${ 4 }` : `7${any}4` +>`${ 7 }${ anyVar }${ 4 }` : string >7 : 7 >anyVar : any >4 : 4 @@ -391,7 +391,7 @@ var arr = someGenerics9 `${ [] }${ null }${ undefined }`; >arr : any[] >someGenerics9 `${ [] }${ null }${ undefined }` : any[] >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ [] }${ null }${ undefined }` : `${string}nullundefined` +>`${ [] }${ null }${ undefined }` : string >[] : undefined[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types index c0a42cb12b6..1953bde6099 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types @@ -28,7 +28,7 @@ function someGenerics1a(n: T, m: number) { } someGenerics1a `${3}`; >someGenerics1a `${3}` : void >someGenerics1a : (n: T, m: number) => void ->`${3}` : "3" +>`${3}` : string >3 : 3 function someGenerics1b(n: TemplateStringsArray, m: U) { } @@ -39,7 +39,7 @@ function someGenerics1b(n: TemplateStringsArray, m: U) { } someGenerics1b `${3}`; >someGenerics1b `${3}` : void >someGenerics1b : (n: TemplateStringsArray, m: U) => void ->`${3}` : "3" +>`${3}` : string >3 : 3 // Generic tag with argument of function type whose parameter is of type parameter type @@ -111,7 +111,7 @@ function someGenerics4(strs: TemplateStringsArray, n: T, f: (x: U) => void someGenerics4 `${4}${ () => null }`; >someGenerics4 `${4}${ () => null }` : void >someGenerics4 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${4}${ () => null }` : `4${string}` +>`${4}${ () => null }` : string >4 : 4 >() => null : () => any >null : null @@ -127,7 +127,7 @@ someGenerics4 `${''}${ () => 3 }`; someGenerics4 `${ null }${ null }`; >someGenerics4 `${ null }${ null }` : void >someGenerics4 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${ null }${ null }` : "nullnull" +>`${ null }${ null }` : string >null : null >null : null @@ -142,7 +142,7 @@ function someGenerics5(strs: TemplateStringsArray, n: T, f: (x: U) => void someGenerics5 `${ 4 } ${ () => null }`; >someGenerics5 `${ 4 } ${ () => null }` : void >someGenerics5 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${ 4 } ${ () => null }` : `4 ${string}` +>`${ 4 } ${ () => null }` : string >4 : 4 >() => null : () => any >null : null @@ -158,7 +158,7 @@ someGenerics5 `${ '' }${ () => 3 }`; someGenerics5 `${null}${null}`; >someGenerics5 `${null}${null}` : void >someGenerics5 : (strs: TemplateStringsArray, n: T, f: (x: U) => void) => void ->`${null}${null}` : "nullnull" +>`${null}${null}` : string >null : null >null : null @@ -285,7 +285,7 @@ var x = someGenerics8 `${ someGenerics7 }`; x `${null}${null}${null}`; >x `${null}${null}${null}` : void >x : (strs: TemplateStringsArray, a: (a: A) => A, b: (b: B) => B, c: (c: C) => C) => void ->`${null}${null}${null}` : "nullnullnull" +>`${null}${null}${null}` : string >null : null >null : null >null : null @@ -305,7 +305,7 @@ var a9a = someGenerics9 `${ '' }${ 0 }${ [] }`; >a9a : string >someGenerics9 `${ '' }${ 0 }${ [] }` : "" >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ '' }${ 0 }${ [] }` : `0${string}` +>`${ '' }${ 0 }${ [] }` : string >'' : "" >0 : 0 >[] : undefined[] @@ -333,7 +333,7 @@ var a9e = someGenerics9 `${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: >a9e : { x: number; z: Date; y?: undefined; } | { x: number; y: string; z?: undefined; } >someGenerics9 `${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: '' } }` : { x: number; z: Date; y?: undefined; } | { x: number; y: string; z?: undefined; } >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: '' } }` : `undefined${string}${string}` +>`${ undefined }${ { x: 6, z: new Date() } }${ { x: 6, y: '' } }` : string >undefined : undefined >{ x: 6, z: new Date() } : { x: number; z: Date; } >x : number @@ -378,7 +378,7 @@ var a = someGenerics9 `${ 7 }${ anyVar }${ 4 }`; >a : any >someGenerics9 `${ 7 }${ anyVar }${ 4 }` : any >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ 7 }${ anyVar }${ 4 }` : `7${any}4` +>`${ 7 }${ anyVar }${ 4 }` : string >7 : 7 >anyVar : any >4 : 4 @@ -391,7 +391,7 @@ var arr = someGenerics9 `${ [] }${ null }${ undefined }`; >arr : any[] >someGenerics9 `${ [] }${ null }${ undefined }` : any[] >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T ->`${ [] }${ null }${ undefined }` : `${string}nullundefined` +>`${ [] }${ null }${ undefined }` : string >[] : undefined[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/taggedTemplateStringsWithCurriedFunction.types b/tests/baselines/reference/taggedTemplateStringsWithCurriedFunction.types index 3ee924bd255..9f5543bd030 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithCurriedFunction.types +++ b/tests/baselines/reference/taggedTemplateStringsWithCurriedFunction.types @@ -37,7 +37,7 @@ f({ ...{ x: 0 } })`x${f}x`; >{ x: 0 } : { x: number; } >x : number >0 : 0 ->`x${f}x` : `x${string}x` +>`x${f}x` : string >f : (_: any) => (..._: any[]) => string f({ ...{ x: 0 }, y: (() => 1)() })``; diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.types b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.types index aac6a9ef519..1e0acac274a 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.types +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTags.types @@ -32,7 +32,7 @@ f `abc` f `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -47,7 +47,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >member : I @@ -63,7 +63,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" @@ -77,7 +77,7 @@ f `abc`[0].member `abc${1}def${2}ghi`; >`abc` : "abc" >0 : 0 >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -87,12 +87,12 @@ f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi`["member"] : I >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -102,12 +102,12 @@ f `abc${ true }def${ true }ghi`["member"].member `abc${ 1 }def${ 2 }ghi`; >f `abc${ true }def${ true }ghi`["member"] : I >f `abc${ true }def${ true }ghi` : I >f : I ->`abc${ true }def${ true }ghi` : "abctruedeftrueghi" +>`abc${ true }def${ true }ghi` : string >true : true >true : true >"member" : "member" >member : I ->`abc${ 1 }def${ 2 }ghi` : "abc1def2ghi" +>`abc${ 1 }def${ 2 }ghi` : string >1 : 1 >2 : 2 @@ -123,7 +123,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTagsES6.types b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTagsES6.types index e1790c8933e..39993e1367b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTagsES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithIncompatibleTypedTagsES6.types @@ -32,7 +32,7 @@ f `abc` f `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -47,7 +47,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >member : I @@ -63,7 +63,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" @@ -77,7 +77,7 @@ f `abc`[0].member `abc${1}def${2}ghi`; >`abc` : "abc" >0 : 0 >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -87,12 +87,12 @@ f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi`["member"] : I >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -102,12 +102,12 @@ f `abc${ true }def${ true }ghi`["member"].member `abc${ 1 }def${ 2 }ghi`; >f `abc${ true }def${ true }ghi`["member"] : I >f `abc${ true }def${ true }ghi` : I >f : I ->`abc${ true }def${ true }ghi` : "abctruedeftrueghi" +>`abc${ true }def${ true }ghi` : string >true : true >true : true >"member" : "member" >member : I ->`abc${ 1 }def${ 2 }ghi` : "abc1def2ghi" +>`abc${ 1 }def${ 2 }ghi` : string >1 : 1 >2 : 2 @@ -123,7 +123,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types index 4fa74ad2d2b..7049ed1cbb7 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressions.types @@ -30,7 +30,7 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; >f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean >f `abc${ 0 }def` : I >f : I ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 >member : new (s: string) => new (n: number) => new () => boolean >"hello" : "hello" diff --git a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types index b953073a17a..365e824c76b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithManyCallAndMemberExpressionsES6.types @@ -30,7 +30,7 @@ var x = new new new f `abc${ 0 }def`.member("hello")(42) === true; >f `abc${ 0 }def`.member : new (s: string) => new (n: number) => new () => boolean >f `abc${ 0 }def` : I >f : I ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 >member : new (s: string) => new (n: number) => new () => boolean >"hello" : "hello" diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.types index a0512312301..e809c1c2745 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1.types @@ -84,14 +84,14 @@ var v = foo `${1}`; // string >v : string >foo `${1}` : string >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}` : "1" +>`${1}` : string >1 : 1 var w = foo `${1}${2}`; // boolean >w : boolean >foo `${1}${2}` : boolean >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${2}` : "12" +>`${1}${2}` : string >1 : 1 >2 : 2 @@ -99,7 +99,7 @@ var x = foo `${1}${true}`; // boolean (with error) >x : never >foo `${1}${true}` : never >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${true}` : "1true" +>`${1}${true}` : string >1 : 1 >true : true @@ -107,7 +107,7 @@ var y = foo `${1}${"2"}`; // {} >y : {} >foo `${1}${"2"}` : {} >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${"2"}` : "12" +>`${1}${"2"}` : string >1 : 1 >"2" : "2" @@ -115,7 +115,7 @@ var z = foo `${1}${2}${3}`; // any (with error) >z : never >foo `${1}${2}${3}` : never >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${2}${3}` : "123" +>`${1}${2}${3}` : string >1 : 1 >2 : 2 >3 : 3 diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1_ES6.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1_ES6.types index 1f84f29a2ee..d9cb80eb05c 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution1_ES6.types @@ -84,14 +84,14 @@ var v = foo `${1}`; // string >v : string >foo `${1}` : string >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}` : "1" +>`${1}` : string >1 : 1 var w = foo `${1}${2}`; // boolean >w : boolean >foo `${1}${2}` : boolean >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${2}` : "12" +>`${1}${2}` : string >1 : 1 >2 : 2 @@ -99,7 +99,7 @@ var x = foo `${1}${true}`; // boolean (with error) >x : never >foo `${1}${true}` : never >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${true}` : "1true" +>`${1}${true}` : string >1 : 1 >true : true @@ -107,7 +107,7 @@ var y = foo `${1}${"2"}`; // {} >y : {} >foo `${1}${"2"}` : {} >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${"2"}` : "12" +>`${1}${"2"}` : string >1 : 1 >"2" : "2" @@ -115,7 +115,7 @@ var z = foo `${1}${2}${3}`; // any (with error) >z : never >foo `${1}${2}${3}` : never >foo : { (strs: TemplateStringsArray): number; (strs: TemplateStringsArray, x: number): string; (strs: TemplateStringsArray, x: number, y: number): boolean; (strs: TemplateStringsArray, x: number, y: string): {}; } ->`${1}${2}${3}` : "123" +>`${1}${2}${3}` : string >1 : 1 >2 : 2 >3 : 3 diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types index 1bfdf77919a..d9bac7879d9 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types @@ -21,7 +21,7 @@ var a = foo1 `${1}`; >a : string >foo1 `${1}` : string >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } ->`${1}` : "1" +>`${1}` : string >1 : 1 var b = foo1([], 1); @@ -53,7 +53,7 @@ var c = foo2 `${1}`; >c : string >foo2 `${1}` : string >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } ->`${1}` : "1" +>`${1}` : string >1 : 1 var d = foo2([], 1); diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types index 4ae8b4ac37e..68180a23d8f 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types @@ -21,7 +21,7 @@ var a = foo1 `${1}`; >a : string >foo1 `${1}` : string >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } ->`${1}` : "1" +>`${1}` : string >1 : 1 var b = foo1([], 1); @@ -53,7 +53,7 @@ var c = foo2 `${1}`; >c : string >foo2 `${1}` : string >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } ->`${1}` : "1" +>`${1}` : string >1 : 1 var d = foo2([], 1); diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.types index 44fa1ad821e..138b2a162da 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3.types @@ -18,7 +18,7 @@ var s: string = fn1 `${ undefined }`; >s : string >fn1 `${ undefined }` : string >fn1 : { (strs: TemplateStringsArray, s: string): string; (strs: TemplateStringsArray, n: number): number; } ->`${ undefined }` : "undefined" +>`${ undefined }` : string >undefined : undefined // No candidate overloads found @@ -48,7 +48,7 @@ var d1: Date = fn2 `${ 0 }${ undefined }`; // contextually typed >d1 : Date >fn2 `${ 0 }${ undefined }` : any >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ 0 }${ undefined }` : "0undefined" +>`${ 0 }${ undefined }` : string >0 : 0 >undefined : undefined @@ -56,7 +56,7 @@ var d2 = fn2 `${ 0 }${ undefined }`; // any >d2 : any >fn2 `${ 0 }${ undefined }` : any >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ 0 }${ undefined }` : "0undefined" +>`${ 0 }${ undefined }` : string >0 : 0 >undefined : undefined @@ -74,7 +74,7 @@ d2(); // no error (typed as any) fn2 `${ 0 }${ '' }`; // OK >fn2 `${ 0 }${ '' }` : "" >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ 0 }${ '' }` : "0" +>`${ 0 }${ '' }` : string >0 : 0 >'' : "" @@ -82,7 +82,7 @@ fn2 `${ 0 }${ '' }`; // OK fn2 `${ '' }${ 0 }`; // OK >fn2 `${ '' }${ 0 }` : number >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ '' }${ 0 }` : "0" +>`${ '' }${ 0 }` : string >'' : "" >0 : 0 @@ -114,14 +114,14 @@ var s = fn3 `${ 3 }`; >s : string >fn3 `${ 3 }` : string >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var s = fn3 `${'' }${ 3 }${ '' }`; >s : string >fn3 `${'' }${ 3 }${ '' }` : "" >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${'' }${ 3 }${ '' }` : "3" +>`${'' }${ 3 }${ '' }` : string >'' : "" >3 : 3 >'' : "" @@ -130,7 +130,7 @@ var n = fn3 `${ 5 }${ 5 }${ 5 }`; >n : number >fn3 `${ 5 }${ 5 }${ 5 }` : number >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ 5 }${ 5 }${ 5 }` : "555" +>`${ 5 }${ 5 }${ 5 }` : string >5 : 5 >5 : 5 >5 : 5 @@ -143,14 +143,14 @@ var s = fn3 `${ 4 }` >s : string >fn3 `${ 4 }` : string >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ 4 }` : "4" +>`${ 4 }` : string >4 : 4 var s = fn3 `${ '' }${ '' }${ '' }`; >s : string >fn3 `${ '' }${ '' }${ '' }` : "" >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ '' }${ '' }${ '' }` : "" +>`${ '' }${ '' }${ '' }` : string >'' : "" >'' : "" >'' : "" @@ -159,7 +159,7 @@ var n = fn3 `${ '' }${ '' }${ 3 }`; >n : number >fn3 `${ '' }${ '' }${ 3 }` : 3 >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ '' }${ '' }${ 3 }` : "3" +>`${ '' }${ '' }${ 3 }` : string >'' : "" >'' : "" >3 : 3 @@ -194,28 +194,28 @@ function fn4() { } fn4 `${ '' }${ 3 }`; >fn4 `${ '' }${ 3 }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ '' }${ 3 }` : "3" +>`${ '' }${ 3 }` : string >'' : "" >3 : 3 fn4 `${ 3 }${ '' }`; >fn4 `${ 3 }${ '' }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ 3 }${ '' }` : "3" +>`${ 3 }${ '' }` : string >3 : 3 >'' : "" fn4 `${ 3 }${ undefined }`; >fn4 `${ 3 }${ undefined }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ 3 }${ undefined }` : "3undefined" +>`${ 3 }${ undefined }` : string >3 : 3 >undefined : undefined fn4 `${ '' }${ null }`; >fn4 `${ '' }${ null }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ '' }${ null }` : "null" +>`${ '' }${ null }` : string >'' : "" >null : null @@ -223,7 +223,7 @@ fn4 `${ '' }${ null }`; fn4 `${ null }${ null }`; // Error >fn4 `${ null }${ null }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ null }${ null }` : "nullnull" +>`${ null }${ null }` : string >null : null >null : null @@ -231,14 +231,14 @@ fn4 `${ null }${ null }`; // Error fn4 `${ true }${ null }`; >fn4 `${ true }${ null }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ true }${ null }` : "truenull" +>`${ true }${ null }` : string >true : true >null : null fn4 `${ null }${ true }`; >fn4 `${ null }${ true }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ null }${ true }` : "nulltrue" +>`${ null }${ true }` : string >null : null >true : true diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3_ES6.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3_ES6.types index 61426f63530..57d82e034ae 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution3_ES6.types @@ -18,7 +18,7 @@ var s: string = fn1 `${ undefined }`; >s : string >fn1 `${ undefined }` : string >fn1 : { (strs: TemplateStringsArray, s: string): string; (strs: TemplateStringsArray, n: number): number; } ->`${ undefined }` : "undefined" +>`${ undefined }` : string >undefined : undefined // No candidate overloads found @@ -48,7 +48,7 @@ var d1: Date = fn2 `${ 0 }${ undefined }`; // contextually typed >d1 : Date >fn2 `${ 0 }${ undefined }` : any >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ 0 }${ undefined }` : "0undefined" +>`${ 0 }${ undefined }` : string >0 : 0 >undefined : undefined @@ -56,7 +56,7 @@ var d2 = fn2 `${ 0 }${ undefined }`; // any >d2 : any >fn2 `${ 0 }${ undefined }` : any >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ 0 }${ undefined }` : "0undefined" +>`${ 0 }${ undefined }` : string >0 : 0 >undefined : undefined @@ -74,7 +74,7 @@ d2(); // no error (typed as any) fn2 `${ 0 }${ '' }`; // OK >fn2 `${ 0 }${ '' }` : "" >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ 0 }${ '' }` : "0" +>`${ 0 }${ '' }` : string >0 : 0 >'' : "" @@ -82,7 +82,7 @@ fn2 `${ 0 }${ '' }`; // OK fn2 `${ '' }${ 0 }`; // OK >fn2 `${ '' }${ 0 }` : number >fn2 : { (strs: TemplateStringsArray, s: string, n: number): number; (strs: TemplateStringsArray, n: number, t: T): T; } ->`${ '' }${ 0 }` : "0" +>`${ '' }${ 0 }` : string >'' : "" >0 : 0 @@ -114,14 +114,14 @@ var s = fn3 `${ 3 }`; >s : string >fn3 `${ 3 }` : string >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var s = fn3 `${'' }${ 3 }${ '' }`; >s : string >fn3 `${'' }${ 3 }${ '' }` : "" >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${'' }${ 3 }${ '' }` : "3" +>`${'' }${ 3 }${ '' }` : string >'' : "" >3 : 3 >'' : "" @@ -130,7 +130,7 @@ var n = fn3 `${ 5 }${ 5 }${ 5 }`; >n : number >fn3 `${ 5 }${ 5 }${ 5 }` : number >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ 5 }${ 5 }${ 5 }` : "555" +>`${ 5 }${ 5 }${ 5 }` : string >5 : 5 >5 : 5 >5 : 5 @@ -143,14 +143,14 @@ var s = fn3 `${ 4 }` >s : string >fn3 `${ 4 }` : string >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ 4 }` : "4" +>`${ 4 }` : string >4 : 4 var s = fn3 `${ '' }${ '' }${ '' }`; >s : string >fn3 `${ '' }${ '' }${ '' }` : "" >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ '' }${ '' }${ '' }` : "" +>`${ '' }${ '' }${ '' }` : string >'' : "" >'' : "" >'' : "" @@ -159,7 +159,7 @@ var n = fn3 `${ '' }${ '' }${ 3 }`; >n : number >fn3 `${ '' }${ '' }${ 3 }` : 3 >fn3 : { (strs: TemplateStringsArray, n: T): string; (strs: TemplateStringsArray, s: string, t: T, u: U): U; (strs: TemplateStringsArray, v: V, u: U, t: T): number; } ->`${ '' }${ '' }${ 3 }` : "3" +>`${ '' }${ '' }${ 3 }` : string >'' : "" >'' : "" >3 : 3 @@ -194,28 +194,28 @@ function fn4() { } fn4 `${ '' }${ 3 }`; >fn4 `${ '' }${ 3 }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ '' }${ 3 }` : "3" +>`${ '' }${ 3 }` : string >'' : "" >3 : 3 fn4 `${ 3 }${ '' }`; >fn4 `${ 3 }${ '' }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ 3 }${ '' }` : "3" +>`${ 3 }${ '' }` : string >3 : 3 >'' : "" fn4 `${ 3 }${ undefined }`; >fn4 `${ 3 }${ undefined }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ 3 }${ undefined }` : "3undefined" +>`${ 3 }${ undefined }` : string >3 : 3 >undefined : undefined fn4 `${ '' }${ null }`; >fn4 `${ '' }${ null }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ '' }${ null }` : "null" +>`${ '' }${ null }` : string >'' : "" >null : null @@ -223,7 +223,7 @@ fn4 `${ '' }${ null }`; fn4 `${ null }${ null }`; // Error >fn4 `${ null }${ null }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ null }${ null }` : "nullnull" +>`${ null }${ null }` : string >null : null >null : null @@ -231,14 +231,14 @@ fn4 `${ null }${ null }`; // Error fn4 `${ true }${ null }`; >fn4 `${ true }${ null }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ true }${ null }` : "truenull" +>`${ true }${ null }` : string >true : true >null : null fn4 `${ null }${ true }`; >fn4 `${ null }${ true }` : any >fn4 : { (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray, n: T, m: U): any; (strs: TemplateStringsArray): any; } ->`${ null }${ true }` : "nulltrue" +>`${ null }${ true }` : string >null : null >true : true diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.types b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.types index 9d09a445ac6..3d39c883056 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclare.types @@ -8,6 +8,6 @@ function declare(x: any, ...ys: any[]) { declare `Hello ${0} world!`; >declare `Hello ${0} world!` : void >declare : (x: any, ...ys: any[]) => void ->`Hello ${0} world!` : "Hello 0 world!" +>`Hello ${0} world!` : string >0 : 0 diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclareES6.types b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclareES6.types index 76163bf33c7..57309b399ba 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclareES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTagNamedDeclareES6.types @@ -8,6 +8,6 @@ function declare(x: any, ...ys: any[]) { declare `Hello ${0} world!`; >declare `Hello ${0} world!` : void >declare : (x: any, ...ys: any[]) => void ->`Hello ${0} world!` : "Hello 0 world!" +>`Hello ${0} world!` : string >0 : 0 diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types index da75f4cec41..9bd975bb472 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAny.types @@ -10,7 +10,7 @@ f `abc` f `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi` : any >f : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -30,7 +30,7 @@ f.g.h `abc${1}def${2}ghi`; >f : any >g : any >h : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -45,7 +45,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >member : any @@ -61,7 +61,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" @@ -75,7 +75,7 @@ f `abc`["member"].someOtherTag `abc${1}def${2}ghi`; >`abc` : "abc" >"member" : "member" >someOtherTag : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -85,12 +85,12 @@ f `abc${1}def${2}ghi`["member"].someOtherTag `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi`["member"] : any >f `abc${1}def${2}ghi` : any >f : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" >someOtherTag : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -106,7 +106,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag : any >f : any >thisIsNotATag : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types index af4251130db..3fde2cd552d 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTagsTypedAsAnyES6.types @@ -10,7 +10,7 @@ f `abc` f `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi` : any >f : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -30,7 +30,7 @@ f.g.h `abc${1}def${2}ghi`; >f : any >g : any >h : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -45,7 +45,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >member : any @@ -61,7 +61,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" @@ -75,7 +75,7 @@ f `abc`["member"].someOtherTag `abc${1}def${2}ghi`; >`abc` : "abc" >"member" : "member" >someOtherTag : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -85,12 +85,12 @@ f `abc${1}def${2}ghi`["member"].someOtherTag `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi`["member"] : any >f `abc${1}def${2}ghi` : any >f : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" >someOtherTag : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -106,7 +106,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag : any >f : any >thisIsNotATag : any ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types index 1c41bcbaed0..2f8b5df162b 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTags.types @@ -32,7 +32,7 @@ f `abc` f `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -47,7 +47,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >member : I @@ -63,7 +63,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" @@ -77,7 +77,7 @@ f `abc`[0].member `abc${1}def${2}ghi`; >`abc` : "abc" >0 : 0 >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -87,12 +87,12 @@ f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi`["member"] : I >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -108,7 +108,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types b/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types index 5bd96e1f154..313a338baf6 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithTypedTagsES6.types @@ -32,7 +32,7 @@ f `abc` f `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -47,7 +47,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >member : I @@ -63,7 +63,7 @@ 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` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" @@ -77,7 +77,7 @@ f `abc`[0].member `abc${1}def${2}ghi`; >`abc` : "abc" >0 : 0 >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -87,12 +87,12 @@ f `abc${1}def${2}ghi`["member"].member `abc${1}def${2}ghi`; >f `abc${1}def${2}ghi`["member"] : I >f `abc${1}def${2}ghi` : I >f : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 >"member" : "member" >member : I ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 @@ -108,7 +108,7 @@ f.thisIsNotATag(`abc${1}def${2}ghi`); >f.thisIsNotATag : (x: string) => void >f : I >thisIsNotATag : (x: string) => void ->`abc${1}def${2}ghi` : "abc1def2ghi" +>`abc${1}def${2}ghi` : string >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types index 18d40b65bc4..4b9b447d32a 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapes.types @@ -7,6 +7,6 @@ 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'` : "'💩' should be converted to '💩'" +>`'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'` : string >" should be converted to " : " should be converted to " diff --git a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types index 1558663ff79..36a298c5a38 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithUnicodeEscapesES6.types @@ -7,6 +7,6 @@ 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'` : "'💩' should be converted to '💩'" +>`'\u{1f4a9}'${ " should be converted to " }'\uD83D\uDCA9'` : string >" should be converted to " : " should be converted to " diff --git a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions1.types b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions1.types index 82983806389..16e40b638aa 100644 --- a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions1.types +++ b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions1.types @@ -10,6 +10,6 @@ function f(x: TemplateStringsArray, y: string, z: string) { f `123qdawdrqw${ >f `123qdawdrqw${ : void >f : (x: TemplateStringsArray, y: string, z: string) => void ->`123qdawdrqw${ : `123qdawdrqw${any}` +>`123qdawdrqw${ : string > : any diff --git a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions2.types b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions2.types index 093c57969e5..600d85805ee 100644 --- a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions2.types +++ b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions2.types @@ -10,7 +10,7 @@ function f(x: TemplateStringsArray, y: string, z: string) { f `123qdawdrqw${ }${ >f `123qdawdrqw${ }${ : void >f : (x: TemplateStringsArray, y: string, z: string) => void ->`123qdawdrqw${ }${ : `123qdawdrqw${any}${any}` +>`123qdawdrqw${ }${ : string > : any > : any diff --git a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions3.types b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions3.types index 84444acf4b4..dd512edab24 100644 --- a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions3.types +++ b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions3.types @@ -10,7 +10,7 @@ function f(x: TemplateStringsArray, y: string, z: string) { f `123qdawdrqw${ 1 }${ >f `123qdawdrqw${ 1 }${ : void >f : (x: TemplateStringsArray, y: string, z: string) => void ->`123qdawdrqw${ 1 }${ : `123qdawdrqw1${any}` +>`123qdawdrqw${ 1 }${ : string >1 : 1 > : any diff --git a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions4.types b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions4.types index 11431691a72..8fb37587be2 100644 --- a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions4.types +++ b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions4.types @@ -10,7 +10,7 @@ function f(x: TemplateStringsArray, y: string, z: string) { f `123qdawdrqw${ 1 }${ }${ >f `123qdawdrqw${ 1 }${ }${ : void >f : (x: TemplateStringsArray, y: string, z: string) => void ->`123qdawdrqw${ 1 }${ }${ : `123qdawdrqw1${any}${any}` +>`123qdawdrqw${ 1 }${ }${ : string >1 : 1 > : any > : any diff --git a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions5.types b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions5.types index fbfaf564ae2..b83f6fd5770 100644 --- a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions5.types +++ b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions5.types @@ -10,7 +10,7 @@ function f(x: TemplateStringsArray, y: string, z: string) { f `123qdawdrqw${ 1 }${ 2 }${ >f `123qdawdrqw${ 1 }${ 2 }${ : void >f : (x: TemplateStringsArray, y: string, z: string) => void ->`123qdawdrqw${ 1 }${ 2 }${ : `123qdawdrqw12${any}` +>`123qdawdrqw${ 1 }${ 2 }${ : string >1 : 1 >2 : 2 > : any diff --git a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions6.types b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions6.types index 54c6d5900e5..6c73c0e59a0 100644 --- a/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions6.types +++ b/tests/baselines/reference/taggedTemplatesWithIncompleteTemplateExpressions6.types @@ -10,7 +10,7 @@ function f(x: TemplateStringsArray, y: string, z: string) { f `123qdawdrqw${ 1 }${ >f `123qdawdrqw${ 1 }${ : void >f : (x: TemplateStringsArray, y: string, z: string) => void ->`123qdawdrqw${ 1 }${ : `123qdawdrqw1${any}` +>`123qdawdrqw${ 1 }${ : string >1 : 1 > : any diff --git a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types index 89e075be990..c2719c22877 100644 --- a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types +++ b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types @@ -20,14 +20,7 @@ export const a = f ` >a : void >f ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : void >f : (strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void ->` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : ` - hello - ${string} - brave - ${string} - world - ${string} -` +>` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string hello ${stuff => stuff.x} @@ -73,14 +66,7 @@ export const b = g ` >b : string | number | boolean >g ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string | number | boolean >g : (strs: TemplateStringsArray, t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V) => T | U | V ->` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : ` - hello - ${string} - brave - ${string} - world - ${string} -` +>` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string hello ${stuff => stuff.x} diff --git a/tests/baselines/reference/taggedTemplatesWithTypeArguments2.types b/tests/baselines/reference/taggedTemplatesWithTypeArguments2.types index 3cd64576b34..c78719846cf 100644 --- a/tests/baselines/reference/taggedTemplatesWithTypeArguments2.types +++ b/tests/baselines/reference/taggedTemplatesWithTypeArguments2.types @@ -18,7 +18,7 @@ const a = new tag `${100} ${200}`("hello", "world"); >new tag `${100} ${200}`("hello", "world") : any >tag `${100} ${200}` : SomethingNewable >tag : SomethingTaggable ->`${100} ${200}` : "100 200" +>`${100} ${200}` : string >100 : 100 >200 : 200 >"hello" : "hello" @@ -29,7 +29,7 @@ const b = new tag `${"hello"} ${"world"}`(100, 200); >new tag `${"hello"} ${"world"}`(100, 200) : any >tag `${"hello"} ${"world"}` : SomethingNewable >tag : SomethingTaggable ->`${"hello"} ${"world"}` : "hello world" +>`${"hello"} ${"world"}` : string >"hello" : "hello" >"world" : "world" >100 : 100 @@ -41,7 +41,7 @@ const c = new tag `${100} ${200}`("hello", "world"); >new tag `${100} ${200}` : any >tag `${100} ${200}` : SomethingNewable >tag : SomethingTaggable ->`${100} ${200}` : "100 200" +>`${100} ${200}` : string >100 : 100 >200 : 200 >"hello" : "hello" @@ -53,7 +53,7 @@ const d = new tag `${"hello"} ${"world"}`(100, 200); >new tag `${"hello"} ${"world"}` : any >tag `${"hello"} ${"world"}` : SomethingNewable >tag : SomethingTaggable ->`${"hello"} ${"world"}` : "hello world" +>`${"hello"} ${"world"}` : string >"hello" : "hello" >"world" : "world" >100 : 100 diff --git a/tests/baselines/reference/templateLiteralTypes1.types b/tests/baselines/reference/templateLiteralTypes1.types index 61429f5de46..3ab499d448b 100644 --- a/tests/baselines/reference/templateLiteralTypes1.types +++ b/tests/baselines/reference/templateLiteralTypes1.types @@ -8,7 +8,7 @@ const createScopedActionType = (scope: S) => (type: T) => `${scope}/${type}` as `${S}/${T}` : (type: T) => `${S}/${T}` >type : T >`${scope}/${type}` as `${S}/${T}` : `${S}/${T}` ->`${scope}/${type}` : `${S}/${T}` +>`${scope}/${type}` : string >scope : S >type : T diff --git a/tests/baselines/reference/templateLiteralTypes2.errors.txt b/tests/baselines/reference/templateLiteralTypes2.errors.txt new file mode 100644 index 00000000000..f5e69d83563 --- /dev/null +++ b/tests/baselines/reference/templateLiteralTypes2.errors.txt @@ -0,0 +1,144 @@ +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(6,11): error TS2322: Type 'string' is not assignable to type '`abc${string}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(7,11): error TS2322: Type 'string' is not assignable to type '`abc${number}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(8,11): error TS2322: Type 'string' is not assignable to type '"abcfoo" | "abcbar" | "abcbaz"'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(9,11): error TS2322: Type 'string' is not assignable to type '`abc${T}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(21,11): error TS2322: Type 'string' is not assignable to type '`abc${string}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(23,11): error TS2322: Type 'string' is not assignable to type '`abc${string}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(29,11): error TS2322: Type 'string' is not assignable to type '`foo${string}` | `bar${string}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(32,11): error TS2322: Type 'string' is not assignable to type '`foo${string}` | `bar${string}` | `baz${string}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(43,11): error TS2322: Type 'string' is not assignable to type '`foo${string}`'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(67,9): error TS2322: Type '`foo${number}`' is not assignable to type 'String'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(68,9): error TS2322: Type '`foo${number}`' is not assignable to type 'Object'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(69,9): error TS2322: Type '`foo${number}`' is not assignable to type '{}'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(70,9): error TS2322: Type '`foo${number}`' is not assignable to type '{ length: number; }'. +tests/cases/conformance/types/literal/templateLiteralTypes2.ts(98,7): error TS2322: Type 'string' is not assignable to type '`${number}px`'. + + +==== tests/cases/conformance/types/literal/templateLiteralTypes2.ts (14 errors) ==== + function ft1(s: string, n: number, u: 'foo' | 'bar' | 'baz', t: T) { + const c1 = `abc${s}`; // `abc${string}` + const c2 = `abc${n}`; // `abc${number}` + const c3 = `abc${u}`; // "abcfoo" | "abcbar" | "abcbaz" + const c4 = `abc${t}`; // `abc${T} + const d1: `abc${string}` = `abc${s}`; + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`abc${string}`'. + const d2: `abc${number}` = `abc${n}`; + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`abc${number}`'. + const d3: `abc${'foo' | 'bar' | 'baz'}` = `abc${u}`; + ~~ +!!! error TS2322: Type 'string' is not assignable to type '"abcfoo" | "abcbar" | "abcbaz"'. + const d4: `abc${T}` = `abc${t}`; + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`abc${T}`'. + } + + function ft2(s: string) { + return `abc${s}`; + } + + function ft10(s: string) { + const c1 = `abc${s}`; // Widening type `abc${string}` + let v1 = c1; // Type string + const c2 = c1; // Widening type `abc${string}` + let v2 = c2; // Type string + const c3: `abc${string}` = `abc${s}`; + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`abc${string}`'. + let v3 = c3; // Type `abc${string}` + const c4: `abc${string}` = c1; // Type `abc${string}` + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`abc${string}`'. + let v4 = c4; // Type `abc${string}` + } + + function ft11(s: string, cond: boolean) { + const c1 = cond ? `foo${s}` : `bar${s}`; // widening `foo${string}` | widening `bar${string}` + const c2: `foo${string}` | `bar${string}` = c1; // `foo${string}` | `bar${string}` + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`foo${string}` | `bar${string}`'. + const c3 = cond ? c1 : c2; // `foo${string}` | `bar${string}` + const c4 = cond ? c3 : `baz${s}`; // `foo${string}` | `bar${string}` | widening `baz${string}` + const c5: `foo${string}` | `bar${string}` | `baz${string}` = c4; // `foo${string}` | `bar${string}` | `baz${string}` + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`foo${string}` | `bar${string}` | `baz${string}`'. + let v1 = c1; // string + let v2 = c2; // `foo${string}` | `bar${string}` + let v3 = c3; // `foo${string}` | `bar${string}` + let v4 = c4; // string + let v5 = c5; // `foo${string}` | `bar${string}` | `baz${string}` + } + + function ft12(s: string) { + const c1 = `foo${s}`; + let v1 = c1; + const c2: `foo${string}` = `foo${s}`; + ~~ +!!! error TS2322: Type 'string' is not assignable to type '`foo${string}`'. + let v2 = c2; + const c3 = `foo${s}` as `foo${string}`; + let v3 = c3; + const c4 = <`foo${string}`>`foo${s}`; + let v4 = c4; + const c5 = `foo${s}` as const; + let v5 = c5; + } + + declare function widening(x: T): T; + declare function nonWidening(x: T): T; + + function ft13(s: string, cond: boolean) { + let x1 = widening(`foo${s}`); + let x2 = widening(cond ? 'a' : `foo${s}`); + let y1 = nonWidening(`foo${s}`); + let y2 = nonWidening(cond ? 'a' : `foo${s}`); + } + + type T0 = string | `${number}px`; + + function ft14(t: `foo${number}`) { + let x1: string = t; + let x2: String = t; + ~~ +!!! error TS2322: Type '`foo${number}`' is not assignable to type 'String'. + let x3: Object = t; + ~~ +!!! error TS2322: Type '`foo${number}`' is not assignable to type 'Object'. + let x4: {} = t; + ~~ +!!! error TS2322: Type '`foo${number}`' is not assignable to type '{}'. + let x6: { length: number } = t; + ~~ +!!! error TS2322: Type '`foo${number}`' is not assignable to type '{ length: number; }'. + } + + // Repro from #41631 + + declare function takesLiteral(literal: T): T extends `foo.bar.${infer R}` ? R : unknown; + + const t1 = takesLiteral("foo.bar.baz"); // "baz" + const id2 = "foo.bar.baz"; + const t2 = takesLiteral(id2); // "baz" + + declare const someString: string; + const t3 = takesLiteral(`foo.bar.${someString}`); // string + + const id4 = `foo.bar.${someString}`; + const t4 = takesLiteral(id4); // string + + declare const someUnion: 'abc' | 'def' | 'ghi'; + const t5 = takesLiteral(`foo.bar.${someUnion}`); // "abc" | "def" | "ghi" + + // Repro from #41732 + + const pixelValue: number = 22; + + type PixelValueType = `${number}px`; + + const pixelString: PixelValueType = `22px`; + + const pixelStringWithTemplate: PixelValueType = `${pixelValue}px`; + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type '`${number}px`'. + \ No newline at end of file diff --git a/tests/baselines/reference/templateLiteralTypes2.js b/tests/baselines/reference/templateLiteralTypes2.js index ce87e6b5869..3c9276c1eb0 100644 --- a/tests/baselines/reference/templateLiteralTypes2.js +++ b/tests/baselines/reference/templateLiteralTypes2.js @@ -176,7 +176,7 @@ var pixelStringWithTemplate = pixelValue + "px"; //// [templateLiteralTypes2.d.ts] declare function ft1(s: string, n: number, u: 'foo' | 'bar' | 'baz', t: T): void; -declare function ft2(s: string): `abc${string}`; +declare function ft2(s: string): string; declare function ft10(s: string): void; declare function ft11(s: string, cond: boolean): void; declare function ft12(s: string): void; @@ -190,11 +190,11 @@ declare const t1: "baz"; declare const id2 = "foo.bar.baz"; declare const t2: "baz"; declare const someString: string; -declare const t3: string; +declare const t3: unknown; declare const id4: string; -declare const t4: string; +declare const t4: unknown; declare const someUnion: 'abc' | 'def' | 'ghi'; -declare const t5: "abc" | "def" | "ghi"; +declare const t5: unknown; declare const pixelValue: number; declare type PixelValueType = `${number}px`; declare const pixelString: PixelValueType; diff --git a/tests/baselines/reference/templateLiteralTypes2.types b/tests/baselines/reference/templateLiteralTypes2.types index 1013a43a7b4..cb9d7ae2595 100644 --- a/tests/baselines/reference/templateLiteralTypes2.types +++ b/tests/baselines/reference/templateLiteralTypes2.types @@ -7,52 +7,52 @@ function ft1(s: string, n: number, u: 'foo' | 'bar' | 'baz', t >t : T const c1 = `abc${s}`; // `abc${string}` ->c1 : `abc${string}` ->`abc${s}` : `abc${string}` +>c1 : string +>`abc${s}` : string >s : string const c2 = `abc${n}`; // `abc${number}` ->c2 : `abc${number}` ->`abc${n}` : `abc${number}` +>c2 : string +>`abc${n}` : string >n : number const c3 = `abc${u}`; // "abcfoo" | "abcbar" | "abcbaz" ->c3 : "abcfoo" | "abcbar" | "abcbaz" ->`abc${u}` : "abcfoo" | "abcbar" | "abcbaz" +>c3 : string +>`abc${u}` : string >u : "foo" | "bar" | "baz" const c4 = `abc${t}`; // `abc${T} ->c4 : `abc${T}` ->`abc${t}` : `abc${T}` +>c4 : string +>`abc${t}` : string >t : T const d1: `abc${string}` = `abc${s}`; >d1 : `abc${string}` ->`abc${s}` : `abc${string}` +>`abc${s}` : string >s : string const d2: `abc${number}` = `abc${n}`; >d2 : `abc${number}` ->`abc${n}` : `abc${number}` +>`abc${n}` : string >n : number const d3: `abc${'foo' | 'bar' | 'baz'}` = `abc${u}`; >d3 : "abcfoo" | "abcbar" | "abcbaz" ->`abc${u}` : "abcfoo" | "abcbar" | "abcbaz" +>`abc${u}` : string >u : "foo" | "bar" | "baz" const d4: `abc${T}` = `abc${t}`; >d4 : `abc${T}` ->`abc${t}` : `abc${T}` +>`abc${t}` : string >t : T } function ft2(s: string) { ->ft2 : (s: string) => `abc${string}` +>ft2 : (s: string) => string >s : string return `abc${s}`; ->`abc${s}` : `abc${string}` +>`abc${s}` : string >s : string } @@ -61,25 +61,25 @@ function ft10(s: string) { >s : string const c1 = `abc${s}`; // Widening type `abc${string}` ->c1 : `abc${string}` ->`abc${s}` : `abc${string}` +>c1 : string +>`abc${s}` : string >s : string let v1 = c1; // Type string >v1 : string ->c1 : `abc${string}` +>c1 : string const c2 = c1; // Widening type `abc${string}` ->c2 : `abc${string}` ->c1 : `abc${string}` +>c2 : string +>c1 : string let v2 = c2; // Type string >v2 : string ->c2 : `abc${string}` +>c2 : string const c3: `abc${string}` = `abc${s}`; >c3 : `abc${string}` ->`abc${s}` : `abc${string}` +>`abc${s}` : string >s : string let v3 = c3; // Type `abc${string}` @@ -88,7 +88,7 @@ function ft10(s: string) { const c4: `abc${string}` = c1; // Type `abc${string}` >c4 : `abc${string}` ->c1 : `abc${string}` +>c1 : string let v4 = c4; // Type `abc${string}` >v4 : `abc${string}` @@ -101,52 +101,52 @@ function ft11(s: string, cond: boolean) { >cond : boolean const c1 = cond ? `foo${s}` : `bar${s}`; // widening `foo${string}` | widening `bar${string}` ->c1 : `foo${string}` | `bar${string}` ->cond ? `foo${s}` : `bar${s}` : `foo${string}` | `bar${string}` +>c1 : string +>cond ? `foo${s}` : `bar${s}` : string >cond : boolean ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string ->`bar${s}` : `bar${string}` +>`bar${s}` : string >s : string const c2: `foo${string}` | `bar${string}` = c1; // `foo${string}` | `bar${string}` >c2 : `foo${string}` | `bar${string}` ->c1 : `foo${string}` | `bar${string}` +>c1 : string const c3 = cond ? c1 : c2; // `foo${string}` | `bar${string}` ->c3 : `foo${string}` | `bar${string}` ->cond ? c1 : c2 : `foo${string}` | `bar${string}` +>c3 : string +>cond ? c1 : c2 : string >cond : boolean ->c1 : `foo${string}` | `bar${string}` +>c1 : string >c2 : `foo${string}` | `bar${string}` const c4 = cond ? c3 : `baz${s}`; // `foo${string}` | `bar${string}` | widening `baz${string}` ->c4 : `foo${string}` | `bar${string}` | `baz${string}` ->cond ? c3 : `baz${s}` : `foo${string}` | `bar${string}` | `baz${string}` +>c4 : string +>cond ? c3 : `baz${s}` : string >cond : boolean ->c3 : `foo${string}` | `bar${string}` ->`baz${s}` : `baz${string}` +>c3 : string +>`baz${s}` : string >s : string const c5: `foo${string}` | `bar${string}` | `baz${string}` = c4; // `foo${string}` | `bar${string}` | `baz${string}` >c5 : `foo${string}` | `bar${string}` | `baz${string}` ->c4 : `foo${string}` | `bar${string}` | `baz${string}` +>c4 : string let v1 = c1; // string >v1 : string ->c1 : `foo${string}` | `bar${string}` +>c1 : string let v2 = c2; // `foo${string}` | `bar${string}` >v2 : `foo${string}` | `bar${string}` >c2 : `foo${string}` | `bar${string}` let v3 = c3; // `foo${string}` | `bar${string}` ->v3 : `foo${string}` | `bar${string}` ->c3 : `foo${string}` | `bar${string}` +>v3 : string +>c3 : string let v4 = c4; // string >v4 : string ->c4 : `foo${string}` | `bar${string}` | `baz${string}` +>c4 : string let v5 = c5; // `foo${string}` | `bar${string}` | `baz${string}` >v5 : `foo${string}` | `bar${string}` | `baz${string}` @@ -158,17 +158,17 @@ function ft12(s: string) { >s : string const c1 = `foo${s}`; ->c1 : `foo${string}` ->`foo${s}` : `foo${string}` +>c1 : string +>`foo${s}` : string >s : string let v1 = c1; >v1 : string ->c1 : `foo${string}` +>c1 : string const c2: `foo${string}` = `foo${s}`; >c2 : `foo${string}` ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string let v2 = c2; @@ -178,7 +178,7 @@ function ft12(s: string) { const c3 = `foo${s}` as `foo${string}`; >c3 : `foo${string}` >`foo${s}` as `foo${string}` : `foo${string}` ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string let v3 = c3; @@ -188,7 +188,7 @@ function ft12(s: string) { const c4 = <`foo${string}`>`foo${s}`; >c4 : `foo${string}` ><`foo${string}`>`foo${s}` : `foo${string}` ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string let v4 = c4; @@ -221,41 +221,41 @@ function ft13(s: string, cond: boolean) { let x1 = widening(`foo${s}`); >x1 : string ->widening(`foo${s}`) : `foo${string}` +>widening(`foo${s}`) : string >widening : (x: T) => T ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string let x2 = widening(cond ? 'a' : `foo${s}`); >x2 : string ->widening(cond ? 'a' : `foo${s}`) : `foo${string}` | "a" +>widening(cond ? 'a' : `foo${s}`) : string >widening : (x: T) => T ->cond ? 'a' : `foo${s}` : `foo${string}` | "a" +>cond ? 'a' : `foo${s}` : string >cond : boolean >'a' : "a" ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string let y1 = nonWidening(`foo${s}`); ->y1 : `foo${string}` ->nonWidening(`foo${s}`) : `foo${string}` +>y1 : string +>nonWidening(`foo${s}`) : string >nonWidening : (x: T) => T ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string let y2 = nonWidening(cond ? 'a' : `foo${s}`); ->y2 : `foo${string}` | "a" ->nonWidening(cond ? 'a' : `foo${s}`) : `foo${string}` | "a" +>y2 : string +>nonWidening(cond ? 'a' : `foo${s}`) : string >nonWidening : (x: T) => T ->cond ? 'a' : `foo${s}` : `foo${string}` | "a" +>cond ? 'a' : `foo${s}` : string >cond : boolean >'a' : "a" ->`foo${s}` : `foo${string}` +>`foo${s}` : string >s : string } type T0 = string | `${number}px`; ->T0 : string +>T0 : T0 function ft14(t: `foo${number}`) { >ft14 : (t: `foo${number}`) => void @@ -309,31 +309,31 @@ declare const someString: string; >someString : string const t3 = takesLiteral(`foo.bar.${someString}`); // string ->t3 : string ->takesLiteral(`foo.bar.${someString}`) : string +>t3 : unknown +>takesLiteral(`foo.bar.${someString}`) : unknown >takesLiteral : (literal: T) => T extends `foo.bar.${infer R}` ? R : unknown ->`foo.bar.${someString}` : `foo.bar.${string}` +>`foo.bar.${someString}` : string >someString : string const id4 = `foo.bar.${someString}`; ->id4 : `foo.bar.${string}` ->`foo.bar.${someString}` : `foo.bar.${string}` +>id4 : string +>`foo.bar.${someString}` : string >someString : string const t4 = takesLiteral(id4); // string ->t4 : string ->takesLiteral(id4) : string +>t4 : unknown +>takesLiteral(id4) : unknown >takesLiteral : (literal: T) => T extends `foo.bar.${infer R}` ? R : unknown ->id4 : `foo.bar.${string}` +>id4 : string declare const someUnion: 'abc' | 'def' | 'ghi'; >someUnion : "abc" | "def" | "ghi" const t5 = takesLiteral(`foo.bar.${someUnion}`); // "abc" | "def" | "ghi" ->t5 : "abc" | "def" | "ghi" ->takesLiteral(`foo.bar.${someUnion}`) : "abc" | "def" | "ghi" +>t5 : unknown +>takesLiteral(`foo.bar.${someUnion}`) : unknown >takesLiteral : (literal: T) => T extends `foo.bar.${infer R}` ? R : unknown ->`foo.bar.${someUnion}` : "foo.bar.abc" | "foo.bar.def" | "foo.bar.ghi" +>`foo.bar.${someUnion}` : string >someUnion : "abc" | "def" | "ghi" // Repro from #41732 @@ -351,6 +351,6 @@ const pixelString: PixelValueType = `22px`; const pixelStringWithTemplate: PixelValueType = `${pixelValue}px`; >pixelStringWithTemplate : `${number}px` ->`${pixelValue}px` : `${number}px` +>`${pixelValue}px` : string >pixelValue : number diff --git a/tests/baselines/reference/templateStringBinaryOperations.types b/tests/baselines/reference/templateStringBinaryOperations.types index f5546575025..01d306487ee 100644 --- a/tests/baselines/reference/templateStringBinaryOperations.types +++ b/tests/baselines/reference/templateStringBinaryOperations.types @@ -3,55 +3,55 @@ var a = 1 + `${ 3 }`; >a : string >1 + `${ 3 }` : string >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 + `2${ 3 }`; >b : string >1 + `2${ 3 }` : string >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 + `${ 3 }4`; >c : string >1 + `${ 3 }4` : string >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 + `2${ 3 }4`; >d : string >1 + `2${ 3 }4` : string >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` + 5; >e : string >`${ 3 }` + 5 : string ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` + 5; >f : string >`2${ 3 }` + 5 : string ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` + 5; >g : string >`${ 3 }4` + 5 : string ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` + 5; >h : string >`2${ 3 }4` + 5 : string ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -60,7 +60,7 @@ var i = 1 + `${ 3 }` + 5; >1 + `${ 3 }` + 5 : string >1 + `${ 3 }` : string >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 @@ -69,7 +69,7 @@ var j = 1 + `2${ 3 }` + 5; >1 + `2${ 3 }` + 5 : string >1 + `2${ 3 }` : string >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 @@ -78,7 +78,7 @@ var k = 1 + `${ 3 }4` + 5; >1 + `${ 3 }4` + 5 : string >1 + `${ 3 }4` : string >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 @@ -87,7 +87,7 @@ var l = 1 + `2${ 3 }4` + 5; >1 + `2${ 3 }4` + 5 : string >1 + `2${ 3 }4` : string >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -95,7 +95,7 @@ var a2 = 1 + `${ 3 - 4 }`; >a2 : string >1 + `${ 3 - 4 }` : string >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -104,7 +104,7 @@ var b2 = 1 + `2${ 3 - 4 }`; >b2 : string >1 + `2${ 3 - 4 }` : string >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -113,7 +113,7 @@ var c2 = 1 + `${ 3 - 4 }5`; >c2 : string >1 + `${ 3 - 4 }5` : string >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -122,7 +122,7 @@ var d2 = 1 + `2${ 3 - 4 }5`; >d2 : string >1 + `2${ 3 - 4 }5` : string >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -130,7 +130,7 @@ var d2 = 1 + `2${ 3 - 4 }5`; var e2 = `${ 3 - 4 }` + 6; >e2 : string >`${ 3 - 4 }` + 6 : string ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -139,7 +139,7 @@ var e2 = `${ 3 - 4 }` + 6; var f2 = `2${ 3 - 4 }` + 6; >f2 : string >`2${ 3 - 4 }` + 6 : string ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -148,7 +148,7 @@ var f2 = `2${ 3 - 4 }` + 6; var g2 = `${ 3 - 4 }5` + 6; >g2 : string >`${ 3 - 4 }5` + 6 : string ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -157,7 +157,7 @@ var g2 = `${ 3 - 4 }5` + 6; var h2 = `2${ 3 - 4 }5` + 6; >h2 : string >`2${ 3 - 4 }5` + 6 : string ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -168,7 +168,7 @@ var i2 = 1 + `${ 3 - 4 }` + 6; >1 + `${ 3 - 4 }` + 6 : string >1 + `${ 3 - 4 }` : string >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -179,7 +179,7 @@ var j2 = 1 + `2${ 3 - 4 }` + 6; >1 + `2${ 3 - 4 }` + 6 : string >1 + `2${ 3 - 4 }` : string >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -190,7 +190,7 @@ var k2 = 1 + `${ 3 - 4 }5` + 6; >1 + `${ 3 - 4 }5` + 6 : string >1 + `${ 3 - 4 }5` : string >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -201,7 +201,7 @@ var l2 = 1 + `2${ 3 - 4 }5` + 6; >1 + `2${ 3 - 4 }5` + 6 : string >1 + `2${ 3 - 4 }5` : string >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -211,7 +211,7 @@ var a3 = 1 + `${ 3 * 4 }`; >a3 : string >1 + `${ 3 * 4 }` : string >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -220,7 +220,7 @@ var b3 = 1 + `2${ 3 * 4 }`; >b3 : string >1 + `2${ 3 * 4 }` : string >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -229,7 +229,7 @@ var c3 = 1 + `${ 3 * 4 }5`; >c3 : string >1 + `${ 3 * 4 }5` : string >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -238,7 +238,7 @@ var d3 = 1 + `2${ 3 * 4 }5`; >d3 : string >1 + `2${ 3 * 4 }5` : string >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -246,7 +246,7 @@ var d3 = 1 + `2${ 3 * 4 }5`; var e3 = `${ 3 * 4 }` + 6; >e3 : string >`${ 3 * 4 }` + 6 : string ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -255,7 +255,7 @@ var e3 = `${ 3 * 4 }` + 6; var f3 = `2${ 3 * 4 }` + 6; >f3 : string >`2${ 3 * 4 }` + 6 : string ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -264,7 +264,7 @@ var f3 = `2${ 3 * 4 }` + 6; var g3 = `${ 3 * 4 }5` + 6; >g3 : string >`${ 3 * 4 }5` + 6 : string ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -273,7 +273,7 @@ var g3 = `${ 3 * 4 }5` + 6; var h3 = `2${ 3 * 4 }5` + 6; >h3 : string >`2${ 3 * 4 }5` + 6 : string ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -284,7 +284,7 @@ var i3 = 1 + `${ 3 * 4 }` + 6; >1 + `${ 3 * 4 }` + 6 : string >1 + `${ 3 * 4 }` : string >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -295,7 +295,7 @@ var j3 = 1 + `2${ 3 * 4 }` + 6; >1 + `2${ 3 * 4 }` + 6 : string >1 + `2${ 3 * 4 }` : string >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -306,7 +306,7 @@ var k3 = 1 + `${ 3 * 4 }5` + 6; >1 + `${ 3 * 4 }5` + 6 : string >1 + `${ 3 * 4 }5` : string >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -317,7 +317,7 @@ var l3 = 1 + `2${ 3 * 4 }5` + 6; >1 + `2${ 3 * 4 }5` + 6 : string >1 + `2${ 3 * 4 }5` : string >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -327,7 +327,7 @@ var a4 = 1 + `${ 3 & 4 }`; >a4 : string >1 + `${ 3 & 4 }` : string >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -336,7 +336,7 @@ var b4 = 1 + `2${ 3 & 4 }`; >b4 : string >1 + `2${ 3 & 4 }` : string >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -345,7 +345,7 @@ var c4 = 1 + `${ 3 & 4 }5`; >c4 : string >1 + `${ 3 & 4 }5` : string >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -354,7 +354,7 @@ var d4 = 1 + `2${ 3 & 4 }5`; >d4 : string >1 + `2${ 3 & 4 }5` : string >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -362,7 +362,7 @@ var d4 = 1 + `2${ 3 & 4 }5`; var e4 = `${ 3 & 4 }` + 6; >e4 : string >`${ 3 & 4 }` + 6 : string ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -371,7 +371,7 @@ var e4 = `${ 3 & 4 }` + 6; var f4 = `2${ 3 & 4 }` + 6; >f4 : string >`2${ 3 & 4 }` + 6 : string ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -380,7 +380,7 @@ var f4 = `2${ 3 & 4 }` + 6; var g4 = `${ 3 & 4 }5` + 6; >g4 : string >`${ 3 & 4 }5` + 6 : string ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -389,7 +389,7 @@ var g4 = `${ 3 & 4 }5` + 6; var h4 = `2${ 3 & 4 }5` + 6; >h4 : string >`2${ 3 & 4 }5` + 6 : string ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -400,7 +400,7 @@ var i4 = 1 + `${ 3 & 4 }` + 6; >1 + `${ 3 & 4 }` + 6 : string >1 + `${ 3 & 4 }` : string >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -411,7 +411,7 @@ var j4 = 1 + `2${ 3 & 4 }` + 6; >1 + `2${ 3 & 4 }` + 6 : string >1 + `2${ 3 & 4 }` : string >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -422,7 +422,7 @@ var k4 = 1 + `${ 3 & 4 }5` + 6; >1 + `${ 3 & 4 }5` + 6 : string >1 + `${ 3 & 4 }5` : string >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -433,7 +433,7 @@ var l4 = 1 + `2${ 3 & 4 }5` + 6; >1 + `2${ 3 & 4 }5` + 6 : string >1 + `2${ 3 & 4 }5` : string >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 diff --git a/tests/baselines/reference/templateStringBinaryOperationsES6.types b/tests/baselines/reference/templateStringBinaryOperationsES6.types index ebbc7bcf88c..0ac9775a655 100644 --- a/tests/baselines/reference/templateStringBinaryOperationsES6.types +++ b/tests/baselines/reference/templateStringBinaryOperationsES6.types @@ -3,55 +3,55 @@ var a = 1 + `${ 3 }`; >a : string >1 + `${ 3 }` : string >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 + `2${ 3 }`; >b : string >1 + `2${ 3 }` : string >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 + `${ 3 }4`; >c : string >1 + `${ 3 }4` : string >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 + `2${ 3 }4`; >d : string >1 + `2${ 3 }4` : string >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` + 5; >e : string >`${ 3 }` + 5 : string ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` + 5; >f : string >`2${ 3 }` + 5 : string ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` + 5; >g : string >`${ 3 }4` + 5 : string ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` + 5; >h : string >`2${ 3 }4` + 5 : string ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -60,7 +60,7 @@ var i = 1 + `${ 3 }` + 5; >1 + `${ 3 }` + 5 : string >1 + `${ 3 }` : string >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 @@ -69,7 +69,7 @@ var j = 1 + `2${ 3 }` + 5; >1 + `2${ 3 }` + 5 : string >1 + `2${ 3 }` : string >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 @@ -78,7 +78,7 @@ var k = 1 + `${ 3 }4` + 5; >1 + `${ 3 }4` + 5 : string >1 + `${ 3 }4` : string >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 @@ -87,7 +87,7 @@ var l = 1 + `2${ 3 }4` + 5; >1 + `2${ 3 }4` + 5 : string >1 + `2${ 3 }4` : string >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -95,7 +95,7 @@ var a2 = 1 + `${ 3 - 4 }`; >a2 : string >1 + `${ 3 - 4 }` : string >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -104,7 +104,7 @@ var b2 = 1 + `2${ 3 - 4 }`; >b2 : string >1 + `2${ 3 - 4 }` : string >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -113,7 +113,7 @@ var c2 = 1 + `${ 3 - 4 }5`; >c2 : string >1 + `${ 3 - 4 }5` : string >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -122,7 +122,7 @@ var d2 = 1 + `2${ 3 - 4 }5`; >d2 : string >1 + `2${ 3 - 4 }5` : string >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -130,7 +130,7 @@ var d2 = 1 + `2${ 3 - 4 }5`; var e2 = `${ 3 - 4 }` + 6; >e2 : string >`${ 3 - 4 }` + 6 : string ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -139,7 +139,7 @@ var e2 = `${ 3 - 4 }` + 6; var f2 = `2${ 3 - 4 }` + 6; >f2 : string >`2${ 3 - 4 }` + 6 : string ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -148,7 +148,7 @@ var f2 = `2${ 3 - 4 }` + 6; var g2 = `${ 3 - 4 }5` + 6; >g2 : string >`${ 3 - 4 }5` + 6 : string ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -157,7 +157,7 @@ var g2 = `${ 3 - 4 }5` + 6; var h2 = `2${ 3 - 4 }5` + 6; >h2 : string >`2${ 3 - 4 }5` + 6 : string ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -168,7 +168,7 @@ var i2 = 1 + `${ 3 - 4 }` + 6; >1 + `${ 3 - 4 }` + 6 : string >1 + `${ 3 - 4 }` : string >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -179,7 +179,7 @@ var j2 = 1 + `2${ 3 - 4 }` + 6; >1 + `2${ 3 - 4 }` + 6 : string >1 + `2${ 3 - 4 }` : string >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -190,7 +190,7 @@ var k2 = 1 + `${ 3 - 4 }5` + 6; >1 + `${ 3 - 4 }5` + 6 : string >1 + `${ 3 - 4 }5` : string >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -201,7 +201,7 @@ var l2 = 1 + `2${ 3 - 4 }5` + 6; >1 + `2${ 3 - 4 }5` + 6 : string >1 + `2${ 3 - 4 }5` : string >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -211,7 +211,7 @@ var a3 = 1 + `${ 3 * 4 }`; >a3 : string >1 + `${ 3 * 4 }` : string >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -220,7 +220,7 @@ var b3 = 1 + `2${ 3 * 4 }`; >b3 : string >1 + `2${ 3 * 4 }` : string >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -229,7 +229,7 @@ var c3 = 1 + `${ 3 * 4 }5`; >c3 : string >1 + `${ 3 * 4 }5` : string >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -238,7 +238,7 @@ var d3 = 1 + `2${ 3 * 4 }5`; >d3 : string >1 + `2${ 3 * 4 }5` : string >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -246,7 +246,7 @@ var d3 = 1 + `2${ 3 * 4 }5`; var e3 = `${ 3 * 4 }` + 6; >e3 : string >`${ 3 * 4 }` + 6 : string ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -255,7 +255,7 @@ var e3 = `${ 3 * 4 }` + 6; var f3 = `2${ 3 * 4 }` + 6; >f3 : string >`2${ 3 * 4 }` + 6 : string ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -264,7 +264,7 @@ var f3 = `2${ 3 * 4 }` + 6; var g3 = `${ 3 * 4 }5` + 6; >g3 : string >`${ 3 * 4 }5` + 6 : string ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -273,7 +273,7 @@ var g3 = `${ 3 * 4 }5` + 6; var h3 = `2${ 3 * 4 }5` + 6; >h3 : string >`2${ 3 * 4 }5` + 6 : string ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -284,7 +284,7 @@ var i3 = 1 + `${ 3 * 4 }` + 6; >1 + `${ 3 * 4 }` + 6 : string >1 + `${ 3 * 4 }` : string >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -295,7 +295,7 @@ var j3 = 1 + `2${ 3 * 4 }` + 6; >1 + `2${ 3 * 4 }` + 6 : string >1 + `2${ 3 * 4 }` : string >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -306,7 +306,7 @@ var k3 = 1 + `${ 3 * 4 }5` + 6; >1 + `${ 3 * 4 }5` + 6 : string >1 + `${ 3 * 4 }5` : string >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -317,7 +317,7 @@ var l3 = 1 + `2${ 3 * 4 }5` + 6; >1 + `2${ 3 * 4 }5` + 6 : string >1 + `2${ 3 * 4 }5` : string >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -327,7 +327,7 @@ var a4 = 1 + `${ 3 & 4 }`; >a4 : string >1 + `${ 3 & 4 }` : string >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -336,7 +336,7 @@ var b4 = 1 + `2${ 3 & 4 }`; >b4 : string >1 + `2${ 3 & 4 }` : string >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -345,7 +345,7 @@ var c4 = 1 + `${ 3 & 4 }5`; >c4 : string >1 + `${ 3 & 4 }5` : string >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -354,7 +354,7 @@ var d4 = 1 + `2${ 3 & 4 }5`; >d4 : string >1 + `2${ 3 & 4 }5` : string >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -362,7 +362,7 @@ var d4 = 1 + `2${ 3 & 4 }5`; var e4 = `${ 3 & 4 }` + 6; >e4 : string >`${ 3 & 4 }` + 6 : string ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -371,7 +371,7 @@ var e4 = `${ 3 & 4 }` + 6; var f4 = `2${ 3 & 4 }` + 6; >f4 : string >`2${ 3 & 4 }` + 6 : string ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -380,7 +380,7 @@ var f4 = `2${ 3 & 4 }` + 6; var g4 = `${ 3 & 4 }5` + 6; >g4 : string >`${ 3 & 4 }5` + 6 : string ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -389,7 +389,7 @@ var g4 = `${ 3 & 4 }5` + 6; var h4 = `2${ 3 & 4 }5` + 6; >h4 : string >`2${ 3 & 4 }5` + 6 : string ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -400,7 +400,7 @@ var i4 = 1 + `${ 3 & 4 }` + 6; >1 + `${ 3 & 4 }` + 6 : string >1 + `${ 3 & 4 }` : string >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -411,7 +411,7 @@ var j4 = 1 + `2${ 3 & 4 }` + 6; >1 + `2${ 3 & 4 }` + 6 : string >1 + `2${ 3 & 4 }` : string >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -422,7 +422,7 @@ var k4 = 1 + `${ 3 & 4 }5` + 6; >1 + `${ 3 & 4 }5` + 6 : string >1 + `${ 3 & 4 }5` : string >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -433,7 +433,7 @@ var l4 = 1 + `2${ 3 & 4 }5` + 6; >1 + `2${ 3 & 4 }5` + 6 : string >1 + `2${ 3 & 4 }5` : string >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 diff --git a/tests/baselines/reference/templateStringBinaryOperationsES6Invalid.types b/tests/baselines/reference/templateStringBinaryOperationsES6Invalid.types index 4c859c9108b..8782991b710 100644 --- a/tests/baselines/reference/templateStringBinaryOperationsES6Invalid.types +++ b/tests/baselines/reference/templateStringBinaryOperationsES6Invalid.types @@ -3,55 +3,55 @@ var a = 1 - `${ 3 }`; >a : number >1 - `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 - `2${ 3 }`; >b : number >1 - `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 - `${ 3 }4`; >c : number >1 - `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 - `2${ 3 }4`; >d : number >1 - `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` - 5; >e : number >`${ 3 }` - 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` - 5; >f : number >`2${ 3 }` - 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` - 5; >g : number >`${ 3 }4` - 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` - 5; >h : number >`2${ 3 }4` - 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -59,55 +59,55 @@ var a2 = 1 * `${ 3 }`; >a2 : number >1 * `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b2 = 1 * `2${ 3 }`; >b2 : number >1 * `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c2 = 1 * `${ 3 }4`; >c2 : number >1 * `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d2 = 1 * `2${ 3 }4`; >d2 : number >1 * `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e2 = `${ 3 }` * 5; >e2 : number >`${ 3 }` * 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f2 = `2${ 3 }` * 5; >f2 : number >`2${ 3 }` * 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g2 = `${ 3 }4` * 5; >g2 : number >`${ 3 }4` * 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h2 = `2${ 3 }4` * 5; >h2 : number >`2${ 3 }4` * 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -115,55 +115,55 @@ var a3 = 1 & `${ 3 }`; >a3 : number >1 & `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b3 = 1 & `2${ 3 }`; >b3 : number >1 & `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c3 = 1 & `${ 3 }4`; >c3 : number >1 & `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d3 = 1 & `2${ 3 }4`; >d3 : number >1 & `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e3 = `${ 3 }` & 5; >e3 : number >`${ 3 }` & 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f3 = `2${ 3 }` & 5; >f3 : number >`2${ 3 }` & 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g3 = `${ 3 }4` & 5; >g3 : number >`${ 3 }4` & 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h3 = `2${ 3 }4` & 5; >h3 : number >`2${ 3 }4` & 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -171,7 +171,7 @@ var a4 = 1 - `${ 3 - 4 }`; >a4 : number >1 - `${ 3 - 4 }` : number >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -180,7 +180,7 @@ var b4 = 1 - `2${ 3 - 4 }`; >b4 : number >1 - `2${ 3 - 4 }` : number >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -189,7 +189,7 @@ var c4 = 1 - `${ 3 - 4 }5`; >c4 : number >1 - `${ 3 - 4 }5` : number >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -198,7 +198,7 @@ var d4 = 1 - `2${ 3 - 4 }5`; >d4 : number >1 - `2${ 3 - 4 }5` : number >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -206,7 +206,7 @@ var d4 = 1 - `2${ 3 - 4 }5`; var e4 = `${ 3 - 4 }` - 6; >e4 : number >`${ 3 - 4 }` - 6 : number ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -215,7 +215,7 @@ var e4 = `${ 3 - 4 }` - 6; var f4 = `2${ 3 - 4 }` - 6; >f4 : number >`2${ 3 - 4 }` - 6 : number ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -224,7 +224,7 @@ var f4 = `2${ 3 - 4 }` - 6; var g4 = `${ 3 - 4 }5` - 6; >g4 : number >`${ 3 - 4 }5` - 6 : number ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -233,7 +233,7 @@ var g4 = `${ 3 - 4 }5` - 6; var h4 = `2${ 3 - 4 }5` - 6; >h4 : number >`2${ 3 - 4 }5` - 6 : number ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -243,7 +243,7 @@ var a5 = 1 - `${ 3 * 4 }`; >a5 : number >1 - `${ 3 * 4 }` : number >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -252,7 +252,7 @@ var b5 = 1 - `2${ 3 * 4 }`; >b5 : number >1 - `2${ 3 * 4 }` : number >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -261,7 +261,7 @@ var c5 = 1 - `${ 3 * 4 }5`; >c5 : number >1 - `${ 3 * 4 }5` : number >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -270,7 +270,7 @@ var d5 = 1 - `2${ 3 * 4 }5`; >d5 : number >1 - `2${ 3 * 4 }5` : number >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -278,7 +278,7 @@ var d5 = 1 - `2${ 3 * 4 }5`; var e5 = `${ 3 * 4 }` - 6; >e5 : number >`${ 3 * 4 }` - 6 : number ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -287,7 +287,7 @@ var e5 = `${ 3 * 4 }` - 6; var f5 = `2${ 3 * 4 }` - 6; >f5 : number >`2${ 3 * 4 }` - 6 : number ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -296,7 +296,7 @@ var f5 = `2${ 3 * 4 }` - 6; var g5 = `${ 3 * 4 }5` - 6; >g5 : number >`${ 3 * 4 }5` - 6 : number ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -305,7 +305,7 @@ var g5 = `${ 3 * 4 }5` - 6; var h5 = `2${ 3 * 4 }5` - 6; >h5 : number >`2${ 3 * 4 }5` - 6 : number ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -315,7 +315,7 @@ var a6 = 1 - `${ 3 & 4 }`; >a6 : number >1 - `${ 3 & 4 }` : number >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -324,7 +324,7 @@ var b6 = 1 - `2${ 3 & 4 }`; >b6 : number >1 - `2${ 3 & 4 }` : number >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -333,7 +333,7 @@ var c6 = 1 - `${ 3 & 4 }5`; >c6 : number >1 - `${ 3 & 4 }5` : number >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -342,7 +342,7 @@ var d6 = 1 - `2${ 3 & 4 }5`; >d6 : number >1 - `2${ 3 & 4 }5` : number >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -350,7 +350,7 @@ var d6 = 1 - `2${ 3 & 4 }5`; var e6 = `${ 3 & 4 }` - 6; >e6 : number >`${ 3 & 4 }` - 6 : number ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -359,7 +359,7 @@ var e6 = `${ 3 & 4 }` - 6; var f6 = `2${ 3 & 4 }` - 6; >f6 : number >`2${ 3 & 4 }` - 6 : number ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -368,7 +368,7 @@ var f6 = `2${ 3 & 4 }` - 6; var g6 = `${ 3 & 4 }5` - 6; >g6 : number >`${ 3 & 4 }5` - 6 : number ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -377,7 +377,7 @@ var g6 = `${ 3 & 4 }5` - 6; var h6 = `2${ 3 & 4 }5` - 6; >h6 : number >`2${ 3 & 4 }5` - 6 : number ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -387,7 +387,7 @@ var a7 = 1 * `${ 3 - 4 }`; >a7 : number >1 * `${ 3 - 4 }` : number >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -396,7 +396,7 @@ var b7 = 1 * `2${ 3 - 4 }`; >b7 : number >1 * `2${ 3 - 4 }` : number >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -405,7 +405,7 @@ var c7 = 1 * `${ 3 - 4 }5`; >c7 : number >1 * `${ 3 - 4 }5` : number >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -414,7 +414,7 @@ var d7 = 1 * `2${ 3 - 4 }5`; >d7 : number >1 * `2${ 3 - 4 }5` : number >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -422,7 +422,7 @@ var d7 = 1 * `2${ 3 - 4 }5`; var e7 = `${ 3 - 4 }` * 6; >e7 : number >`${ 3 - 4 }` * 6 : number ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -431,7 +431,7 @@ var e7 = `${ 3 - 4 }` * 6; var f7 = `2${ 3 - 4 }` * 6; >f7 : number >`2${ 3 - 4 }` * 6 : number ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -440,7 +440,7 @@ var f7 = `2${ 3 - 4 }` * 6; var g7 = `${ 3 - 4 }5` * 6; >g7 : number >`${ 3 - 4 }5` * 6 : number ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -449,7 +449,7 @@ var g7 = `${ 3 - 4 }5` * 6; var h7 = `2${ 3 - 4 }5` * 6; >h7 : number >`2${ 3 - 4 }5` * 6 : number ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -459,7 +459,7 @@ var a8 = 1 * `${ 3 * 4 }`; >a8 : number >1 * `${ 3 * 4 }` : number >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -468,7 +468,7 @@ var b8 = 1 * `2${ 3 * 4 }`; >b8 : number >1 * `2${ 3 * 4 }` : number >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -477,7 +477,7 @@ var c8 = 1 * `${ 3 * 4 }5`; >c8 : number >1 * `${ 3 * 4 }5` : number >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -486,7 +486,7 @@ var d8 = 1 * `2${ 3 * 4 }5`; >d8 : number >1 * `2${ 3 * 4 }5` : number >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -494,7 +494,7 @@ var d8 = 1 * `2${ 3 * 4 }5`; var e8 = `${ 3 * 4 }` * 6; >e8 : number >`${ 3 * 4 }` * 6 : number ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -503,7 +503,7 @@ var e8 = `${ 3 * 4 }` * 6; var f8 = `2${ 3 * 4 }` * 6; >f8 : number >`2${ 3 * 4 }` * 6 : number ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -512,7 +512,7 @@ var f8 = `2${ 3 * 4 }` * 6; var g8 = `${ 3 * 4 }5` * 6; >g8 : number >`${ 3 * 4 }5` * 6 : number ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -521,7 +521,7 @@ var g8 = `${ 3 * 4 }5` * 6; var h8 = `2${ 3 * 4 }5` * 6; >h8 : number >`2${ 3 * 4 }5` * 6 : number ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -531,7 +531,7 @@ var a9 = 1 * `${ 3 & 4 }`; >a9 : number >1 * `${ 3 & 4 }` : number >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -540,7 +540,7 @@ var b9 = 1 * `2${ 3 & 4 }`; >b9 : number >1 * `2${ 3 & 4 }` : number >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -549,7 +549,7 @@ var c9 = 1 * `${ 3 & 4 }5`; >c9 : number >1 * `${ 3 & 4 }5` : number >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -558,7 +558,7 @@ var d9 = 1 * `2${ 3 & 4 }5`; >d9 : number >1 * `2${ 3 & 4 }5` : number >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -566,7 +566,7 @@ var d9 = 1 * `2${ 3 & 4 }5`; var e9 = `${ 3 & 4 }` * 6; >e9 : number >`${ 3 & 4 }` * 6 : number ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -575,7 +575,7 @@ var e9 = `${ 3 & 4 }` * 6; var f9 = `2${ 3 & 4 }` * 6; >f9 : number >`2${ 3 & 4 }` * 6 : number ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -584,7 +584,7 @@ var f9 = `2${ 3 & 4 }` * 6; var g9 = `${ 3 & 4 }5` * 6; >g9 : number >`${ 3 & 4 }5` * 6 : number ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -593,7 +593,7 @@ var g9 = `${ 3 & 4 }5` * 6; var h9 = `2${ 3 & 4 }5` * 6; >h9 : number >`2${ 3 & 4 }5` * 6 : number ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -603,7 +603,7 @@ var aa = 1 & `${ 3 - 4 }`; >aa : number >1 & `${ 3 - 4 }` : number >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -612,7 +612,7 @@ var ba = 1 & `2${ 3 - 4 }`; >ba : number >1 & `2${ 3 - 4 }` : number >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -621,7 +621,7 @@ var ca = 1 & `${ 3 - 4 }5`; >ca : number >1 & `${ 3 - 4 }5` : number >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -630,7 +630,7 @@ var da = 1 & `2${ 3 - 4 }5`; >da : number >1 & `2${ 3 - 4 }5` : number >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -638,7 +638,7 @@ var da = 1 & `2${ 3 - 4 }5`; var ea = `${ 3 - 4 }` & 6; >ea : number >`${ 3 - 4 }` & 6 : number ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -647,7 +647,7 @@ var ea = `${ 3 - 4 }` & 6; var fa = `2${ 3 - 4 }` & 6; >fa : number >`2${ 3 - 4 }` & 6 : number ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -656,7 +656,7 @@ var fa = `2${ 3 - 4 }` & 6; var ga = `${ 3 - 4 }5` & 6; >ga : number >`${ 3 - 4 }5` & 6 : number ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -665,7 +665,7 @@ var ga = `${ 3 - 4 }5` & 6; var ha = `2${ 3 - 4 }5` & 6; >ha : number >`2${ 3 - 4 }5` & 6 : number ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -675,7 +675,7 @@ var ab = 1 & `${ 3 * 4 }`; >ab : number >1 & `${ 3 * 4 }` : number >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -684,7 +684,7 @@ var bb = 1 & `2${ 3 * 4 }`; >bb : number >1 & `2${ 3 * 4 }` : number >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -693,7 +693,7 @@ var cb = 1 & `${ 3 * 4 }5`; >cb : number >1 & `${ 3 * 4 }5` : number >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -702,7 +702,7 @@ var db = 1 & `2${ 3 * 4 }5`; >db : number >1 & `2${ 3 * 4 }5` : number >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -710,7 +710,7 @@ var db = 1 & `2${ 3 * 4 }5`; var eb = `${ 3 * 4 }` & 6; >eb : number >`${ 3 * 4 }` & 6 : number ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -719,7 +719,7 @@ var eb = `${ 3 * 4 }` & 6; var fb = `2${ 3 * 4 }` & 6; >fb : number >`2${ 3 * 4 }` & 6 : number ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -728,7 +728,7 @@ var fb = `2${ 3 * 4 }` & 6; var gb = `${ 3 * 4 }5` & 6; >gb : number >`${ 3 * 4 }5` & 6 : number ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -737,7 +737,7 @@ var gb = `${ 3 * 4 }5` & 6; var hb = `2${ 3 * 4 }5` & 6; >hb : number >`2${ 3 * 4 }5` & 6 : number ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -747,7 +747,7 @@ var ac = 1 & `${ 3 & 4 }`; >ac : number >1 & `${ 3 & 4 }` : number >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -756,7 +756,7 @@ var bc = 1 & `2${ 3 & 4 }`; >bc : number >1 & `2${ 3 & 4 }` : number >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -765,7 +765,7 @@ var cc = 1 & `${ 3 & 4 }5`; >cc : number >1 & `${ 3 & 4 }5` : number >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -774,7 +774,7 @@ var dc = 1 & `2${ 3 & 4 }5`; >dc : number >1 & `2${ 3 & 4 }5` : number >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -782,7 +782,7 @@ var dc = 1 & `2${ 3 & 4 }5`; var ec = `${ 3 & 4 }` & 6; >ec : number >`${ 3 & 4 }` & 6 : number ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -791,7 +791,7 @@ var ec = `${ 3 & 4 }` & 6; var fc = `2${ 3 & 4 }` & 6; >fc : number >`2${ 3 & 4 }` & 6 : number ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -800,7 +800,7 @@ var fc = `2${ 3 & 4 }` & 6; var gc = `${ 3 & 4 }5` & 6; >gc : number >`${ 3 & 4 }5` & 6 : number ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -809,7 +809,7 @@ var gc = `${ 3 & 4 }5` & 6; var hc = `2${ 3 & 4 }5` & 6; >hc : number >`2${ 3 & 4 }5` & 6 : number ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 diff --git a/tests/baselines/reference/templateStringBinaryOperationsInvalid.types b/tests/baselines/reference/templateStringBinaryOperationsInvalid.types index 2bfb6261465..37f0149ad74 100644 --- a/tests/baselines/reference/templateStringBinaryOperationsInvalid.types +++ b/tests/baselines/reference/templateStringBinaryOperationsInvalid.types @@ -3,55 +3,55 @@ var a = 1 - `${ 3 }`; >a : number >1 - `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 - `2${ 3 }`; >b : number >1 - `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 - `${ 3 }4`; >c : number >1 - `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 - `2${ 3 }4`; >d : number >1 - `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` - 5; >e : number >`${ 3 }` - 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` - 5; >f : number >`2${ 3 }` - 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` - 5; >g : number >`${ 3 }4` - 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` - 5; >h : number >`2${ 3 }4` - 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -59,55 +59,55 @@ var a2 = 1 * `${ 3 }`; >a2 : number >1 * `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b2 = 1 * `2${ 3 }`; >b2 : number >1 * `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c2 = 1 * `${ 3 }4`; >c2 : number >1 * `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d2 = 1 * `2${ 3 }4`; >d2 : number >1 * `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e2 = `${ 3 }` * 5; >e2 : number >`${ 3 }` * 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f2 = `2${ 3 }` * 5; >f2 : number >`2${ 3 }` * 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g2 = `${ 3 }4` * 5; >g2 : number >`${ 3 }4` * 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h2 = `2${ 3 }4` * 5; >h2 : number >`2${ 3 }4` * 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -115,55 +115,55 @@ var a3 = 1 & `${ 3 }`; >a3 : number >1 & `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b3 = 1 & `2${ 3 }`; >b3 : number >1 & `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c3 = 1 & `${ 3 }4`; >c3 : number >1 & `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d3 = 1 & `2${ 3 }4`; >d3 : number >1 & `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e3 = `${ 3 }` & 5; >e3 : number >`${ 3 }` & 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f3 = `2${ 3 }` & 5; >f3 : number >`2${ 3 }` & 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g3 = `${ 3 }4` & 5; >g3 : number >`${ 3 }4` & 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h3 = `2${ 3 }4` & 5; >h3 : number >`2${ 3 }4` & 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -171,7 +171,7 @@ var a4 = 1 - `${ 3 - 4 }`; >a4 : number >1 - `${ 3 - 4 }` : number >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -180,7 +180,7 @@ var b4 = 1 - `2${ 3 - 4 }`; >b4 : number >1 - `2${ 3 - 4 }` : number >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -189,7 +189,7 @@ var c4 = 1 - `${ 3 - 4 }5`; >c4 : number >1 - `${ 3 - 4 }5` : number >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -198,7 +198,7 @@ var d4 = 1 - `2${ 3 - 4 }5`; >d4 : number >1 - `2${ 3 - 4 }5` : number >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -206,7 +206,7 @@ var d4 = 1 - `2${ 3 - 4 }5`; var e4 = `${ 3 - 4 }` - 6; >e4 : number >`${ 3 - 4 }` - 6 : number ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -215,7 +215,7 @@ var e4 = `${ 3 - 4 }` - 6; var f4 = `2${ 3 - 4 }` - 6; >f4 : number >`2${ 3 - 4 }` - 6 : number ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -224,7 +224,7 @@ var f4 = `2${ 3 - 4 }` - 6; var g4 = `${ 3 - 4 }5` - 6; >g4 : number >`${ 3 - 4 }5` - 6 : number ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -233,7 +233,7 @@ var g4 = `${ 3 - 4 }5` - 6; var h4 = `2${ 3 - 4 }5` - 6; >h4 : number >`2${ 3 - 4 }5` - 6 : number ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -243,7 +243,7 @@ var a5 = 1 - `${ 3 * 4 }`; >a5 : number >1 - `${ 3 * 4 }` : number >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -252,7 +252,7 @@ var b5 = 1 - `2${ 3 * 4 }`; >b5 : number >1 - `2${ 3 * 4 }` : number >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -261,7 +261,7 @@ var c5 = 1 - `${ 3 * 4 }5`; >c5 : number >1 - `${ 3 * 4 }5` : number >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -270,7 +270,7 @@ var d5 = 1 - `2${ 3 * 4 }5`; >d5 : number >1 - `2${ 3 * 4 }5` : number >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -278,7 +278,7 @@ var d5 = 1 - `2${ 3 * 4 }5`; var e5 = `${ 3 * 4 }` - 6; >e5 : number >`${ 3 * 4 }` - 6 : number ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -287,7 +287,7 @@ var e5 = `${ 3 * 4 }` - 6; var f5 = `2${ 3 * 4 }` - 6; >f5 : number >`2${ 3 * 4 }` - 6 : number ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -296,7 +296,7 @@ var f5 = `2${ 3 * 4 }` - 6; var g5 = `${ 3 * 4 }5` - 6; >g5 : number >`${ 3 * 4 }5` - 6 : number ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -305,7 +305,7 @@ var g5 = `${ 3 * 4 }5` - 6; var h5 = `2${ 3 * 4 }5` - 6; >h5 : number >`2${ 3 * 4 }5` - 6 : number ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -315,7 +315,7 @@ var a6 = 1 - `${ 3 & 4 }`; >a6 : number >1 - `${ 3 & 4 }` : number >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -324,7 +324,7 @@ var b6 = 1 - `2${ 3 & 4 }`; >b6 : number >1 - `2${ 3 & 4 }` : number >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -333,7 +333,7 @@ var c6 = 1 - `${ 3 & 4 }5`; >c6 : number >1 - `${ 3 & 4 }5` : number >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -342,7 +342,7 @@ var d6 = 1 - `2${ 3 & 4 }5`; >d6 : number >1 - `2${ 3 & 4 }5` : number >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -350,7 +350,7 @@ var d6 = 1 - `2${ 3 & 4 }5`; var e6 = `${ 3 & 4 }` - 6; >e6 : number >`${ 3 & 4 }` - 6 : number ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -359,7 +359,7 @@ var e6 = `${ 3 & 4 }` - 6; var f6 = `2${ 3 & 4 }` - 6; >f6 : number >`2${ 3 & 4 }` - 6 : number ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -368,7 +368,7 @@ var f6 = `2${ 3 & 4 }` - 6; var g6 = `${ 3 & 4 }5` - 6; >g6 : number >`${ 3 & 4 }5` - 6 : number ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -377,7 +377,7 @@ var g6 = `${ 3 & 4 }5` - 6; var h6 = `2${ 3 & 4 }5` - 6; >h6 : number >`2${ 3 & 4 }5` - 6 : number ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -387,7 +387,7 @@ var a7 = 1 * `${ 3 - 4 }`; >a7 : number >1 * `${ 3 - 4 }` : number >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -396,7 +396,7 @@ var b7 = 1 * `2${ 3 - 4 }`; >b7 : number >1 * `2${ 3 - 4 }` : number >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -405,7 +405,7 @@ var c7 = 1 * `${ 3 - 4 }5`; >c7 : number >1 * `${ 3 - 4 }5` : number >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -414,7 +414,7 @@ var d7 = 1 * `2${ 3 - 4 }5`; >d7 : number >1 * `2${ 3 - 4 }5` : number >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -422,7 +422,7 @@ var d7 = 1 * `2${ 3 - 4 }5`; var e7 = `${ 3 - 4 }` * 6; >e7 : number >`${ 3 - 4 }` * 6 : number ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -431,7 +431,7 @@ var e7 = `${ 3 - 4 }` * 6; var f7 = `2${ 3 - 4 }` * 6; >f7 : number >`2${ 3 - 4 }` * 6 : number ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -440,7 +440,7 @@ var f7 = `2${ 3 - 4 }` * 6; var g7 = `${ 3 - 4 }5` * 6; >g7 : number >`${ 3 - 4 }5` * 6 : number ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -449,7 +449,7 @@ var g7 = `${ 3 - 4 }5` * 6; var h7 = `2${ 3 - 4 }5` * 6; >h7 : number >`2${ 3 - 4 }5` * 6 : number ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -459,7 +459,7 @@ var a8 = 1 * `${ 3 * 4 }`; >a8 : number >1 * `${ 3 * 4 }` : number >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -468,7 +468,7 @@ var b8 = 1 * `2${ 3 * 4 }`; >b8 : number >1 * `2${ 3 * 4 }` : number >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -477,7 +477,7 @@ var c8 = 1 * `${ 3 * 4 }5`; >c8 : number >1 * `${ 3 * 4 }5` : number >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -486,7 +486,7 @@ var d8 = 1 * `2${ 3 * 4 }5`; >d8 : number >1 * `2${ 3 * 4 }5` : number >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -494,7 +494,7 @@ var d8 = 1 * `2${ 3 * 4 }5`; var e8 = `${ 3 * 4 }` * 6; >e8 : number >`${ 3 * 4 }` * 6 : number ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -503,7 +503,7 @@ var e8 = `${ 3 * 4 }` * 6; var f8 = `2${ 3 * 4 }` * 6; >f8 : number >`2${ 3 * 4 }` * 6 : number ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -512,7 +512,7 @@ var f8 = `2${ 3 * 4 }` * 6; var g8 = `${ 3 * 4 }5` * 6; >g8 : number >`${ 3 * 4 }5` * 6 : number ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -521,7 +521,7 @@ var g8 = `${ 3 * 4 }5` * 6; var h8 = `2${ 3 * 4 }5` * 6; >h8 : number >`2${ 3 * 4 }5` * 6 : number ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -531,7 +531,7 @@ var a9 = 1 * `${ 3 & 4 }`; >a9 : number >1 * `${ 3 & 4 }` : number >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -540,7 +540,7 @@ var b9 = 1 * `2${ 3 & 4 }`; >b9 : number >1 * `2${ 3 & 4 }` : number >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -549,7 +549,7 @@ var c9 = 1 * `${ 3 & 4 }5`; >c9 : number >1 * `${ 3 & 4 }5` : number >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -558,7 +558,7 @@ var d9 = 1 * `2${ 3 & 4 }5`; >d9 : number >1 * `2${ 3 & 4 }5` : number >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -566,7 +566,7 @@ var d9 = 1 * `2${ 3 & 4 }5`; var e9 = `${ 3 & 4 }` * 6; >e9 : number >`${ 3 & 4 }` * 6 : number ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -575,7 +575,7 @@ var e9 = `${ 3 & 4 }` * 6; var f9 = `2${ 3 & 4 }` * 6; >f9 : number >`2${ 3 & 4 }` * 6 : number ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -584,7 +584,7 @@ var f9 = `2${ 3 & 4 }` * 6; var g9 = `${ 3 & 4 }5` * 6; >g9 : number >`${ 3 & 4 }5` * 6 : number ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -593,7 +593,7 @@ var g9 = `${ 3 & 4 }5` * 6; var h9 = `2${ 3 & 4 }5` * 6; >h9 : number >`2${ 3 & 4 }5` * 6 : number ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -603,7 +603,7 @@ var aa = 1 & `${ 3 - 4 }`; >aa : number >1 & `${ 3 - 4 }` : number >1 : 1 ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -612,7 +612,7 @@ var ba = 1 & `2${ 3 - 4 }`; >ba : number >1 & `2${ 3 - 4 }` : number >1 : 1 ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -621,7 +621,7 @@ var ca = 1 & `${ 3 - 4 }5`; >ca : number >1 & `${ 3 - 4 }5` : number >1 : 1 ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -630,7 +630,7 @@ var da = 1 & `2${ 3 - 4 }5`; >da : number >1 & `2${ 3 - 4 }5` : number >1 : 1 ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -638,7 +638,7 @@ var da = 1 & `2${ 3 - 4 }5`; var ea = `${ 3 - 4 }` & 6; >ea : number >`${ 3 - 4 }` & 6 : number ->`${ 3 - 4 }` : `${number}` +>`${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -647,7 +647,7 @@ var ea = `${ 3 - 4 }` & 6; var fa = `2${ 3 - 4 }` & 6; >fa : number >`2${ 3 - 4 }` & 6 : number ->`2${ 3 - 4 }` : `2${number}` +>`2${ 3 - 4 }` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -656,7 +656,7 @@ var fa = `2${ 3 - 4 }` & 6; var ga = `${ 3 - 4 }5` & 6; >ga : number >`${ 3 - 4 }5` & 6 : number ->`${ 3 - 4 }5` : `${number}5` +>`${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -665,7 +665,7 @@ var ga = `${ 3 - 4 }5` & 6; var ha = `2${ 3 - 4 }5` & 6; >ha : number >`2${ 3 - 4 }5` & 6 : number ->`2${ 3 - 4 }5` : `2${number}5` +>`2${ 3 - 4 }5` : string >3 - 4 : number >3 : 3 >4 : 4 @@ -675,7 +675,7 @@ var ab = 1 & `${ 3 * 4 }`; >ab : number >1 & `${ 3 * 4 }` : number >1 : 1 ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -684,7 +684,7 @@ var bb = 1 & `2${ 3 * 4 }`; >bb : number >1 & `2${ 3 * 4 }` : number >1 : 1 ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -693,7 +693,7 @@ var cb = 1 & `${ 3 * 4 }5`; >cb : number >1 & `${ 3 * 4 }5` : number >1 : 1 ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -702,7 +702,7 @@ var db = 1 & `2${ 3 * 4 }5`; >db : number >1 & `2${ 3 * 4 }5` : number >1 : 1 ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -710,7 +710,7 @@ var db = 1 & `2${ 3 * 4 }5`; var eb = `${ 3 * 4 }` & 6; >eb : number >`${ 3 * 4 }` & 6 : number ->`${ 3 * 4 }` : `${number}` +>`${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -719,7 +719,7 @@ var eb = `${ 3 * 4 }` & 6; var fb = `2${ 3 * 4 }` & 6; >fb : number >`2${ 3 * 4 }` & 6 : number ->`2${ 3 * 4 }` : `2${number}` +>`2${ 3 * 4 }` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -728,7 +728,7 @@ var fb = `2${ 3 * 4 }` & 6; var gb = `${ 3 * 4 }5` & 6; >gb : number >`${ 3 * 4 }5` & 6 : number ->`${ 3 * 4 }5` : `${number}5` +>`${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -737,7 +737,7 @@ var gb = `${ 3 * 4 }5` & 6; var hb = `2${ 3 * 4 }5` & 6; >hb : number >`2${ 3 * 4 }5` & 6 : number ->`2${ 3 * 4 }5` : `2${number}5` +>`2${ 3 * 4 }5` : string >3 * 4 : number >3 : 3 >4 : 4 @@ -747,7 +747,7 @@ var ac = 1 & `${ 3 & 4 }`; >ac : number >1 & `${ 3 & 4 }` : number >1 : 1 ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -756,7 +756,7 @@ var bc = 1 & `2${ 3 & 4 }`; >bc : number >1 & `2${ 3 & 4 }` : number >1 : 1 ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -765,7 +765,7 @@ var cc = 1 & `${ 3 & 4 }5`; >cc : number >1 & `${ 3 & 4 }5` : number >1 : 1 ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -774,7 +774,7 @@ var dc = 1 & `2${ 3 & 4 }5`; >dc : number >1 & `2${ 3 & 4 }5` : number >1 : 1 ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -782,7 +782,7 @@ var dc = 1 & `2${ 3 & 4 }5`; var ec = `${ 3 & 4 }` & 6; >ec : number >`${ 3 & 4 }` & 6 : number ->`${ 3 & 4 }` : `${number}` +>`${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -791,7 +791,7 @@ var ec = `${ 3 & 4 }` & 6; var fc = `2${ 3 & 4 }` & 6; >fc : number >`2${ 3 & 4 }` & 6 : number ->`2${ 3 & 4 }` : `2${number}` +>`2${ 3 & 4 }` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -800,7 +800,7 @@ var fc = `2${ 3 & 4 }` & 6; var gc = `${ 3 & 4 }5` & 6; >gc : number >`${ 3 & 4 }5` & 6 : number ->`${ 3 & 4 }5` : `${number}5` +>`${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 @@ -809,7 +809,7 @@ var gc = `${ 3 & 4 }5` & 6; var hc = `2${ 3 & 4 }5` & 6; >hc : number >`2${ 3 & 4 }5` & 6 : number ->`2${ 3 & 4 }5` : `2${number}5` +>`2${ 3 & 4 }5` : string >3 & 4 : number >3 : 3 >4 : 4 diff --git a/tests/baselines/reference/templateStringInArray.types b/tests/baselines/reference/templateStringInArray.types index 220b0b923d1..03271a5dcd7 100644 --- a/tests/baselines/reference/templateStringInArray.types +++ b/tests/baselines/reference/templateStringInArray.types @@ -4,6 +4,6 @@ var x = [1, 2, `abc${ 123 }def`]; >[1, 2, `abc${ 123 }def`] : (string | number)[] >1 : 1 >2 : 2 ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInArrowFunction.types b/tests/baselines/reference/templateStringInArrowFunction.types index 326e20d6225..a059e440d5a 100644 --- a/tests/baselines/reference/templateStringInArrowFunction.types +++ b/tests/baselines/reference/templateStringInArrowFunction.types @@ -1,8 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringInArrowFunction.ts === var x = x => `abc${ x }def`; ->x : (x: any) => `abc${any}def` ->x => `abc${ x }def` : (x: any) => `abc${any}def` +>x : (x: any) => string +>x => `abc${ x }def` : (x: any) => string >x : any ->`abc${ x }def` : `abc${any}def` +>`abc${ x }def` : string >x : any diff --git a/tests/baselines/reference/templateStringInArrowFunctionES6.types b/tests/baselines/reference/templateStringInArrowFunctionES6.types index 67b82c570f0..72611067793 100644 --- a/tests/baselines/reference/templateStringInArrowFunctionES6.types +++ b/tests/baselines/reference/templateStringInArrowFunctionES6.types @@ -1,8 +1,8 @@ === tests/cases/conformance/es6/templates/templateStringInArrowFunctionES6.ts === var x = x => `abc${ x }def`; ->x : (x: any) => `abc${any}def` ->x => `abc${ x }def` : (x: any) => `abc${any}def` +>x : (x: any) => string +>x => `abc${ x }def` : (x: any) => string >x : any ->`abc${ x }def` : `abc${any}def` +>`abc${ x }def` : string >x : any diff --git a/tests/baselines/reference/templateStringInCallExpression.types b/tests/baselines/reference/templateStringInCallExpression.types index 4f77d60947e..ef1bcca2fa4 100644 --- a/tests/baselines/reference/templateStringInCallExpression.types +++ b/tests/baselines/reference/templateStringInCallExpression.types @@ -1,11 +1,11 @@ === tests/cases/conformance/es6/templates/templateStringInCallExpression.ts === `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`); >`abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`) : any ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 ->`hello ${0} world` : "hello 0 world" +>`hello ${0} world` : string >0 : 0 >` ` : " " ->`1${2}3` : "123" +>`1${2}3` : string >2 : 2 diff --git a/tests/baselines/reference/templateStringInCallExpressionES6.types b/tests/baselines/reference/templateStringInCallExpressionES6.types index 6878494406e..f0c75c7828d 100644 --- a/tests/baselines/reference/templateStringInCallExpressionES6.types +++ b/tests/baselines/reference/templateStringInCallExpressionES6.types @@ -1,11 +1,11 @@ === tests/cases/conformance/es6/templates/templateStringInCallExpressionES6.ts === `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`); >`abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`) : any ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 ->`hello ${0} world` : "hello 0 world" +>`hello ${0} world` : string >0 : 0 >` ` : " " ->`1${2}3` : "123" +>`1${2}3` : string >2 : 2 diff --git a/tests/baselines/reference/templateStringInConditional.types b/tests/baselines/reference/templateStringInConditional.types index 07419cc1e89..a375d572a5d 100644 --- a/tests/baselines/reference/templateStringInConditional.types +++ b/tests/baselines/reference/templateStringInConditional.types @@ -1,11 +1,11 @@ === tests/cases/conformance/es6/templates/templateStringInConditional.ts === var x = `abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def`; >x : string ->`abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def` : "abc def" ->`abc${ " " }def` : "abc def" +>`abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def` : string +>`abc${ " " }def` : string >" " : " " ->`abc${ " " }def` : "abc def" +>`abc${ " " }def` : string >" " : " " ->`abc${ " " }def` : "abc def" +>`abc${ " " }def` : string >" " : " " diff --git a/tests/baselines/reference/templateStringInConditionalES6.types b/tests/baselines/reference/templateStringInConditionalES6.types index 25a00f77091..0f65ab22977 100644 --- a/tests/baselines/reference/templateStringInConditionalES6.types +++ b/tests/baselines/reference/templateStringInConditionalES6.types @@ -1,11 +1,11 @@ === tests/cases/conformance/es6/templates/templateStringInConditionalES6.ts === var x = `abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def`; >x : string ->`abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def` : "abc def" ->`abc${ " " }def` : "abc def" +>`abc${ " " }def` ? `abc${ " " }def` : `abc${ " " }def` : string +>`abc${ " " }def` : string >" " : " " ->`abc${ " " }def` : "abc def" +>`abc${ " " }def` : string >" " : " " ->`abc${ " " }def` : "abc def" +>`abc${ " " }def` : string >" " : " " diff --git a/tests/baselines/reference/templateStringInDeleteExpression.types b/tests/baselines/reference/templateStringInDeleteExpression.types index 5abeb123965..1ae84e4e2ff 100644 --- a/tests/baselines/reference/templateStringInDeleteExpression.types +++ b/tests/baselines/reference/templateStringInDeleteExpression.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringInDeleteExpression.ts === delete `abc${0}abc`; >delete `abc${0}abc` : boolean ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 diff --git a/tests/baselines/reference/templateStringInDeleteExpressionES6.types b/tests/baselines/reference/templateStringInDeleteExpressionES6.types index e3ed5d4fd47..80569e533e4 100644 --- a/tests/baselines/reference/templateStringInDeleteExpressionES6.types +++ b/tests/baselines/reference/templateStringInDeleteExpressionES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringInDeleteExpressionES6.ts === delete `abc${0}abc`; >delete `abc${0}abc` : boolean ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 diff --git a/tests/baselines/reference/templateStringInDivision.types b/tests/baselines/reference/templateStringInDivision.types index b6d2a45c4b3..1afbd71fda1 100644 --- a/tests/baselines/reference/templateStringInDivision.types +++ b/tests/baselines/reference/templateStringInDivision.types @@ -2,7 +2,7 @@ var x = `abc${ 1 }def` / 1; >x : number >`abc${ 1 }def` / 1 : number ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 >1 : 1 diff --git a/tests/baselines/reference/templateStringInEqualityChecks.errors.txt b/tests/baselines/reference/templateStringInEqualityChecks.errors.txt deleted file mode 100644 index 6d765999b43..00000000000 --- a/tests/baselines/reference/templateStringInEqualityChecks.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/es6/templates/templateStringInEqualityChecks.ts(1,9): error TS2367: This condition will always return 'false' since the types '"abc0abc"' and '"abc"' have no overlap. -tests/cases/conformance/es6/templates/templateStringInEqualityChecks.ts(2,9): error TS2367: This condition will always return 'true' since the types '"abc"' and '"abc0abc"' have no overlap. - - -==== tests/cases/conformance/es6/templates/templateStringInEqualityChecks.ts (2 errors) ==== - var x = `abc${0}abc` === `abc` || - ~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2367: This condition will always return 'false' since the types '"abc0abc"' and '"abc"' have no overlap. - `abc` !== `abc${0}abc` && - ~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2367: This condition will always return 'true' since the types '"abc"' and '"abc0abc"' have no overlap. - `abc${0}abc` == "abc0abc" && - "abc0abc" !== `abc${0}abc`; \ No newline at end of file diff --git a/tests/baselines/reference/templateStringInEqualityChecks.types b/tests/baselines/reference/templateStringInEqualityChecks.types index 3cf7469e28d..cddc533a239 100644 --- a/tests/baselines/reference/templateStringInEqualityChecks.types +++ b/tests/baselines/reference/templateStringInEqualityChecks.types @@ -3,7 +3,7 @@ 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` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >`abc` : "abc" @@ -12,18 +12,18 @@ var x = `abc${0}abc` === `abc` || >`abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" : boolean >`abc` !== `abc${0}abc` : boolean >`abc` : "abc" ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 `abc${0}abc` == "abc0abc" && >`abc${0}abc` == "abc0abc" : boolean ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >"abc0abc" : "abc0abc" "abc0abc" !== `abc${0}abc`; >"abc0abc" !== `abc${0}abc` : boolean >"abc0abc" : "abc0abc" ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 diff --git a/tests/baselines/reference/templateStringInEqualityChecksES6.errors.txt b/tests/baselines/reference/templateStringInEqualityChecksES6.errors.txt deleted file mode 100644 index 095914c97be..00000000000 --- a/tests/baselines/reference/templateStringInEqualityChecksES6.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/es6/templates/templateStringInEqualityChecksES6.ts(1,9): error TS2367: This condition will always return 'false' since the types '"abc0abc"' and '"abc"' have no overlap. -tests/cases/conformance/es6/templates/templateStringInEqualityChecksES6.ts(2,9): error TS2367: This condition will always return 'true' since the types '"abc"' and '"abc0abc"' have no overlap. - - -==== tests/cases/conformance/es6/templates/templateStringInEqualityChecksES6.ts (2 errors) ==== - var x = `abc${0}abc` === `abc` || - ~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2367: This condition will always return 'false' since the types '"abc0abc"' and '"abc"' have no overlap. - `abc` !== `abc${0}abc` && - ~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2367: This condition will always return 'true' since the types '"abc"' and '"abc0abc"' have no overlap. - `abc${0}abc` == "abc0abc" && - "abc0abc" !== `abc${0}abc`; \ No newline at end of file diff --git a/tests/baselines/reference/templateStringInEqualityChecksES6.types b/tests/baselines/reference/templateStringInEqualityChecksES6.types index f67cb61cbca..58a24300725 100644 --- a/tests/baselines/reference/templateStringInEqualityChecksES6.types +++ b/tests/baselines/reference/templateStringInEqualityChecksES6.types @@ -3,7 +3,7 @@ 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` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >`abc` : "abc" @@ -12,18 +12,18 @@ var x = `abc${0}abc` === `abc` || >`abc` !== `abc${0}abc` && `abc${0}abc` == "abc0abc" : boolean >`abc` !== `abc${0}abc` : boolean >`abc` : "abc" ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 `abc${0}abc` == "abc0abc" && >`abc${0}abc` == "abc0abc" : boolean ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >"abc0abc" : "abc0abc" "abc0abc" !== `abc${0}abc`; >"abc0abc" !== `abc${0}abc` : boolean >"abc0abc" : "abc0abc" ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 diff --git a/tests/baselines/reference/templateStringInFunctionExpression.types b/tests/baselines/reference/templateStringInFunctionExpression.types index 7c32e1e5858..af92d867acd 100644 --- a/tests/baselines/reference/templateStringInFunctionExpression.types +++ b/tests/baselines/reference/templateStringInFunctionExpression.types @@ -5,11 +5,11 @@ var x = function y() { >y : () => string `abc${ 0 }def` ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 return `abc${ 0 }def`; ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 }; diff --git a/tests/baselines/reference/templateStringInFunctionExpressionES6.types b/tests/baselines/reference/templateStringInFunctionExpressionES6.types index e7a310a7f06..2ab90b9e374 100644 --- a/tests/baselines/reference/templateStringInFunctionExpressionES6.types +++ b/tests/baselines/reference/templateStringInFunctionExpressionES6.types @@ -5,11 +5,11 @@ var x = function y() { >y : () => string `abc${ 0 }def` ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 return `abc${ 0 }def`; ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 }; diff --git a/tests/baselines/reference/templateStringInInOperator.types b/tests/baselines/reference/templateStringInInOperator.types index 2c00b2f40a1..5ed944af496 100644 --- a/tests/baselines/reference/templateStringInInOperator.types +++ b/tests/baselines/reference/templateStringInInOperator.types @@ -2,7 +2,7 @@ var x = `${ "hi" }` in { hi: 10, hello: 20}; >x : boolean >`${ "hi" }` in { hi: 10, hello: 20} : boolean ->`${ "hi" }` : "hi" +>`${ "hi" }` : string >"hi" : "hi" >{ hi: 10, hello: 20} : { hi: number; hello: number; } >hi : number diff --git a/tests/baselines/reference/templateStringInInOperatorES6.types b/tests/baselines/reference/templateStringInInOperatorES6.types index c78a128a28f..335b77380c2 100644 --- a/tests/baselines/reference/templateStringInInOperatorES6.types +++ b/tests/baselines/reference/templateStringInInOperatorES6.types @@ -2,7 +2,7 @@ var x = `${ "hi" }` in { hi: 10, hello: 20}; >x : boolean >`${ "hi" }` in { hi: 10, hello: 20} : boolean ->`${ "hi" }` : "hi" +>`${ "hi" }` : string >"hi" : "hi" >{ hi: 10, hello: 20} : { hi: number; hello: number; } >hi : number diff --git a/tests/baselines/reference/templateStringInIndexExpression.types b/tests/baselines/reference/templateStringInIndexExpression.types index 5d05878b17c..9ad6b1e141d 100644 --- a/tests/baselines/reference/templateStringInIndexExpression.types +++ b/tests/baselines/reference/templateStringInIndexExpression.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringInIndexExpression.ts === `abc${0}abc`[`0`]; >`abc${0}abc`[`0`] : error ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >`0` : "0" diff --git a/tests/baselines/reference/templateStringInIndexExpressionES6.types b/tests/baselines/reference/templateStringInIndexExpressionES6.types index aef018ff0f9..d86fb2309e7 100644 --- a/tests/baselines/reference/templateStringInIndexExpressionES6.types +++ b/tests/baselines/reference/templateStringInIndexExpressionES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringInIndexExpressionES6.ts === `abc${0}abc`[`0`]; >`abc${0}abc`[`0`] : error ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >`0` : "0" diff --git a/tests/baselines/reference/templateStringInInstanceOf.types b/tests/baselines/reference/templateStringInInstanceOf.types index a551448dd38..244d008da52 100644 --- a/tests/baselines/reference/templateStringInInstanceOf.types +++ b/tests/baselines/reference/templateStringInInstanceOf.types @@ -2,7 +2,7 @@ var x = `abc${ 0 }def` instanceof String; >x : boolean >`abc${ 0 }def` instanceof String : boolean ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 >String : StringConstructor diff --git a/tests/baselines/reference/templateStringInInstanceOfES6.types b/tests/baselines/reference/templateStringInInstanceOfES6.types index 396c6da8e9d..c93393def38 100644 --- a/tests/baselines/reference/templateStringInInstanceOfES6.types +++ b/tests/baselines/reference/templateStringInInstanceOfES6.types @@ -2,7 +2,7 @@ var x = `abc${ 0 }def` instanceof String; >x : boolean >`abc${ 0 }def` instanceof String : boolean ->`abc${ 0 }def` : "abc0def" +>`abc${ 0 }def` : string >0 : 0 >String : StringConstructor diff --git a/tests/baselines/reference/templateStringInModuleName.types b/tests/baselines/reference/templateStringInModuleName.types index 9258b48d4dd..8ebf16e05d2 100644 --- a/tests/baselines/reference/templateStringInModuleName.types +++ b/tests/baselines/reference/templateStringInModuleName.types @@ -10,6 +10,6 @@ declare module `M${2}` { >declare : any >module `M${2}` : any >module : any ->`M${2}` : "M2" +>`M${2}` : string >2 : 2 } diff --git a/tests/baselines/reference/templateStringInModuleNameES6.types b/tests/baselines/reference/templateStringInModuleNameES6.types index 0efaf18adfb..9e7aaafd9ea 100644 --- a/tests/baselines/reference/templateStringInModuleNameES6.types +++ b/tests/baselines/reference/templateStringInModuleNameES6.types @@ -10,6 +10,6 @@ declare module `M${2}` { >declare : any >module `M${2}` : any >module : any ->`M${2}` : "M2" +>`M${2}` : string >2 : 2 } diff --git a/tests/baselines/reference/templateStringInModulo.types b/tests/baselines/reference/templateStringInModulo.types index 77413a081d2..c3482997182 100644 --- a/tests/baselines/reference/templateStringInModulo.types +++ b/tests/baselines/reference/templateStringInModulo.types @@ -3,6 +3,6 @@ var x = 1 % `abc${ 1 }def`; >x : number >1 % `abc${ 1 }def` : number >1 : 1 ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 diff --git a/tests/baselines/reference/templateStringInModuloES6.types b/tests/baselines/reference/templateStringInModuloES6.types index a4052ee2acd..8d515d3f444 100644 --- a/tests/baselines/reference/templateStringInModuloES6.types +++ b/tests/baselines/reference/templateStringInModuloES6.types @@ -3,6 +3,6 @@ var x = 1 % `abc${ 1 }def`; >x : number >1 % `abc${ 1 }def` : number >1 : 1 ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 diff --git a/tests/baselines/reference/templateStringInMultiplication.types b/tests/baselines/reference/templateStringInMultiplication.types index 3cc2aaa075a..133330698e5 100644 --- a/tests/baselines/reference/templateStringInMultiplication.types +++ b/tests/baselines/reference/templateStringInMultiplication.types @@ -3,6 +3,6 @@ var x = 1 * `abc${ 1 }def`; >x : number >1 * `abc${ 1 }def` : number >1 : 1 ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 diff --git a/tests/baselines/reference/templateStringInMultiplicationES6.types b/tests/baselines/reference/templateStringInMultiplicationES6.types index 2e4513a2c05..7bc4663bfc5 100644 --- a/tests/baselines/reference/templateStringInMultiplicationES6.types +++ b/tests/baselines/reference/templateStringInMultiplicationES6.types @@ -3,6 +3,6 @@ var x = 1 * `abc${ 1 }def`; >x : number >1 * `abc${ 1 }def` : number >1 : 1 ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 diff --git a/tests/baselines/reference/templateStringInNewExpression.types b/tests/baselines/reference/templateStringInNewExpression.types index 1c58cec14d9..c4bc213db14 100644 --- a/tests/baselines/reference/templateStringInNewExpression.types +++ b/tests/baselines/reference/templateStringInNewExpression.types @@ -1,11 +1,11 @@ === tests/cases/conformance/es6/templates/templateStringInNewExpression.ts === new `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`); >new `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`) : any ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 ->`hello ${0} world` : "hello 0 world" +>`hello ${0} world` : string >0 : 0 >` ` : " " ->`1${2}3` : "123" +>`1${2}3` : string >2 : 2 diff --git a/tests/baselines/reference/templateStringInNewExpressionES6.types b/tests/baselines/reference/templateStringInNewExpressionES6.types index ef18f9a3b74..284f59bab1d 100644 --- a/tests/baselines/reference/templateStringInNewExpressionES6.types +++ b/tests/baselines/reference/templateStringInNewExpressionES6.types @@ -1,11 +1,11 @@ === tests/cases/conformance/es6/templates/templateStringInNewExpressionES6.ts === new `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`); >new `abc${0}abc`(`hello ${0} world`, ` `, `1${2}3`) : any ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 ->`hello ${0} world` : "hello 0 world" +>`hello ${0} world` : string >0 : 0 >` ` : " " ->`1${2}3` : "123" +>`1${2}3` : string >2 : 2 diff --git a/tests/baselines/reference/templateStringInNewOperator.types b/tests/baselines/reference/templateStringInNewOperator.types index e35f6d8fa03..c3853ed431e 100644 --- a/tests/baselines/reference/templateStringInNewOperator.types +++ b/tests/baselines/reference/templateStringInNewOperator.types @@ -2,6 +2,6 @@ var x = new `abc${ 1 }def`; >x : any >new `abc${ 1 }def` : any ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 diff --git a/tests/baselines/reference/templateStringInNewOperatorES6.types b/tests/baselines/reference/templateStringInNewOperatorES6.types index fccea6b14c9..ff6a9dbfb29 100644 --- a/tests/baselines/reference/templateStringInNewOperatorES6.types +++ b/tests/baselines/reference/templateStringInNewOperatorES6.types @@ -2,6 +2,6 @@ var x = new `abc${ 1 }def`; >x : any >new `abc${ 1 }def` : any ->`abc${ 1 }def` : "abc1def" +>`abc${ 1 }def` : string >1 : 1 diff --git a/tests/baselines/reference/templateStringInObjectLiteral.types b/tests/baselines/reference/templateStringInObjectLiteral.types index c796962283c..e0ebb07e8b9 100644 --- a/tests/baselines/reference/templateStringInObjectLiteral.types +++ b/tests/baselines/reference/templateStringInObjectLiteral.types @@ -6,7 +6,7 @@ var x = { a: `abc${ 123 }def`, >a : string ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 `b`: 321 diff --git a/tests/baselines/reference/templateStringInObjectLiteralES6.types b/tests/baselines/reference/templateStringInObjectLiteralES6.types index ae46359177b..30797e78c6b 100644 --- a/tests/baselines/reference/templateStringInObjectLiteralES6.types +++ b/tests/baselines/reference/templateStringInObjectLiteralES6.types @@ -6,7 +6,7 @@ var x = { a: `abc${ 123 }def`, >a : string ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 `b`: 321 diff --git a/tests/baselines/reference/templateStringInParentheses.types b/tests/baselines/reference/templateStringInParentheses.types index c69dce0b49e..ca9b328d5b5 100644 --- a/tests/baselines/reference/templateStringInParentheses.types +++ b/tests/baselines/reference/templateStringInParentheses.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringInParentheses.ts === var x = (`abc${0}abc`); >x : string ->(`abc${0}abc`) : "abc0abc" ->`abc${0}abc` : "abc0abc" +>(`abc${0}abc`) : string +>`abc${0}abc` : string >0 : 0 diff --git a/tests/baselines/reference/templateStringInParenthesesES6.types b/tests/baselines/reference/templateStringInParenthesesES6.types index 5b0986aee05..518ad880918 100644 --- a/tests/baselines/reference/templateStringInParenthesesES6.types +++ b/tests/baselines/reference/templateStringInParenthesesES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringInParenthesesES6.ts === var x = (`abc${0}abc`); >x : string ->(`abc${0}abc`) : "abc0abc" ->`abc${0}abc` : "abc0abc" +>(`abc${0}abc`) : string +>`abc${0}abc` : string >0 : 0 diff --git a/tests/baselines/reference/templateStringInPropertyAssignment.types b/tests/baselines/reference/templateStringInPropertyAssignment.types index 6850229d1ef..c47a921e941 100644 --- a/tests/baselines/reference/templateStringInPropertyAssignment.types +++ b/tests/baselines/reference/templateStringInPropertyAssignment.types @@ -5,7 +5,7 @@ var x = { a: `abc${ 123 }def${ 456 }ghi` >a : string ->`abc${ 123 }def${ 456 }ghi` : "abc123def456ghi" +>`abc${ 123 }def${ 456 }ghi` : string >123 : 123 >456 : 456 } diff --git a/tests/baselines/reference/templateStringInPropertyAssignmentES6.types b/tests/baselines/reference/templateStringInPropertyAssignmentES6.types index a0dafd66638..43a9e0f5507 100644 --- a/tests/baselines/reference/templateStringInPropertyAssignmentES6.types +++ b/tests/baselines/reference/templateStringInPropertyAssignmentES6.types @@ -5,7 +5,7 @@ var x = { a: `abc${ 123 }def${ 456 }ghi` >a : string ->`abc${ 123 }def${ 456 }ghi` : "abc123def456ghi" +>`abc${ 123 }def${ 456 }ghi` : string >123 : 123 >456 : 456 } diff --git a/tests/baselines/reference/templateStringInPropertyName2.types b/tests/baselines/reference/templateStringInPropertyName2.types index 5e3652e3e9a..627abc040c0 100644 --- a/tests/baselines/reference/templateStringInPropertyName2.types +++ b/tests/baselines/reference/templateStringInPropertyName2.types @@ -5,7 +5,7 @@ var x = { >{ : {} `abc${ 123 }def${ 456 }ghi`: 321 ->`abc${ 123 }def${ 456 }ghi` : "abc123def456ghi" +>`abc${ 123 }def${ 456 }ghi` : string >123 : 123 >456 : 456 >321 : 321 diff --git a/tests/baselines/reference/templateStringInPropertyNameES6_2.types b/tests/baselines/reference/templateStringInPropertyNameES6_2.types index 92868155b71..ff96d8155db 100644 --- a/tests/baselines/reference/templateStringInPropertyNameES6_2.types +++ b/tests/baselines/reference/templateStringInPropertyNameES6_2.types @@ -5,7 +5,7 @@ var x = { >{ : {} `abc${ 123 }def${ 456 }ghi`: 321 ->`abc${ 123 }def${ 456 }ghi` : "abc123def456ghi" +>`abc${ 123 }def${ 456 }ghi` : string >123 : 123 >456 : 456 >321 : 321 diff --git a/tests/baselines/reference/templateStringInSwitchAndCase.errors.txt b/tests/baselines/reference/templateStringInSwitchAndCase.errors.txt deleted file mode 100644 index 5c7ea1e9537..00000000000 --- a/tests/baselines/reference/templateStringInSwitchAndCase.errors.txt +++ /dev/null @@ -1,15 +0,0 @@ -tests/cases/conformance/es6/templates/templateStringInSwitchAndCase.ts(2,10): error TS2678: Type '"abc"' is not comparable to type '"abc0abc"'. -tests/cases/conformance/es6/templates/templateStringInSwitchAndCase.ts(3,10): error TS2678: Type '"123"' is not comparable to type '"abc0abc"'. - - -==== tests/cases/conformance/es6/templates/templateStringInSwitchAndCase.ts (2 errors) ==== - switch (`abc${0}abc`) { - case `abc`: - ~~~~~ -!!! error TS2678: Type '"abc"' is not comparable to type '"abc0abc"'. - case `123`: - ~~~~~ -!!! error TS2678: Type '"123"' is not comparable to type '"abc0abc"'. - case `abc${0}abc`: - `def${1}def`; - } \ No newline at end of file diff --git a/tests/baselines/reference/templateStringInSwitchAndCase.types b/tests/baselines/reference/templateStringInSwitchAndCase.types index b7b148cc770..d54891ff051 100644 --- a/tests/baselines/reference/templateStringInSwitchAndCase.types +++ b/tests/baselines/reference/templateStringInSwitchAndCase.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringInSwitchAndCase.ts === switch (`abc${0}abc`) { ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 case `abc`: @@ -10,10 +10,10 @@ switch (`abc${0}abc`) { >`123` : "123" case `abc${0}abc`: ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 `def${1}def`; ->`def${1}def` : "def1def" +>`def${1}def` : string >1 : 1 } diff --git a/tests/baselines/reference/templateStringInSwitchAndCaseES6.errors.txt b/tests/baselines/reference/templateStringInSwitchAndCaseES6.errors.txt deleted file mode 100644 index ef11779c794..00000000000 --- a/tests/baselines/reference/templateStringInSwitchAndCaseES6.errors.txt +++ /dev/null @@ -1,15 +0,0 @@ -tests/cases/conformance/es6/templates/templateStringInSwitchAndCaseES6.ts(2,10): error TS2678: Type '"abc"' is not comparable to type '"abc0abc"'. -tests/cases/conformance/es6/templates/templateStringInSwitchAndCaseES6.ts(3,10): error TS2678: Type '"123"' is not comparable to type '"abc0abc"'. - - -==== tests/cases/conformance/es6/templates/templateStringInSwitchAndCaseES6.ts (2 errors) ==== - switch (`abc${0}abc`) { - case `abc`: - ~~~~~ -!!! error TS2678: Type '"abc"' is not comparable to type '"abc0abc"'. - case `123`: - ~~~~~ -!!! error TS2678: Type '"123"' is not comparable to type '"abc0abc"'. - case `abc${0}abc`: - `def${1}def`; - } \ No newline at end of file diff --git a/tests/baselines/reference/templateStringInSwitchAndCaseES6.types b/tests/baselines/reference/templateStringInSwitchAndCaseES6.types index 80afd347a98..8c7c4fee2c1 100644 --- a/tests/baselines/reference/templateStringInSwitchAndCaseES6.types +++ b/tests/baselines/reference/templateStringInSwitchAndCaseES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringInSwitchAndCaseES6.ts === switch (`abc${0}abc`) { ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 case `abc`: @@ -10,10 +10,10 @@ switch (`abc${0}abc`) { >`123` : "123" case `abc${0}abc`: ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 `def${1}def`; ->`def${1}def` : "def1def" +>`def${1}def` : string >1 : 1 } diff --git a/tests/baselines/reference/templateStringInTaggedTemplate.types b/tests/baselines/reference/templateStringInTaggedTemplate.types index f1eead3fb9d..6c4a059bed3 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplate.types +++ b/tests/baselines/reference/templateStringInTaggedTemplate.types @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringInTaggedTemplate.ts === `I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION` >`I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION` : any ->`I AM THE ${ `${ `TAG` } ` } PORTION` : "I AM THE TAG PORTION" ->`${ `TAG` } ` : "TAG " +>`I AM THE ${ `${ `TAG` } ` } PORTION` : string +>`${ `TAG` } ` : string >`TAG` : "TAG" ->`I ${ "AM" } THE TEMPLATE PORTION` : "I AM THE TEMPLATE PORTION" +>`I ${ "AM" } THE TEMPLATE PORTION` : string >"AM" : "AM" diff --git a/tests/baselines/reference/templateStringInTaggedTemplateES6.types b/tests/baselines/reference/templateStringInTaggedTemplateES6.types index aeead5bb5d4..dd2a4898a90 100644 --- a/tests/baselines/reference/templateStringInTaggedTemplateES6.types +++ b/tests/baselines/reference/templateStringInTaggedTemplateES6.types @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringInTaggedTemplateES6.ts === `I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION` >`I AM THE ${ `${ `TAG` } ` } PORTION` `I ${ "AM" } THE TEMPLATE PORTION` : any ->`I AM THE ${ `${ `TAG` } ` } PORTION` : "I AM THE TAG PORTION" ->`${ `TAG` } ` : "TAG " +>`I AM THE ${ `${ `TAG` } ` } PORTION` : string +>`${ `TAG` } ` : string >`TAG` : "TAG" ->`I ${ "AM" } THE TEMPLATE PORTION` : "I AM THE TEMPLATE PORTION" +>`I ${ "AM" } THE TEMPLATE PORTION` : string >"AM" : "AM" diff --git a/tests/baselines/reference/templateStringInTypeAssertion.types b/tests/baselines/reference/templateStringInTypeAssertion.types index a219f97b65b..c8950634a36 100644 --- a/tests/baselines/reference/templateStringInTypeAssertion.types +++ b/tests/baselines/reference/templateStringInTypeAssertion.types @@ -2,6 +2,6 @@ var x = `abc${ 123 }def`; >x : any >`abc${ 123 }def` : any ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInTypeAssertionES6.types b/tests/baselines/reference/templateStringInTypeAssertionES6.types index 523eeede883..becccd73738 100644 --- a/tests/baselines/reference/templateStringInTypeAssertionES6.types +++ b/tests/baselines/reference/templateStringInTypeAssertionES6.types @@ -2,6 +2,6 @@ var x = `abc${ 123 }def`; >x : any >`abc${ 123 }def` : any ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInTypeOf.types b/tests/baselines/reference/templateStringInTypeOf.types index a1f9d200ac2..195150c6aa8 100644 --- a/tests/baselines/reference/templateStringInTypeOf.types +++ b/tests/baselines/reference/templateStringInTypeOf.types @@ -2,6 +2,6 @@ var x = typeof `abc${ 123 }def`; >x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >typeof `abc${ 123 }def` : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInTypeOfES6.types b/tests/baselines/reference/templateStringInTypeOfES6.types index 959ce7decb5..27aab9cc9d9 100644 --- a/tests/baselines/reference/templateStringInTypeOfES6.types +++ b/tests/baselines/reference/templateStringInTypeOfES6.types @@ -2,6 +2,6 @@ var x = typeof `abc${ 123 }def`; >x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >typeof `abc${ 123 }def` : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInUnaryPlus.types b/tests/baselines/reference/templateStringInUnaryPlus.types index 56832207834..aa2b4fe4f2d 100644 --- a/tests/baselines/reference/templateStringInUnaryPlus.types +++ b/tests/baselines/reference/templateStringInUnaryPlus.types @@ -2,6 +2,6 @@ var x = +`abc${ 123 }def`; >x : number >+`abc${ 123 }def` : number ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInUnaryPlusES6.types b/tests/baselines/reference/templateStringInUnaryPlusES6.types index 1858a309b54..8286fa8b6c1 100644 --- a/tests/baselines/reference/templateStringInUnaryPlusES6.types +++ b/tests/baselines/reference/templateStringInUnaryPlusES6.types @@ -2,6 +2,6 @@ var x = +`abc${ 123 }def`; >x : number >+`abc${ 123 }def` : number ->`abc${ 123 }def` : "abc123def" +>`abc${ 123 }def` : string >123 : 123 diff --git a/tests/baselines/reference/templateStringInWhile.types b/tests/baselines/reference/templateStringInWhile.types index e21beddf2b8..c0914ee771c 100644 --- a/tests/baselines/reference/templateStringInWhile.types +++ b/tests/baselines/reference/templateStringInWhile.types @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringInWhile.ts === while (`abc${0}abc`) { ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 `def${1}def`; ->`def${1}def` : "def1def" +>`def${1}def` : string >1 : 1 } diff --git a/tests/baselines/reference/templateStringInWhileES6.types b/tests/baselines/reference/templateStringInWhileES6.types index fc09ced07b9..29119d7f77e 100644 --- a/tests/baselines/reference/templateStringInWhileES6.types +++ b/tests/baselines/reference/templateStringInWhileES6.types @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/templates/templateStringInWhileES6.ts === while (`abc${0}abc`) { ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 `def${1}def`; ->`def${1}def` : "def1def" +>`def${1}def` : string >1 : 1 } diff --git a/tests/baselines/reference/templateStringInYieldKeyword.types b/tests/baselines/reference/templateStringInYieldKeyword.types index 96d966acf08..71cce7b74eb 100644 --- a/tests/baselines/reference/templateStringInYieldKeyword.types +++ b/tests/baselines/reference/templateStringInYieldKeyword.types @@ -1,12 +1,12 @@ === tests/cases/conformance/es6/templates/templateStringInYieldKeyword.ts === function* gen() { ->gen : () => Generator<`abc${any}def`, void, unknown> +>gen : () => Generator // Once this is supported, the inner expression does not need to be parenthesized. var x = yield `abc${ x }def`; >x : any >yield `abc${ x }def` : any ->`abc${ x }def` : `abc${any}def` +>`abc${ x }def` : string >x : any } diff --git a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types index 63caabdceea..7d78d7f29fb 100644 --- a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types +++ b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringPlainCharactersThatArePartsOfEscapes02.ts === `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` : "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_ES6.types b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types index beaa6f39fc7..ee2b0b3600d 100644 --- a/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types +++ b/tests/baselines/reference/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringPlainCharactersThatArePartsOfEscapes02_ES6.ts === `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` : "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/templateStringWithEmbeddedAddition.types b/tests/baselines/reference/templateStringWithEmbeddedAddition.types index 17dfa769857..56bc197c377 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedAddition.types +++ b/tests/baselines/reference/templateStringWithEmbeddedAddition.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedAddition.ts === var x = `abc${ 10 + 10 }def`; >x : string ->`abc${ 10 + 10 }def` : `abc${number}def` +>`abc${ 10 + 10 }def` : string >10 + 10 : number >10 : 10 >10 : 10 diff --git a/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types b/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types index 50e43d4edfc..6ee46c39f57 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedAdditionES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedAdditionES6.ts === var x = `abc${ 10 + 10 }def`; >x : string ->`abc${ 10 + 10 }def` : `abc${number}def` +>`abc${ 10 + 10 }def` : string >10 + 10 : number >10 : 10 >10 : 10 diff --git a/tests/baselines/reference/templateStringWithEmbeddedArray.types b/tests/baselines/reference/templateStringWithEmbeddedArray.types index 1c50d92da75..b82fa26d400 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArray.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArray.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArray.ts === var x = `abc${ [1,2,3] }def`; >x : string ->`abc${ [1,2,3] }def` : `abc${string}def` +>`abc${ [1,2,3] }def` : string >[1,2,3] : number[] >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types b/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types index b9d23edf7ef..e8701a7f4c3 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArrayES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArrayES6.ts === var x = `abc${ [1,2,3] }def`; >x : string ->`abc${ [1,2,3] }def` : `abc${string}def` +>`abc${ [1,2,3] }def` : string >[1,2,3] : number[] >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types b/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types index c2bf5c8adf7..9e8d81e7ab8 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArrowFunction.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArrowFunction.ts === var x = `abc${ x => x }def`; >x : string ->`abc${ x => x }def` : `abc${string}def` +>`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 04cde9c573f..a7adad63130 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedArrowFunctionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedArrowFunctionES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedArrowFunctionES6.ts === var x = `abc${ x => x }def`; >x : string ->`abc${ x => x }def` : `abc${string}def` +>`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 508149c3144..f948a8bdaaf 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedComments.types +++ b/tests/baselines/reference/templateStringWithEmbeddedComments.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedComments.ts === `head${ // single line comment ->`head${ // single line comment10}middle${/* Multi- * line * comment */ 20 // closing comment}tail` : "head10\nmiddle20\ntail" +>`head${ // single line comment10}middle${/* Multi- * line * comment */ 20 // closing comment}tail` : string 10 >10 : 10 diff --git a/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types b/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types index f8c5c0e6921..cd2e0b23441 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedCommentsES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedCommentsES6.ts === `head${ // single line comment ->`head${ // single line comment10}middle${/* Multi- * line * comment */ 20 // closing comment}tail` : "head10\nmiddle20\ntail" +>`head${ // single line comment10}middle${/* Multi- * line * comment */ 20 // closing comment}tail` : string 10 >10 : 10 diff --git a/tests/baselines/reference/templateStringWithEmbeddedConditional.types b/tests/baselines/reference/templateStringWithEmbeddedConditional.types index e70cf84f45e..d79433e7b8a 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedConditional.types +++ b/tests/baselines/reference/templateStringWithEmbeddedConditional.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedConditional.ts === var x = `abc${ true ? false : " " }def`; ->x : "abcfalsedef" | "abc def" ->`abc${ true ? false : " " }def` : "abcfalsedef" | "abc def" +>x : string +>`abc${ true ? false : " " }def` : string >true ? false : " " : false | " " >true : true >false : false diff --git a/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types b/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types index 58e7770cbbc..1ddc81a19e7 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedConditionalES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedConditionalES6.ts === var x = `abc${ true ? false : " " }def`; ->x : "abcfalsedef" | "abc def" ->`abc${ true ? false : " " }def` : "abcfalsedef" | "abc def" +>x : string +>`abc${ true ? false : " " }def` : string >true ? false : " " : false | " " >true : true >false : false diff --git a/tests/baselines/reference/templateStringWithEmbeddedDivision.types b/tests/baselines/reference/templateStringWithEmbeddedDivision.types index 500ff08ec83..6f891375624 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedDivision.types +++ b/tests/baselines/reference/templateStringWithEmbeddedDivision.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedDivision.ts === var x = `abc${ 1 / 1 }def`; >x : string ->`abc${ 1 / 1 }def` : `abc${number}def` +>`abc${ 1 / 1 }def` : string >1 / 1 : number >1 : 1 >1 : 1 diff --git a/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types b/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types index 292f9c08200..f91b3a27639 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedDivisionES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedDivisionES6.ts === var x = `abc${ 1 / 1 }def`; >x : string ->`abc${ 1 / 1 }def` : `abc${number}def` +>`abc${ 1 / 1 }def` : string >1 / 1 : number >1 : 1 >1 : 1 diff --git a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types index d3a6abdfc0d..19a37ae86f4 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types +++ b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpression.types @@ -1,7 +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` : `abc${string}def` +>`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 5f23f58e2a6..c7a4f2e2bc4 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedFunctionExpressionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedFunctionExpressionES6.types @@ -1,7 +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` : `abc${string}def` +>`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 617dc58c920..f97ca55b633 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedInOperator.types +++ b/tests/baselines/reference/templateStringWithEmbeddedInOperator.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedInOperator.ts === var x = `abc${ "hi" in { hi: 10, hello: 20} }def`; ->x : "abcfalsedef" | "abctruedef" ->`abc${ "hi" in { hi: 10, hello: 20} }def` : "abcfalsedef" | "abctruedef" +>x : string +>`abc${ "hi" in { hi: 10, hello: 20} }def` : string >"hi" in { hi: 10, hello: 20} : boolean >"hi" : "hi" >{ hi: 10, hello: 20} : { hi: number; hello: number; } diff --git a/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types b/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types index ccd38d6cabc..a1346c2ce6d 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedInOperatorES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedInOperatorES6.ts === var x = `abc${ "hi" in { hi: 10, hello: 20} }def`; ->x : "abcfalsedef" | "abctruedef" ->`abc${ "hi" in { hi: 10, hello: 20} }def` : "abcfalsedef" | "abctruedef" +>x : string +>`abc${ "hi" in { hi: 10, hello: 20} }def` : string >"hi" in { hi: 10, hello: 20} : boolean >"hi" : "hi" >{ hi: 10, hello: 20} : { hi: number; hello: number; } diff --git a/tests/baselines/reference/templateStringWithEmbeddedInstanceOf.types b/tests/baselines/reference/templateStringWithEmbeddedInstanceOf.types index 28e3f8b6088..fea4b20d904 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedInstanceOf.types +++ b/tests/baselines/reference/templateStringWithEmbeddedInstanceOf.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedInstanceOf.ts === var x = `abc${ "hello" instanceof String }def`; ->x : "abcfalsedef" | "abctruedef" ->`abc${ "hello" instanceof String }def` : "abcfalsedef" | "abctruedef" +>x : string +>`abc${ "hello" instanceof String }def` : string >"hello" instanceof String : boolean >"hello" : "hello" >String : StringConstructor diff --git a/tests/baselines/reference/templateStringWithEmbeddedInstanceOfES6.types b/tests/baselines/reference/templateStringWithEmbeddedInstanceOfES6.types index 729a9fdab7d..8fbe2994c65 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedInstanceOfES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedInstanceOfES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedInstanceOfES6.ts === var x = `abc${ "hello" instanceof String }def`; ->x : "abcfalsedef" | "abctruedef" ->`abc${ "hello" instanceof String }def` : "abcfalsedef" | "abctruedef" +>x : string +>`abc${ "hello" instanceof String }def` : string >"hello" instanceof String : boolean >"hello" : "hello" >String : StringConstructor diff --git a/tests/baselines/reference/templateStringWithEmbeddedModulo.types b/tests/baselines/reference/templateStringWithEmbeddedModulo.types index 5b71d6c3554..c4711809563 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedModulo.types +++ b/tests/baselines/reference/templateStringWithEmbeddedModulo.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedModulo.ts === var x = `abc${ 1 % 1 }def`; >x : string ->`abc${ 1 % 1 }def` : `abc${number}def` +>`abc${ 1 % 1 }def` : string >1 % 1 : number >1 : 1 >1 : 1 diff --git a/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types b/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types index f160811ed72..2a1e6b602e2 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedModuloES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedModuloES6.ts === var x = `abc${ 1 % 1 }def`; >x : string ->`abc${ 1 % 1 }def` : `abc${number}def` +>`abc${ 1 % 1 }def` : string >1 % 1 : number >1 : 1 >1 : 1 diff --git a/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types b/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types index 9d74b404fc6..f442ab3165b 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types +++ b/tests/baselines/reference/templateStringWithEmbeddedMultiplication.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedMultiplication.ts === var x = `abc${ 7 * 6 }def`; >x : string ->`abc${ 7 * 6 }def` : `abc${number}def` +>`abc${ 7 * 6 }def` : string >7 * 6 : number >7 : 7 >6 : 6 diff --git a/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types b/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types index 24927520c23..3e9f15773ef 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedMultiplicationES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedMultiplicationES6.ts === var x = `abc${ 7 * 6 }def`; >x : string ->`abc${ 7 * 6 }def` : `abc${number}def` +>`abc${ 7 * 6 }def` : string >7 * 6 : number >7 : 7 >6 : 6 diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types b/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types index 6b1c12b81bc..1e358a571b3 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperator.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperator.ts === var x = `abc${ new String("Hi") }def`; >x : string ->`abc${ new String("Hi") }def` : `abc${string}def` +>`abc${ new String("Hi") }def` : string >new String("Hi") : String >String : StringConstructor >"Hi" : "Hi" diff --git a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types index b96cdfbbe71..4939c6f867f 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedNewOperatorES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedNewOperatorES6.ts === var x = `abc${ new String("Hi") }def`; >x : string ->`abc${ new String("Hi") }def` : `abc${string}def` +>`abc${ new String("Hi") }def` : string >new String("Hi") : String >String : StringConstructor >"Hi" : "Hi" diff --git a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types index 537ed7b76c3..9854e4e9056 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types +++ b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteral.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedObjectLiteral.ts === var x = `abc${ { x: 10, y: 20 } }def`; >x : string ->`abc${ { x: 10, y: 20 } }def` : `abc${string}def` +>`abc${ { x: 10, y: 20 } }def` : string >{ x: 10, y: 20 } : { x: number; y: number; } >x : number >10 : 10 diff --git a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types index 286ea752a09..db086517791 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedObjectLiteralES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedObjectLiteralES6.ts === var x = `abc${ { x: 10, y: 20 } }def`; >x : string ->`abc${ { x: 10, y: 20 } }def` : `abc${string}def` +>`abc${ { x: 10, y: 20 } }def` : string >{ x: 10, y: 20 } : { x: number; y: number; } >x : number >10 : 10 diff --git a/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types b/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types index ccc38f4e12f..cef4f69c0a9 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTemplateString.types @@ -1,9 +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` : "123456 | 654321 123456 | 654321" ->`456 ${ " | " } 654` : "456 | 654" +>`123${ `456 ${ " | " } 654` }321 123${ `456 ${ " | " } 654` }321` : string +>`456 ${ " | " } 654` : string >" | " : " | " ->`456 ${ " | " } 654` : "456 | 654" +>`456 ${ " | " } 654` : string >" | " : " | " diff --git a/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types b/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types index 05dd538b966..12532c8402e 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTemplateStringES6.types @@ -1,9 +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` : "123456 | 654321 123456 | 654321" ->`456 ${ " | " } 654` : "456 | 654" +>`123${ `456 ${ " | " } 654` }321 123${ `456 ${ " | " } 654` }321` : string +>`456 ${ " | " } 654` : string >" | " : " | " ->`456 ${ " | " } 654` : "456 | 654" +>`456 ${ " | " } 654` : string >" | " : " | " diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types index d6e8a4aaedc..898263825af 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAddition.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeAssertionOnAddition.ts === var x = `abc${ (10 + 10) }def`; >x : string ->`abc${ (10 + 10) }def` : `abc${any}def` +>`abc${ (10 + 10) }def` : string >(10 + 10) : any >(10 + 10) : number >10 + 10 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types index 4e006b001a3..e9e81a2d097 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeAssertionOnAdditionES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeAssertionOnAdditionES6.ts === var x = `abc${ (10 + 10) }def`; >x : string ->`abc${ (10 + 10) }def` : `abc${any}def` +>`abc${ (10 + 10) }def` : string >(10 + 10) : any >(10 + 10) : number >10 + 10 : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types index 7e1879ddfa3..3069fbb80f3 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperator.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeOfOperator.ts === var x = `abc${ typeof "hi" }def`; ->x : "abcstringdef" | "abcnumberdef" | "abcbigintdef" | "abcbooleandef" | "abcsymboldef" | "abcundefineddef" | "abcobjectdef" | "abcfunctiondef" ->`abc${ typeof "hi" }def` : "abcstringdef" | "abcnumberdef" | "abcbigintdef" | "abcbooleandef" | "abcsymboldef" | "abcundefineddef" | "abcobjectdef" | "abcfunctiondef" +>x : string +>`abc${ typeof "hi" }def` : string >typeof "hi" : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >"hi" : "hi" diff --git a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types index 3e645795cea..35608d6f604 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedTypeOfOperatorES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedTypeOfOperatorES6.ts === var x = `abc${ typeof "hi" }def`; ->x : "abcstringdef" | "abcnumberdef" | "abcbigintdef" | "abcbooleandef" | "abcsymboldef" | "abcundefineddef" | "abcobjectdef" | "abcfunctiondef" ->`abc${ typeof "hi" }def` : "abcstringdef" | "abcnumberdef" | "abcbigintdef" | "abcbooleandef" | "abcsymboldef" | "abcundefineddef" | "abcobjectdef" | "abcfunctiondef" +>x : string +>`abc${ typeof "hi" }def` : string >typeof "hi" : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >"hi" : "hi" diff --git a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types index 5e7a765637f..9c6c4bc9213 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types +++ b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlus.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedUnaryPlus.ts === var x = `abc${ +Infinity }def`; >x : string ->`abc${ +Infinity }def` : `abc${number}def` +>`abc${ +Infinity }def` : string >+Infinity : number >Infinity : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types index 79267e084c9..4a957f636e6 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedUnaryPlusES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/templates/templateStringWithEmbeddedUnaryPlusES6.ts === var x = `abc${ +Infinity }def`; >x : string ->`abc${ +Infinity }def` : `abc${number}def` +>`abc${ +Infinity }def` : string >+Infinity : number >Infinity : number diff --git a/tests/baselines/reference/templateStringWithEmbeddedYieldKeyword.types b/tests/baselines/reference/templateStringWithEmbeddedYieldKeyword.types index 43637582d62..901d91ecb37 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedYieldKeyword.types +++ b/tests/baselines/reference/templateStringWithEmbeddedYieldKeyword.types @@ -5,7 +5,7 @@ function* gen { // Once this is supported, yield *must* be parenthesized. var x = `abc${ yield 10 }def`; >x : string ->`abc${ yield 10 }def` : `abc${any}def` +>`abc${ yield 10 }def` : string >yield 10 : any >10 : 10 } diff --git a/tests/baselines/reference/templateStringWithEmbeddedYieldKeywordES6.types b/tests/baselines/reference/templateStringWithEmbeddedYieldKeywordES6.types index 84e4804e384..a4226bc3f44 100644 --- a/tests/baselines/reference/templateStringWithEmbeddedYieldKeywordES6.types +++ b/tests/baselines/reference/templateStringWithEmbeddedYieldKeywordES6.types @@ -5,7 +5,7 @@ function* gen() { // Once this is supported, yield *must* be parenthesized. var x = `abc${ yield 10 }def`; >x : string ->`abc${ yield 10 }def` : `abc${any}def` +>`abc${ yield 10 }def` : string >yield 10 : any >10 : 10 } diff --git a/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types b/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types index fbe6b30e844..efc2723c270 100644 --- a/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types +++ b/tests/baselines/reference/templateStringWithEmptyLiteralPortions.types @@ -5,69 +5,69 @@ var a = ``; var b = `${ 0 }`; >b : string ->`${ 0 }` : "0" +>`${ 0 }` : string >0 : 0 var c = `1${ 0 }`; >c : string ->`1${ 0 }` : "10" +>`1${ 0 }` : string >0 : 0 var d = `${ 0 }2`; >d : string ->`${ 0 }2` : "02" +>`${ 0 }2` : string >0 : 0 var e = `1${ 0 }2`; >e : string ->`1${ 0 }2` : "102" +>`1${ 0 }2` : string >0 : 0 var f = `${ 0 }${ 0 }`; >f : string ->`${ 0 }${ 0 }` : "00" +>`${ 0 }${ 0 }` : string >0 : 0 >0 : 0 var g = `1${ 0 }${ 0 }`; >g : string ->`1${ 0 }${ 0 }` : "100" +>`1${ 0 }${ 0 }` : string >0 : 0 >0 : 0 var h = `${ 0 }2${ 0 }`; >h : string ->`${ 0 }2${ 0 }` : "020" +>`${ 0 }2${ 0 }` : string >0 : 0 >0 : 0 var i = `1${ 0 }2${ 0 }`; >i : string ->`1${ 0 }2${ 0 }` : "1020" +>`1${ 0 }2${ 0 }` : string >0 : 0 >0 : 0 var j = `${ 0 }${ 0 }3`; >j : string ->`${ 0 }${ 0 }3` : "003" +>`${ 0 }${ 0 }3` : string >0 : 0 >0 : 0 var k = `1${ 0 }${ 0 }3`; >k : string ->`1${ 0 }${ 0 }3` : "1003" +>`1${ 0 }${ 0 }3` : string >0 : 0 >0 : 0 var l = `${ 0 }2${ 0 }3`; >l : string ->`${ 0 }2${ 0 }3` : "0203" +>`${ 0 }2${ 0 }3` : string >0 : 0 >0 : 0 var m = `1${ 0 }2${ 0 }3`; >m : string ->`1${ 0 }2${ 0 }3` : "10203" +>`1${ 0 }2${ 0 }3` : string >0 : 0 >0 : 0 diff --git a/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types b/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types index a0c680135c6..aad4f1eb095 100644 --- a/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types +++ b/tests/baselines/reference/templateStringWithEmptyLiteralPortionsES6.types @@ -5,69 +5,69 @@ var a = ``; var b = `${ 0 }`; >b : string ->`${ 0 }` : "0" +>`${ 0 }` : string >0 : 0 var c = `1${ 0 }`; >c : string ->`1${ 0 }` : "10" +>`1${ 0 }` : string >0 : 0 var d = `${ 0 }2`; >d : string ->`${ 0 }2` : "02" +>`${ 0 }2` : string >0 : 0 var e = `1${ 0 }2`; >e : string ->`1${ 0 }2` : "102" +>`1${ 0 }2` : string >0 : 0 var f = `${ 0 }${ 0 }`; >f : string ->`${ 0 }${ 0 }` : "00" +>`${ 0 }${ 0 }` : string >0 : 0 >0 : 0 var g = `1${ 0 }${ 0 }`; >g : string ->`1${ 0 }${ 0 }` : "100" +>`1${ 0 }${ 0 }` : string >0 : 0 >0 : 0 var h = `${ 0 }2${ 0 }`; >h : string ->`${ 0 }2${ 0 }` : "020" +>`${ 0 }2${ 0 }` : string >0 : 0 >0 : 0 var i = `1${ 0 }2${ 0 }`; >i : string ->`1${ 0 }2${ 0 }` : "1020" +>`1${ 0 }2${ 0 }` : string >0 : 0 >0 : 0 var j = `${ 0 }${ 0 }3`; >j : string ->`${ 0 }${ 0 }3` : "003" +>`${ 0 }${ 0 }3` : string >0 : 0 >0 : 0 var k = `1${ 0 }${ 0 }3`; >k : string ->`1${ 0 }${ 0 }3` : "1003" +>`1${ 0 }${ 0 }3` : string >0 : 0 >0 : 0 var l = `${ 0 }2${ 0 }3`; >l : string ->`${ 0 }2${ 0 }3` : "0203" +>`${ 0 }2${ 0 }3` : string >0 : 0 >0 : 0 var m = `1${ 0 }2${ 0 }3`; >m : string ->`1${ 0 }2${ 0 }3` : "10203" +>`1${ 0 }2${ 0 }3` : string >0 : 0 >0 : 0 diff --git a/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types b/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types index b0d90076ef4..8c6d4dc2e79 100644 --- a/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types +++ b/tests/baselines/reference/templateStringWithOpenCommentInStringPortion.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWithOpenCommentInStringPortion.ts === ` /**head ${ 10 } // still middle ${ 20 } /* still tail ` ->` /**head ${ 10 } // still middle ${ 20 } /* still tail ` : " /**head 10 // still middle 20 /* still tail " +>` /**head ${ 10 } // still middle ${ 20 } /* still tail ` : string >10 : 10 >20 : 20 diff --git a/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types b/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types index 3f27bda8468..fa9ede6976b 100644 --- a/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types +++ b/tests/baselines/reference/templateStringWithOpenCommentInStringPortionES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/templates/templateStringWithOpenCommentInStringPortionES6.ts === ` /**head ${ 10 } // still middle ${ 20 } /* still tail ` ->` /**head ${ 10 } // still middle ${ 20 } /* still tail ` : " /**head 10 // still middle 20 /* still tail " +>` /**head ${ 10 } // still middle ${ 20 } /* still tail ` : string >10 : 10 >20 : 20 diff --git a/tests/baselines/reference/templateStringWithPropertyAccess.types b/tests/baselines/reference/templateStringWithPropertyAccess.types index 65f006c430c..faa2fda3888 100644 --- a/tests/baselines/reference/templateStringWithPropertyAccess.types +++ b/tests/baselines/reference/templateStringWithPropertyAccess.types @@ -2,7 +2,7 @@ `abc${0}abc`.indexOf(`abc`); >`abc${0}abc`.indexOf(`abc`) : number >`abc${0}abc`.indexOf : (searchString: string, position?: number) => number ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >indexOf : (searchString: string, position?: number) => number >`abc` : "abc" diff --git a/tests/baselines/reference/templateStringWithPropertyAccessES6.types b/tests/baselines/reference/templateStringWithPropertyAccessES6.types index 4ffce701c40..36a84452808 100644 --- a/tests/baselines/reference/templateStringWithPropertyAccessES6.types +++ b/tests/baselines/reference/templateStringWithPropertyAccessES6.types @@ -2,7 +2,7 @@ `abc${0}abc`.indexOf(`abc`); >`abc${0}abc`.indexOf(`abc`) : number >`abc${0}abc`.indexOf : (searchString: string, position?: number) => number ->`abc${0}abc` : "abc0abc" +>`abc${0}abc` : string >0 : 0 >indexOf : (searchString: string, position?: number) => number >`abc` : "abc" diff --git a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.types b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.types index 902b87f52cb..1ffd2e8305e 100644 --- a/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.types +++ b/tests/baselines/reference/templateStringsArrayTypeDefinedInES5Mode.types @@ -20,7 +20,7 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; >f `abcdef${ 1234 }${ 5678 }ghijkl` : void >f : (x: TemplateStringsArray, y: number, z: number) => void ->`abcdef${ 1234 }${ 5678 }ghijkl` : "abcdef12345678ghijkl" +>`abcdef${ 1234 }${ 5678 }ghijkl` : string >1234 : 1234 >5678 : 5678 diff --git a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.types b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.types index 2ef3d21cacd..5deba77862b 100644 --- a/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.types +++ b/tests/baselines/reference/templateStringsArrayTypeNotDefinedES5Mode.types @@ -16,7 +16,7 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; >f `abcdef${ 1234 }${ 5678 }ghijkl` : void >f : (x: TemplateStringsArray, y: number, z: number) => void ->`abcdef${ 1234 }${ 5678 }ghijkl` : "abcdef12345678ghijkl" +>`abcdef${ 1234 }${ 5678 }ghijkl` : string >1234 : 1234 >5678 : 5678 diff --git a/tests/baselines/reference/templateStringsArrayTypeRedefinedInES6Mode.types b/tests/baselines/reference/templateStringsArrayTypeRedefinedInES6Mode.types index 38ba746f768..6fca2974a3d 100644 --- a/tests/baselines/reference/templateStringsArrayTypeRedefinedInES6Mode.types +++ b/tests/baselines/reference/templateStringsArrayTypeRedefinedInES6Mode.types @@ -20,7 +20,7 @@ f({}, 10, 10); f `abcdef${ 1234 }${ 5678 }ghijkl`; >f `abcdef${ 1234 }${ 5678 }ghijkl` : void >f : (x: TemplateStringsArray, y: number, z: number) => void ->`abcdef${ 1234 }${ 5678 }ghijkl` : "abcdef12345678ghijkl" +>`abcdef${ 1234 }${ 5678 }ghijkl` : string >1234 : 1234 >5678 : 5678 diff --git a/tests/baselines/reference/truthinessCallExpressionCoercion.types b/tests/baselines/reference/truthinessCallExpressionCoercion.types index e54295cb3ee..21c2328455c 100644 --- a/tests/baselines/reference/truthinessCallExpressionCoercion.types +++ b/tests/baselines/reference/truthinessCallExpressionCoercion.types @@ -192,7 +192,7 @@ function A(stats: StatsBase) { >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->`[Directory] ${stats.ctime}` : `[Directory] ${number}` +>`[Directory] ${stats.ctime}` : string >stats.ctime : number >stats : StatsBase >ctime : number diff --git a/tests/baselines/reference/typeGuardIntersectionTypes.types b/tests/baselines/reference/typeGuardIntersectionTypes.types index 6d9d0f47ac4..bf119d5743c 100644 --- a/tests/baselines/reference/typeGuardIntersectionTypes.types +++ b/tests/baselines/reference/typeGuardIntersectionTypes.types @@ -196,7 +196,7 @@ function identifyBeast(beast: Beast) { log(`unknown - ${beast.legs} legs, wings`); >log(`unknown - ${beast.legs} legs, wings`) : void >log : (s: string) => void ->`unknown - ${beast.legs} legs, wings` : `unknown - ${number} legs, wings` +>`unknown - ${beast.legs} legs, wings` : string >beast.legs : number >beast : Beast & Legged & Winged >legs : number @@ -208,7 +208,7 @@ function identifyBeast(beast: Beast) { log(`manbearpig - ${beast.legs} legs, no wings`); >log(`manbearpig - ${beast.legs} legs, no wings`) : void >log : (s: string) => void ->`manbearpig - ${beast.legs} legs, no wings` : `manbearpig - ${number} legs, no wings` +>`manbearpig - ${beast.legs} legs, no wings` : string >beast.legs : number >beast : Beast & Legged >legs : number diff --git a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types index 90cebfc3043..ddb24f5de93 100644 --- a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types +++ b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/unicodeExtendedEscapes/unicodeExtendedEscapesInTemplates20_ES5.ts === var x = `\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}`; >x : string ->`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : "Hello world" +>`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : string >`\u{20}\u{020}\u{0020}\u{000020}` : " " diff --git a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types index f8ae16d4a4c..8244bc5b7fd 100644 --- a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types +++ b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/unicodeExtendedEscapes/unicodeExtendedEscapesInTemplates20_ES6.ts === var x = `\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}`; >x : string ->`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : "Hello world" +>`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : string >`\u{20}\u{020}\u{0020}\u{000020}` : " " From e2318217fb05574a3f6e9a026807eb078944b4a4 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 3 Feb 2021 13:50:23 -1000 Subject: [PATCH 04/36] Strip nullable types from 'this' type in inference with optional chain calls (#42536) * Properly strip nullable types from this type in optional chain calls * Add regression test --- src/compiler/checker.ts | 28 ++++++------- .../baselines/reference/callChainInference.js | 25 ++++++++++++ .../reference/callChainInference.symbols | 39 +++++++++++++++++++ .../reference/callChainInference.types | 37 ++++++++++++++++++ .../callChain/callChainInference.ts | 17 ++++++++ 5 files changed, 130 insertions(+), 16 deletions(-) create mode 100644 tests/baselines/reference/callChainInference.js create mode 100644 tests/baselines/reference/callChainInference.symbols create mode 100644 tests/baselines/reference/callChainInference.types create mode 100644 tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d5c65af052c..4101fa09cc1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -27160,6 +27160,16 @@ namespace ts { return getInferredTypes(context); } + function getThisArgumentType(thisArgumentNode: LeftHandSideExpression | undefined) { + if (!thisArgumentNode) { + return voidType; + } + const thisArgumentType = checkExpression(thisArgumentNode); + return isOptionalChainRoot(thisArgumentNode.parent) ? getNonNullableType(thisArgumentType) : + isOptionalChain(thisArgumentNode.parent) ? removeOptionalTypeMarker(thisArgumentType) : + thisArgumentType; + } + function inferTypeArguments(node: CallLikeExpression, signature: Signature, args: readonly Expression[], checkMode: CheckMode, context: InferenceContext): Type[] { if (isJsxOpeningLikeElement(node)) { return inferJsxTypeArguments(node, signature, checkMode, context); @@ -27215,8 +27225,7 @@ namespace ts { const thisType = getThisTypeOfSignature(signature); if (thisType) { const thisArgumentNode = getThisArgumentOfCall(node); - const thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; - inferTypes(context.inferences, thisArgumentType, thisType); + inferTypes(context.inferences, getThisArgumentType(thisArgumentNode), thisType); } for (let i = 0; i < argCount; i++) { @@ -27457,20 +27466,7 @@ namespace ts { // If the signature's 'this' type is voidType, then the check is skipped -- anything is compatible. // If the expression is a new expression, then the check is skipped. const thisArgumentNode = getThisArgumentOfCall(node); - let thisArgumentType: Type; - if (thisArgumentNode) { - thisArgumentType = checkExpression(thisArgumentNode); - if (isOptionalChainRoot(thisArgumentNode.parent)) { - thisArgumentType = getNonNullableType(thisArgumentType); - } - else if (isOptionalChain(thisArgumentNode.parent)) { - thisArgumentType = removeOptionalTypeMarker(thisArgumentType); - } - } - else { - thisArgumentType = voidType; - } - + const thisArgumentType = getThisArgumentType(thisArgumentNode); const errorNode = reportErrors ? (thisArgumentNode || node) : undefined; const headMessage = Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; if (!checkTypeRelatedTo(thisArgumentType, thisType, relation, errorNode, headMessage, containingMessageChain, errorOutputContainer)) { diff --git a/tests/baselines/reference/callChainInference.js b/tests/baselines/reference/callChainInference.js new file mode 100644 index 00000000000..f5a77972b27 --- /dev/null +++ b/tests/baselines/reference/callChainInference.js @@ -0,0 +1,25 @@ +//// [callChainInference.ts] +// Repro from #42404 + +interface Y { + foo(this: T, arg: keyof T): void; + a: number; + b: string; +} + +declare const value: Y | undefined; + +if (value) { + value?.foo("a"); +} + +value?.foo("a"); + + +//// [callChainInference.js] +"use strict"; +// Repro from #42404 +if (value) { + value === null || value === void 0 ? void 0 : value.foo("a"); +} +value === null || value === void 0 ? void 0 : value.foo("a"); diff --git a/tests/baselines/reference/callChainInference.symbols b/tests/baselines/reference/callChainInference.symbols new file mode 100644 index 00000000000..b1fab1a8d8b --- /dev/null +++ b/tests/baselines/reference/callChainInference.symbols @@ -0,0 +1,39 @@ +=== tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts === +// Repro from #42404 + +interface Y { +>Y : Symbol(Y, Decl(callChainInference.ts, 0, 0)) + + foo(this: T, arg: keyof T): void; +>foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +>T : Symbol(T, Decl(callChainInference.ts, 3, 8)) +>this : Symbol(this, Decl(callChainInference.ts, 3, 11)) +>T : Symbol(T, Decl(callChainInference.ts, 3, 8)) +>arg : Symbol(arg, Decl(callChainInference.ts, 3, 19)) +>T : Symbol(T, Decl(callChainInference.ts, 3, 8)) + + a: number; +>a : Symbol(Y.a, Decl(callChainInference.ts, 3, 40)) + + b: string; +>b : Symbol(Y.b, Decl(callChainInference.ts, 4, 14)) +} + +declare const value: Y | undefined; +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) +>Y : Symbol(Y, Decl(callChainInference.ts, 0, 0)) + +if (value) { +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) + + value?.foo("a"); +>value?.foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) +>foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +} + +value?.foo("a"); +>value?.foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) +>foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) + diff --git a/tests/baselines/reference/callChainInference.types b/tests/baselines/reference/callChainInference.types new file mode 100644 index 00000000000..4ed4f5acf6e --- /dev/null +++ b/tests/baselines/reference/callChainInference.types @@ -0,0 +1,37 @@ +=== tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts === +// Repro from #42404 + +interface Y { + foo(this: T, arg: keyof T): void; +>foo : (this: T, arg: keyof T) => void +>this : T +>arg : keyof T + + a: number; +>a : number + + b: string; +>b : string +} + +declare const value: Y | undefined; +>value : Y | undefined + +if (value) { +>value : Y | undefined + + value?.foo("a"); +>value?.foo("a") : void +>value?.foo : (this: T, arg: keyof T) => void +>value : Y +>foo : (this: T, arg: keyof T) => void +>"a" : "a" +} + +value?.foo("a"); +>value?.foo("a") : void | undefined +>value?.foo : ((this: T, arg: keyof T) => void) | undefined +>value : Y | undefined +>foo : ((this: T, arg: keyof T) => void) | undefined +>"a" : "a" + diff --git a/tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts b/tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts new file mode 100644 index 00000000000..52799c1f620 --- /dev/null +++ b/tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts @@ -0,0 +1,17 @@ +// @strict: true + +// Repro from #42404 + +interface Y { + foo(this: T, arg: keyof T): void; + a: number; + b: string; +} + +declare const value: Y | undefined; + +if (value) { + value?.foo("a"); +} + +value?.foo("a"); From 4c118ae67bac6c7a9c57a8afaaf3c2a4c82b498a Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Thu, 4 Feb 2021 04:26:33 +0200 Subject: [PATCH 05/36] fix(39022): wrap export references UnaryExpression to ParenthesizedExpression (#41156) --- src/compiler/transformers/module/module.ts | 3 +- .../es6ExportClauseWithAssignmentInEs5.js | 6 +- .../reference/moduleExportsUnaryExpression.js | 39 +++++++++++ .../moduleExportsUnaryExpression.symbols | 48 +++++++++++++ .../moduleExportsUnaryExpression.types | 69 +++++++++++++++++++ .../compiler/moduleExportsUnaryExpression.ts | 16 +++++ 6 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/moduleExportsUnaryExpression.js create mode 100644 tests/baselines/reference/moduleExportsUnaryExpression.symbols create mode 100644 tests/baselines/reference/moduleExportsUnaryExpression.types create mode 100644 tests/cases/compiler/moduleExportsUnaryExpression.ts diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index d2f4917d50b..24d962c6e2f 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -1874,9 +1874,8 @@ namespace ts { for (const exportName of exportedNames) { // Mark the node to prevent triggering this rule again. noSubstitution[getNodeId(expression)] = true; - expression = createExportExpression(exportName, expression); + expression = factory.createParenthesizedExpression(createExportExpression(exportName, expression)); } - return expression; } } diff --git a/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js b/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js index c68f573a98e..18433ac6885 100644 --- a/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js +++ b/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js @@ -32,6 +32,6 @@ exports.buzz = buzz; exports.buzz = buzz += 3; var bizz = 8; exports.bizz = bizz; -exports.bizz = bizz += 1; // compiles to exports.bizz = bizz += 1 -exports.bizz = bizz -= 1; // similarly -exports.bizz = ++bizz; // compiles to exports.bizz = ++bizz +(exports.bizz = bizz += 1); // compiles to exports.bizz = bizz += 1 +(exports.bizz = bizz -= 1); // similarly +(exports.bizz = ++bizz); // compiles to exports.bizz = ++bizz diff --git a/tests/baselines/reference/moduleExportsUnaryExpression.js b/tests/baselines/reference/moduleExportsUnaryExpression.js new file mode 100644 index 00000000000..b3956233ed4 --- /dev/null +++ b/tests/baselines/reference/moduleExportsUnaryExpression.js @@ -0,0 +1,39 @@ +//// [moduleExportsUnaryExpression.ts] +let x = 1; + +export function foo(y: number) { + if (y <= x++) return y <= x++; + if (y <= x--) return y <= x--; + if (y <= ++x) return y <= ++x; + if (y <= --x) return y <= --x; + + x++; + x--; + ++x; + --x; +} + +export { x }; + + +//// [moduleExportsUnaryExpression.js] +"use strict"; +exports.__esModule = true; +exports.x = exports.foo = void 0; +var x = 1; +exports.x = x; +function foo(y) { + if (y <= (exports.x = x += 1)) + return y <= (exports.x = x += 1); + if (y <= (exports.x = x -= 1)) + return y <= (exports.x = x -= 1); + if (y <= (exports.x = ++x)) + return y <= (exports.x = ++x); + if (y <= (exports.x = --x)) + return y <= (exports.x = --x); + (exports.x = x += 1); + (exports.x = x -= 1); + (exports.x = ++x); + (exports.x = --x); +} +exports.foo = foo; diff --git a/tests/baselines/reference/moduleExportsUnaryExpression.symbols b/tests/baselines/reference/moduleExportsUnaryExpression.symbols new file mode 100644 index 00000000000..bf0e51acfac --- /dev/null +++ b/tests/baselines/reference/moduleExportsUnaryExpression.symbols @@ -0,0 +1,48 @@ +=== tests/cases/compiler/moduleExportsUnaryExpression.ts === +let x = 1; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + +export function foo(y: number) { +>foo : Symbol(foo, Decl(moduleExportsUnaryExpression.ts, 0, 10)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) + + if (y <= x++) return y <= x++; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + if (y <= x--) return y <= x--; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + if (y <= ++x) return y <= ++x; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + if (y <= --x) return y <= --x; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + x++; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + x--; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + ++x; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + --x; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +} + +export { x }; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 14, 8)) + diff --git a/tests/baselines/reference/moduleExportsUnaryExpression.types b/tests/baselines/reference/moduleExportsUnaryExpression.types new file mode 100644 index 00000000000..bc7bd9e49c1 --- /dev/null +++ b/tests/baselines/reference/moduleExportsUnaryExpression.types @@ -0,0 +1,69 @@ +=== tests/cases/compiler/moduleExportsUnaryExpression.ts === +let x = 1; +>x : number +>1 : 1 + +export function foo(y: number) { +>foo : (y: number) => boolean +>y : number + + if (y <= x++) return y <= x++; +>y <= x++ : boolean +>y : number +>x++ : number +>x : number +>y <= x++ : boolean +>y : number +>x++ : number +>x : number + + if (y <= x--) return y <= x--; +>y <= x-- : boolean +>y : number +>x-- : number +>x : number +>y <= x-- : boolean +>y : number +>x-- : number +>x : number + + if (y <= ++x) return y <= ++x; +>y <= ++x : boolean +>y : number +>++x : number +>x : number +>y <= ++x : boolean +>y : number +>++x : number +>x : number + + if (y <= --x) return y <= --x; +>y <= --x : boolean +>y : number +>--x : number +>x : number +>y <= --x : boolean +>y : number +>--x : number +>x : number + + x++; +>x++ : number +>x : number + + x--; +>x-- : number +>x : number + + ++x; +>++x : number +>x : number + + --x; +>--x : number +>x : number +} + +export { x }; +>x : number + diff --git a/tests/cases/compiler/moduleExportsUnaryExpression.ts b/tests/cases/compiler/moduleExportsUnaryExpression.ts new file mode 100644 index 00000000000..519536795bc --- /dev/null +++ b/tests/cases/compiler/moduleExportsUnaryExpression.ts @@ -0,0 +1,16 @@ +// @module: commonjs +let x = 1; + +export function foo(y: number) { + if (y <= x++) return y <= x++; + if (y <= x--) return y <= x--; + if (y <= ++x) return y <= ++x; + if (y <= --x) return y <= --x; + + x++; + x--; + ++x; + --x; +} + +export { x }; From 05e2f74fbef4a935f1e7daea9c9eb152e3956085 Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Thu, 4 Feb 2021 06:22:59 +0000 Subject: [PATCH 06/36] Update package-lock.json --- package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a797236711..06c1bacd326 100644 --- a/package-lock.json +++ b/package-lock.json @@ -324,9 +324,9 @@ } }, "@octokit/openapi-types": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-4.0.0.tgz", - "integrity": "sha512-o4Q9VPYaIdzxskfVuWk7Dcb6Ldq2xbd1QKmPCRx29nFdFxm+2Py74QLfbB3CgankZerHnNJ9wgINOkwa/O2qRg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-4.0.1.tgz", + "integrity": "sha512-k2hRcfcLRyPJjtYfJLzg404n7HZ6sUpAWAR/uNI8tf96NgatWOpw1ocdF+WFfx/trO1ivBh7ckynO1rn+xAw/Q==", "dev": true }, "@octokit/plugin-paginate-rest": { @@ -585,9 +585,9 @@ "dev": true }, "@types/node": { - "version": "14.14.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", - "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", + "version": "14.14.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.24.tgz", + "integrity": "sha512-6BAlkS4seVjszhrwN0W1WabqWwuJwcYF36Z1rPPyQm80LGRKsIeUPdzI51TezXenjetFNy1gRTpuDn1NBg33LA==", "dev": true }, "@types/node-fetch": { @@ -3751,9 +3751,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.0.tgz", - "integrity": "sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", From 258be217a6244efcd8055d4096b50585427c5dce Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 4 Feb 2021 10:22:15 -0800 Subject: [PATCH 07/36] Fix completions crash on transient exported property named 'default' (#42583) * Fix completions crash on transient exported property named default * Revert simplification, both conditions were needed --- src/harness/fourslashImpl.ts | 2 +- src/services/codefixes/importFixes.ts | 12 +++++------ src/services/completions.ts | 2 +- src/services/utilities.ts | 6 +++--- ...completionsImport_weirdDefaultSynthesis.ts | 20 +++++++++++++++++++ 5 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts diff --git a/src/harness/fourslashImpl.ts b/src/harness/fourslashImpl.ts index aa708bfcf4c..8fd2f7f2447 100644 --- a/src/harness/fourslashImpl.ts +++ b/src/harness/fourslashImpl.ts @@ -2802,7 +2802,7 @@ namespace FourSlash { const matchingName = completions?.filter(e => e.name === options.name); const detailMessage = matchingName?.length ? `\n Found ${matchingName.length} with name '${options.name}' from source(s) ${matchingName.map(e => `'${e.source}'`).join(", ")}.` - : ""; + : ` (In fact, there were no completions with name '${options.name}' at all.)`; return this.raiseError(`No completions were found for the given name, source, and preferences.` + detailMessage); } const codeActions = details.codeActions; diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 628c26d294e..9700e6b583b 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -609,7 +609,7 @@ namespace ts.codefix { const exported = getDefaultLikeExportWorker(importingFile, moduleSymbol, checker, compilerOptions); if (!exported) return undefined; const { symbol, kind } = exported; - const info = getDefaultExportInfoWorker(symbol, moduleSymbol, checker, compilerOptions); + const info = getDefaultExportInfoWorker(symbol, checker, compilerOptions); return info && { symbol, kind, ...info }; } @@ -645,7 +645,7 @@ namespace ts.codefix { return allowSyntheticDefaults ? ImportKind.Default : ImportKind.CommonJS; } - function getDefaultExportInfoWorker(defaultExport: Symbol, moduleSymbol: Symbol, checker: TypeChecker, compilerOptions: CompilerOptions): { readonly symbolForMeaning: Symbol, readonly name: string } | undefined { + function getDefaultExportInfoWorker(defaultExport: Symbol, checker: TypeChecker, compilerOptions: CompilerOptions): { readonly symbolForMeaning: Symbol, readonly name: string } | undefined { const localSymbol = getLocalSymbolForExportDefault(defaultExport); if (localSymbol) return { symbolForMeaning: localSymbol, name: localSymbol.name }; @@ -659,7 +659,7 @@ namespace ts.codefix { // but we can still offer completions for it. // - `aliased.parent` will be undefined if the module is exporting `globalThis.something`, // or another expression that resolves to a global. - return getDefaultExportInfoWorker(aliased, aliased.parent, checker, compilerOptions); + return getDefaultExportInfoWorker(aliased, checker, compilerOptions); } } @@ -667,15 +667,13 @@ namespace ts.codefix { defaultExport.escapedName !== InternalSymbolName.ExportEquals) { return { symbolForMeaning: defaultExport, name: defaultExport.getName() }; } - return { symbolForMeaning: defaultExport, name: moduleSymbolToValidIdentifier(moduleSymbol, compilerOptions.target) }; + return { symbolForMeaning: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; } function getNameForExportDefault(symbol: Symbol): string | undefined { return symbol.declarations && firstDefined(symbol.declarations, declaration => { if (isExportAssignment(declaration)) { - if (isIdentifier(declaration.expression)) { - return declaration.expression.text; - } + return tryCast(skipOuterExpressions(declaration.expression), isIdentifier)?.text; } else if (isExportSpecifier(declaration)) { Debug.assert(declaration.name.text === InternalSymbolName.Default, "Expected the specifier to be a default export"); diff --git a/src/services/completions.ts b/src/services/completions.ts index a59f637a96e..a3c957442cb 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -732,7 +732,7 @@ namespace ts.Completions { exportedSymbol, moduleSymbol, sourceFile, - getNameForExportedSymbol(symbol, compilerOptions.target!), + getNameForExportedSymbol(symbol, compilerOptions.target), host, program, formatContext, diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 8344c3e60ff..1fb8a23043e 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -2880,10 +2880,10 @@ namespace ts { return isArray(valueOrArray) ? first(valueOrArray) : valueOrArray; } - export function getNameForExportedSymbol(symbol: Symbol, scriptTarget: ScriptTarget) { - if (symbol.escapedName === InternalSymbolName.ExportEquals || symbol.escapedName === InternalSymbolName.Default) { + export function getNameForExportedSymbol(symbol: Symbol, scriptTarget: ScriptTarget | undefined) { + if (!(symbol.flags & SymbolFlags.Transient) && (symbol.escapedName === InternalSymbolName.ExportEquals || symbol.escapedName === InternalSymbolName.Default)) { // Name of "export default foo;" is "foo". Name of "export default 0" is the filename converted to camelCase. - return firstDefined(symbol.declarations, d => isExportAssignment(d) && isIdentifier(d.expression) ? d.expression.text : undefined) + return firstDefined(symbol.declarations, d => isExportAssignment(d) ? tryCast(skipOuterExpressions(d.expression), isIdentifier)?.text : undefined) || codefix.moduleSymbolToValidIdentifier(getSymbolParentOrFail(symbol), scriptTarget); } return symbol.name; diff --git a/tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts b/tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts new file mode 100644 index 00000000000..b8d3558da3e --- /dev/null +++ b/tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts @@ -0,0 +1,20 @@ +/// + +// @Filename: /collection.ts +//// class Collection { +//// public static readonly default: typeof Collection = Collection; +//// } +//// export = Collection as typeof Collection & { default: typeof Collection }; + +// @Filename: /index.ts +//// Colle/**/ + +verify.applyCodeActionFromCompletion("", { + name: "Collection", + source: "/collection", + description: `Import 'Collection' from module "./collection"`, + preferences: { + includeCompletionsForModuleExports: true + }, + newFileContent: `import Collection = require("./collection");\n\nColle` +}); From ab2729a99b861bafbf429b2692c51d720de825aa Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 4 Feb 2021 11:18:30 -1000 Subject: [PATCH 08/36] Smarter subtype reduction in union types (#42353) * Exclude primitive types from union subtype reduction in most cases * Accept new baselines * Minor fixes * Less aggressive checking of assertion function calls that don't affect control flow * Accept new baselines --- src/compiler/checker.ts | 106 +- tests/baselines/reference/callChain.types | 2 +- .../reference/callChainInference.types | 2 +- .../controlFlowOptionalChain.errors.txt | 5 +- .../reference/controlFlowOptionalChain.types | 2 +- .../controlFlowSuperPropertyAccess.types | 2 +- .../reference/discriminantPropertyCheck.types | 4 +- .../reference/promiseTypeStrictNull.types | 8 +- .../baselines/reference/superMethodCall.types | 8 +- .../baselines/reference/thisMethodCall.types | 2 +- .../truthinessCallExpressionCoercion2.types | 6 +- .../reference/typeVariableTypeGuards.types | 2 +- .../unionSubtypeReductionErrors.errors.txt | 5008 +---------------- .../unionSubtypeReductionErrors.types | 4 +- .../voidReturnIndexUnionInference.types | 2 +- 15 files changed, 70 insertions(+), 5093 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4101fa09cc1..aeb90104f5c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13310,54 +13310,40 @@ namespace ts { return includes; } - function isSetOfLiteralsFromSameEnum(types: readonly Type[]): boolean { - const first = types[0]; - if (first.flags & TypeFlags.EnumLiteral) { - const firstEnum = getParentOfSymbol(first.symbol); - for (let i = 1; i < types.length; i++) { - const other = types[i]; - if (!(other.flags & TypeFlags.EnumLiteral) || (firstEnum !== getParentOfSymbol(other.symbol))) { - return false; - } - } - return true; - } - - return false; - } - - function removeSubtypes(types: Type[], primitivesOnly: boolean): boolean { + function removeSubtypes(types: Type[], hasObjectTypes: boolean): boolean { + // We assume that redundant primitive types have already been removed from the types array and that there + // are no any and unknown types in the array. Thus, the only possible supertypes for primitive types are empty + // object types, and if none of those are present we can exclude primitive types from the subtype check. + const hasEmptyObject = hasObjectTypes && some(types, t => !!(t.flags & TypeFlags.Object) && !isGenericMappedType(t) && isEmptyResolvedType(resolveStructuredTypeMembers(t))); const len = types.length; - if (len === 0 || isSetOfLiteralsFromSameEnum(types)) { - return true; - } let i = len; let count = 0; while (i > 0) { i--; const source = types[i]; - for (const target of types) { - if (source !== target) { - if (count === 100000) { - // After 100000 subtype checks we estimate the remaining amount of work by assuming the - // same ratio of checks per element. If the estimated number of remaining type checks is - // greater than an upper limit we deem the union type too complex to represent. The - // upper limit is 25M for unions of primitives only, and 1M otherwise. This for example - // caps union types at 5000 unique literal types and 1000 unique object types. - const estimatedCount = (count / (len - i)) * len; - if (estimatedCount > (primitivesOnly ? 25000000 : 1000000)) { - tracing.instant(tracing.Phase.CheckTypes, "removeSubtypes_DepthLimit", { typeIds: types.map(t => t.id) }); - error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); - return false; + if (hasEmptyObject || source.flags & TypeFlags.StructuredOrInstantiable) { + for (const target of types) { + if (source !== target) { + if (count === 100000) { + // After 100000 subtype checks we estimate the remaining amount of work by assuming the + // same ratio of checks per element. If the estimated number of remaining type checks is + // greater than 1M we deem the union type too complex to represent. This for example + // caps union types at 1000 unique object types. + const estimatedCount = (count / (len - i)) * len; + if (estimatedCount > 1000000) { + tracing.instant(tracing.Phase.CheckTypes, "removeSubtypes_DepthLimit", { typeIds: types.map(t => t.id) }); + error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); + return false; + } + } + count++; + if (isTypeRelatedTo(source, target, strictSubtypeRelation) && ( + !(getObjectFlags(getTargetType(source)) & ObjectFlags.Class) || + !(getObjectFlags(getTargetType(target)) & ObjectFlags.Class) || + isTypeDerivedFrom(source, target))) { + orderedRemoveItemAt(types, i); + break; } - } - count++; - if (isTypeRelatedTo(source, target, strictSubtypeRelation) && ( - !(getObjectFlags(getTargetType(source)) & ObjectFlags.Class) || - !(getObjectFlags(getTargetType(target)) & ObjectFlags.Class) || - isTypeDerivedFrom(source, target))) { - orderedRemoveItemAt(types, i); - break; } } } @@ -13370,11 +13356,13 @@ namespace ts { while (i > 0) { i--; const t = types[i]; + const flags = t.flags; const remove = - t.flags & TypeFlags.StringLiteral && includes & TypeFlags.String || - t.flags & TypeFlags.NumberLiteral && includes & TypeFlags.Number || - t.flags & TypeFlags.BigIntLiteral && includes & TypeFlags.BigInt || - t.flags & TypeFlags.UniqueESSymbol && includes & TypeFlags.ESSymbol || + flags & TypeFlags.StringLiteral && includes & TypeFlags.String || + flags & TypeFlags.NumberLiteral && includes & TypeFlags.Number || + flags & TypeFlags.BigIntLiteral && includes & TypeFlags.BigInt || + flags & TypeFlags.UniqueESSymbol && includes & TypeFlags.ESSymbol || + flags & TypeFlags.Undefined && includes & TypeFlags.Void || isFreshLiteralType(t) && containsType(types, (t).regularType); if (remove) { orderedRemoveItemAt(types, i); @@ -13440,20 +13428,18 @@ namespace ts { if (includes & TypeFlags.AnyOrUnknown) { return includes & TypeFlags.Any ? includes & TypeFlags.IncludesWildcard ? wildcardType : anyType : unknownType; } - switch (unionReduction) { - case UnionReduction.Literal: - if (includes & (TypeFlags.Literal | TypeFlags.UniqueESSymbol)) { - removeRedundantLiteralTypes(typeSet, includes); - } - if (includes & TypeFlags.StringLiteral && includes & TypeFlags.TemplateLiteral) { - removeStringLiteralsMatchedByTemplateLiterals(typeSet); - } - break; - case UnionReduction.Subtype: - if (!removeSubtypes(typeSet, !(includes & TypeFlags.IncludesStructuredOrInstantiable))) { - return errorType; - } - break; + if (unionReduction & (UnionReduction.Literal | UnionReduction.Subtype)) { + if (includes & (TypeFlags.Literal | TypeFlags.UniqueESSymbol) || includes & TypeFlags.Void && includes & TypeFlags.Undefined) { + removeRedundantLiteralTypes(typeSet, includes); + } + if (includes & TypeFlags.StringLiteral && includes & TypeFlags.TemplateLiteral) { + removeStringLiteralsMatchedByTemplateLiterals(typeSet); + } + } + if (unionReduction & UnionReduction.Subtype) { + if (!removeSubtypes(typeSet, !!(includes & TypeFlags.Object))) { + return errorType; + } } if (typeSet.length === 0) { return includes & TypeFlags.Null ? includes & TypeFlags.IncludesNonWideningType ? nullType : nullWideningType : @@ -28985,7 +28971,7 @@ namespace ts { if (returnType.flags & TypeFlags.ESSymbolLike && isSymbolOrSymbolForCall(node)) { return getESSymbolLikeTypeForNode(walkUpParenthesizedExpressions(node.parent)); } - if (node.kind === SyntaxKind.CallExpression && node.parent.kind === SyntaxKind.ExpressionStatement && + if (node.kind === SyntaxKind.CallExpression && !node.questionDotToken && node.parent.kind === SyntaxKind.ExpressionStatement && returnType.flags & TypeFlags.Void && getTypePredicateOfSignature(signature)) { if (!isDottedName(node.expression)) { error(node.expression, Diagnostics.Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name); diff --git a/tests/baselines/reference/callChain.types b/tests/baselines/reference/callChain.types index ea4700aa957..1f1a4f1b7c9 100644 --- a/tests/baselines/reference/callChain.types +++ b/tests/baselines/reference/callChain.types @@ -260,7 +260,7 @@ declare const o5: () => undefined | (() => void); >o5 : () => undefined | (() => void) o5()?.(); ->o5()?.() : void | undefined +>o5()?.() : void >o5() : (() => void) | undefined >o5 : () => (() => void) | undefined diff --git a/tests/baselines/reference/callChainInference.types b/tests/baselines/reference/callChainInference.types index 4ed4f5acf6e..3f19f66091e 100644 --- a/tests/baselines/reference/callChainInference.types +++ b/tests/baselines/reference/callChainInference.types @@ -29,7 +29,7 @@ if (value) { } value?.foo("a"); ->value?.foo("a") : void | undefined +>value?.foo("a") : void >value?.foo : ((this: T, arg: keyof T) => void) | undefined >value : Y | undefined >foo : ((this: T, arg: keyof T) => void) | undefined diff --git a/tests/baselines/reference/controlFlowOptionalChain.errors.txt b/tests/baselines/reference/controlFlowOptionalChain.errors.txt index df3c5a55534..1dfe8e9e328 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.errors.txt +++ b/tests/baselines/reference/controlFlowOptionalChain.errors.txt @@ -18,7 +18,6 @@ tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(112,1): error TS tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(112,1): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(130,5): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(134,1): error TS2532: Object is possibly 'undefined'. -tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(153,9): error TS2775: Assertions require every name in the call target to be declared with an explicit type annotation. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(208,9): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(211,9): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(214,9): error TS2532: Object is possibly 'undefined'. @@ -62,7 +61,7 @@ tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(518,13): error T tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(567,21): error TS2532: Object is possibly 'undefined'. -==== tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts (62 errors) ==== +==== tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts (61 errors) ==== // assignments in shortcutting chain declare const o: undefined | { [key: string]: any; @@ -256,8 +255,6 @@ tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(567,21): error T if (!!true) { isDefined(maybeIsString); maybeIsString?.(x); - ~~~~~~~~~~~~~ -!!! error TS2775: Assertions require every name in the call target to be declared with an explicit type annotation. x; } if (!!true) { diff --git a/tests/baselines/reference/controlFlowOptionalChain.types b/tests/baselines/reference/controlFlowOptionalChain.types index 4e335fca6d2..78be0e6f295 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.types +++ b/tests/baselines/reference/controlFlowOptionalChain.types @@ -595,7 +595,7 @@ function f01(x: unknown) { >true : true maybeIsString?.(x); ->maybeIsString?.(x) : void | undefined +>maybeIsString?.(x) : void >maybeIsString : ((value: unknown) => asserts value is string) | undefined >x : unknown diff --git a/tests/baselines/reference/controlFlowSuperPropertyAccess.types b/tests/baselines/reference/controlFlowSuperPropertyAccess.types index 87e7b3f00d0..82ba6ccd34e 100644 --- a/tests/baselines/reference/controlFlowSuperPropertyAccess.types +++ b/tests/baselines/reference/controlFlowSuperPropertyAccess.types @@ -13,7 +13,7 @@ class C extends B { >body : () => void super.m && super.m(); ->super.m && super.m() : void | undefined +>super.m && super.m() : void >super.m : (() => void) | undefined >super : B >m : (() => void) | undefined diff --git a/tests/baselines/reference/discriminantPropertyCheck.types b/tests/baselines/reference/discriminantPropertyCheck.types index 10d3b5f117c..38e04bf6a04 100644 --- a/tests/baselines/reference/discriminantPropertyCheck.types +++ b/tests/baselines/reference/discriminantPropertyCheck.types @@ -343,7 +343,7 @@ const u: U = {} as any; >{} : {} u.a && u.b && f(u.a, u.b); ->u.a && u.b && f(u.a, u.b) : void | "" | undefined +>u.a && u.b && f(u.a, u.b) : void | "" >u.a && u.b : string | undefined >u.a : string | undefined >u : U @@ -361,7 +361,7 @@ u.a && u.b && f(u.a, u.b); >b : string u.b && u.a && f(u.a, u.b); ->u.b && u.a && f(u.a, u.b) : void | "" | undefined +>u.b && u.a && f(u.a, u.b) : void | "" >u.b && u.a : string | undefined >u.b : string | undefined >u : U diff --git a/tests/baselines/reference/promiseTypeStrictNull.types b/tests/baselines/reference/promiseTypeStrictNull.types index 97038aeb4e5..5e27b4ccd76 100644 --- a/tests/baselines/reference/promiseTypeStrictNull.types +++ b/tests/baselines/reference/promiseTypeStrictNull.types @@ -888,8 +888,8 @@ const p75 = p.then(() => undefined, () => null); >null : null const p76 = p.then(() => undefined, () => {}); ->p76 : Promise ->p.then(() => undefined, () => {}) : Promise +>p76 : Promise +>p.then(() => undefined, () => {}) : Promise >p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise >p : Promise >then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise @@ -1092,8 +1092,8 @@ const p93 = p.then(() => {}, () => x); >x : any const p94 = p.then(() => {}, () => undefined); ->p94 : Promise ->p.then(() => {}, () => undefined) : Promise +>p94 : Promise +>p.then(() => {}, () => undefined) : Promise >p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise >p : Promise >then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise diff --git a/tests/baselines/reference/superMethodCall.types b/tests/baselines/reference/superMethodCall.types index 16d40d19ded..7f81a8d7adf 100644 --- a/tests/baselines/reference/superMethodCall.types +++ b/tests/baselines/reference/superMethodCall.types @@ -11,20 +11,20 @@ class Derived extends Base { >Base : Base method() { ->method : () => void | undefined +>method : () => void return super.method?.(); ->super.method?.() : void | undefined +>super.method?.() : void >super.method : (() => void) | undefined >super : Base >method : (() => void) | undefined } async asyncMethod() { ->asyncMethod : () => Promise +>asyncMethod : () => Promise return super.method?.(); ->super.method?.() : void | undefined +>super.method?.() : void >super.method : (() => void) | undefined >super : Base >method : (() => void) | undefined diff --git a/tests/baselines/reference/thisMethodCall.types b/tests/baselines/reference/thisMethodCall.types index 08e023a44d2..b00d50fe4f4 100644 --- a/tests/baselines/reference/thisMethodCall.types +++ b/tests/baselines/reference/thisMethodCall.types @@ -9,7 +9,7 @@ class C { >other : () => void this.method?.(); ->this.method?.() : void | undefined +>this.method?.() : void >this.method : (() => void) | undefined >this : this >method : (() => void) | undefined diff --git a/tests/baselines/reference/truthinessCallExpressionCoercion2.types b/tests/baselines/reference/truthinessCallExpressionCoercion2.types index 83c867e6f8e..d8b79c8318f 100644 --- a/tests/baselines/reference/truthinessCallExpressionCoercion2.types +++ b/tests/baselines/reference/truthinessCallExpressionCoercion2.types @@ -60,7 +60,7 @@ function test(required1: () => boolean, required2: () => boolean, b: boolean, op // ok optional && console.log('optional'); ->optional && console.log('optional') : void | undefined +>optional && console.log('optional') : void >optional : (() => boolean) | undefined >console.log('optional') : void >console.log : (...data: any[]) => void @@ -70,7 +70,7 @@ function test(required1: () => boolean, required2: () => boolean, b: boolean, op // ok 1 && optional && console.log('optional'); ->1 && optional && console.log('optional') : void | undefined +>1 && optional && console.log('optional') : void >1 && optional : (() => boolean) | undefined >1 : 1 >optional : (() => boolean) | undefined @@ -441,7 +441,7 @@ class Foo { // ok 1 && this.optional && console.log('optional'); ->1 && this.optional && console.log('optional') : void | undefined +>1 && this.optional && console.log('optional') : void >1 && this.optional : (() => boolean) | undefined >1 : 1 >this.optional : (() => boolean) | undefined diff --git a/tests/baselines/reference/typeVariableTypeGuards.types b/tests/baselines/reference/typeVariableTypeGuards.types index 063f6bbc96d..35656ad71d6 100644 --- a/tests/baselines/reference/typeVariableTypeGuards.types +++ b/tests/baselines/reference/typeVariableTypeGuards.types @@ -16,7 +16,7 @@ class A

> { >doSomething : () => void this.props.foo && this.props.foo() ->this.props.foo && this.props.foo() : void | undefined +>this.props.foo && this.props.foo() : void >this.props.foo : P["foo"] | undefined >this.props : Readonly

>this : this diff --git a/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt b/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt index 3990e5e6735..fb2936991c0 100644 --- a/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt +++ b/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt @@ -1,10017 +1,5011 @@ -tests/cases/compiler/unionSubtypeReductionErrors.ts(1,9): error TS2590: Expression produces a union type that is too complex to represent. tests/cases/compiler/unionSubtypeReductionErrors.ts(5006,9): error TS2590: Expression produces a union type that is too complex to represent. -==== tests/cases/compiler/unionSubtypeReductionErrors.ts (2 errors) ==== +==== tests/cases/compiler/unionSubtypeReductionErrors.ts (1 errors) ==== let a = [ - ~ 0 as 0, - ~~~~~~~~~~~ 1 as 1, - ~~~~~~~~~~~ 2 as 2, - ~~~~~~~~~~~ 3 as 3, - ~~~~~~~~~~~ 4 as 4, - ~~~~~~~~~~~ 5 as 5, - ~~~~~~~~~~~ 6 as 6, - ~~~~~~~~~~~ 7 as 7, - ~~~~~~~~~~~ 8 as 8, - ~~~~~~~~~~~ 9 as 9, - ~~~~~~~~~~~ 10 as 10, - ~~~~~~~~~~~~~ 11 as 11, - ~~~~~~~~~~~~~ 12 as 12, - ~~~~~~~~~~~~~ 13 as 13, - ~~~~~~~~~~~~~ 14 as 14, - ~~~~~~~~~~~~~ 15 as 15, - ~~~~~~~~~~~~~ 16 as 16, - ~~~~~~~~~~~~~ 17 as 17, - ~~~~~~~~~~~~~ 18 as 18, - ~~~~~~~~~~~~~ 19 as 19, - ~~~~~~~~~~~~~ 20 as 20, - ~~~~~~~~~~~~~ 21 as 21, - ~~~~~~~~~~~~~ 22 as 22, - ~~~~~~~~~~~~~ 23 as 23, - ~~~~~~~~~~~~~ 24 as 24, - ~~~~~~~~~~~~~ 25 as 25, - ~~~~~~~~~~~~~ 26 as 26, - ~~~~~~~~~~~~~ 27 as 27, - ~~~~~~~~~~~~~ 28 as 28, - ~~~~~~~~~~~~~ 29 as 29, - ~~~~~~~~~~~~~ 30 as 30, - ~~~~~~~~~~~~~ 31 as 31, - ~~~~~~~~~~~~~ 32 as 32, - ~~~~~~~~~~~~~ 33 as 33, - ~~~~~~~~~~~~~ 34 as 34, - ~~~~~~~~~~~~~ 35 as 35, - ~~~~~~~~~~~~~ 36 as 36, - ~~~~~~~~~~~~~ 37 as 37, - ~~~~~~~~~~~~~ 38 as 38, - ~~~~~~~~~~~~~ 39 as 39, - ~~~~~~~~~~~~~ 40 as 40, - ~~~~~~~~~~~~~ 41 as 41, - ~~~~~~~~~~~~~ 42 as 42, - ~~~~~~~~~~~~~ 43 as 43, - ~~~~~~~~~~~~~ 44 as 44, - ~~~~~~~~~~~~~ 45 as 45, - ~~~~~~~~~~~~~ 46 as 46, - ~~~~~~~~~~~~~ 47 as 47, - ~~~~~~~~~~~~~ 48 as 48, - ~~~~~~~~~~~~~ 49 as 49, - ~~~~~~~~~~~~~ 50 as 50, - ~~~~~~~~~~~~~ 51 as 51, - ~~~~~~~~~~~~~ 52 as 52, - ~~~~~~~~~~~~~ 53 as 53, - ~~~~~~~~~~~~~ 54 as 54, - ~~~~~~~~~~~~~ 55 as 55, - ~~~~~~~~~~~~~ 56 as 56, - ~~~~~~~~~~~~~ 57 as 57, - ~~~~~~~~~~~~~ 58 as 58, - ~~~~~~~~~~~~~ 59 as 59, - ~~~~~~~~~~~~~ 60 as 60, - ~~~~~~~~~~~~~ 61 as 61, - ~~~~~~~~~~~~~ 62 as 62, - ~~~~~~~~~~~~~ 63 as 63, - ~~~~~~~~~~~~~ 64 as 64, - ~~~~~~~~~~~~~ 65 as 65, - ~~~~~~~~~~~~~ 66 as 66, - ~~~~~~~~~~~~~ 67 as 67, - ~~~~~~~~~~~~~ 68 as 68, - ~~~~~~~~~~~~~ 69 as 69, - ~~~~~~~~~~~~~ 70 as 70, - ~~~~~~~~~~~~~ 71 as 71, - ~~~~~~~~~~~~~ 72 as 72, - ~~~~~~~~~~~~~ 73 as 73, - ~~~~~~~~~~~~~ 74 as 74, - ~~~~~~~~~~~~~ 75 as 75, - ~~~~~~~~~~~~~ 76 as 76, - ~~~~~~~~~~~~~ 77 as 77, - ~~~~~~~~~~~~~ 78 as 78, - ~~~~~~~~~~~~~ 79 as 79, - ~~~~~~~~~~~~~ 80 as 80, - ~~~~~~~~~~~~~ 81 as 81, - ~~~~~~~~~~~~~ 82 as 82, - ~~~~~~~~~~~~~ 83 as 83, - ~~~~~~~~~~~~~ 84 as 84, - ~~~~~~~~~~~~~ 85 as 85, - ~~~~~~~~~~~~~ 86 as 86, - ~~~~~~~~~~~~~ 87 as 87, - ~~~~~~~~~~~~~ 88 as 88, - ~~~~~~~~~~~~~ 89 as 89, - ~~~~~~~~~~~~~ 90 as 90, - ~~~~~~~~~~~~~ 91 as 91, - ~~~~~~~~~~~~~ 92 as 92, - ~~~~~~~~~~~~~ 93 as 93, - ~~~~~~~~~~~~~ 94 as 94, - ~~~~~~~~~~~~~ 95 as 95, - ~~~~~~~~~~~~~ 96 as 96, - ~~~~~~~~~~~~~ 97 as 97, - ~~~~~~~~~~~~~ 98 as 98, - ~~~~~~~~~~~~~ 99 as 99, - ~~~~~~~~~~~~~ 100 as 100, - ~~~~~~~~~~~~~~~ 101 as 101, - ~~~~~~~~~~~~~~~ 102 as 102, - ~~~~~~~~~~~~~~~ 103 as 103, - ~~~~~~~~~~~~~~~ 104 as 104, - ~~~~~~~~~~~~~~~ 105 as 105, - ~~~~~~~~~~~~~~~ 106 as 106, - ~~~~~~~~~~~~~~~ 107 as 107, - ~~~~~~~~~~~~~~~ 108 as 108, - ~~~~~~~~~~~~~~~ 109 as 109, - ~~~~~~~~~~~~~~~ 110 as 110, - ~~~~~~~~~~~~~~~ 111 as 111, - ~~~~~~~~~~~~~~~ 112 as 112, - ~~~~~~~~~~~~~~~ 113 as 113, - ~~~~~~~~~~~~~~~ 114 as 114, - ~~~~~~~~~~~~~~~ 115 as 115, - ~~~~~~~~~~~~~~~ 116 as 116, - ~~~~~~~~~~~~~~~ 117 as 117, - ~~~~~~~~~~~~~~~ 118 as 118, - ~~~~~~~~~~~~~~~ 119 as 119, - ~~~~~~~~~~~~~~~ 120 as 120, - ~~~~~~~~~~~~~~~ 121 as 121, - ~~~~~~~~~~~~~~~ 122 as 122, - ~~~~~~~~~~~~~~~ 123 as 123, - ~~~~~~~~~~~~~~~ 124 as 124, - ~~~~~~~~~~~~~~~ 125 as 125, - ~~~~~~~~~~~~~~~ 126 as 126, - ~~~~~~~~~~~~~~~ 127 as 127, - ~~~~~~~~~~~~~~~ 128 as 128, - ~~~~~~~~~~~~~~~ 129 as 129, - ~~~~~~~~~~~~~~~ 130 as 130, - ~~~~~~~~~~~~~~~ 131 as 131, - ~~~~~~~~~~~~~~~ 132 as 132, - ~~~~~~~~~~~~~~~ 133 as 133, - ~~~~~~~~~~~~~~~ 134 as 134, - ~~~~~~~~~~~~~~~ 135 as 135, - ~~~~~~~~~~~~~~~ 136 as 136, - ~~~~~~~~~~~~~~~ 137 as 137, - ~~~~~~~~~~~~~~~ 138 as 138, - ~~~~~~~~~~~~~~~ 139 as 139, - ~~~~~~~~~~~~~~~ 140 as 140, - ~~~~~~~~~~~~~~~ 141 as 141, - ~~~~~~~~~~~~~~~ 142 as 142, - ~~~~~~~~~~~~~~~ 143 as 143, - ~~~~~~~~~~~~~~~ 144 as 144, - ~~~~~~~~~~~~~~~ 145 as 145, - ~~~~~~~~~~~~~~~ 146 as 146, - ~~~~~~~~~~~~~~~ 147 as 147, - ~~~~~~~~~~~~~~~ 148 as 148, - ~~~~~~~~~~~~~~~ 149 as 149, - ~~~~~~~~~~~~~~~ 150 as 150, - ~~~~~~~~~~~~~~~ 151 as 151, - ~~~~~~~~~~~~~~~ 152 as 152, - ~~~~~~~~~~~~~~~ 153 as 153, - ~~~~~~~~~~~~~~~ 154 as 154, - ~~~~~~~~~~~~~~~ 155 as 155, - ~~~~~~~~~~~~~~~ 156 as 156, - ~~~~~~~~~~~~~~~ 157 as 157, - ~~~~~~~~~~~~~~~ 158 as 158, - ~~~~~~~~~~~~~~~ 159 as 159, - ~~~~~~~~~~~~~~~ 160 as 160, - ~~~~~~~~~~~~~~~ 161 as 161, - ~~~~~~~~~~~~~~~ 162 as 162, - ~~~~~~~~~~~~~~~ 163 as 163, - ~~~~~~~~~~~~~~~ 164 as 164, - ~~~~~~~~~~~~~~~ 165 as 165, - ~~~~~~~~~~~~~~~ 166 as 166, - ~~~~~~~~~~~~~~~ 167 as 167, - ~~~~~~~~~~~~~~~ 168 as 168, - ~~~~~~~~~~~~~~~ 169 as 169, - ~~~~~~~~~~~~~~~ 170 as 170, - ~~~~~~~~~~~~~~~ 171 as 171, - ~~~~~~~~~~~~~~~ 172 as 172, - ~~~~~~~~~~~~~~~ 173 as 173, - ~~~~~~~~~~~~~~~ 174 as 174, - ~~~~~~~~~~~~~~~ 175 as 175, - ~~~~~~~~~~~~~~~ 176 as 176, - ~~~~~~~~~~~~~~~ 177 as 177, - ~~~~~~~~~~~~~~~ 178 as 178, - ~~~~~~~~~~~~~~~ 179 as 179, - ~~~~~~~~~~~~~~~ 180 as 180, - ~~~~~~~~~~~~~~~ 181 as 181, - ~~~~~~~~~~~~~~~ 182 as 182, - ~~~~~~~~~~~~~~~ 183 as 183, - ~~~~~~~~~~~~~~~ 184 as 184, - ~~~~~~~~~~~~~~~ 185 as 185, - ~~~~~~~~~~~~~~~ 186 as 186, - ~~~~~~~~~~~~~~~ 187 as 187, - ~~~~~~~~~~~~~~~ 188 as 188, - ~~~~~~~~~~~~~~~ 189 as 189, - ~~~~~~~~~~~~~~~ 190 as 190, - ~~~~~~~~~~~~~~~ 191 as 191, - ~~~~~~~~~~~~~~~ 192 as 192, - ~~~~~~~~~~~~~~~ 193 as 193, - ~~~~~~~~~~~~~~~ 194 as 194, - ~~~~~~~~~~~~~~~ 195 as 195, - ~~~~~~~~~~~~~~~ 196 as 196, - ~~~~~~~~~~~~~~~ 197 as 197, - ~~~~~~~~~~~~~~~ 198 as 198, - ~~~~~~~~~~~~~~~ 199 as 199, - ~~~~~~~~~~~~~~~ 200 as 200, - ~~~~~~~~~~~~~~~ 201 as 201, - ~~~~~~~~~~~~~~~ 202 as 202, - ~~~~~~~~~~~~~~~ 203 as 203, - ~~~~~~~~~~~~~~~ 204 as 204, - ~~~~~~~~~~~~~~~ 205 as 205, - ~~~~~~~~~~~~~~~ 206 as 206, - ~~~~~~~~~~~~~~~ 207 as 207, - ~~~~~~~~~~~~~~~ 208 as 208, - ~~~~~~~~~~~~~~~ 209 as 209, - ~~~~~~~~~~~~~~~ 210 as 210, - ~~~~~~~~~~~~~~~ 211 as 211, - ~~~~~~~~~~~~~~~ 212 as 212, - ~~~~~~~~~~~~~~~ 213 as 213, - ~~~~~~~~~~~~~~~ 214 as 214, - ~~~~~~~~~~~~~~~ 215 as 215, - ~~~~~~~~~~~~~~~ 216 as 216, - ~~~~~~~~~~~~~~~ 217 as 217, - ~~~~~~~~~~~~~~~ 218 as 218, - ~~~~~~~~~~~~~~~ 219 as 219, - ~~~~~~~~~~~~~~~ 220 as 220, - ~~~~~~~~~~~~~~~ 221 as 221, - ~~~~~~~~~~~~~~~ 222 as 222, - ~~~~~~~~~~~~~~~ 223 as 223, - ~~~~~~~~~~~~~~~ 224 as 224, - ~~~~~~~~~~~~~~~ 225 as 225, - ~~~~~~~~~~~~~~~ 226 as 226, - ~~~~~~~~~~~~~~~ 227 as 227, - ~~~~~~~~~~~~~~~ 228 as 228, - ~~~~~~~~~~~~~~~ 229 as 229, - ~~~~~~~~~~~~~~~ 230 as 230, - ~~~~~~~~~~~~~~~ 231 as 231, - ~~~~~~~~~~~~~~~ 232 as 232, - ~~~~~~~~~~~~~~~ 233 as 233, - ~~~~~~~~~~~~~~~ 234 as 234, - ~~~~~~~~~~~~~~~ 235 as 235, - ~~~~~~~~~~~~~~~ 236 as 236, - ~~~~~~~~~~~~~~~ 237 as 237, - ~~~~~~~~~~~~~~~ 238 as 238, - ~~~~~~~~~~~~~~~ 239 as 239, - ~~~~~~~~~~~~~~~ 240 as 240, - ~~~~~~~~~~~~~~~ 241 as 241, - ~~~~~~~~~~~~~~~ 242 as 242, - ~~~~~~~~~~~~~~~ 243 as 243, - ~~~~~~~~~~~~~~~ 244 as 244, - ~~~~~~~~~~~~~~~ 245 as 245, - ~~~~~~~~~~~~~~~ 246 as 246, - ~~~~~~~~~~~~~~~ 247 as 247, - ~~~~~~~~~~~~~~~ 248 as 248, - ~~~~~~~~~~~~~~~ 249 as 249, - ~~~~~~~~~~~~~~~ 250 as 250, - ~~~~~~~~~~~~~~~ 251 as 251, - ~~~~~~~~~~~~~~~ 252 as 252, - ~~~~~~~~~~~~~~~ 253 as 253, - ~~~~~~~~~~~~~~~ 254 as 254, - ~~~~~~~~~~~~~~~ 255 as 255, - ~~~~~~~~~~~~~~~ 256 as 256, - ~~~~~~~~~~~~~~~ 257 as 257, - ~~~~~~~~~~~~~~~ 258 as 258, - ~~~~~~~~~~~~~~~ 259 as 259, - ~~~~~~~~~~~~~~~ 260 as 260, - ~~~~~~~~~~~~~~~ 261 as 261, - ~~~~~~~~~~~~~~~ 262 as 262, - ~~~~~~~~~~~~~~~ 263 as 263, - ~~~~~~~~~~~~~~~ 264 as 264, - ~~~~~~~~~~~~~~~ 265 as 265, - ~~~~~~~~~~~~~~~ 266 as 266, - ~~~~~~~~~~~~~~~ 267 as 267, - ~~~~~~~~~~~~~~~ 268 as 268, - ~~~~~~~~~~~~~~~ 269 as 269, - ~~~~~~~~~~~~~~~ 270 as 270, - ~~~~~~~~~~~~~~~ 271 as 271, - ~~~~~~~~~~~~~~~ 272 as 272, - ~~~~~~~~~~~~~~~ 273 as 273, - ~~~~~~~~~~~~~~~ 274 as 274, - ~~~~~~~~~~~~~~~ 275 as 275, - ~~~~~~~~~~~~~~~ 276 as 276, - ~~~~~~~~~~~~~~~ 277 as 277, - ~~~~~~~~~~~~~~~ 278 as 278, - ~~~~~~~~~~~~~~~ 279 as 279, - ~~~~~~~~~~~~~~~ 280 as 280, - ~~~~~~~~~~~~~~~ 281 as 281, - ~~~~~~~~~~~~~~~ 282 as 282, - ~~~~~~~~~~~~~~~ 283 as 283, - ~~~~~~~~~~~~~~~ 284 as 284, - ~~~~~~~~~~~~~~~ 285 as 285, - ~~~~~~~~~~~~~~~ 286 as 286, - ~~~~~~~~~~~~~~~ 287 as 287, - ~~~~~~~~~~~~~~~ 288 as 288, - ~~~~~~~~~~~~~~~ 289 as 289, - ~~~~~~~~~~~~~~~ 290 as 290, - ~~~~~~~~~~~~~~~ 291 as 291, - ~~~~~~~~~~~~~~~ 292 as 292, - ~~~~~~~~~~~~~~~ 293 as 293, - ~~~~~~~~~~~~~~~ 294 as 294, - ~~~~~~~~~~~~~~~ 295 as 295, - ~~~~~~~~~~~~~~~ 296 as 296, - ~~~~~~~~~~~~~~~ 297 as 297, - ~~~~~~~~~~~~~~~ 298 as 298, - ~~~~~~~~~~~~~~~ 299 as 299, - ~~~~~~~~~~~~~~~ 300 as 300, - ~~~~~~~~~~~~~~~ 301 as 301, - ~~~~~~~~~~~~~~~ 302 as 302, - ~~~~~~~~~~~~~~~ 303 as 303, - ~~~~~~~~~~~~~~~ 304 as 304, - ~~~~~~~~~~~~~~~ 305 as 305, - ~~~~~~~~~~~~~~~ 306 as 306, - ~~~~~~~~~~~~~~~ 307 as 307, - ~~~~~~~~~~~~~~~ 308 as 308, - ~~~~~~~~~~~~~~~ 309 as 309, - ~~~~~~~~~~~~~~~ 310 as 310, - ~~~~~~~~~~~~~~~ 311 as 311, - ~~~~~~~~~~~~~~~ 312 as 312, - ~~~~~~~~~~~~~~~ 313 as 313, - ~~~~~~~~~~~~~~~ 314 as 314, - ~~~~~~~~~~~~~~~ 315 as 315, - ~~~~~~~~~~~~~~~ 316 as 316, - ~~~~~~~~~~~~~~~ 317 as 317, - ~~~~~~~~~~~~~~~ 318 as 318, - ~~~~~~~~~~~~~~~ 319 as 319, - ~~~~~~~~~~~~~~~ 320 as 320, - ~~~~~~~~~~~~~~~ 321 as 321, - ~~~~~~~~~~~~~~~ 322 as 322, - ~~~~~~~~~~~~~~~ 323 as 323, - ~~~~~~~~~~~~~~~ 324 as 324, - ~~~~~~~~~~~~~~~ 325 as 325, - ~~~~~~~~~~~~~~~ 326 as 326, - ~~~~~~~~~~~~~~~ 327 as 327, - ~~~~~~~~~~~~~~~ 328 as 328, - ~~~~~~~~~~~~~~~ 329 as 329, - ~~~~~~~~~~~~~~~ 330 as 330, - ~~~~~~~~~~~~~~~ 331 as 331, - ~~~~~~~~~~~~~~~ 332 as 332, - ~~~~~~~~~~~~~~~ 333 as 333, - ~~~~~~~~~~~~~~~ 334 as 334, - ~~~~~~~~~~~~~~~ 335 as 335, - ~~~~~~~~~~~~~~~ 336 as 336, - ~~~~~~~~~~~~~~~ 337 as 337, - ~~~~~~~~~~~~~~~ 338 as 338, - ~~~~~~~~~~~~~~~ 339 as 339, - ~~~~~~~~~~~~~~~ 340 as 340, - ~~~~~~~~~~~~~~~ 341 as 341, - ~~~~~~~~~~~~~~~ 342 as 342, - ~~~~~~~~~~~~~~~ 343 as 343, - ~~~~~~~~~~~~~~~ 344 as 344, - ~~~~~~~~~~~~~~~ 345 as 345, - ~~~~~~~~~~~~~~~ 346 as 346, - ~~~~~~~~~~~~~~~ 347 as 347, - ~~~~~~~~~~~~~~~ 348 as 348, - ~~~~~~~~~~~~~~~ 349 as 349, - ~~~~~~~~~~~~~~~ 350 as 350, - ~~~~~~~~~~~~~~~ 351 as 351, - ~~~~~~~~~~~~~~~ 352 as 352, - ~~~~~~~~~~~~~~~ 353 as 353, - ~~~~~~~~~~~~~~~ 354 as 354, - ~~~~~~~~~~~~~~~ 355 as 355, - ~~~~~~~~~~~~~~~ 356 as 356, - ~~~~~~~~~~~~~~~ 357 as 357, - ~~~~~~~~~~~~~~~ 358 as 358, - ~~~~~~~~~~~~~~~ 359 as 359, - ~~~~~~~~~~~~~~~ 360 as 360, - ~~~~~~~~~~~~~~~ 361 as 361, - ~~~~~~~~~~~~~~~ 362 as 362, - ~~~~~~~~~~~~~~~ 363 as 363, - ~~~~~~~~~~~~~~~ 364 as 364, - ~~~~~~~~~~~~~~~ 365 as 365, - ~~~~~~~~~~~~~~~ 366 as 366, - ~~~~~~~~~~~~~~~ 367 as 367, - ~~~~~~~~~~~~~~~ 368 as 368, - ~~~~~~~~~~~~~~~ 369 as 369, - ~~~~~~~~~~~~~~~ 370 as 370, - ~~~~~~~~~~~~~~~ 371 as 371, - ~~~~~~~~~~~~~~~ 372 as 372, - ~~~~~~~~~~~~~~~ 373 as 373, - ~~~~~~~~~~~~~~~ 374 as 374, - ~~~~~~~~~~~~~~~ 375 as 375, - ~~~~~~~~~~~~~~~ 376 as 376, - ~~~~~~~~~~~~~~~ 377 as 377, - ~~~~~~~~~~~~~~~ 378 as 378, - ~~~~~~~~~~~~~~~ 379 as 379, - ~~~~~~~~~~~~~~~ 380 as 380, - ~~~~~~~~~~~~~~~ 381 as 381, - ~~~~~~~~~~~~~~~ 382 as 382, - ~~~~~~~~~~~~~~~ 383 as 383, - ~~~~~~~~~~~~~~~ 384 as 384, - ~~~~~~~~~~~~~~~ 385 as 385, - ~~~~~~~~~~~~~~~ 386 as 386, - ~~~~~~~~~~~~~~~ 387 as 387, - ~~~~~~~~~~~~~~~ 388 as 388, - ~~~~~~~~~~~~~~~ 389 as 389, - ~~~~~~~~~~~~~~~ 390 as 390, - ~~~~~~~~~~~~~~~ 391 as 391, - ~~~~~~~~~~~~~~~ 392 as 392, - ~~~~~~~~~~~~~~~ 393 as 393, - ~~~~~~~~~~~~~~~ 394 as 394, - ~~~~~~~~~~~~~~~ 395 as 395, - ~~~~~~~~~~~~~~~ 396 as 396, - ~~~~~~~~~~~~~~~ 397 as 397, - ~~~~~~~~~~~~~~~ 398 as 398, - ~~~~~~~~~~~~~~~ 399 as 399, - ~~~~~~~~~~~~~~~ 400 as 400, - ~~~~~~~~~~~~~~~ 401 as 401, - ~~~~~~~~~~~~~~~ 402 as 402, - ~~~~~~~~~~~~~~~ 403 as 403, - ~~~~~~~~~~~~~~~ 404 as 404, - ~~~~~~~~~~~~~~~ 405 as 405, - ~~~~~~~~~~~~~~~ 406 as 406, - ~~~~~~~~~~~~~~~ 407 as 407, - ~~~~~~~~~~~~~~~ 408 as 408, - ~~~~~~~~~~~~~~~ 409 as 409, - ~~~~~~~~~~~~~~~ 410 as 410, - ~~~~~~~~~~~~~~~ 411 as 411, - ~~~~~~~~~~~~~~~ 412 as 412, - ~~~~~~~~~~~~~~~ 413 as 413, - ~~~~~~~~~~~~~~~ 414 as 414, - ~~~~~~~~~~~~~~~ 415 as 415, - ~~~~~~~~~~~~~~~ 416 as 416, - ~~~~~~~~~~~~~~~ 417 as 417, - ~~~~~~~~~~~~~~~ 418 as 418, - ~~~~~~~~~~~~~~~ 419 as 419, - ~~~~~~~~~~~~~~~ 420 as 420, - ~~~~~~~~~~~~~~~ 421 as 421, - ~~~~~~~~~~~~~~~ 422 as 422, - ~~~~~~~~~~~~~~~ 423 as 423, - ~~~~~~~~~~~~~~~ 424 as 424, - ~~~~~~~~~~~~~~~ 425 as 425, - ~~~~~~~~~~~~~~~ 426 as 426, - ~~~~~~~~~~~~~~~ 427 as 427, - ~~~~~~~~~~~~~~~ 428 as 428, - ~~~~~~~~~~~~~~~ 429 as 429, - ~~~~~~~~~~~~~~~ 430 as 430, - ~~~~~~~~~~~~~~~ 431 as 431, - ~~~~~~~~~~~~~~~ 432 as 432, - ~~~~~~~~~~~~~~~ 433 as 433, - ~~~~~~~~~~~~~~~ 434 as 434, - ~~~~~~~~~~~~~~~ 435 as 435, - ~~~~~~~~~~~~~~~ 436 as 436, - ~~~~~~~~~~~~~~~ 437 as 437, - ~~~~~~~~~~~~~~~ 438 as 438, - ~~~~~~~~~~~~~~~ 439 as 439, - ~~~~~~~~~~~~~~~ 440 as 440, - ~~~~~~~~~~~~~~~ 441 as 441, - ~~~~~~~~~~~~~~~ 442 as 442, - ~~~~~~~~~~~~~~~ 443 as 443, - ~~~~~~~~~~~~~~~ 444 as 444, - ~~~~~~~~~~~~~~~ 445 as 445, - ~~~~~~~~~~~~~~~ 446 as 446, - ~~~~~~~~~~~~~~~ 447 as 447, - ~~~~~~~~~~~~~~~ 448 as 448, - ~~~~~~~~~~~~~~~ 449 as 449, - ~~~~~~~~~~~~~~~ 450 as 450, - ~~~~~~~~~~~~~~~ 451 as 451, - ~~~~~~~~~~~~~~~ 452 as 452, - ~~~~~~~~~~~~~~~ 453 as 453, - ~~~~~~~~~~~~~~~ 454 as 454, - ~~~~~~~~~~~~~~~ 455 as 455, - ~~~~~~~~~~~~~~~ 456 as 456, - ~~~~~~~~~~~~~~~ 457 as 457, - ~~~~~~~~~~~~~~~ 458 as 458, - ~~~~~~~~~~~~~~~ 459 as 459, - ~~~~~~~~~~~~~~~ 460 as 460, - ~~~~~~~~~~~~~~~ 461 as 461, - ~~~~~~~~~~~~~~~ 462 as 462, - ~~~~~~~~~~~~~~~ 463 as 463, - ~~~~~~~~~~~~~~~ 464 as 464, - ~~~~~~~~~~~~~~~ 465 as 465, - ~~~~~~~~~~~~~~~ 466 as 466, - ~~~~~~~~~~~~~~~ 467 as 467, - ~~~~~~~~~~~~~~~ 468 as 468, - ~~~~~~~~~~~~~~~ 469 as 469, - ~~~~~~~~~~~~~~~ 470 as 470, - ~~~~~~~~~~~~~~~ 471 as 471, - ~~~~~~~~~~~~~~~ 472 as 472, - ~~~~~~~~~~~~~~~ 473 as 473, - ~~~~~~~~~~~~~~~ 474 as 474, - ~~~~~~~~~~~~~~~ 475 as 475, - ~~~~~~~~~~~~~~~ 476 as 476, - ~~~~~~~~~~~~~~~ 477 as 477, - ~~~~~~~~~~~~~~~ 478 as 478, - ~~~~~~~~~~~~~~~ 479 as 479, - ~~~~~~~~~~~~~~~ 480 as 480, - ~~~~~~~~~~~~~~~ 481 as 481, - ~~~~~~~~~~~~~~~ 482 as 482, - ~~~~~~~~~~~~~~~ 483 as 483, - ~~~~~~~~~~~~~~~ 484 as 484, - ~~~~~~~~~~~~~~~ 485 as 485, - ~~~~~~~~~~~~~~~ 486 as 486, - ~~~~~~~~~~~~~~~ 487 as 487, - ~~~~~~~~~~~~~~~ 488 as 488, - ~~~~~~~~~~~~~~~ 489 as 489, - ~~~~~~~~~~~~~~~ 490 as 490, - ~~~~~~~~~~~~~~~ 491 as 491, - ~~~~~~~~~~~~~~~ 492 as 492, - ~~~~~~~~~~~~~~~ 493 as 493, - ~~~~~~~~~~~~~~~ 494 as 494, - ~~~~~~~~~~~~~~~ 495 as 495, - ~~~~~~~~~~~~~~~ 496 as 496, - ~~~~~~~~~~~~~~~ 497 as 497, - ~~~~~~~~~~~~~~~ 498 as 498, - ~~~~~~~~~~~~~~~ 499 as 499, - ~~~~~~~~~~~~~~~ 500 as 500, - ~~~~~~~~~~~~~~~ 501 as 501, - ~~~~~~~~~~~~~~~ 502 as 502, - ~~~~~~~~~~~~~~~ 503 as 503, - ~~~~~~~~~~~~~~~ 504 as 504, - ~~~~~~~~~~~~~~~ 505 as 505, - ~~~~~~~~~~~~~~~ 506 as 506, - ~~~~~~~~~~~~~~~ 507 as 507, - ~~~~~~~~~~~~~~~ 508 as 508, - ~~~~~~~~~~~~~~~ 509 as 509, - ~~~~~~~~~~~~~~~ 510 as 510, - ~~~~~~~~~~~~~~~ 511 as 511, - ~~~~~~~~~~~~~~~ 512 as 512, - ~~~~~~~~~~~~~~~ 513 as 513, - ~~~~~~~~~~~~~~~ 514 as 514, - ~~~~~~~~~~~~~~~ 515 as 515, - ~~~~~~~~~~~~~~~ 516 as 516, - ~~~~~~~~~~~~~~~ 517 as 517, - ~~~~~~~~~~~~~~~ 518 as 518, - ~~~~~~~~~~~~~~~ 519 as 519, - ~~~~~~~~~~~~~~~ 520 as 520, - ~~~~~~~~~~~~~~~ 521 as 521, - ~~~~~~~~~~~~~~~ 522 as 522, - ~~~~~~~~~~~~~~~ 523 as 523, - ~~~~~~~~~~~~~~~ 524 as 524, - ~~~~~~~~~~~~~~~ 525 as 525, - ~~~~~~~~~~~~~~~ 526 as 526, - ~~~~~~~~~~~~~~~ 527 as 527, - ~~~~~~~~~~~~~~~ 528 as 528, - ~~~~~~~~~~~~~~~ 529 as 529, - ~~~~~~~~~~~~~~~ 530 as 530, - ~~~~~~~~~~~~~~~ 531 as 531, - ~~~~~~~~~~~~~~~ 532 as 532, - ~~~~~~~~~~~~~~~ 533 as 533, - ~~~~~~~~~~~~~~~ 534 as 534, - ~~~~~~~~~~~~~~~ 535 as 535, - ~~~~~~~~~~~~~~~ 536 as 536, - ~~~~~~~~~~~~~~~ 537 as 537, - ~~~~~~~~~~~~~~~ 538 as 538, - ~~~~~~~~~~~~~~~ 539 as 539, - ~~~~~~~~~~~~~~~ 540 as 540, - ~~~~~~~~~~~~~~~ 541 as 541, - ~~~~~~~~~~~~~~~ 542 as 542, - ~~~~~~~~~~~~~~~ 543 as 543, - ~~~~~~~~~~~~~~~ 544 as 544, - ~~~~~~~~~~~~~~~ 545 as 545, - ~~~~~~~~~~~~~~~ 546 as 546, - ~~~~~~~~~~~~~~~ 547 as 547, - ~~~~~~~~~~~~~~~ 548 as 548, - ~~~~~~~~~~~~~~~ 549 as 549, - ~~~~~~~~~~~~~~~ 550 as 550, - ~~~~~~~~~~~~~~~ 551 as 551, - ~~~~~~~~~~~~~~~ 552 as 552, - ~~~~~~~~~~~~~~~ 553 as 553, - ~~~~~~~~~~~~~~~ 554 as 554, - ~~~~~~~~~~~~~~~ 555 as 555, - ~~~~~~~~~~~~~~~ 556 as 556, - ~~~~~~~~~~~~~~~ 557 as 557, - ~~~~~~~~~~~~~~~ 558 as 558, - ~~~~~~~~~~~~~~~ 559 as 559, - ~~~~~~~~~~~~~~~ 560 as 560, - ~~~~~~~~~~~~~~~ 561 as 561, - ~~~~~~~~~~~~~~~ 562 as 562, - ~~~~~~~~~~~~~~~ 563 as 563, - ~~~~~~~~~~~~~~~ 564 as 564, - ~~~~~~~~~~~~~~~ 565 as 565, - ~~~~~~~~~~~~~~~ 566 as 566, - ~~~~~~~~~~~~~~~ 567 as 567, - ~~~~~~~~~~~~~~~ 568 as 568, - ~~~~~~~~~~~~~~~ 569 as 569, - ~~~~~~~~~~~~~~~ 570 as 570, - ~~~~~~~~~~~~~~~ 571 as 571, - ~~~~~~~~~~~~~~~ 572 as 572, - ~~~~~~~~~~~~~~~ 573 as 573, - ~~~~~~~~~~~~~~~ 574 as 574, - ~~~~~~~~~~~~~~~ 575 as 575, - ~~~~~~~~~~~~~~~ 576 as 576, - ~~~~~~~~~~~~~~~ 577 as 577, - ~~~~~~~~~~~~~~~ 578 as 578, - ~~~~~~~~~~~~~~~ 579 as 579, - ~~~~~~~~~~~~~~~ 580 as 580, - ~~~~~~~~~~~~~~~ 581 as 581, - ~~~~~~~~~~~~~~~ 582 as 582, - ~~~~~~~~~~~~~~~ 583 as 583, - ~~~~~~~~~~~~~~~ 584 as 584, - ~~~~~~~~~~~~~~~ 585 as 585, - ~~~~~~~~~~~~~~~ 586 as 586, - ~~~~~~~~~~~~~~~ 587 as 587, - ~~~~~~~~~~~~~~~ 588 as 588, - ~~~~~~~~~~~~~~~ 589 as 589, - ~~~~~~~~~~~~~~~ 590 as 590, - ~~~~~~~~~~~~~~~ 591 as 591, - ~~~~~~~~~~~~~~~ 592 as 592, - ~~~~~~~~~~~~~~~ 593 as 593, - ~~~~~~~~~~~~~~~ 594 as 594, - ~~~~~~~~~~~~~~~ 595 as 595, - ~~~~~~~~~~~~~~~ 596 as 596, - ~~~~~~~~~~~~~~~ 597 as 597, - ~~~~~~~~~~~~~~~ 598 as 598, - ~~~~~~~~~~~~~~~ 599 as 599, - ~~~~~~~~~~~~~~~ 600 as 600, - ~~~~~~~~~~~~~~~ 601 as 601, - ~~~~~~~~~~~~~~~ 602 as 602, - ~~~~~~~~~~~~~~~ 603 as 603, - ~~~~~~~~~~~~~~~ 604 as 604, - ~~~~~~~~~~~~~~~ 605 as 605, - ~~~~~~~~~~~~~~~ 606 as 606, - ~~~~~~~~~~~~~~~ 607 as 607, - ~~~~~~~~~~~~~~~ 608 as 608, - ~~~~~~~~~~~~~~~ 609 as 609, - ~~~~~~~~~~~~~~~ 610 as 610, - ~~~~~~~~~~~~~~~ 611 as 611, - ~~~~~~~~~~~~~~~ 612 as 612, - ~~~~~~~~~~~~~~~ 613 as 613, - ~~~~~~~~~~~~~~~ 614 as 614, - ~~~~~~~~~~~~~~~ 615 as 615, - ~~~~~~~~~~~~~~~ 616 as 616, - ~~~~~~~~~~~~~~~ 617 as 617, - ~~~~~~~~~~~~~~~ 618 as 618, - ~~~~~~~~~~~~~~~ 619 as 619, - ~~~~~~~~~~~~~~~ 620 as 620, - ~~~~~~~~~~~~~~~ 621 as 621, - ~~~~~~~~~~~~~~~ 622 as 622, - ~~~~~~~~~~~~~~~ 623 as 623, - ~~~~~~~~~~~~~~~ 624 as 624, - ~~~~~~~~~~~~~~~ 625 as 625, - ~~~~~~~~~~~~~~~ 626 as 626, - ~~~~~~~~~~~~~~~ 627 as 627, - ~~~~~~~~~~~~~~~ 628 as 628, - ~~~~~~~~~~~~~~~ 629 as 629, - ~~~~~~~~~~~~~~~ 630 as 630, - ~~~~~~~~~~~~~~~ 631 as 631, - ~~~~~~~~~~~~~~~ 632 as 632, - ~~~~~~~~~~~~~~~ 633 as 633, - ~~~~~~~~~~~~~~~ 634 as 634, - ~~~~~~~~~~~~~~~ 635 as 635, - ~~~~~~~~~~~~~~~ 636 as 636, - ~~~~~~~~~~~~~~~ 637 as 637, - ~~~~~~~~~~~~~~~ 638 as 638, - ~~~~~~~~~~~~~~~ 639 as 639, - ~~~~~~~~~~~~~~~ 640 as 640, - ~~~~~~~~~~~~~~~ 641 as 641, - ~~~~~~~~~~~~~~~ 642 as 642, - ~~~~~~~~~~~~~~~ 643 as 643, - ~~~~~~~~~~~~~~~ 644 as 644, - ~~~~~~~~~~~~~~~ 645 as 645, - ~~~~~~~~~~~~~~~ 646 as 646, - ~~~~~~~~~~~~~~~ 647 as 647, - ~~~~~~~~~~~~~~~ 648 as 648, - ~~~~~~~~~~~~~~~ 649 as 649, - ~~~~~~~~~~~~~~~ 650 as 650, - ~~~~~~~~~~~~~~~ 651 as 651, - ~~~~~~~~~~~~~~~ 652 as 652, - ~~~~~~~~~~~~~~~ 653 as 653, - ~~~~~~~~~~~~~~~ 654 as 654, - ~~~~~~~~~~~~~~~ 655 as 655, - ~~~~~~~~~~~~~~~ 656 as 656, - ~~~~~~~~~~~~~~~ 657 as 657, - ~~~~~~~~~~~~~~~ 658 as 658, - ~~~~~~~~~~~~~~~ 659 as 659, - ~~~~~~~~~~~~~~~ 660 as 660, - ~~~~~~~~~~~~~~~ 661 as 661, - ~~~~~~~~~~~~~~~ 662 as 662, - ~~~~~~~~~~~~~~~ 663 as 663, - ~~~~~~~~~~~~~~~ 664 as 664, - ~~~~~~~~~~~~~~~ 665 as 665, - ~~~~~~~~~~~~~~~ 666 as 666, - ~~~~~~~~~~~~~~~ 667 as 667, - ~~~~~~~~~~~~~~~ 668 as 668, - ~~~~~~~~~~~~~~~ 669 as 669, - ~~~~~~~~~~~~~~~ 670 as 670, - ~~~~~~~~~~~~~~~ 671 as 671, - ~~~~~~~~~~~~~~~ 672 as 672, - ~~~~~~~~~~~~~~~ 673 as 673, - ~~~~~~~~~~~~~~~ 674 as 674, - ~~~~~~~~~~~~~~~ 675 as 675, - ~~~~~~~~~~~~~~~ 676 as 676, - ~~~~~~~~~~~~~~~ 677 as 677, - ~~~~~~~~~~~~~~~ 678 as 678, - ~~~~~~~~~~~~~~~ 679 as 679, - ~~~~~~~~~~~~~~~ 680 as 680, - ~~~~~~~~~~~~~~~ 681 as 681, - ~~~~~~~~~~~~~~~ 682 as 682, - ~~~~~~~~~~~~~~~ 683 as 683, - ~~~~~~~~~~~~~~~ 684 as 684, - ~~~~~~~~~~~~~~~ 685 as 685, - ~~~~~~~~~~~~~~~ 686 as 686, - ~~~~~~~~~~~~~~~ 687 as 687, - ~~~~~~~~~~~~~~~ 688 as 688, - ~~~~~~~~~~~~~~~ 689 as 689, - ~~~~~~~~~~~~~~~ 690 as 690, - ~~~~~~~~~~~~~~~ 691 as 691, - ~~~~~~~~~~~~~~~ 692 as 692, - ~~~~~~~~~~~~~~~ 693 as 693, - ~~~~~~~~~~~~~~~ 694 as 694, - ~~~~~~~~~~~~~~~ 695 as 695, - ~~~~~~~~~~~~~~~ 696 as 696, - ~~~~~~~~~~~~~~~ 697 as 697, - ~~~~~~~~~~~~~~~ 698 as 698, - ~~~~~~~~~~~~~~~ 699 as 699, - ~~~~~~~~~~~~~~~ 700 as 700, - ~~~~~~~~~~~~~~~ 701 as 701, - ~~~~~~~~~~~~~~~ 702 as 702, - ~~~~~~~~~~~~~~~ 703 as 703, - ~~~~~~~~~~~~~~~ 704 as 704, - ~~~~~~~~~~~~~~~ 705 as 705, - ~~~~~~~~~~~~~~~ 706 as 706, - ~~~~~~~~~~~~~~~ 707 as 707, - ~~~~~~~~~~~~~~~ 708 as 708, - ~~~~~~~~~~~~~~~ 709 as 709, - ~~~~~~~~~~~~~~~ 710 as 710, - ~~~~~~~~~~~~~~~ 711 as 711, - ~~~~~~~~~~~~~~~ 712 as 712, - ~~~~~~~~~~~~~~~ 713 as 713, - ~~~~~~~~~~~~~~~ 714 as 714, - ~~~~~~~~~~~~~~~ 715 as 715, - ~~~~~~~~~~~~~~~ 716 as 716, - ~~~~~~~~~~~~~~~ 717 as 717, - ~~~~~~~~~~~~~~~ 718 as 718, - ~~~~~~~~~~~~~~~ 719 as 719, - ~~~~~~~~~~~~~~~ 720 as 720, - ~~~~~~~~~~~~~~~ 721 as 721, - ~~~~~~~~~~~~~~~ 722 as 722, - ~~~~~~~~~~~~~~~ 723 as 723, - ~~~~~~~~~~~~~~~ 724 as 724, - ~~~~~~~~~~~~~~~ 725 as 725, - ~~~~~~~~~~~~~~~ 726 as 726, - ~~~~~~~~~~~~~~~ 727 as 727, - ~~~~~~~~~~~~~~~ 728 as 728, - ~~~~~~~~~~~~~~~ 729 as 729, - ~~~~~~~~~~~~~~~ 730 as 730, - ~~~~~~~~~~~~~~~ 731 as 731, - ~~~~~~~~~~~~~~~ 732 as 732, - ~~~~~~~~~~~~~~~ 733 as 733, - ~~~~~~~~~~~~~~~ 734 as 734, - ~~~~~~~~~~~~~~~ 735 as 735, - ~~~~~~~~~~~~~~~ 736 as 736, - ~~~~~~~~~~~~~~~ 737 as 737, - ~~~~~~~~~~~~~~~ 738 as 738, - ~~~~~~~~~~~~~~~ 739 as 739, - ~~~~~~~~~~~~~~~ 740 as 740, - ~~~~~~~~~~~~~~~ 741 as 741, - ~~~~~~~~~~~~~~~ 742 as 742, - ~~~~~~~~~~~~~~~ 743 as 743, - ~~~~~~~~~~~~~~~ 744 as 744, - ~~~~~~~~~~~~~~~ 745 as 745, - ~~~~~~~~~~~~~~~ 746 as 746, - ~~~~~~~~~~~~~~~ 747 as 747, - ~~~~~~~~~~~~~~~ 748 as 748, - ~~~~~~~~~~~~~~~ 749 as 749, - ~~~~~~~~~~~~~~~ 750 as 750, - ~~~~~~~~~~~~~~~ 751 as 751, - ~~~~~~~~~~~~~~~ 752 as 752, - ~~~~~~~~~~~~~~~ 753 as 753, - ~~~~~~~~~~~~~~~ 754 as 754, - ~~~~~~~~~~~~~~~ 755 as 755, - ~~~~~~~~~~~~~~~ 756 as 756, - ~~~~~~~~~~~~~~~ 757 as 757, - ~~~~~~~~~~~~~~~ 758 as 758, - ~~~~~~~~~~~~~~~ 759 as 759, - ~~~~~~~~~~~~~~~ 760 as 760, - ~~~~~~~~~~~~~~~ 761 as 761, - ~~~~~~~~~~~~~~~ 762 as 762, - ~~~~~~~~~~~~~~~ 763 as 763, - ~~~~~~~~~~~~~~~ 764 as 764, - ~~~~~~~~~~~~~~~ 765 as 765, - ~~~~~~~~~~~~~~~ 766 as 766, - ~~~~~~~~~~~~~~~ 767 as 767, - ~~~~~~~~~~~~~~~ 768 as 768, - ~~~~~~~~~~~~~~~ 769 as 769, - ~~~~~~~~~~~~~~~ 770 as 770, - ~~~~~~~~~~~~~~~ 771 as 771, - ~~~~~~~~~~~~~~~ 772 as 772, - ~~~~~~~~~~~~~~~ 773 as 773, - ~~~~~~~~~~~~~~~ 774 as 774, - ~~~~~~~~~~~~~~~ 775 as 775, - ~~~~~~~~~~~~~~~ 776 as 776, - ~~~~~~~~~~~~~~~ 777 as 777, - ~~~~~~~~~~~~~~~ 778 as 778, - ~~~~~~~~~~~~~~~ 779 as 779, - ~~~~~~~~~~~~~~~ 780 as 780, - ~~~~~~~~~~~~~~~ 781 as 781, - ~~~~~~~~~~~~~~~ 782 as 782, - ~~~~~~~~~~~~~~~ 783 as 783, - ~~~~~~~~~~~~~~~ 784 as 784, - ~~~~~~~~~~~~~~~ 785 as 785, - ~~~~~~~~~~~~~~~ 786 as 786, - ~~~~~~~~~~~~~~~ 787 as 787, - ~~~~~~~~~~~~~~~ 788 as 788, - ~~~~~~~~~~~~~~~ 789 as 789, - ~~~~~~~~~~~~~~~ 790 as 790, - ~~~~~~~~~~~~~~~ 791 as 791, - ~~~~~~~~~~~~~~~ 792 as 792, - ~~~~~~~~~~~~~~~ 793 as 793, - ~~~~~~~~~~~~~~~ 794 as 794, - ~~~~~~~~~~~~~~~ 795 as 795, - ~~~~~~~~~~~~~~~ 796 as 796, - ~~~~~~~~~~~~~~~ 797 as 797, - ~~~~~~~~~~~~~~~ 798 as 798, - ~~~~~~~~~~~~~~~ 799 as 799, - ~~~~~~~~~~~~~~~ 800 as 800, - ~~~~~~~~~~~~~~~ 801 as 801, - ~~~~~~~~~~~~~~~ 802 as 802, - ~~~~~~~~~~~~~~~ 803 as 803, - ~~~~~~~~~~~~~~~ 804 as 804, - ~~~~~~~~~~~~~~~ 805 as 805, - ~~~~~~~~~~~~~~~ 806 as 806, - ~~~~~~~~~~~~~~~ 807 as 807, - ~~~~~~~~~~~~~~~ 808 as 808, - ~~~~~~~~~~~~~~~ 809 as 809, - ~~~~~~~~~~~~~~~ 810 as 810, - ~~~~~~~~~~~~~~~ 811 as 811, - ~~~~~~~~~~~~~~~ 812 as 812, - ~~~~~~~~~~~~~~~ 813 as 813, - ~~~~~~~~~~~~~~~ 814 as 814, - ~~~~~~~~~~~~~~~ 815 as 815, - ~~~~~~~~~~~~~~~ 816 as 816, - ~~~~~~~~~~~~~~~ 817 as 817, - ~~~~~~~~~~~~~~~ 818 as 818, - ~~~~~~~~~~~~~~~ 819 as 819, - ~~~~~~~~~~~~~~~ 820 as 820, - ~~~~~~~~~~~~~~~ 821 as 821, - ~~~~~~~~~~~~~~~ 822 as 822, - ~~~~~~~~~~~~~~~ 823 as 823, - ~~~~~~~~~~~~~~~ 824 as 824, - ~~~~~~~~~~~~~~~ 825 as 825, - ~~~~~~~~~~~~~~~ 826 as 826, - ~~~~~~~~~~~~~~~ 827 as 827, - ~~~~~~~~~~~~~~~ 828 as 828, - ~~~~~~~~~~~~~~~ 829 as 829, - ~~~~~~~~~~~~~~~ 830 as 830, - ~~~~~~~~~~~~~~~ 831 as 831, - ~~~~~~~~~~~~~~~ 832 as 832, - ~~~~~~~~~~~~~~~ 833 as 833, - ~~~~~~~~~~~~~~~ 834 as 834, - ~~~~~~~~~~~~~~~ 835 as 835, - ~~~~~~~~~~~~~~~ 836 as 836, - ~~~~~~~~~~~~~~~ 837 as 837, - ~~~~~~~~~~~~~~~ 838 as 838, - ~~~~~~~~~~~~~~~ 839 as 839, - ~~~~~~~~~~~~~~~ 840 as 840, - ~~~~~~~~~~~~~~~ 841 as 841, - ~~~~~~~~~~~~~~~ 842 as 842, - ~~~~~~~~~~~~~~~ 843 as 843, - ~~~~~~~~~~~~~~~ 844 as 844, - ~~~~~~~~~~~~~~~ 845 as 845, - ~~~~~~~~~~~~~~~ 846 as 846, - ~~~~~~~~~~~~~~~ 847 as 847, - ~~~~~~~~~~~~~~~ 848 as 848, - ~~~~~~~~~~~~~~~ 849 as 849, - ~~~~~~~~~~~~~~~ 850 as 850, - ~~~~~~~~~~~~~~~ 851 as 851, - ~~~~~~~~~~~~~~~ 852 as 852, - ~~~~~~~~~~~~~~~ 853 as 853, - ~~~~~~~~~~~~~~~ 854 as 854, - ~~~~~~~~~~~~~~~ 855 as 855, - ~~~~~~~~~~~~~~~ 856 as 856, - ~~~~~~~~~~~~~~~ 857 as 857, - ~~~~~~~~~~~~~~~ 858 as 858, - ~~~~~~~~~~~~~~~ 859 as 859, - ~~~~~~~~~~~~~~~ 860 as 860, - ~~~~~~~~~~~~~~~ 861 as 861, - ~~~~~~~~~~~~~~~ 862 as 862, - ~~~~~~~~~~~~~~~ 863 as 863, - ~~~~~~~~~~~~~~~ 864 as 864, - ~~~~~~~~~~~~~~~ 865 as 865, - ~~~~~~~~~~~~~~~ 866 as 866, - ~~~~~~~~~~~~~~~ 867 as 867, - ~~~~~~~~~~~~~~~ 868 as 868, - ~~~~~~~~~~~~~~~ 869 as 869, - ~~~~~~~~~~~~~~~ 870 as 870, - ~~~~~~~~~~~~~~~ 871 as 871, - ~~~~~~~~~~~~~~~ 872 as 872, - ~~~~~~~~~~~~~~~ 873 as 873, - ~~~~~~~~~~~~~~~ 874 as 874, - ~~~~~~~~~~~~~~~ 875 as 875, - ~~~~~~~~~~~~~~~ 876 as 876, - ~~~~~~~~~~~~~~~ 877 as 877, - ~~~~~~~~~~~~~~~ 878 as 878, - ~~~~~~~~~~~~~~~ 879 as 879, - ~~~~~~~~~~~~~~~ 880 as 880, - ~~~~~~~~~~~~~~~ 881 as 881, - ~~~~~~~~~~~~~~~ 882 as 882, - ~~~~~~~~~~~~~~~ 883 as 883, - ~~~~~~~~~~~~~~~ 884 as 884, - ~~~~~~~~~~~~~~~ 885 as 885, - ~~~~~~~~~~~~~~~ 886 as 886, - ~~~~~~~~~~~~~~~ 887 as 887, - ~~~~~~~~~~~~~~~ 888 as 888, - ~~~~~~~~~~~~~~~ 889 as 889, - ~~~~~~~~~~~~~~~ 890 as 890, - ~~~~~~~~~~~~~~~ 891 as 891, - ~~~~~~~~~~~~~~~ 892 as 892, - ~~~~~~~~~~~~~~~ 893 as 893, - ~~~~~~~~~~~~~~~ 894 as 894, - ~~~~~~~~~~~~~~~ 895 as 895, - ~~~~~~~~~~~~~~~ 896 as 896, - ~~~~~~~~~~~~~~~ 897 as 897, - ~~~~~~~~~~~~~~~ 898 as 898, - ~~~~~~~~~~~~~~~ 899 as 899, - ~~~~~~~~~~~~~~~ 900 as 900, - ~~~~~~~~~~~~~~~ 901 as 901, - ~~~~~~~~~~~~~~~ 902 as 902, - ~~~~~~~~~~~~~~~ 903 as 903, - ~~~~~~~~~~~~~~~ 904 as 904, - ~~~~~~~~~~~~~~~ 905 as 905, - ~~~~~~~~~~~~~~~ 906 as 906, - ~~~~~~~~~~~~~~~ 907 as 907, - ~~~~~~~~~~~~~~~ 908 as 908, - ~~~~~~~~~~~~~~~ 909 as 909, - ~~~~~~~~~~~~~~~ 910 as 910, - ~~~~~~~~~~~~~~~ 911 as 911, - ~~~~~~~~~~~~~~~ 912 as 912, - ~~~~~~~~~~~~~~~ 913 as 913, - ~~~~~~~~~~~~~~~ 914 as 914, - ~~~~~~~~~~~~~~~ 915 as 915, - ~~~~~~~~~~~~~~~ 916 as 916, - ~~~~~~~~~~~~~~~ 917 as 917, - ~~~~~~~~~~~~~~~ 918 as 918, - ~~~~~~~~~~~~~~~ 919 as 919, - ~~~~~~~~~~~~~~~ 920 as 920, - ~~~~~~~~~~~~~~~ 921 as 921, - ~~~~~~~~~~~~~~~ 922 as 922, - ~~~~~~~~~~~~~~~ 923 as 923, - ~~~~~~~~~~~~~~~ 924 as 924, - ~~~~~~~~~~~~~~~ 925 as 925, - ~~~~~~~~~~~~~~~ 926 as 926, - ~~~~~~~~~~~~~~~ 927 as 927, - ~~~~~~~~~~~~~~~ 928 as 928, - ~~~~~~~~~~~~~~~ 929 as 929, - ~~~~~~~~~~~~~~~ 930 as 930, - ~~~~~~~~~~~~~~~ 931 as 931, - ~~~~~~~~~~~~~~~ 932 as 932, - ~~~~~~~~~~~~~~~ 933 as 933, - ~~~~~~~~~~~~~~~ 934 as 934, - ~~~~~~~~~~~~~~~ 935 as 935, - ~~~~~~~~~~~~~~~ 936 as 936, - ~~~~~~~~~~~~~~~ 937 as 937, - ~~~~~~~~~~~~~~~ 938 as 938, - ~~~~~~~~~~~~~~~ 939 as 939, - ~~~~~~~~~~~~~~~ 940 as 940, - ~~~~~~~~~~~~~~~ 941 as 941, - ~~~~~~~~~~~~~~~ 942 as 942, - ~~~~~~~~~~~~~~~ 943 as 943, - ~~~~~~~~~~~~~~~ 944 as 944, - ~~~~~~~~~~~~~~~ 945 as 945, - ~~~~~~~~~~~~~~~ 946 as 946, - ~~~~~~~~~~~~~~~ 947 as 947, - ~~~~~~~~~~~~~~~ 948 as 948, - ~~~~~~~~~~~~~~~ 949 as 949, - ~~~~~~~~~~~~~~~ 950 as 950, - ~~~~~~~~~~~~~~~ 951 as 951, - ~~~~~~~~~~~~~~~ 952 as 952, - ~~~~~~~~~~~~~~~ 953 as 953, - ~~~~~~~~~~~~~~~ 954 as 954, - ~~~~~~~~~~~~~~~ 955 as 955, - ~~~~~~~~~~~~~~~ 956 as 956, - ~~~~~~~~~~~~~~~ 957 as 957, - ~~~~~~~~~~~~~~~ 958 as 958, - ~~~~~~~~~~~~~~~ 959 as 959, - ~~~~~~~~~~~~~~~ 960 as 960, - ~~~~~~~~~~~~~~~ 961 as 961, - ~~~~~~~~~~~~~~~ 962 as 962, - ~~~~~~~~~~~~~~~ 963 as 963, - ~~~~~~~~~~~~~~~ 964 as 964, - ~~~~~~~~~~~~~~~ 965 as 965, - ~~~~~~~~~~~~~~~ 966 as 966, - ~~~~~~~~~~~~~~~ 967 as 967, - ~~~~~~~~~~~~~~~ 968 as 968, - ~~~~~~~~~~~~~~~ 969 as 969, - ~~~~~~~~~~~~~~~ 970 as 970, - ~~~~~~~~~~~~~~~ 971 as 971, - ~~~~~~~~~~~~~~~ 972 as 972, - ~~~~~~~~~~~~~~~ 973 as 973, - ~~~~~~~~~~~~~~~ 974 as 974, - ~~~~~~~~~~~~~~~ 975 as 975, - ~~~~~~~~~~~~~~~ 976 as 976, - ~~~~~~~~~~~~~~~ 977 as 977, - ~~~~~~~~~~~~~~~ 978 as 978, - ~~~~~~~~~~~~~~~ 979 as 979, - ~~~~~~~~~~~~~~~ 980 as 980, - ~~~~~~~~~~~~~~~ 981 as 981, - ~~~~~~~~~~~~~~~ 982 as 982, - ~~~~~~~~~~~~~~~ 983 as 983, - ~~~~~~~~~~~~~~~ 984 as 984, - ~~~~~~~~~~~~~~~ 985 as 985, - ~~~~~~~~~~~~~~~ 986 as 986, - ~~~~~~~~~~~~~~~ 987 as 987, - ~~~~~~~~~~~~~~~ 988 as 988, - ~~~~~~~~~~~~~~~ 989 as 989, - ~~~~~~~~~~~~~~~ 990 as 990, - ~~~~~~~~~~~~~~~ 991 as 991, - ~~~~~~~~~~~~~~~ 992 as 992, - ~~~~~~~~~~~~~~~ 993 as 993, - ~~~~~~~~~~~~~~~ 994 as 994, - ~~~~~~~~~~~~~~~ 995 as 995, - ~~~~~~~~~~~~~~~ 996 as 996, - ~~~~~~~~~~~~~~~ 997 as 997, - ~~~~~~~~~~~~~~~ 998 as 998, - ~~~~~~~~~~~~~~~ 999 as 999, - ~~~~~~~~~~~~~~~ 1000 as 1000, - ~~~~~~~~~~~~~~~~~ 1001 as 1001, - ~~~~~~~~~~~~~~~~~ 1002 as 1002, - ~~~~~~~~~~~~~~~~~ 1003 as 1003, - ~~~~~~~~~~~~~~~~~ 1004 as 1004, - ~~~~~~~~~~~~~~~~~ 1005 as 1005, - ~~~~~~~~~~~~~~~~~ 1006 as 1006, - ~~~~~~~~~~~~~~~~~ 1007 as 1007, - ~~~~~~~~~~~~~~~~~ 1008 as 1008, - ~~~~~~~~~~~~~~~~~ 1009 as 1009, - ~~~~~~~~~~~~~~~~~ 1010 as 1010, - ~~~~~~~~~~~~~~~~~ 1011 as 1011, - ~~~~~~~~~~~~~~~~~ 1012 as 1012, - ~~~~~~~~~~~~~~~~~ 1013 as 1013, - ~~~~~~~~~~~~~~~~~ 1014 as 1014, - ~~~~~~~~~~~~~~~~~ 1015 as 1015, - ~~~~~~~~~~~~~~~~~ 1016 as 1016, - ~~~~~~~~~~~~~~~~~ 1017 as 1017, - ~~~~~~~~~~~~~~~~~ 1018 as 1018, - ~~~~~~~~~~~~~~~~~ 1019 as 1019, - ~~~~~~~~~~~~~~~~~ 1020 as 1020, - ~~~~~~~~~~~~~~~~~ 1021 as 1021, - ~~~~~~~~~~~~~~~~~ 1022 as 1022, - ~~~~~~~~~~~~~~~~~ 1023 as 1023, - ~~~~~~~~~~~~~~~~~ 1024 as 1024, - ~~~~~~~~~~~~~~~~~ 1025 as 1025, - ~~~~~~~~~~~~~~~~~ 1026 as 1026, - ~~~~~~~~~~~~~~~~~ 1027 as 1027, - ~~~~~~~~~~~~~~~~~ 1028 as 1028, - ~~~~~~~~~~~~~~~~~ 1029 as 1029, - ~~~~~~~~~~~~~~~~~ 1030 as 1030, - ~~~~~~~~~~~~~~~~~ 1031 as 1031, - ~~~~~~~~~~~~~~~~~ 1032 as 1032, - ~~~~~~~~~~~~~~~~~ 1033 as 1033, - ~~~~~~~~~~~~~~~~~ 1034 as 1034, - ~~~~~~~~~~~~~~~~~ 1035 as 1035, - ~~~~~~~~~~~~~~~~~ 1036 as 1036, - ~~~~~~~~~~~~~~~~~ 1037 as 1037, - ~~~~~~~~~~~~~~~~~ 1038 as 1038, - ~~~~~~~~~~~~~~~~~ 1039 as 1039, - ~~~~~~~~~~~~~~~~~ 1040 as 1040, - ~~~~~~~~~~~~~~~~~ 1041 as 1041, - ~~~~~~~~~~~~~~~~~ 1042 as 1042, - ~~~~~~~~~~~~~~~~~ 1043 as 1043, - ~~~~~~~~~~~~~~~~~ 1044 as 1044, - ~~~~~~~~~~~~~~~~~ 1045 as 1045, - ~~~~~~~~~~~~~~~~~ 1046 as 1046, - ~~~~~~~~~~~~~~~~~ 1047 as 1047, - ~~~~~~~~~~~~~~~~~ 1048 as 1048, - ~~~~~~~~~~~~~~~~~ 1049 as 1049, - ~~~~~~~~~~~~~~~~~ 1050 as 1050, - ~~~~~~~~~~~~~~~~~ 1051 as 1051, - ~~~~~~~~~~~~~~~~~ 1052 as 1052, - ~~~~~~~~~~~~~~~~~ 1053 as 1053, - ~~~~~~~~~~~~~~~~~ 1054 as 1054, - ~~~~~~~~~~~~~~~~~ 1055 as 1055, - ~~~~~~~~~~~~~~~~~ 1056 as 1056, - ~~~~~~~~~~~~~~~~~ 1057 as 1057, - ~~~~~~~~~~~~~~~~~ 1058 as 1058, - ~~~~~~~~~~~~~~~~~ 1059 as 1059, - ~~~~~~~~~~~~~~~~~ 1060 as 1060, - ~~~~~~~~~~~~~~~~~ 1061 as 1061, - ~~~~~~~~~~~~~~~~~ 1062 as 1062, - ~~~~~~~~~~~~~~~~~ 1063 as 1063, - ~~~~~~~~~~~~~~~~~ 1064 as 1064, - ~~~~~~~~~~~~~~~~~ 1065 as 1065, - ~~~~~~~~~~~~~~~~~ 1066 as 1066, - ~~~~~~~~~~~~~~~~~ 1067 as 1067, - ~~~~~~~~~~~~~~~~~ 1068 as 1068, - ~~~~~~~~~~~~~~~~~ 1069 as 1069, - ~~~~~~~~~~~~~~~~~ 1070 as 1070, - ~~~~~~~~~~~~~~~~~ 1071 as 1071, - ~~~~~~~~~~~~~~~~~ 1072 as 1072, - ~~~~~~~~~~~~~~~~~ 1073 as 1073, - ~~~~~~~~~~~~~~~~~ 1074 as 1074, - ~~~~~~~~~~~~~~~~~ 1075 as 1075, - ~~~~~~~~~~~~~~~~~ 1076 as 1076, - ~~~~~~~~~~~~~~~~~ 1077 as 1077, - ~~~~~~~~~~~~~~~~~ 1078 as 1078, - ~~~~~~~~~~~~~~~~~ 1079 as 1079, - ~~~~~~~~~~~~~~~~~ 1080 as 1080, - ~~~~~~~~~~~~~~~~~ 1081 as 1081, - ~~~~~~~~~~~~~~~~~ 1082 as 1082, - ~~~~~~~~~~~~~~~~~ 1083 as 1083, - ~~~~~~~~~~~~~~~~~ 1084 as 1084, - ~~~~~~~~~~~~~~~~~ 1085 as 1085, - ~~~~~~~~~~~~~~~~~ 1086 as 1086, - ~~~~~~~~~~~~~~~~~ 1087 as 1087, - ~~~~~~~~~~~~~~~~~ 1088 as 1088, - ~~~~~~~~~~~~~~~~~ 1089 as 1089, - ~~~~~~~~~~~~~~~~~ 1090 as 1090, - ~~~~~~~~~~~~~~~~~ 1091 as 1091, - ~~~~~~~~~~~~~~~~~ 1092 as 1092, - ~~~~~~~~~~~~~~~~~ 1093 as 1093, - ~~~~~~~~~~~~~~~~~ 1094 as 1094, - ~~~~~~~~~~~~~~~~~ 1095 as 1095, - ~~~~~~~~~~~~~~~~~ 1096 as 1096, - ~~~~~~~~~~~~~~~~~ 1097 as 1097, - ~~~~~~~~~~~~~~~~~ 1098 as 1098, - ~~~~~~~~~~~~~~~~~ 1099 as 1099, - ~~~~~~~~~~~~~~~~~ 1100 as 1100, - ~~~~~~~~~~~~~~~~~ 1101 as 1101, - ~~~~~~~~~~~~~~~~~ 1102 as 1102, - ~~~~~~~~~~~~~~~~~ 1103 as 1103, - ~~~~~~~~~~~~~~~~~ 1104 as 1104, - ~~~~~~~~~~~~~~~~~ 1105 as 1105, - ~~~~~~~~~~~~~~~~~ 1106 as 1106, - ~~~~~~~~~~~~~~~~~ 1107 as 1107, - ~~~~~~~~~~~~~~~~~ 1108 as 1108, - ~~~~~~~~~~~~~~~~~ 1109 as 1109, - ~~~~~~~~~~~~~~~~~ 1110 as 1110, - ~~~~~~~~~~~~~~~~~ 1111 as 1111, - ~~~~~~~~~~~~~~~~~ 1112 as 1112, - ~~~~~~~~~~~~~~~~~ 1113 as 1113, - ~~~~~~~~~~~~~~~~~ 1114 as 1114, - ~~~~~~~~~~~~~~~~~ 1115 as 1115, - ~~~~~~~~~~~~~~~~~ 1116 as 1116, - ~~~~~~~~~~~~~~~~~ 1117 as 1117, - ~~~~~~~~~~~~~~~~~ 1118 as 1118, - ~~~~~~~~~~~~~~~~~ 1119 as 1119, - ~~~~~~~~~~~~~~~~~ 1120 as 1120, - ~~~~~~~~~~~~~~~~~ 1121 as 1121, - ~~~~~~~~~~~~~~~~~ 1122 as 1122, - ~~~~~~~~~~~~~~~~~ 1123 as 1123, - ~~~~~~~~~~~~~~~~~ 1124 as 1124, - ~~~~~~~~~~~~~~~~~ 1125 as 1125, - ~~~~~~~~~~~~~~~~~ 1126 as 1126, - ~~~~~~~~~~~~~~~~~ 1127 as 1127, - ~~~~~~~~~~~~~~~~~ 1128 as 1128, - ~~~~~~~~~~~~~~~~~ 1129 as 1129, - ~~~~~~~~~~~~~~~~~ 1130 as 1130, - ~~~~~~~~~~~~~~~~~ 1131 as 1131, - ~~~~~~~~~~~~~~~~~ 1132 as 1132, - ~~~~~~~~~~~~~~~~~ 1133 as 1133, - ~~~~~~~~~~~~~~~~~ 1134 as 1134, - ~~~~~~~~~~~~~~~~~ 1135 as 1135, - ~~~~~~~~~~~~~~~~~ 1136 as 1136, - ~~~~~~~~~~~~~~~~~ 1137 as 1137, - ~~~~~~~~~~~~~~~~~ 1138 as 1138, - ~~~~~~~~~~~~~~~~~ 1139 as 1139, - ~~~~~~~~~~~~~~~~~ 1140 as 1140, - ~~~~~~~~~~~~~~~~~ 1141 as 1141, - ~~~~~~~~~~~~~~~~~ 1142 as 1142, - ~~~~~~~~~~~~~~~~~ 1143 as 1143, - ~~~~~~~~~~~~~~~~~ 1144 as 1144, - ~~~~~~~~~~~~~~~~~ 1145 as 1145, - ~~~~~~~~~~~~~~~~~ 1146 as 1146, - ~~~~~~~~~~~~~~~~~ 1147 as 1147, - ~~~~~~~~~~~~~~~~~ 1148 as 1148, - ~~~~~~~~~~~~~~~~~ 1149 as 1149, - ~~~~~~~~~~~~~~~~~ 1150 as 1150, - ~~~~~~~~~~~~~~~~~ 1151 as 1151, - ~~~~~~~~~~~~~~~~~ 1152 as 1152, - ~~~~~~~~~~~~~~~~~ 1153 as 1153, - ~~~~~~~~~~~~~~~~~ 1154 as 1154, - ~~~~~~~~~~~~~~~~~ 1155 as 1155, - ~~~~~~~~~~~~~~~~~ 1156 as 1156, - ~~~~~~~~~~~~~~~~~ 1157 as 1157, - ~~~~~~~~~~~~~~~~~ 1158 as 1158, - ~~~~~~~~~~~~~~~~~ 1159 as 1159, - ~~~~~~~~~~~~~~~~~ 1160 as 1160, - ~~~~~~~~~~~~~~~~~ 1161 as 1161, - ~~~~~~~~~~~~~~~~~ 1162 as 1162, - ~~~~~~~~~~~~~~~~~ 1163 as 1163, - ~~~~~~~~~~~~~~~~~ 1164 as 1164, - ~~~~~~~~~~~~~~~~~ 1165 as 1165, - ~~~~~~~~~~~~~~~~~ 1166 as 1166, - ~~~~~~~~~~~~~~~~~ 1167 as 1167, - ~~~~~~~~~~~~~~~~~ 1168 as 1168, - ~~~~~~~~~~~~~~~~~ 1169 as 1169, - ~~~~~~~~~~~~~~~~~ 1170 as 1170, - ~~~~~~~~~~~~~~~~~ 1171 as 1171, - ~~~~~~~~~~~~~~~~~ 1172 as 1172, - ~~~~~~~~~~~~~~~~~ 1173 as 1173, - ~~~~~~~~~~~~~~~~~ 1174 as 1174, - ~~~~~~~~~~~~~~~~~ 1175 as 1175, - ~~~~~~~~~~~~~~~~~ 1176 as 1176, - ~~~~~~~~~~~~~~~~~ 1177 as 1177, - ~~~~~~~~~~~~~~~~~ 1178 as 1178, - ~~~~~~~~~~~~~~~~~ 1179 as 1179, - ~~~~~~~~~~~~~~~~~ 1180 as 1180, - ~~~~~~~~~~~~~~~~~ 1181 as 1181, - ~~~~~~~~~~~~~~~~~ 1182 as 1182, - ~~~~~~~~~~~~~~~~~ 1183 as 1183, - ~~~~~~~~~~~~~~~~~ 1184 as 1184, - ~~~~~~~~~~~~~~~~~ 1185 as 1185, - ~~~~~~~~~~~~~~~~~ 1186 as 1186, - ~~~~~~~~~~~~~~~~~ 1187 as 1187, - ~~~~~~~~~~~~~~~~~ 1188 as 1188, - ~~~~~~~~~~~~~~~~~ 1189 as 1189, - ~~~~~~~~~~~~~~~~~ 1190 as 1190, - ~~~~~~~~~~~~~~~~~ 1191 as 1191, - ~~~~~~~~~~~~~~~~~ 1192 as 1192, - ~~~~~~~~~~~~~~~~~ 1193 as 1193, - ~~~~~~~~~~~~~~~~~ 1194 as 1194, - ~~~~~~~~~~~~~~~~~ 1195 as 1195, - ~~~~~~~~~~~~~~~~~ 1196 as 1196, - ~~~~~~~~~~~~~~~~~ 1197 as 1197, - ~~~~~~~~~~~~~~~~~ 1198 as 1198, - ~~~~~~~~~~~~~~~~~ 1199 as 1199, - ~~~~~~~~~~~~~~~~~ 1200 as 1200, - ~~~~~~~~~~~~~~~~~ 1201 as 1201, - ~~~~~~~~~~~~~~~~~ 1202 as 1202, - ~~~~~~~~~~~~~~~~~ 1203 as 1203, - ~~~~~~~~~~~~~~~~~ 1204 as 1204, - ~~~~~~~~~~~~~~~~~ 1205 as 1205, - ~~~~~~~~~~~~~~~~~ 1206 as 1206, - ~~~~~~~~~~~~~~~~~ 1207 as 1207, - ~~~~~~~~~~~~~~~~~ 1208 as 1208, - ~~~~~~~~~~~~~~~~~ 1209 as 1209, - ~~~~~~~~~~~~~~~~~ 1210 as 1210, - ~~~~~~~~~~~~~~~~~ 1211 as 1211, - ~~~~~~~~~~~~~~~~~ 1212 as 1212, - ~~~~~~~~~~~~~~~~~ 1213 as 1213, - ~~~~~~~~~~~~~~~~~ 1214 as 1214, - ~~~~~~~~~~~~~~~~~ 1215 as 1215, - ~~~~~~~~~~~~~~~~~ 1216 as 1216, - ~~~~~~~~~~~~~~~~~ 1217 as 1217, - ~~~~~~~~~~~~~~~~~ 1218 as 1218, - ~~~~~~~~~~~~~~~~~ 1219 as 1219, - ~~~~~~~~~~~~~~~~~ 1220 as 1220, - ~~~~~~~~~~~~~~~~~ 1221 as 1221, - ~~~~~~~~~~~~~~~~~ 1222 as 1222, - ~~~~~~~~~~~~~~~~~ 1223 as 1223, - ~~~~~~~~~~~~~~~~~ 1224 as 1224, - ~~~~~~~~~~~~~~~~~ 1225 as 1225, - ~~~~~~~~~~~~~~~~~ 1226 as 1226, - ~~~~~~~~~~~~~~~~~ 1227 as 1227, - ~~~~~~~~~~~~~~~~~ 1228 as 1228, - ~~~~~~~~~~~~~~~~~ 1229 as 1229, - ~~~~~~~~~~~~~~~~~ 1230 as 1230, - ~~~~~~~~~~~~~~~~~ 1231 as 1231, - ~~~~~~~~~~~~~~~~~ 1232 as 1232, - ~~~~~~~~~~~~~~~~~ 1233 as 1233, - ~~~~~~~~~~~~~~~~~ 1234 as 1234, - ~~~~~~~~~~~~~~~~~ 1235 as 1235, - ~~~~~~~~~~~~~~~~~ 1236 as 1236, - ~~~~~~~~~~~~~~~~~ 1237 as 1237, - ~~~~~~~~~~~~~~~~~ 1238 as 1238, - ~~~~~~~~~~~~~~~~~ 1239 as 1239, - ~~~~~~~~~~~~~~~~~ 1240 as 1240, - ~~~~~~~~~~~~~~~~~ 1241 as 1241, - ~~~~~~~~~~~~~~~~~ 1242 as 1242, - ~~~~~~~~~~~~~~~~~ 1243 as 1243, - ~~~~~~~~~~~~~~~~~ 1244 as 1244, - ~~~~~~~~~~~~~~~~~ 1245 as 1245, - ~~~~~~~~~~~~~~~~~ 1246 as 1246, - ~~~~~~~~~~~~~~~~~ 1247 as 1247, - ~~~~~~~~~~~~~~~~~ 1248 as 1248, - ~~~~~~~~~~~~~~~~~ 1249 as 1249, - ~~~~~~~~~~~~~~~~~ 1250 as 1250, - ~~~~~~~~~~~~~~~~~ 1251 as 1251, - ~~~~~~~~~~~~~~~~~ 1252 as 1252, - ~~~~~~~~~~~~~~~~~ 1253 as 1253, - ~~~~~~~~~~~~~~~~~ 1254 as 1254, - ~~~~~~~~~~~~~~~~~ 1255 as 1255, - ~~~~~~~~~~~~~~~~~ 1256 as 1256, - ~~~~~~~~~~~~~~~~~ 1257 as 1257, - ~~~~~~~~~~~~~~~~~ 1258 as 1258, - ~~~~~~~~~~~~~~~~~ 1259 as 1259, - ~~~~~~~~~~~~~~~~~ 1260 as 1260, - ~~~~~~~~~~~~~~~~~ 1261 as 1261, - ~~~~~~~~~~~~~~~~~ 1262 as 1262, - ~~~~~~~~~~~~~~~~~ 1263 as 1263, - ~~~~~~~~~~~~~~~~~ 1264 as 1264, - ~~~~~~~~~~~~~~~~~ 1265 as 1265, - ~~~~~~~~~~~~~~~~~ 1266 as 1266, - ~~~~~~~~~~~~~~~~~ 1267 as 1267, - ~~~~~~~~~~~~~~~~~ 1268 as 1268, - ~~~~~~~~~~~~~~~~~ 1269 as 1269, - ~~~~~~~~~~~~~~~~~ 1270 as 1270, - ~~~~~~~~~~~~~~~~~ 1271 as 1271, - ~~~~~~~~~~~~~~~~~ 1272 as 1272, - ~~~~~~~~~~~~~~~~~ 1273 as 1273, - ~~~~~~~~~~~~~~~~~ 1274 as 1274, - ~~~~~~~~~~~~~~~~~ 1275 as 1275, - ~~~~~~~~~~~~~~~~~ 1276 as 1276, - ~~~~~~~~~~~~~~~~~ 1277 as 1277, - ~~~~~~~~~~~~~~~~~ 1278 as 1278, - ~~~~~~~~~~~~~~~~~ 1279 as 1279, - ~~~~~~~~~~~~~~~~~ 1280 as 1280, - ~~~~~~~~~~~~~~~~~ 1281 as 1281, - ~~~~~~~~~~~~~~~~~ 1282 as 1282, - ~~~~~~~~~~~~~~~~~ 1283 as 1283, - ~~~~~~~~~~~~~~~~~ 1284 as 1284, - ~~~~~~~~~~~~~~~~~ 1285 as 1285, - ~~~~~~~~~~~~~~~~~ 1286 as 1286, - ~~~~~~~~~~~~~~~~~ 1287 as 1287, - ~~~~~~~~~~~~~~~~~ 1288 as 1288, - ~~~~~~~~~~~~~~~~~ 1289 as 1289, - ~~~~~~~~~~~~~~~~~ 1290 as 1290, - ~~~~~~~~~~~~~~~~~ 1291 as 1291, - ~~~~~~~~~~~~~~~~~ 1292 as 1292, - ~~~~~~~~~~~~~~~~~ 1293 as 1293, - ~~~~~~~~~~~~~~~~~ 1294 as 1294, - ~~~~~~~~~~~~~~~~~ 1295 as 1295, - ~~~~~~~~~~~~~~~~~ 1296 as 1296, - ~~~~~~~~~~~~~~~~~ 1297 as 1297, - ~~~~~~~~~~~~~~~~~ 1298 as 1298, - ~~~~~~~~~~~~~~~~~ 1299 as 1299, - ~~~~~~~~~~~~~~~~~ 1300 as 1300, - ~~~~~~~~~~~~~~~~~ 1301 as 1301, - ~~~~~~~~~~~~~~~~~ 1302 as 1302, - ~~~~~~~~~~~~~~~~~ 1303 as 1303, - ~~~~~~~~~~~~~~~~~ 1304 as 1304, - ~~~~~~~~~~~~~~~~~ 1305 as 1305, - ~~~~~~~~~~~~~~~~~ 1306 as 1306, - ~~~~~~~~~~~~~~~~~ 1307 as 1307, - ~~~~~~~~~~~~~~~~~ 1308 as 1308, - ~~~~~~~~~~~~~~~~~ 1309 as 1309, - ~~~~~~~~~~~~~~~~~ 1310 as 1310, - ~~~~~~~~~~~~~~~~~ 1311 as 1311, - ~~~~~~~~~~~~~~~~~ 1312 as 1312, - ~~~~~~~~~~~~~~~~~ 1313 as 1313, - ~~~~~~~~~~~~~~~~~ 1314 as 1314, - ~~~~~~~~~~~~~~~~~ 1315 as 1315, - ~~~~~~~~~~~~~~~~~ 1316 as 1316, - ~~~~~~~~~~~~~~~~~ 1317 as 1317, - ~~~~~~~~~~~~~~~~~ 1318 as 1318, - ~~~~~~~~~~~~~~~~~ 1319 as 1319, - ~~~~~~~~~~~~~~~~~ 1320 as 1320, - ~~~~~~~~~~~~~~~~~ 1321 as 1321, - ~~~~~~~~~~~~~~~~~ 1322 as 1322, - ~~~~~~~~~~~~~~~~~ 1323 as 1323, - ~~~~~~~~~~~~~~~~~ 1324 as 1324, - ~~~~~~~~~~~~~~~~~ 1325 as 1325, - ~~~~~~~~~~~~~~~~~ 1326 as 1326, - ~~~~~~~~~~~~~~~~~ 1327 as 1327, - ~~~~~~~~~~~~~~~~~ 1328 as 1328, - ~~~~~~~~~~~~~~~~~ 1329 as 1329, - ~~~~~~~~~~~~~~~~~ 1330 as 1330, - ~~~~~~~~~~~~~~~~~ 1331 as 1331, - ~~~~~~~~~~~~~~~~~ 1332 as 1332, - ~~~~~~~~~~~~~~~~~ 1333 as 1333, - ~~~~~~~~~~~~~~~~~ 1334 as 1334, - ~~~~~~~~~~~~~~~~~ 1335 as 1335, - ~~~~~~~~~~~~~~~~~ 1336 as 1336, - ~~~~~~~~~~~~~~~~~ 1337 as 1337, - ~~~~~~~~~~~~~~~~~ 1338 as 1338, - ~~~~~~~~~~~~~~~~~ 1339 as 1339, - ~~~~~~~~~~~~~~~~~ 1340 as 1340, - ~~~~~~~~~~~~~~~~~ 1341 as 1341, - ~~~~~~~~~~~~~~~~~ 1342 as 1342, - ~~~~~~~~~~~~~~~~~ 1343 as 1343, - ~~~~~~~~~~~~~~~~~ 1344 as 1344, - ~~~~~~~~~~~~~~~~~ 1345 as 1345, - ~~~~~~~~~~~~~~~~~ 1346 as 1346, - ~~~~~~~~~~~~~~~~~ 1347 as 1347, - ~~~~~~~~~~~~~~~~~ 1348 as 1348, - ~~~~~~~~~~~~~~~~~ 1349 as 1349, - ~~~~~~~~~~~~~~~~~ 1350 as 1350, - ~~~~~~~~~~~~~~~~~ 1351 as 1351, - ~~~~~~~~~~~~~~~~~ 1352 as 1352, - ~~~~~~~~~~~~~~~~~ 1353 as 1353, - ~~~~~~~~~~~~~~~~~ 1354 as 1354, - ~~~~~~~~~~~~~~~~~ 1355 as 1355, - ~~~~~~~~~~~~~~~~~ 1356 as 1356, - ~~~~~~~~~~~~~~~~~ 1357 as 1357, - ~~~~~~~~~~~~~~~~~ 1358 as 1358, - ~~~~~~~~~~~~~~~~~ 1359 as 1359, - ~~~~~~~~~~~~~~~~~ 1360 as 1360, - ~~~~~~~~~~~~~~~~~ 1361 as 1361, - ~~~~~~~~~~~~~~~~~ 1362 as 1362, - ~~~~~~~~~~~~~~~~~ 1363 as 1363, - ~~~~~~~~~~~~~~~~~ 1364 as 1364, - ~~~~~~~~~~~~~~~~~ 1365 as 1365, - ~~~~~~~~~~~~~~~~~ 1366 as 1366, - ~~~~~~~~~~~~~~~~~ 1367 as 1367, - ~~~~~~~~~~~~~~~~~ 1368 as 1368, - ~~~~~~~~~~~~~~~~~ 1369 as 1369, - ~~~~~~~~~~~~~~~~~ 1370 as 1370, - ~~~~~~~~~~~~~~~~~ 1371 as 1371, - ~~~~~~~~~~~~~~~~~ 1372 as 1372, - ~~~~~~~~~~~~~~~~~ 1373 as 1373, - ~~~~~~~~~~~~~~~~~ 1374 as 1374, - ~~~~~~~~~~~~~~~~~ 1375 as 1375, - ~~~~~~~~~~~~~~~~~ 1376 as 1376, - ~~~~~~~~~~~~~~~~~ 1377 as 1377, - ~~~~~~~~~~~~~~~~~ 1378 as 1378, - ~~~~~~~~~~~~~~~~~ 1379 as 1379, - ~~~~~~~~~~~~~~~~~ 1380 as 1380, - ~~~~~~~~~~~~~~~~~ 1381 as 1381, - ~~~~~~~~~~~~~~~~~ 1382 as 1382, - ~~~~~~~~~~~~~~~~~ 1383 as 1383, - ~~~~~~~~~~~~~~~~~ 1384 as 1384, - ~~~~~~~~~~~~~~~~~ 1385 as 1385, - ~~~~~~~~~~~~~~~~~ 1386 as 1386, - ~~~~~~~~~~~~~~~~~ 1387 as 1387, - ~~~~~~~~~~~~~~~~~ 1388 as 1388, - ~~~~~~~~~~~~~~~~~ 1389 as 1389, - ~~~~~~~~~~~~~~~~~ 1390 as 1390, - ~~~~~~~~~~~~~~~~~ 1391 as 1391, - ~~~~~~~~~~~~~~~~~ 1392 as 1392, - ~~~~~~~~~~~~~~~~~ 1393 as 1393, - ~~~~~~~~~~~~~~~~~ 1394 as 1394, - ~~~~~~~~~~~~~~~~~ 1395 as 1395, - ~~~~~~~~~~~~~~~~~ 1396 as 1396, - ~~~~~~~~~~~~~~~~~ 1397 as 1397, - ~~~~~~~~~~~~~~~~~ 1398 as 1398, - ~~~~~~~~~~~~~~~~~ 1399 as 1399, - ~~~~~~~~~~~~~~~~~ 1400 as 1400, - ~~~~~~~~~~~~~~~~~ 1401 as 1401, - ~~~~~~~~~~~~~~~~~ 1402 as 1402, - ~~~~~~~~~~~~~~~~~ 1403 as 1403, - ~~~~~~~~~~~~~~~~~ 1404 as 1404, - ~~~~~~~~~~~~~~~~~ 1405 as 1405, - ~~~~~~~~~~~~~~~~~ 1406 as 1406, - ~~~~~~~~~~~~~~~~~ 1407 as 1407, - ~~~~~~~~~~~~~~~~~ 1408 as 1408, - ~~~~~~~~~~~~~~~~~ 1409 as 1409, - ~~~~~~~~~~~~~~~~~ 1410 as 1410, - ~~~~~~~~~~~~~~~~~ 1411 as 1411, - ~~~~~~~~~~~~~~~~~ 1412 as 1412, - ~~~~~~~~~~~~~~~~~ 1413 as 1413, - ~~~~~~~~~~~~~~~~~ 1414 as 1414, - ~~~~~~~~~~~~~~~~~ 1415 as 1415, - ~~~~~~~~~~~~~~~~~ 1416 as 1416, - ~~~~~~~~~~~~~~~~~ 1417 as 1417, - ~~~~~~~~~~~~~~~~~ 1418 as 1418, - ~~~~~~~~~~~~~~~~~ 1419 as 1419, - ~~~~~~~~~~~~~~~~~ 1420 as 1420, - ~~~~~~~~~~~~~~~~~ 1421 as 1421, - ~~~~~~~~~~~~~~~~~ 1422 as 1422, - ~~~~~~~~~~~~~~~~~ 1423 as 1423, - ~~~~~~~~~~~~~~~~~ 1424 as 1424, - ~~~~~~~~~~~~~~~~~ 1425 as 1425, - ~~~~~~~~~~~~~~~~~ 1426 as 1426, - ~~~~~~~~~~~~~~~~~ 1427 as 1427, - ~~~~~~~~~~~~~~~~~ 1428 as 1428, - ~~~~~~~~~~~~~~~~~ 1429 as 1429, - ~~~~~~~~~~~~~~~~~ 1430 as 1430, - ~~~~~~~~~~~~~~~~~ 1431 as 1431, - ~~~~~~~~~~~~~~~~~ 1432 as 1432, - ~~~~~~~~~~~~~~~~~ 1433 as 1433, - ~~~~~~~~~~~~~~~~~ 1434 as 1434, - ~~~~~~~~~~~~~~~~~ 1435 as 1435, - ~~~~~~~~~~~~~~~~~ 1436 as 1436, - ~~~~~~~~~~~~~~~~~ 1437 as 1437, - ~~~~~~~~~~~~~~~~~ 1438 as 1438, - ~~~~~~~~~~~~~~~~~ 1439 as 1439, - ~~~~~~~~~~~~~~~~~ 1440 as 1440, - ~~~~~~~~~~~~~~~~~ 1441 as 1441, - ~~~~~~~~~~~~~~~~~ 1442 as 1442, - ~~~~~~~~~~~~~~~~~ 1443 as 1443, - ~~~~~~~~~~~~~~~~~ 1444 as 1444, - ~~~~~~~~~~~~~~~~~ 1445 as 1445, - ~~~~~~~~~~~~~~~~~ 1446 as 1446, - ~~~~~~~~~~~~~~~~~ 1447 as 1447, - ~~~~~~~~~~~~~~~~~ 1448 as 1448, - ~~~~~~~~~~~~~~~~~ 1449 as 1449, - ~~~~~~~~~~~~~~~~~ 1450 as 1450, - ~~~~~~~~~~~~~~~~~ 1451 as 1451, - ~~~~~~~~~~~~~~~~~ 1452 as 1452, - ~~~~~~~~~~~~~~~~~ 1453 as 1453, - ~~~~~~~~~~~~~~~~~ 1454 as 1454, - ~~~~~~~~~~~~~~~~~ 1455 as 1455, - ~~~~~~~~~~~~~~~~~ 1456 as 1456, - ~~~~~~~~~~~~~~~~~ 1457 as 1457, - ~~~~~~~~~~~~~~~~~ 1458 as 1458, - ~~~~~~~~~~~~~~~~~ 1459 as 1459, - ~~~~~~~~~~~~~~~~~ 1460 as 1460, - ~~~~~~~~~~~~~~~~~ 1461 as 1461, - ~~~~~~~~~~~~~~~~~ 1462 as 1462, - ~~~~~~~~~~~~~~~~~ 1463 as 1463, - ~~~~~~~~~~~~~~~~~ 1464 as 1464, - ~~~~~~~~~~~~~~~~~ 1465 as 1465, - ~~~~~~~~~~~~~~~~~ 1466 as 1466, - ~~~~~~~~~~~~~~~~~ 1467 as 1467, - ~~~~~~~~~~~~~~~~~ 1468 as 1468, - ~~~~~~~~~~~~~~~~~ 1469 as 1469, - ~~~~~~~~~~~~~~~~~ 1470 as 1470, - ~~~~~~~~~~~~~~~~~ 1471 as 1471, - ~~~~~~~~~~~~~~~~~ 1472 as 1472, - ~~~~~~~~~~~~~~~~~ 1473 as 1473, - ~~~~~~~~~~~~~~~~~ 1474 as 1474, - ~~~~~~~~~~~~~~~~~ 1475 as 1475, - ~~~~~~~~~~~~~~~~~ 1476 as 1476, - ~~~~~~~~~~~~~~~~~ 1477 as 1477, - ~~~~~~~~~~~~~~~~~ 1478 as 1478, - ~~~~~~~~~~~~~~~~~ 1479 as 1479, - ~~~~~~~~~~~~~~~~~ 1480 as 1480, - ~~~~~~~~~~~~~~~~~ 1481 as 1481, - ~~~~~~~~~~~~~~~~~ 1482 as 1482, - ~~~~~~~~~~~~~~~~~ 1483 as 1483, - ~~~~~~~~~~~~~~~~~ 1484 as 1484, - ~~~~~~~~~~~~~~~~~ 1485 as 1485, - ~~~~~~~~~~~~~~~~~ 1486 as 1486, - ~~~~~~~~~~~~~~~~~ 1487 as 1487, - ~~~~~~~~~~~~~~~~~ 1488 as 1488, - ~~~~~~~~~~~~~~~~~ 1489 as 1489, - ~~~~~~~~~~~~~~~~~ 1490 as 1490, - ~~~~~~~~~~~~~~~~~ 1491 as 1491, - ~~~~~~~~~~~~~~~~~ 1492 as 1492, - ~~~~~~~~~~~~~~~~~ 1493 as 1493, - ~~~~~~~~~~~~~~~~~ 1494 as 1494, - ~~~~~~~~~~~~~~~~~ 1495 as 1495, - ~~~~~~~~~~~~~~~~~ 1496 as 1496, - ~~~~~~~~~~~~~~~~~ 1497 as 1497, - ~~~~~~~~~~~~~~~~~ 1498 as 1498, - ~~~~~~~~~~~~~~~~~ 1499 as 1499, - ~~~~~~~~~~~~~~~~~ 1500 as 1500, - ~~~~~~~~~~~~~~~~~ 1501 as 1501, - ~~~~~~~~~~~~~~~~~ 1502 as 1502, - ~~~~~~~~~~~~~~~~~ 1503 as 1503, - ~~~~~~~~~~~~~~~~~ 1504 as 1504, - ~~~~~~~~~~~~~~~~~ 1505 as 1505, - ~~~~~~~~~~~~~~~~~ 1506 as 1506, - ~~~~~~~~~~~~~~~~~ 1507 as 1507, - ~~~~~~~~~~~~~~~~~ 1508 as 1508, - ~~~~~~~~~~~~~~~~~ 1509 as 1509, - ~~~~~~~~~~~~~~~~~ 1510 as 1510, - ~~~~~~~~~~~~~~~~~ 1511 as 1511, - ~~~~~~~~~~~~~~~~~ 1512 as 1512, - ~~~~~~~~~~~~~~~~~ 1513 as 1513, - ~~~~~~~~~~~~~~~~~ 1514 as 1514, - ~~~~~~~~~~~~~~~~~ 1515 as 1515, - ~~~~~~~~~~~~~~~~~ 1516 as 1516, - ~~~~~~~~~~~~~~~~~ 1517 as 1517, - ~~~~~~~~~~~~~~~~~ 1518 as 1518, - ~~~~~~~~~~~~~~~~~ 1519 as 1519, - ~~~~~~~~~~~~~~~~~ 1520 as 1520, - ~~~~~~~~~~~~~~~~~ 1521 as 1521, - ~~~~~~~~~~~~~~~~~ 1522 as 1522, - ~~~~~~~~~~~~~~~~~ 1523 as 1523, - ~~~~~~~~~~~~~~~~~ 1524 as 1524, - ~~~~~~~~~~~~~~~~~ 1525 as 1525, - ~~~~~~~~~~~~~~~~~ 1526 as 1526, - ~~~~~~~~~~~~~~~~~ 1527 as 1527, - ~~~~~~~~~~~~~~~~~ 1528 as 1528, - ~~~~~~~~~~~~~~~~~ 1529 as 1529, - ~~~~~~~~~~~~~~~~~ 1530 as 1530, - ~~~~~~~~~~~~~~~~~ 1531 as 1531, - ~~~~~~~~~~~~~~~~~ 1532 as 1532, - ~~~~~~~~~~~~~~~~~ 1533 as 1533, - ~~~~~~~~~~~~~~~~~ 1534 as 1534, - ~~~~~~~~~~~~~~~~~ 1535 as 1535, - ~~~~~~~~~~~~~~~~~ 1536 as 1536, - ~~~~~~~~~~~~~~~~~ 1537 as 1537, - ~~~~~~~~~~~~~~~~~ 1538 as 1538, - ~~~~~~~~~~~~~~~~~ 1539 as 1539, - ~~~~~~~~~~~~~~~~~ 1540 as 1540, - ~~~~~~~~~~~~~~~~~ 1541 as 1541, - ~~~~~~~~~~~~~~~~~ 1542 as 1542, - ~~~~~~~~~~~~~~~~~ 1543 as 1543, - ~~~~~~~~~~~~~~~~~ 1544 as 1544, - ~~~~~~~~~~~~~~~~~ 1545 as 1545, - ~~~~~~~~~~~~~~~~~ 1546 as 1546, - ~~~~~~~~~~~~~~~~~ 1547 as 1547, - ~~~~~~~~~~~~~~~~~ 1548 as 1548, - ~~~~~~~~~~~~~~~~~ 1549 as 1549, - ~~~~~~~~~~~~~~~~~ 1550 as 1550, - ~~~~~~~~~~~~~~~~~ 1551 as 1551, - ~~~~~~~~~~~~~~~~~ 1552 as 1552, - ~~~~~~~~~~~~~~~~~ 1553 as 1553, - ~~~~~~~~~~~~~~~~~ 1554 as 1554, - ~~~~~~~~~~~~~~~~~ 1555 as 1555, - ~~~~~~~~~~~~~~~~~ 1556 as 1556, - ~~~~~~~~~~~~~~~~~ 1557 as 1557, - ~~~~~~~~~~~~~~~~~ 1558 as 1558, - ~~~~~~~~~~~~~~~~~ 1559 as 1559, - ~~~~~~~~~~~~~~~~~ 1560 as 1560, - ~~~~~~~~~~~~~~~~~ 1561 as 1561, - ~~~~~~~~~~~~~~~~~ 1562 as 1562, - ~~~~~~~~~~~~~~~~~ 1563 as 1563, - ~~~~~~~~~~~~~~~~~ 1564 as 1564, - ~~~~~~~~~~~~~~~~~ 1565 as 1565, - ~~~~~~~~~~~~~~~~~ 1566 as 1566, - ~~~~~~~~~~~~~~~~~ 1567 as 1567, - ~~~~~~~~~~~~~~~~~ 1568 as 1568, - ~~~~~~~~~~~~~~~~~ 1569 as 1569, - ~~~~~~~~~~~~~~~~~ 1570 as 1570, - ~~~~~~~~~~~~~~~~~ 1571 as 1571, - ~~~~~~~~~~~~~~~~~ 1572 as 1572, - ~~~~~~~~~~~~~~~~~ 1573 as 1573, - ~~~~~~~~~~~~~~~~~ 1574 as 1574, - ~~~~~~~~~~~~~~~~~ 1575 as 1575, - ~~~~~~~~~~~~~~~~~ 1576 as 1576, - ~~~~~~~~~~~~~~~~~ 1577 as 1577, - ~~~~~~~~~~~~~~~~~ 1578 as 1578, - ~~~~~~~~~~~~~~~~~ 1579 as 1579, - ~~~~~~~~~~~~~~~~~ 1580 as 1580, - ~~~~~~~~~~~~~~~~~ 1581 as 1581, - ~~~~~~~~~~~~~~~~~ 1582 as 1582, - ~~~~~~~~~~~~~~~~~ 1583 as 1583, - ~~~~~~~~~~~~~~~~~ 1584 as 1584, - ~~~~~~~~~~~~~~~~~ 1585 as 1585, - ~~~~~~~~~~~~~~~~~ 1586 as 1586, - ~~~~~~~~~~~~~~~~~ 1587 as 1587, - ~~~~~~~~~~~~~~~~~ 1588 as 1588, - ~~~~~~~~~~~~~~~~~ 1589 as 1589, - ~~~~~~~~~~~~~~~~~ 1590 as 1590, - ~~~~~~~~~~~~~~~~~ 1591 as 1591, - ~~~~~~~~~~~~~~~~~ 1592 as 1592, - ~~~~~~~~~~~~~~~~~ 1593 as 1593, - ~~~~~~~~~~~~~~~~~ 1594 as 1594, - ~~~~~~~~~~~~~~~~~ 1595 as 1595, - ~~~~~~~~~~~~~~~~~ 1596 as 1596, - ~~~~~~~~~~~~~~~~~ 1597 as 1597, - ~~~~~~~~~~~~~~~~~ 1598 as 1598, - ~~~~~~~~~~~~~~~~~ 1599 as 1599, - ~~~~~~~~~~~~~~~~~ 1600 as 1600, - ~~~~~~~~~~~~~~~~~ 1601 as 1601, - ~~~~~~~~~~~~~~~~~ 1602 as 1602, - ~~~~~~~~~~~~~~~~~ 1603 as 1603, - ~~~~~~~~~~~~~~~~~ 1604 as 1604, - ~~~~~~~~~~~~~~~~~ 1605 as 1605, - ~~~~~~~~~~~~~~~~~ 1606 as 1606, - ~~~~~~~~~~~~~~~~~ 1607 as 1607, - ~~~~~~~~~~~~~~~~~ 1608 as 1608, - ~~~~~~~~~~~~~~~~~ 1609 as 1609, - ~~~~~~~~~~~~~~~~~ 1610 as 1610, - ~~~~~~~~~~~~~~~~~ 1611 as 1611, - ~~~~~~~~~~~~~~~~~ 1612 as 1612, - ~~~~~~~~~~~~~~~~~ 1613 as 1613, - ~~~~~~~~~~~~~~~~~ 1614 as 1614, - ~~~~~~~~~~~~~~~~~ 1615 as 1615, - ~~~~~~~~~~~~~~~~~ 1616 as 1616, - ~~~~~~~~~~~~~~~~~ 1617 as 1617, - ~~~~~~~~~~~~~~~~~ 1618 as 1618, - ~~~~~~~~~~~~~~~~~ 1619 as 1619, - ~~~~~~~~~~~~~~~~~ 1620 as 1620, - ~~~~~~~~~~~~~~~~~ 1621 as 1621, - ~~~~~~~~~~~~~~~~~ 1622 as 1622, - ~~~~~~~~~~~~~~~~~ 1623 as 1623, - ~~~~~~~~~~~~~~~~~ 1624 as 1624, - ~~~~~~~~~~~~~~~~~ 1625 as 1625, - ~~~~~~~~~~~~~~~~~ 1626 as 1626, - ~~~~~~~~~~~~~~~~~ 1627 as 1627, - ~~~~~~~~~~~~~~~~~ 1628 as 1628, - ~~~~~~~~~~~~~~~~~ 1629 as 1629, - ~~~~~~~~~~~~~~~~~ 1630 as 1630, - ~~~~~~~~~~~~~~~~~ 1631 as 1631, - ~~~~~~~~~~~~~~~~~ 1632 as 1632, - ~~~~~~~~~~~~~~~~~ 1633 as 1633, - ~~~~~~~~~~~~~~~~~ 1634 as 1634, - ~~~~~~~~~~~~~~~~~ 1635 as 1635, - ~~~~~~~~~~~~~~~~~ 1636 as 1636, - ~~~~~~~~~~~~~~~~~ 1637 as 1637, - ~~~~~~~~~~~~~~~~~ 1638 as 1638, - ~~~~~~~~~~~~~~~~~ 1639 as 1639, - ~~~~~~~~~~~~~~~~~ 1640 as 1640, - ~~~~~~~~~~~~~~~~~ 1641 as 1641, - ~~~~~~~~~~~~~~~~~ 1642 as 1642, - ~~~~~~~~~~~~~~~~~ 1643 as 1643, - ~~~~~~~~~~~~~~~~~ 1644 as 1644, - ~~~~~~~~~~~~~~~~~ 1645 as 1645, - ~~~~~~~~~~~~~~~~~ 1646 as 1646, - ~~~~~~~~~~~~~~~~~ 1647 as 1647, - ~~~~~~~~~~~~~~~~~ 1648 as 1648, - ~~~~~~~~~~~~~~~~~ 1649 as 1649, - ~~~~~~~~~~~~~~~~~ 1650 as 1650, - ~~~~~~~~~~~~~~~~~ 1651 as 1651, - ~~~~~~~~~~~~~~~~~ 1652 as 1652, - ~~~~~~~~~~~~~~~~~ 1653 as 1653, - ~~~~~~~~~~~~~~~~~ 1654 as 1654, - ~~~~~~~~~~~~~~~~~ 1655 as 1655, - ~~~~~~~~~~~~~~~~~ 1656 as 1656, - ~~~~~~~~~~~~~~~~~ 1657 as 1657, - ~~~~~~~~~~~~~~~~~ 1658 as 1658, - ~~~~~~~~~~~~~~~~~ 1659 as 1659, - ~~~~~~~~~~~~~~~~~ 1660 as 1660, - ~~~~~~~~~~~~~~~~~ 1661 as 1661, - ~~~~~~~~~~~~~~~~~ 1662 as 1662, - ~~~~~~~~~~~~~~~~~ 1663 as 1663, - ~~~~~~~~~~~~~~~~~ 1664 as 1664, - ~~~~~~~~~~~~~~~~~ 1665 as 1665, - ~~~~~~~~~~~~~~~~~ 1666 as 1666, - ~~~~~~~~~~~~~~~~~ 1667 as 1667, - ~~~~~~~~~~~~~~~~~ 1668 as 1668, - ~~~~~~~~~~~~~~~~~ 1669 as 1669, - ~~~~~~~~~~~~~~~~~ 1670 as 1670, - ~~~~~~~~~~~~~~~~~ 1671 as 1671, - ~~~~~~~~~~~~~~~~~ 1672 as 1672, - ~~~~~~~~~~~~~~~~~ 1673 as 1673, - ~~~~~~~~~~~~~~~~~ 1674 as 1674, - ~~~~~~~~~~~~~~~~~ 1675 as 1675, - ~~~~~~~~~~~~~~~~~ 1676 as 1676, - ~~~~~~~~~~~~~~~~~ 1677 as 1677, - ~~~~~~~~~~~~~~~~~ 1678 as 1678, - ~~~~~~~~~~~~~~~~~ 1679 as 1679, - ~~~~~~~~~~~~~~~~~ 1680 as 1680, - ~~~~~~~~~~~~~~~~~ 1681 as 1681, - ~~~~~~~~~~~~~~~~~ 1682 as 1682, - ~~~~~~~~~~~~~~~~~ 1683 as 1683, - ~~~~~~~~~~~~~~~~~ 1684 as 1684, - ~~~~~~~~~~~~~~~~~ 1685 as 1685, - ~~~~~~~~~~~~~~~~~ 1686 as 1686, - ~~~~~~~~~~~~~~~~~ 1687 as 1687, - ~~~~~~~~~~~~~~~~~ 1688 as 1688, - ~~~~~~~~~~~~~~~~~ 1689 as 1689, - ~~~~~~~~~~~~~~~~~ 1690 as 1690, - ~~~~~~~~~~~~~~~~~ 1691 as 1691, - ~~~~~~~~~~~~~~~~~ 1692 as 1692, - ~~~~~~~~~~~~~~~~~ 1693 as 1693, - ~~~~~~~~~~~~~~~~~ 1694 as 1694, - ~~~~~~~~~~~~~~~~~ 1695 as 1695, - ~~~~~~~~~~~~~~~~~ 1696 as 1696, - ~~~~~~~~~~~~~~~~~ 1697 as 1697, - ~~~~~~~~~~~~~~~~~ 1698 as 1698, - ~~~~~~~~~~~~~~~~~ 1699 as 1699, - ~~~~~~~~~~~~~~~~~ 1700 as 1700, - ~~~~~~~~~~~~~~~~~ 1701 as 1701, - ~~~~~~~~~~~~~~~~~ 1702 as 1702, - ~~~~~~~~~~~~~~~~~ 1703 as 1703, - ~~~~~~~~~~~~~~~~~ 1704 as 1704, - ~~~~~~~~~~~~~~~~~ 1705 as 1705, - ~~~~~~~~~~~~~~~~~ 1706 as 1706, - ~~~~~~~~~~~~~~~~~ 1707 as 1707, - ~~~~~~~~~~~~~~~~~ 1708 as 1708, - ~~~~~~~~~~~~~~~~~ 1709 as 1709, - ~~~~~~~~~~~~~~~~~ 1710 as 1710, - ~~~~~~~~~~~~~~~~~ 1711 as 1711, - ~~~~~~~~~~~~~~~~~ 1712 as 1712, - ~~~~~~~~~~~~~~~~~ 1713 as 1713, - ~~~~~~~~~~~~~~~~~ 1714 as 1714, - ~~~~~~~~~~~~~~~~~ 1715 as 1715, - ~~~~~~~~~~~~~~~~~ 1716 as 1716, - ~~~~~~~~~~~~~~~~~ 1717 as 1717, - ~~~~~~~~~~~~~~~~~ 1718 as 1718, - ~~~~~~~~~~~~~~~~~ 1719 as 1719, - ~~~~~~~~~~~~~~~~~ 1720 as 1720, - ~~~~~~~~~~~~~~~~~ 1721 as 1721, - ~~~~~~~~~~~~~~~~~ 1722 as 1722, - ~~~~~~~~~~~~~~~~~ 1723 as 1723, - ~~~~~~~~~~~~~~~~~ 1724 as 1724, - ~~~~~~~~~~~~~~~~~ 1725 as 1725, - ~~~~~~~~~~~~~~~~~ 1726 as 1726, - ~~~~~~~~~~~~~~~~~ 1727 as 1727, - ~~~~~~~~~~~~~~~~~ 1728 as 1728, - ~~~~~~~~~~~~~~~~~ 1729 as 1729, - ~~~~~~~~~~~~~~~~~ 1730 as 1730, - ~~~~~~~~~~~~~~~~~ 1731 as 1731, - ~~~~~~~~~~~~~~~~~ 1732 as 1732, - ~~~~~~~~~~~~~~~~~ 1733 as 1733, - ~~~~~~~~~~~~~~~~~ 1734 as 1734, - ~~~~~~~~~~~~~~~~~ 1735 as 1735, - ~~~~~~~~~~~~~~~~~ 1736 as 1736, - ~~~~~~~~~~~~~~~~~ 1737 as 1737, - ~~~~~~~~~~~~~~~~~ 1738 as 1738, - ~~~~~~~~~~~~~~~~~ 1739 as 1739, - ~~~~~~~~~~~~~~~~~ 1740 as 1740, - ~~~~~~~~~~~~~~~~~ 1741 as 1741, - ~~~~~~~~~~~~~~~~~ 1742 as 1742, - ~~~~~~~~~~~~~~~~~ 1743 as 1743, - ~~~~~~~~~~~~~~~~~ 1744 as 1744, - ~~~~~~~~~~~~~~~~~ 1745 as 1745, - ~~~~~~~~~~~~~~~~~ 1746 as 1746, - ~~~~~~~~~~~~~~~~~ 1747 as 1747, - ~~~~~~~~~~~~~~~~~ 1748 as 1748, - ~~~~~~~~~~~~~~~~~ 1749 as 1749, - ~~~~~~~~~~~~~~~~~ 1750 as 1750, - ~~~~~~~~~~~~~~~~~ 1751 as 1751, - ~~~~~~~~~~~~~~~~~ 1752 as 1752, - ~~~~~~~~~~~~~~~~~ 1753 as 1753, - ~~~~~~~~~~~~~~~~~ 1754 as 1754, - ~~~~~~~~~~~~~~~~~ 1755 as 1755, - ~~~~~~~~~~~~~~~~~ 1756 as 1756, - ~~~~~~~~~~~~~~~~~ 1757 as 1757, - ~~~~~~~~~~~~~~~~~ 1758 as 1758, - ~~~~~~~~~~~~~~~~~ 1759 as 1759, - ~~~~~~~~~~~~~~~~~ 1760 as 1760, - ~~~~~~~~~~~~~~~~~ 1761 as 1761, - ~~~~~~~~~~~~~~~~~ 1762 as 1762, - ~~~~~~~~~~~~~~~~~ 1763 as 1763, - ~~~~~~~~~~~~~~~~~ 1764 as 1764, - ~~~~~~~~~~~~~~~~~ 1765 as 1765, - ~~~~~~~~~~~~~~~~~ 1766 as 1766, - ~~~~~~~~~~~~~~~~~ 1767 as 1767, - ~~~~~~~~~~~~~~~~~ 1768 as 1768, - ~~~~~~~~~~~~~~~~~ 1769 as 1769, - ~~~~~~~~~~~~~~~~~ 1770 as 1770, - ~~~~~~~~~~~~~~~~~ 1771 as 1771, - ~~~~~~~~~~~~~~~~~ 1772 as 1772, - ~~~~~~~~~~~~~~~~~ 1773 as 1773, - ~~~~~~~~~~~~~~~~~ 1774 as 1774, - ~~~~~~~~~~~~~~~~~ 1775 as 1775, - ~~~~~~~~~~~~~~~~~ 1776 as 1776, - ~~~~~~~~~~~~~~~~~ 1777 as 1777, - ~~~~~~~~~~~~~~~~~ 1778 as 1778, - ~~~~~~~~~~~~~~~~~ 1779 as 1779, - ~~~~~~~~~~~~~~~~~ 1780 as 1780, - ~~~~~~~~~~~~~~~~~ 1781 as 1781, - ~~~~~~~~~~~~~~~~~ 1782 as 1782, - ~~~~~~~~~~~~~~~~~ 1783 as 1783, - ~~~~~~~~~~~~~~~~~ 1784 as 1784, - ~~~~~~~~~~~~~~~~~ 1785 as 1785, - ~~~~~~~~~~~~~~~~~ 1786 as 1786, - ~~~~~~~~~~~~~~~~~ 1787 as 1787, - ~~~~~~~~~~~~~~~~~ 1788 as 1788, - ~~~~~~~~~~~~~~~~~ 1789 as 1789, - ~~~~~~~~~~~~~~~~~ 1790 as 1790, - ~~~~~~~~~~~~~~~~~ 1791 as 1791, - ~~~~~~~~~~~~~~~~~ 1792 as 1792, - ~~~~~~~~~~~~~~~~~ 1793 as 1793, - ~~~~~~~~~~~~~~~~~ 1794 as 1794, - ~~~~~~~~~~~~~~~~~ 1795 as 1795, - ~~~~~~~~~~~~~~~~~ 1796 as 1796, - ~~~~~~~~~~~~~~~~~ 1797 as 1797, - ~~~~~~~~~~~~~~~~~ 1798 as 1798, - ~~~~~~~~~~~~~~~~~ 1799 as 1799, - ~~~~~~~~~~~~~~~~~ 1800 as 1800, - ~~~~~~~~~~~~~~~~~ 1801 as 1801, - ~~~~~~~~~~~~~~~~~ 1802 as 1802, - ~~~~~~~~~~~~~~~~~ 1803 as 1803, - ~~~~~~~~~~~~~~~~~ 1804 as 1804, - ~~~~~~~~~~~~~~~~~ 1805 as 1805, - ~~~~~~~~~~~~~~~~~ 1806 as 1806, - ~~~~~~~~~~~~~~~~~ 1807 as 1807, - ~~~~~~~~~~~~~~~~~ 1808 as 1808, - ~~~~~~~~~~~~~~~~~ 1809 as 1809, - ~~~~~~~~~~~~~~~~~ 1810 as 1810, - ~~~~~~~~~~~~~~~~~ 1811 as 1811, - ~~~~~~~~~~~~~~~~~ 1812 as 1812, - ~~~~~~~~~~~~~~~~~ 1813 as 1813, - ~~~~~~~~~~~~~~~~~ 1814 as 1814, - ~~~~~~~~~~~~~~~~~ 1815 as 1815, - ~~~~~~~~~~~~~~~~~ 1816 as 1816, - ~~~~~~~~~~~~~~~~~ 1817 as 1817, - ~~~~~~~~~~~~~~~~~ 1818 as 1818, - ~~~~~~~~~~~~~~~~~ 1819 as 1819, - ~~~~~~~~~~~~~~~~~ 1820 as 1820, - ~~~~~~~~~~~~~~~~~ 1821 as 1821, - ~~~~~~~~~~~~~~~~~ 1822 as 1822, - ~~~~~~~~~~~~~~~~~ 1823 as 1823, - ~~~~~~~~~~~~~~~~~ 1824 as 1824, - ~~~~~~~~~~~~~~~~~ 1825 as 1825, - ~~~~~~~~~~~~~~~~~ 1826 as 1826, - ~~~~~~~~~~~~~~~~~ 1827 as 1827, - ~~~~~~~~~~~~~~~~~ 1828 as 1828, - ~~~~~~~~~~~~~~~~~ 1829 as 1829, - ~~~~~~~~~~~~~~~~~ 1830 as 1830, - ~~~~~~~~~~~~~~~~~ 1831 as 1831, - ~~~~~~~~~~~~~~~~~ 1832 as 1832, - ~~~~~~~~~~~~~~~~~ 1833 as 1833, - ~~~~~~~~~~~~~~~~~ 1834 as 1834, - ~~~~~~~~~~~~~~~~~ 1835 as 1835, - ~~~~~~~~~~~~~~~~~ 1836 as 1836, - ~~~~~~~~~~~~~~~~~ 1837 as 1837, - ~~~~~~~~~~~~~~~~~ 1838 as 1838, - ~~~~~~~~~~~~~~~~~ 1839 as 1839, - ~~~~~~~~~~~~~~~~~ 1840 as 1840, - ~~~~~~~~~~~~~~~~~ 1841 as 1841, - ~~~~~~~~~~~~~~~~~ 1842 as 1842, - ~~~~~~~~~~~~~~~~~ 1843 as 1843, - ~~~~~~~~~~~~~~~~~ 1844 as 1844, - ~~~~~~~~~~~~~~~~~ 1845 as 1845, - ~~~~~~~~~~~~~~~~~ 1846 as 1846, - ~~~~~~~~~~~~~~~~~ 1847 as 1847, - ~~~~~~~~~~~~~~~~~ 1848 as 1848, - ~~~~~~~~~~~~~~~~~ 1849 as 1849, - ~~~~~~~~~~~~~~~~~ 1850 as 1850, - ~~~~~~~~~~~~~~~~~ 1851 as 1851, - ~~~~~~~~~~~~~~~~~ 1852 as 1852, - ~~~~~~~~~~~~~~~~~ 1853 as 1853, - ~~~~~~~~~~~~~~~~~ 1854 as 1854, - ~~~~~~~~~~~~~~~~~ 1855 as 1855, - ~~~~~~~~~~~~~~~~~ 1856 as 1856, - ~~~~~~~~~~~~~~~~~ 1857 as 1857, - ~~~~~~~~~~~~~~~~~ 1858 as 1858, - ~~~~~~~~~~~~~~~~~ 1859 as 1859, - ~~~~~~~~~~~~~~~~~ 1860 as 1860, - ~~~~~~~~~~~~~~~~~ 1861 as 1861, - ~~~~~~~~~~~~~~~~~ 1862 as 1862, - ~~~~~~~~~~~~~~~~~ 1863 as 1863, - ~~~~~~~~~~~~~~~~~ 1864 as 1864, - ~~~~~~~~~~~~~~~~~ 1865 as 1865, - ~~~~~~~~~~~~~~~~~ 1866 as 1866, - ~~~~~~~~~~~~~~~~~ 1867 as 1867, - ~~~~~~~~~~~~~~~~~ 1868 as 1868, - ~~~~~~~~~~~~~~~~~ 1869 as 1869, - ~~~~~~~~~~~~~~~~~ 1870 as 1870, - ~~~~~~~~~~~~~~~~~ 1871 as 1871, - ~~~~~~~~~~~~~~~~~ 1872 as 1872, - ~~~~~~~~~~~~~~~~~ 1873 as 1873, - ~~~~~~~~~~~~~~~~~ 1874 as 1874, - ~~~~~~~~~~~~~~~~~ 1875 as 1875, - ~~~~~~~~~~~~~~~~~ 1876 as 1876, - ~~~~~~~~~~~~~~~~~ 1877 as 1877, - ~~~~~~~~~~~~~~~~~ 1878 as 1878, - ~~~~~~~~~~~~~~~~~ 1879 as 1879, - ~~~~~~~~~~~~~~~~~ 1880 as 1880, - ~~~~~~~~~~~~~~~~~ 1881 as 1881, - ~~~~~~~~~~~~~~~~~ 1882 as 1882, - ~~~~~~~~~~~~~~~~~ 1883 as 1883, - ~~~~~~~~~~~~~~~~~ 1884 as 1884, - ~~~~~~~~~~~~~~~~~ 1885 as 1885, - ~~~~~~~~~~~~~~~~~ 1886 as 1886, - ~~~~~~~~~~~~~~~~~ 1887 as 1887, - ~~~~~~~~~~~~~~~~~ 1888 as 1888, - ~~~~~~~~~~~~~~~~~ 1889 as 1889, - ~~~~~~~~~~~~~~~~~ 1890 as 1890, - ~~~~~~~~~~~~~~~~~ 1891 as 1891, - ~~~~~~~~~~~~~~~~~ 1892 as 1892, - ~~~~~~~~~~~~~~~~~ 1893 as 1893, - ~~~~~~~~~~~~~~~~~ 1894 as 1894, - ~~~~~~~~~~~~~~~~~ 1895 as 1895, - ~~~~~~~~~~~~~~~~~ 1896 as 1896, - ~~~~~~~~~~~~~~~~~ 1897 as 1897, - ~~~~~~~~~~~~~~~~~ 1898 as 1898, - ~~~~~~~~~~~~~~~~~ 1899 as 1899, - ~~~~~~~~~~~~~~~~~ 1900 as 1900, - ~~~~~~~~~~~~~~~~~ 1901 as 1901, - ~~~~~~~~~~~~~~~~~ 1902 as 1902, - ~~~~~~~~~~~~~~~~~ 1903 as 1903, - ~~~~~~~~~~~~~~~~~ 1904 as 1904, - ~~~~~~~~~~~~~~~~~ 1905 as 1905, - ~~~~~~~~~~~~~~~~~ 1906 as 1906, - ~~~~~~~~~~~~~~~~~ 1907 as 1907, - ~~~~~~~~~~~~~~~~~ 1908 as 1908, - ~~~~~~~~~~~~~~~~~ 1909 as 1909, - ~~~~~~~~~~~~~~~~~ 1910 as 1910, - ~~~~~~~~~~~~~~~~~ 1911 as 1911, - ~~~~~~~~~~~~~~~~~ 1912 as 1912, - ~~~~~~~~~~~~~~~~~ 1913 as 1913, - ~~~~~~~~~~~~~~~~~ 1914 as 1914, - ~~~~~~~~~~~~~~~~~ 1915 as 1915, - ~~~~~~~~~~~~~~~~~ 1916 as 1916, - ~~~~~~~~~~~~~~~~~ 1917 as 1917, - ~~~~~~~~~~~~~~~~~ 1918 as 1918, - ~~~~~~~~~~~~~~~~~ 1919 as 1919, - ~~~~~~~~~~~~~~~~~ 1920 as 1920, - ~~~~~~~~~~~~~~~~~ 1921 as 1921, - ~~~~~~~~~~~~~~~~~ 1922 as 1922, - ~~~~~~~~~~~~~~~~~ 1923 as 1923, - ~~~~~~~~~~~~~~~~~ 1924 as 1924, - ~~~~~~~~~~~~~~~~~ 1925 as 1925, - ~~~~~~~~~~~~~~~~~ 1926 as 1926, - ~~~~~~~~~~~~~~~~~ 1927 as 1927, - ~~~~~~~~~~~~~~~~~ 1928 as 1928, - ~~~~~~~~~~~~~~~~~ 1929 as 1929, - ~~~~~~~~~~~~~~~~~ 1930 as 1930, - ~~~~~~~~~~~~~~~~~ 1931 as 1931, - ~~~~~~~~~~~~~~~~~ 1932 as 1932, - ~~~~~~~~~~~~~~~~~ 1933 as 1933, - ~~~~~~~~~~~~~~~~~ 1934 as 1934, - ~~~~~~~~~~~~~~~~~ 1935 as 1935, - ~~~~~~~~~~~~~~~~~ 1936 as 1936, - ~~~~~~~~~~~~~~~~~ 1937 as 1937, - ~~~~~~~~~~~~~~~~~ 1938 as 1938, - ~~~~~~~~~~~~~~~~~ 1939 as 1939, - ~~~~~~~~~~~~~~~~~ 1940 as 1940, - ~~~~~~~~~~~~~~~~~ 1941 as 1941, - ~~~~~~~~~~~~~~~~~ 1942 as 1942, - ~~~~~~~~~~~~~~~~~ 1943 as 1943, - ~~~~~~~~~~~~~~~~~ 1944 as 1944, - ~~~~~~~~~~~~~~~~~ 1945 as 1945, - ~~~~~~~~~~~~~~~~~ 1946 as 1946, - ~~~~~~~~~~~~~~~~~ 1947 as 1947, - ~~~~~~~~~~~~~~~~~ 1948 as 1948, - ~~~~~~~~~~~~~~~~~ 1949 as 1949, - ~~~~~~~~~~~~~~~~~ 1950 as 1950, - ~~~~~~~~~~~~~~~~~ 1951 as 1951, - ~~~~~~~~~~~~~~~~~ 1952 as 1952, - ~~~~~~~~~~~~~~~~~ 1953 as 1953, - ~~~~~~~~~~~~~~~~~ 1954 as 1954, - ~~~~~~~~~~~~~~~~~ 1955 as 1955, - ~~~~~~~~~~~~~~~~~ 1956 as 1956, - ~~~~~~~~~~~~~~~~~ 1957 as 1957, - ~~~~~~~~~~~~~~~~~ 1958 as 1958, - ~~~~~~~~~~~~~~~~~ 1959 as 1959, - ~~~~~~~~~~~~~~~~~ 1960 as 1960, - ~~~~~~~~~~~~~~~~~ 1961 as 1961, - ~~~~~~~~~~~~~~~~~ 1962 as 1962, - ~~~~~~~~~~~~~~~~~ 1963 as 1963, - ~~~~~~~~~~~~~~~~~ 1964 as 1964, - ~~~~~~~~~~~~~~~~~ 1965 as 1965, - ~~~~~~~~~~~~~~~~~ 1966 as 1966, - ~~~~~~~~~~~~~~~~~ 1967 as 1967, - ~~~~~~~~~~~~~~~~~ 1968 as 1968, - ~~~~~~~~~~~~~~~~~ 1969 as 1969, - ~~~~~~~~~~~~~~~~~ 1970 as 1970, - ~~~~~~~~~~~~~~~~~ 1971 as 1971, - ~~~~~~~~~~~~~~~~~ 1972 as 1972, - ~~~~~~~~~~~~~~~~~ 1973 as 1973, - ~~~~~~~~~~~~~~~~~ 1974 as 1974, - ~~~~~~~~~~~~~~~~~ 1975 as 1975, - ~~~~~~~~~~~~~~~~~ 1976 as 1976, - ~~~~~~~~~~~~~~~~~ 1977 as 1977, - ~~~~~~~~~~~~~~~~~ 1978 as 1978, - ~~~~~~~~~~~~~~~~~ 1979 as 1979, - ~~~~~~~~~~~~~~~~~ 1980 as 1980, - ~~~~~~~~~~~~~~~~~ 1981 as 1981, - ~~~~~~~~~~~~~~~~~ 1982 as 1982, - ~~~~~~~~~~~~~~~~~ 1983 as 1983, - ~~~~~~~~~~~~~~~~~ 1984 as 1984, - ~~~~~~~~~~~~~~~~~ 1985 as 1985, - ~~~~~~~~~~~~~~~~~ 1986 as 1986, - ~~~~~~~~~~~~~~~~~ 1987 as 1987, - ~~~~~~~~~~~~~~~~~ 1988 as 1988, - ~~~~~~~~~~~~~~~~~ 1989 as 1989, - ~~~~~~~~~~~~~~~~~ 1990 as 1990, - ~~~~~~~~~~~~~~~~~ 1991 as 1991, - ~~~~~~~~~~~~~~~~~ 1992 as 1992, - ~~~~~~~~~~~~~~~~~ 1993 as 1993, - ~~~~~~~~~~~~~~~~~ 1994 as 1994, - ~~~~~~~~~~~~~~~~~ 1995 as 1995, - ~~~~~~~~~~~~~~~~~ 1996 as 1996, - ~~~~~~~~~~~~~~~~~ 1997 as 1997, - ~~~~~~~~~~~~~~~~~ 1998 as 1998, - ~~~~~~~~~~~~~~~~~ 1999 as 1999, - ~~~~~~~~~~~~~~~~~ 2000 as 2000, - ~~~~~~~~~~~~~~~~~ 2001 as 2001, - ~~~~~~~~~~~~~~~~~ 2002 as 2002, - ~~~~~~~~~~~~~~~~~ 2003 as 2003, - ~~~~~~~~~~~~~~~~~ 2004 as 2004, - ~~~~~~~~~~~~~~~~~ 2005 as 2005, - ~~~~~~~~~~~~~~~~~ 2006 as 2006, - ~~~~~~~~~~~~~~~~~ 2007 as 2007, - ~~~~~~~~~~~~~~~~~ 2008 as 2008, - ~~~~~~~~~~~~~~~~~ 2009 as 2009, - ~~~~~~~~~~~~~~~~~ 2010 as 2010, - ~~~~~~~~~~~~~~~~~ 2011 as 2011, - ~~~~~~~~~~~~~~~~~ 2012 as 2012, - ~~~~~~~~~~~~~~~~~ 2013 as 2013, - ~~~~~~~~~~~~~~~~~ 2014 as 2014, - ~~~~~~~~~~~~~~~~~ 2015 as 2015, - ~~~~~~~~~~~~~~~~~ 2016 as 2016, - ~~~~~~~~~~~~~~~~~ 2017 as 2017, - ~~~~~~~~~~~~~~~~~ 2018 as 2018, - ~~~~~~~~~~~~~~~~~ 2019 as 2019, - ~~~~~~~~~~~~~~~~~ 2020 as 2020, - ~~~~~~~~~~~~~~~~~ 2021 as 2021, - ~~~~~~~~~~~~~~~~~ 2022 as 2022, - ~~~~~~~~~~~~~~~~~ 2023 as 2023, - ~~~~~~~~~~~~~~~~~ 2024 as 2024, - ~~~~~~~~~~~~~~~~~ 2025 as 2025, - ~~~~~~~~~~~~~~~~~ 2026 as 2026, - ~~~~~~~~~~~~~~~~~ 2027 as 2027, - ~~~~~~~~~~~~~~~~~ 2028 as 2028, - ~~~~~~~~~~~~~~~~~ 2029 as 2029, - ~~~~~~~~~~~~~~~~~ 2030 as 2030, - ~~~~~~~~~~~~~~~~~ 2031 as 2031, - ~~~~~~~~~~~~~~~~~ 2032 as 2032, - ~~~~~~~~~~~~~~~~~ 2033 as 2033, - ~~~~~~~~~~~~~~~~~ 2034 as 2034, - ~~~~~~~~~~~~~~~~~ 2035 as 2035, - ~~~~~~~~~~~~~~~~~ 2036 as 2036, - ~~~~~~~~~~~~~~~~~ 2037 as 2037, - ~~~~~~~~~~~~~~~~~ 2038 as 2038, - ~~~~~~~~~~~~~~~~~ 2039 as 2039, - ~~~~~~~~~~~~~~~~~ 2040 as 2040, - ~~~~~~~~~~~~~~~~~ 2041 as 2041, - ~~~~~~~~~~~~~~~~~ 2042 as 2042, - ~~~~~~~~~~~~~~~~~ 2043 as 2043, - ~~~~~~~~~~~~~~~~~ 2044 as 2044, - ~~~~~~~~~~~~~~~~~ 2045 as 2045, - ~~~~~~~~~~~~~~~~~ 2046 as 2046, - ~~~~~~~~~~~~~~~~~ 2047 as 2047, - ~~~~~~~~~~~~~~~~~ 2048 as 2048, - ~~~~~~~~~~~~~~~~~ 2049 as 2049, - ~~~~~~~~~~~~~~~~~ 2050 as 2050, - ~~~~~~~~~~~~~~~~~ 2051 as 2051, - ~~~~~~~~~~~~~~~~~ 2052 as 2052, - ~~~~~~~~~~~~~~~~~ 2053 as 2053, - ~~~~~~~~~~~~~~~~~ 2054 as 2054, - ~~~~~~~~~~~~~~~~~ 2055 as 2055, - ~~~~~~~~~~~~~~~~~ 2056 as 2056, - ~~~~~~~~~~~~~~~~~ 2057 as 2057, - ~~~~~~~~~~~~~~~~~ 2058 as 2058, - ~~~~~~~~~~~~~~~~~ 2059 as 2059, - ~~~~~~~~~~~~~~~~~ 2060 as 2060, - ~~~~~~~~~~~~~~~~~ 2061 as 2061, - ~~~~~~~~~~~~~~~~~ 2062 as 2062, - ~~~~~~~~~~~~~~~~~ 2063 as 2063, - ~~~~~~~~~~~~~~~~~ 2064 as 2064, - ~~~~~~~~~~~~~~~~~ 2065 as 2065, - ~~~~~~~~~~~~~~~~~ 2066 as 2066, - ~~~~~~~~~~~~~~~~~ 2067 as 2067, - ~~~~~~~~~~~~~~~~~ 2068 as 2068, - ~~~~~~~~~~~~~~~~~ 2069 as 2069, - ~~~~~~~~~~~~~~~~~ 2070 as 2070, - ~~~~~~~~~~~~~~~~~ 2071 as 2071, - ~~~~~~~~~~~~~~~~~ 2072 as 2072, - ~~~~~~~~~~~~~~~~~ 2073 as 2073, - ~~~~~~~~~~~~~~~~~ 2074 as 2074, - ~~~~~~~~~~~~~~~~~ 2075 as 2075, - ~~~~~~~~~~~~~~~~~ 2076 as 2076, - ~~~~~~~~~~~~~~~~~ 2077 as 2077, - ~~~~~~~~~~~~~~~~~ 2078 as 2078, - ~~~~~~~~~~~~~~~~~ 2079 as 2079, - ~~~~~~~~~~~~~~~~~ 2080 as 2080, - ~~~~~~~~~~~~~~~~~ 2081 as 2081, - ~~~~~~~~~~~~~~~~~ 2082 as 2082, - ~~~~~~~~~~~~~~~~~ 2083 as 2083, - ~~~~~~~~~~~~~~~~~ 2084 as 2084, - ~~~~~~~~~~~~~~~~~ 2085 as 2085, - ~~~~~~~~~~~~~~~~~ 2086 as 2086, - ~~~~~~~~~~~~~~~~~ 2087 as 2087, - ~~~~~~~~~~~~~~~~~ 2088 as 2088, - ~~~~~~~~~~~~~~~~~ 2089 as 2089, - ~~~~~~~~~~~~~~~~~ 2090 as 2090, - ~~~~~~~~~~~~~~~~~ 2091 as 2091, - ~~~~~~~~~~~~~~~~~ 2092 as 2092, - ~~~~~~~~~~~~~~~~~ 2093 as 2093, - ~~~~~~~~~~~~~~~~~ 2094 as 2094, - ~~~~~~~~~~~~~~~~~ 2095 as 2095, - ~~~~~~~~~~~~~~~~~ 2096 as 2096, - ~~~~~~~~~~~~~~~~~ 2097 as 2097, - ~~~~~~~~~~~~~~~~~ 2098 as 2098, - ~~~~~~~~~~~~~~~~~ 2099 as 2099, - ~~~~~~~~~~~~~~~~~ 2100 as 2100, - ~~~~~~~~~~~~~~~~~ 2101 as 2101, - ~~~~~~~~~~~~~~~~~ 2102 as 2102, - ~~~~~~~~~~~~~~~~~ 2103 as 2103, - ~~~~~~~~~~~~~~~~~ 2104 as 2104, - ~~~~~~~~~~~~~~~~~ 2105 as 2105, - ~~~~~~~~~~~~~~~~~ 2106 as 2106, - ~~~~~~~~~~~~~~~~~ 2107 as 2107, - ~~~~~~~~~~~~~~~~~ 2108 as 2108, - ~~~~~~~~~~~~~~~~~ 2109 as 2109, - ~~~~~~~~~~~~~~~~~ 2110 as 2110, - ~~~~~~~~~~~~~~~~~ 2111 as 2111, - ~~~~~~~~~~~~~~~~~ 2112 as 2112, - ~~~~~~~~~~~~~~~~~ 2113 as 2113, - ~~~~~~~~~~~~~~~~~ 2114 as 2114, - ~~~~~~~~~~~~~~~~~ 2115 as 2115, - ~~~~~~~~~~~~~~~~~ 2116 as 2116, - ~~~~~~~~~~~~~~~~~ 2117 as 2117, - ~~~~~~~~~~~~~~~~~ 2118 as 2118, - ~~~~~~~~~~~~~~~~~ 2119 as 2119, - ~~~~~~~~~~~~~~~~~ 2120 as 2120, - ~~~~~~~~~~~~~~~~~ 2121 as 2121, - ~~~~~~~~~~~~~~~~~ 2122 as 2122, - ~~~~~~~~~~~~~~~~~ 2123 as 2123, - ~~~~~~~~~~~~~~~~~ 2124 as 2124, - ~~~~~~~~~~~~~~~~~ 2125 as 2125, - ~~~~~~~~~~~~~~~~~ 2126 as 2126, - ~~~~~~~~~~~~~~~~~ 2127 as 2127, - ~~~~~~~~~~~~~~~~~ 2128 as 2128, - ~~~~~~~~~~~~~~~~~ 2129 as 2129, - ~~~~~~~~~~~~~~~~~ 2130 as 2130, - ~~~~~~~~~~~~~~~~~ 2131 as 2131, - ~~~~~~~~~~~~~~~~~ 2132 as 2132, - ~~~~~~~~~~~~~~~~~ 2133 as 2133, - ~~~~~~~~~~~~~~~~~ 2134 as 2134, - ~~~~~~~~~~~~~~~~~ 2135 as 2135, - ~~~~~~~~~~~~~~~~~ 2136 as 2136, - ~~~~~~~~~~~~~~~~~ 2137 as 2137, - ~~~~~~~~~~~~~~~~~ 2138 as 2138, - ~~~~~~~~~~~~~~~~~ 2139 as 2139, - ~~~~~~~~~~~~~~~~~ 2140 as 2140, - ~~~~~~~~~~~~~~~~~ 2141 as 2141, - ~~~~~~~~~~~~~~~~~ 2142 as 2142, - ~~~~~~~~~~~~~~~~~ 2143 as 2143, - ~~~~~~~~~~~~~~~~~ 2144 as 2144, - ~~~~~~~~~~~~~~~~~ 2145 as 2145, - ~~~~~~~~~~~~~~~~~ 2146 as 2146, - ~~~~~~~~~~~~~~~~~ 2147 as 2147, - ~~~~~~~~~~~~~~~~~ 2148 as 2148, - ~~~~~~~~~~~~~~~~~ 2149 as 2149, - ~~~~~~~~~~~~~~~~~ 2150 as 2150, - ~~~~~~~~~~~~~~~~~ 2151 as 2151, - ~~~~~~~~~~~~~~~~~ 2152 as 2152, - ~~~~~~~~~~~~~~~~~ 2153 as 2153, - ~~~~~~~~~~~~~~~~~ 2154 as 2154, - ~~~~~~~~~~~~~~~~~ 2155 as 2155, - ~~~~~~~~~~~~~~~~~ 2156 as 2156, - ~~~~~~~~~~~~~~~~~ 2157 as 2157, - ~~~~~~~~~~~~~~~~~ 2158 as 2158, - ~~~~~~~~~~~~~~~~~ 2159 as 2159, - ~~~~~~~~~~~~~~~~~ 2160 as 2160, - ~~~~~~~~~~~~~~~~~ 2161 as 2161, - ~~~~~~~~~~~~~~~~~ 2162 as 2162, - ~~~~~~~~~~~~~~~~~ 2163 as 2163, - ~~~~~~~~~~~~~~~~~ 2164 as 2164, - ~~~~~~~~~~~~~~~~~ 2165 as 2165, - ~~~~~~~~~~~~~~~~~ 2166 as 2166, - ~~~~~~~~~~~~~~~~~ 2167 as 2167, - ~~~~~~~~~~~~~~~~~ 2168 as 2168, - ~~~~~~~~~~~~~~~~~ 2169 as 2169, - ~~~~~~~~~~~~~~~~~ 2170 as 2170, - ~~~~~~~~~~~~~~~~~ 2171 as 2171, - ~~~~~~~~~~~~~~~~~ 2172 as 2172, - ~~~~~~~~~~~~~~~~~ 2173 as 2173, - ~~~~~~~~~~~~~~~~~ 2174 as 2174, - ~~~~~~~~~~~~~~~~~ 2175 as 2175, - ~~~~~~~~~~~~~~~~~ 2176 as 2176, - ~~~~~~~~~~~~~~~~~ 2177 as 2177, - ~~~~~~~~~~~~~~~~~ 2178 as 2178, - ~~~~~~~~~~~~~~~~~ 2179 as 2179, - ~~~~~~~~~~~~~~~~~ 2180 as 2180, - ~~~~~~~~~~~~~~~~~ 2181 as 2181, - ~~~~~~~~~~~~~~~~~ 2182 as 2182, - ~~~~~~~~~~~~~~~~~ 2183 as 2183, - ~~~~~~~~~~~~~~~~~ 2184 as 2184, - ~~~~~~~~~~~~~~~~~ 2185 as 2185, - ~~~~~~~~~~~~~~~~~ 2186 as 2186, - ~~~~~~~~~~~~~~~~~ 2187 as 2187, - ~~~~~~~~~~~~~~~~~ 2188 as 2188, - ~~~~~~~~~~~~~~~~~ 2189 as 2189, - ~~~~~~~~~~~~~~~~~ 2190 as 2190, - ~~~~~~~~~~~~~~~~~ 2191 as 2191, - ~~~~~~~~~~~~~~~~~ 2192 as 2192, - ~~~~~~~~~~~~~~~~~ 2193 as 2193, - ~~~~~~~~~~~~~~~~~ 2194 as 2194, - ~~~~~~~~~~~~~~~~~ 2195 as 2195, - ~~~~~~~~~~~~~~~~~ 2196 as 2196, - ~~~~~~~~~~~~~~~~~ 2197 as 2197, - ~~~~~~~~~~~~~~~~~ 2198 as 2198, - ~~~~~~~~~~~~~~~~~ 2199 as 2199, - ~~~~~~~~~~~~~~~~~ 2200 as 2200, - ~~~~~~~~~~~~~~~~~ 2201 as 2201, - ~~~~~~~~~~~~~~~~~ 2202 as 2202, - ~~~~~~~~~~~~~~~~~ 2203 as 2203, - ~~~~~~~~~~~~~~~~~ 2204 as 2204, - ~~~~~~~~~~~~~~~~~ 2205 as 2205, - ~~~~~~~~~~~~~~~~~ 2206 as 2206, - ~~~~~~~~~~~~~~~~~ 2207 as 2207, - ~~~~~~~~~~~~~~~~~ 2208 as 2208, - ~~~~~~~~~~~~~~~~~ 2209 as 2209, - ~~~~~~~~~~~~~~~~~ 2210 as 2210, - ~~~~~~~~~~~~~~~~~ 2211 as 2211, - ~~~~~~~~~~~~~~~~~ 2212 as 2212, - ~~~~~~~~~~~~~~~~~ 2213 as 2213, - ~~~~~~~~~~~~~~~~~ 2214 as 2214, - ~~~~~~~~~~~~~~~~~ 2215 as 2215, - ~~~~~~~~~~~~~~~~~ 2216 as 2216, - ~~~~~~~~~~~~~~~~~ 2217 as 2217, - ~~~~~~~~~~~~~~~~~ 2218 as 2218, - ~~~~~~~~~~~~~~~~~ 2219 as 2219, - ~~~~~~~~~~~~~~~~~ 2220 as 2220, - ~~~~~~~~~~~~~~~~~ 2221 as 2221, - ~~~~~~~~~~~~~~~~~ 2222 as 2222, - ~~~~~~~~~~~~~~~~~ 2223 as 2223, - ~~~~~~~~~~~~~~~~~ 2224 as 2224, - ~~~~~~~~~~~~~~~~~ 2225 as 2225, - ~~~~~~~~~~~~~~~~~ 2226 as 2226, - ~~~~~~~~~~~~~~~~~ 2227 as 2227, - ~~~~~~~~~~~~~~~~~ 2228 as 2228, - ~~~~~~~~~~~~~~~~~ 2229 as 2229, - ~~~~~~~~~~~~~~~~~ 2230 as 2230, - ~~~~~~~~~~~~~~~~~ 2231 as 2231, - ~~~~~~~~~~~~~~~~~ 2232 as 2232, - ~~~~~~~~~~~~~~~~~ 2233 as 2233, - ~~~~~~~~~~~~~~~~~ 2234 as 2234, - ~~~~~~~~~~~~~~~~~ 2235 as 2235, - ~~~~~~~~~~~~~~~~~ 2236 as 2236, - ~~~~~~~~~~~~~~~~~ 2237 as 2237, - ~~~~~~~~~~~~~~~~~ 2238 as 2238, - ~~~~~~~~~~~~~~~~~ 2239 as 2239, - ~~~~~~~~~~~~~~~~~ 2240 as 2240, - ~~~~~~~~~~~~~~~~~ 2241 as 2241, - ~~~~~~~~~~~~~~~~~ 2242 as 2242, - ~~~~~~~~~~~~~~~~~ 2243 as 2243, - ~~~~~~~~~~~~~~~~~ 2244 as 2244, - ~~~~~~~~~~~~~~~~~ 2245 as 2245, - ~~~~~~~~~~~~~~~~~ 2246 as 2246, - ~~~~~~~~~~~~~~~~~ 2247 as 2247, - ~~~~~~~~~~~~~~~~~ 2248 as 2248, - ~~~~~~~~~~~~~~~~~ 2249 as 2249, - ~~~~~~~~~~~~~~~~~ 2250 as 2250, - ~~~~~~~~~~~~~~~~~ 2251 as 2251, - ~~~~~~~~~~~~~~~~~ 2252 as 2252, - ~~~~~~~~~~~~~~~~~ 2253 as 2253, - ~~~~~~~~~~~~~~~~~ 2254 as 2254, - ~~~~~~~~~~~~~~~~~ 2255 as 2255, - ~~~~~~~~~~~~~~~~~ 2256 as 2256, - ~~~~~~~~~~~~~~~~~ 2257 as 2257, - ~~~~~~~~~~~~~~~~~ 2258 as 2258, - ~~~~~~~~~~~~~~~~~ 2259 as 2259, - ~~~~~~~~~~~~~~~~~ 2260 as 2260, - ~~~~~~~~~~~~~~~~~ 2261 as 2261, - ~~~~~~~~~~~~~~~~~ 2262 as 2262, - ~~~~~~~~~~~~~~~~~ 2263 as 2263, - ~~~~~~~~~~~~~~~~~ 2264 as 2264, - ~~~~~~~~~~~~~~~~~ 2265 as 2265, - ~~~~~~~~~~~~~~~~~ 2266 as 2266, - ~~~~~~~~~~~~~~~~~ 2267 as 2267, - ~~~~~~~~~~~~~~~~~ 2268 as 2268, - ~~~~~~~~~~~~~~~~~ 2269 as 2269, - ~~~~~~~~~~~~~~~~~ 2270 as 2270, - ~~~~~~~~~~~~~~~~~ 2271 as 2271, - ~~~~~~~~~~~~~~~~~ 2272 as 2272, - ~~~~~~~~~~~~~~~~~ 2273 as 2273, - ~~~~~~~~~~~~~~~~~ 2274 as 2274, - ~~~~~~~~~~~~~~~~~ 2275 as 2275, - ~~~~~~~~~~~~~~~~~ 2276 as 2276, - ~~~~~~~~~~~~~~~~~ 2277 as 2277, - ~~~~~~~~~~~~~~~~~ 2278 as 2278, - ~~~~~~~~~~~~~~~~~ 2279 as 2279, - ~~~~~~~~~~~~~~~~~ 2280 as 2280, - ~~~~~~~~~~~~~~~~~ 2281 as 2281, - ~~~~~~~~~~~~~~~~~ 2282 as 2282, - ~~~~~~~~~~~~~~~~~ 2283 as 2283, - ~~~~~~~~~~~~~~~~~ 2284 as 2284, - ~~~~~~~~~~~~~~~~~ 2285 as 2285, - ~~~~~~~~~~~~~~~~~ 2286 as 2286, - ~~~~~~~~~~~~~~~~~ 2287 as 2287, - ~~~~~~~~~~~~~~~~~ 2288 as 2288, - ~~~~~~~~~~~~~~~~~ 2289 as 2289, - ~~~~~~~~~~~~~~~~~ 2290 as 2290, - ~~~~~~~~~~~~~~~~~ 2291 as 2291, - ~~~~~~~~~~~~~~~~~ 2292 as 2292, - ~~~~~~~~~~~~~~~~~ 2293 as 2293, - ~~~~~~~~~~~~~~~~~ 2294 as 2294, - ~~~~~~~~~~~~~~~~~ 2295 as 2295, - ~~~~~~~~~~~~~~~~~ 2296 as 2296, - ~~~~~~~~~~~~~~~~~ 2297 as 2297, - ~~~~~~~~~~~~~~~~~ 2298 as 2298, - ~~~~~~~~~~~~~~~~~ 2299 as 2299, - ~~~~~~~~~~~~~~~~~ 2300 as 2300, - ~~~~~~~~~~~~~~~~~ 2301 as 2301, - ~~~~~~~~~~~~~~~~~ 2302 as 2302, - ~~~~~~~~~~~~~~~~~ 2303 as 2303, - ~~~~~~~~~~~~~~~~~ 2304 as 2304, - ~~~~~~~~~~~~~~~~~ 2305 as 2305, - ~~~~~~~~~~~~~~~~~ 2306 as 2306, - ~~~~~~~~~~~~~~~~~ 2307 as 2307, - ~~~~~~~~~~~~~~~~~ 2308 as 2308, - ~~~~~~~~~~~~~~~~~ 2309 as 2309, - ~~~~~~~~~~~~~~~~~ 2310 as 2310, - ~~~~~~~~~~~~~~~~~ 2311 as 2311, - ~~~~~~~~~~~~~~~~~ 2312 as 2312, - ~~~~~~~~~~~~~~~~~ 2313 as 2313, - ~~~~~~~~~~~~~~~~~ 2314 as 2314, - ~~~~~~~~~~~~~~~~~ 2315 as 2315, - ~~~~~~~~~~~~~~~~~ 2316 as 2316, - ~~~~~~~~~~~~~~~~~ 2317 as 2317, - ~~~~~~~~~~~~~~~~~ 2318 as 2318, - ~~~~~~~~~~~~~~~~~ 2319 as 2319, - ~~~~~~~~~~~~~~~~~ 2320 as 2320, - ~~~~~~~~~~~~~~~~~ 2321 as 2321, - ~~~~~~~~~~~~~~~~~ 2322 as 2322, - ~~~~~~~~~~~~~~~~~ 2323 as 2323, - ~~~~~~~~~~~~~~~~~ 2324 as 2324, - ~~~~~~~~~~~~~~~~~ 2325 as 2325, - ~~~~~~~~~~~~~~~~~ 2326 as 2326, - ~~~~~~~~~~~~~~~~~ 2327 as 2327, - ~~~~~~~~~~~~~~~~~ 2328 as 2328, - ~~~~~~~~~~~~~~~~~ 2329 as 2329, - ~~~~~~~~~~~~~~~~~ 2330 as 2330, - ~~~~~~~~~~~~~~~~~ 2331 as 2331, - ~~~~~~~~~~~~~~~~~ 2332 as 2332, - ~~~~~~~~~~~~~~~~~ 2333 as 2333, - ~~~~~~~~~~~~~~~~~ 2334 as 2334, - ~~~~~~~~~~~~~~~~~ 2335 as 2335, - ~~~~~~~~~~~~~~~~~ 2336 as 2336, - ~~~~~~~~~~~~~~~~~ 2337 as 2337, - ~~~~~~~~~~~~~~~~~ 2338 as 2338, - ~~~~~~~~~~~~~~~~~ 2339 as 2339, - ~~~~~~~~~~~~~~~~~ 2340 as 2340, - ~~~~~~~~~~~~~~~~~ 2341 as 2341, - ~~~~~~~~~~~~~~~~~ 2342 as 2342, - ~~~~~~~~~~~~~~~~~ 2343 as 2343, - ~~~~~~~~~~~~~~~~~ 2344 as 2344, - ~~~~~~~~~~~~~~~~~ 2345 as 2345, - ~~~~~~~~~~~~~~~~~ 2346 as 2346, - ~~~~~~~~~~~~~~~~~ 2347 as 2347, - ~~~~~~~~~~~~~~~~~ 2348 as 2348, - ~~~~~~~~~~~~~~~~~ 2349 as 2349, - ~~~~~~~~~~~~~~~~~ 2350 as 2350, - ~~~~~~~~~~~~~~~~~ 2351 as 2351, - ~~~~~~~~~~~~~~~~~ 2352 as 2352, - ~~~~~~~~~~~~~~~~~ 2353 as 2353, - ~~~~~~~~~~~~~~~~~ 2354 as 2354, - ~~~~~~~~~~~~~~~~~ 2355 as 2355, - ~~~~~~~~~~~~~~~~~ 2356 as 2356, - ~~~~~~~~~~~~~~~~~ 2357 as 2357, - ~~~~~~~~~~~~~~~~~ 2358 as 2358, - ~~~~~~~~~~~~~~~~~ 2359 as 2359, - ~~~~~~~~~~~~~~~~~ 2360 as 2360, - ~~~~~~~~~~~~~~~~~ 2361 as 2361, - ~~~~~~~~~~~~~~~~~ 2362 as 2362, - ~~~~~~~~~~~~~~~~~ 2363 as 2363, - ~~~~~~~~~~~~~~~~~ 2364 as 2364, - ~~~~~~~~~~~~~~~~~ 2365 as 2365, - ~~~~~~~~~~~~~~~~~ 2366 as 2366, - ~~~~~~~~~~~~~~~~~ 2367 as 2367, - ~~~~~~~~~~~~~~~~~ 2368 as 2368, - ~~~~~~~~~~~~~~~~~ 2369 as 2369, - ~~~~~~~~~~~~~~~~~ 2370 as 2370, - ~~~~~~~~~~~~~~~~~ 2371 as 2371, - ~~~~~~~~~~~~~~~~~ 2372 as 2372, - ~~~~~~~~~~~~~~~~~ 2373 as 2373, - ~~~~~~~~~~~~~~~~~ 2374 as 2374, - ~~~~~~~~~~~~~~~~~ 2375 as 2375, - ~~~~~~~~~~~~~~~~~ 2376 as 2376, - ~~~~~~~~~~~~~~~~~ 2377 as 2377, - ~~~~~~~~~~~~~~~~~ 2378 as 2378, - ~~~~~~~~~~~~~~~~~ 2379 as 2379, - ~~~~~~~~~~~~~~~~~ 2380 as 2380, - ~~~~~~~~~~~~~~~~~ 2381 as 2381, - ~~~~~~~~~~~~~~~~~ 2382 as 2382, - ~~~~~~~~~~~~~~~~~ 2383 as 2383, - ~~~~~~~~~~~~~~~~~ 2384 as 2384, - ~~~~~~~~~~~~~~~~~ 2385 as 2385, - ~~~~~~~~~~~~~~~~~ 2386 as 2386, - ~~~~~~~~~~~~~~~~~ 2387 as 2387, - ~~~~~~~~~~~~~~~~~ 2388 as 2388, - ~~~~~~~~~~~~~~~~~ 2389 as 2389, - ~~~~~~~~~~~~~~~~~ 2390 as 2390, - ~~~~~~~~~~~~~~~~~ 2391 as 2391, - ~~~~~~~~~~~~~~~~~ 2392 as 2392, - ~~~~~~~~~~~~~~~~~ 2393 as 2393, - ~~~~~~~~~~~~~~~~~ 2394 as 2394, - ~~~~~~~~~~~~~~~~~ 2395 as 2395, - ~~~~~~~~~~~~~~~~~ 2396 as 2396, - ~~~~~~~~~~~~~~~~~ 2397 as 2397, - ~~~~~~~~~~~~~~~~~ 2398 as 2398, - ~~~~~~~~~~~~~~~~~ 2399 as 2399, - ~~~~~~~~~~~~~~~~~ 2400 as 2400, - ~~~~~~~~~~~~~~~~~ 2401 as 2401, - ~~~~~~~~~~~~~~~~~ 2402 as 2402, - ~~~~~~~~~~~~~~~~~ 2403 as 2403, - ~~~~~~~~~~~~~~~~~ 2404 as 2404, - ~~~~~~~~~~~~~~~~~ 2405 as 2405, - ~~~~~~~~~~~~~~~~~ 2406 as 2406, - ~~~~~~~~~~~~~~~~~ 2407 as 2407, - ~~~~~~~~~~~~~~~~~ 2408 as 2408, - ~~~~~~~~~~~~~~~~~ 2409 as 2409, - ~~~~~~~~~~~~~~~~~ 2410 as 2410, - ~~~~~~~~~~~~~~~~~ 2411 as 2411, - ~~~~~~~~~~~~~~~~~ 2412 as 2412, - ~~~~~~~~~~~~~~~~~ 2413 as 2413, - ~~~~~~~~~~~~~~~~~ 2414 as 2414, - ~~~~~~~~~~~~~~~~~ 2415 as 2415, - ~~~~~~~~~~~~~~~~~ 2416 as 2416, - ~~~~~~~~~~~~~~~~~ 2417 as 2417, - ~~~~~~~~~~~~~~~~~ 2418 as 2418, - ~~~~~~~~~~~~~~~~~ 2419 as 2419, - ~~~~~~~~~~~~~~~~~ 2420 as 2420, - ~~~~~~~~~~~~~~~~~ 2421 as 2421, - ~~~~~~~~~~~~~~~~~ 2422 as 2422, - ~~~~~~~~~~~~~~~~~ 2423 as 2423, - ~~~~~~~~~~~~~~~~~ 2424 as 2424, - ~~~~~~~~~~~~~~~~~ 2425 as 2425, - ~~~~~~~~~~~~~~~~~ 2426 as 2426, - ~~~~~~~~~~~~~~~~~ 2427 as 2427, - ~~~~~~~~~~~~~~~~~ 2428 as 2428, - ~~~~~~~~~~~~~~~~~ 2429 as 2429, - ~~~~~~~~~~~~~~~~~ 2430 as 2430, - ~~~~~~~~~~~~~~~~~ 2431 as 2431, - ~~~~~~~~~~~~~~~~~ 2432 as 2432, - ~~~~~~~~~~~~~~~~~ 2433 as 2433, - ~~~~~~~~~~~~~~~~~ 2434 as 2434, - ~~~~~~~~~~~~~~~~~ 2435 as 2435, - ~~~~~~~~~~~~~~~~~ 2436 as 2436, - ~~~~~~~~~~~~~~~~~ 2437 as 2437, - ~~~~~~~~~~~~~~~~~ 2438 as 2438, - ~~~~~~~~~~~~~~~~~ 2439 as 2439, - ~~~~~~~~~~~~~~~~~ 2440 as 2440, - ~~~~~~~~~~~~~~~~~ 2441 as 2441, - ~~~~~~~~~~~~~~~~~ 2442 as 2442, - ~~~~~~~~~~~~~~~~~ 2443 as 2443, - ~~~~~~~~~~~~~~~~~ 2444 as 2444, - ~~~~~~~~~~~~~~~~~ 2445 as 2445, - ~~~~~~~~~~~~~~~~~ 2446 as 2446, - ~~~~~~~~~~~~~~~~~ 2447 as 2447, - ~~~~~~~~~~~~~~~~~ 2448 as 2448, - ~~~~~~~~~~~~~~~~~ 2449 as 2449, - ~~~~~~~~~~~~~~~~~ 2450 as 2450, - ~~~~~~~~~~~~~~~~~ 2451 as 2451, - ~~~~~~~~~~~~~~~~~ 2452 as 2452, - ~~~~~~~~~~~~~~~~~ 2453 as 2453, - ~~~~~~~~~~~~~~~~~ 2454 as 2454, - ~~~~~~~~~~~~~~~~~ 2455 as 2455, - ~~~~~~~~~~~~~~~~~ 2456 as 2456, - ~~~~~~~~~~~~~~~~~ 2457 as 2457, - ~~~~~~~~~~~~~~~~~ 2458 as 2458, - ~~~~~~~~~~~~~~~~~ 2459 as 2459, - ~~~~~~~~~~~~~~~~~ 2460 as 2460, - ~~~~~~~~~~~~~~~~~ 2461 as 2461, - ~~~~~~~~~~~~~~~~~ 2462 as 2462, - ~~~~~~~~~~~~~~~~~ 2463 as 2463, - ~~~~~~~~~~~~~~~~~ 2464 as 2464, - ~~~~~~~~~~~~~~~~~ 2465 as 2465, - ~~~~~~~~~~~~~~~~~ 2466 as 2466, - ~~~~~~~~~~~~~~~~~ 2467 as 2467, - ~~~~~~~~~~~~~~~~~ 2468 as 2468, - ~~~~~~~~~~~~~~~~~ 2469 as 2469, - ~~~~~~~~~~~~~~~~~ 2470 as 2470, - ~~~~~~~~~~~~~~~~~ 2471 as 2471, - ~~~~~~~~~~~~~~~~~ 2472 as 2472, - ~~~~~~~~~~~~~~~~~ 2473 as 2473, - ~~~~~~~~~~~~~~~~~ 2474 as 2474, - ~~~~~~~~~~~~~~~~~ 2475 as 2475, - ~~~~~~~~~~~~~~~~~ 2476 as 2476, - ~~~~~~~~~~~~~~~~~ 2477 as 2477, - ~~~~~~~~~~~~~~~~~ 2478 as 2478, - ~~~~~~~~~~~~~~~~~ 2479 as 2479, - ~~~~~~~~~~~~~~~~~ 2480 as 2480, - ~~~~~~~~~~~~~~~~~ 2481 as 2481, - ~~~~~~~~~~~~~~~~~ 2482 as 2482, - ~~~~~~~~~~~~~~~~~ 2483 as 2483, - ~~~~~~~~~~~~~~~~~ 2484 as 2484, - ~~~~~~~~~~~~~~~~~ 2485 as 2485, - ~~~~~~~~~~~~~~~~~ 2486 as 2486, - ~~~~~~~~~~~~~~~~~ 2487 as 2487, - ~~~~~~~~~~~~~~~~~ 2488 as 2488, - ~~~~~~~~~~~~~~~~~ 2489 as 2489, - ~~~~~~~~~~~~~~~~~ 2490 as 2490, - ~~~~~~~~~~~~~~~~~ 2491 as 2491, - ~~~~~~~~~~~~~~~~~ 2492 as 2492, - ~~~~~~~~~~~~~~~~~ 2493 as 2493, - ~~~~~~~~~~~~~~~~~ 2494 as 2494, - ~~~~~~~~~~~~~~~~~ 2495 as 2495, - ~~~~~~~~~~~~~~~~~ 2496 as 2496, - ~~~~~~~~~~~~~~~~~ 2497 as 2497, - ~~~~~~~~~~~~~~~~~ 2498 as 2498, - ~~~~~~~~~~~~~~~~~ 2499 as 2499, - ~~~~~~~~~~~~~~~~~ 2500 as 2500, - ~~~~~~~~~~~~~~~~~ 2501 as 2501, - ~~~~~~~~~~~~~~~~~ 2502 as 2502, - ~~~~~~~~~~~~~~~~~ 2503 as 2503, - ~~~~~~~~~~~~~~~~~ 2504 as 2504, - ~~~~~~~~~~~~~~~~~ 2505 as 2505, - ~~~~~~~~~~~~~~~~~ 2506 as 2506, - ~~~~~~~~~~~~~~~~~ 2507 as 2507, - ~~~~~~~~~~~~~~~~~ 2508 as 2508, - ~~~~~~~~~~~~~~~~~ 2509 as 2509, - ~~~~~~~~~~~~~~~~~ 2510 as 2510, - ~~~~~~~~~~~~~~~~~ 2511 as 2511, - ~~~~~~~~~~~~~~~~~ 2512 as 2512, - ~~~~~~~~~~~~~~~~~ 2513 as 2513, - ~~~~~~~~~~~~~~~~~ 2514 as 2514, - ~~~~~~~~~~~~~~~~~ 2515 as 2515, - ~~~~~~~~~~~~~~~~~ 2516 as 2516, - ~~~~~~~~~~~~~~~~~ 2517 as 2517, - ~~~~~~~~~~~~~~~~~ 2518 as 2518, - ~~~~~~~~~~~~~~~~~ 2519 as 2519, - ~~~~~~~~~~~~~~~~~ 2520 as 2520, - ~~~~~~~~~~~~~~~~~ 2521 as 2521, - ~~~~~~~~~~~~~~~~~ 2522 as 2522, - ~~~~~~~~~~~~~~~~~ 2523 as 2523, - ~~~~~~~~~~~~~~~~~ 2524 as 2524, - ~~~~~~~~~~~~~~~~~ 2525 as 2525, - ~~~~~~~~~~~~~~~~~ 2526 as 2526, - ~~~~~~~~~~~~~~~~~ 2527 as 2527, - ~~~~~~~~~~~~~~~~~ 2528 as 2528, - ~~~~~~~~~~~~~~~~~ 2529 as 2529, - ~~~~~~~~~~~~~~~~~ 2530 as 2530, - ~~~~~~~~~~~~~~~~~ 2531 as 2531, - ~~~~~~~~~~~~~~~~~ 2532 as 2532, - ~~~~~~~~~~~~~~~~~ 2533 as 2533, - ~~~~~~~~~~~~~~~~~ 2534 as 2534, - ~~~~~~~~~~~~~~~~~ 2535 as 2535, - ~~~~~~~~~~~~~~~~~ 2536 as 2536, - ~~~~~~~~~~~~~~~~~ 2537 as 2537, - ~~~~~~~~~~~~~~~~~ 2538 as 2538, - ~~~~~~~~~~~~~~~~~ 2539 as 2539, - ~~~~~~~~~~~~~~~~~ 2540 as 2540, - ~~~~~~~~~~~~~~~~~ 2541 as 2541, - ~~~~~~~~~~~~~~~~~ 2542 as 2542, - ~~~~~~~~~~~~~~~~~ 2543 as 2543, - ~~~~~~~~~~~~~~~~~ 2544 as 2544, - ~~~~~~~~~~~~~~~~~ 2545 as 2545, - ~~~~~~~~~~~~~~~~~ 2546 as 2546, - ~~~~~~~~~~~~~~~~~ 2547 as 2547, - ~~~~~~~~~~~~~~~~~ 2548 as 2548, - ~~~~~~~~~~~~~~~~~ 2549 as 2549, - ~~~~~~~~~~~~~~~~~ 2550 as 2550, - ~~~~~~~~~~~~~~~~~ 2551 as 2551, - ~~~~~~~~~~~~~~~~~ 2552 as 2552, - ~~~~~~~~~~~~~~~~~ 2553 as 2553, - ~~~~~~~~~~~~~~~~~ 2554 as 2554, - ~~~~~~~~~~~~~~~~~ 2555 as 2555, - ~~~~~~~~~~~~~~~~~ 2556 as 2556, - ~~~~~~~~~~~~~~~~~ 2557 as 2557, - ~~~~~~~~~~~~~~~~~ 2558 as 2558, - ~~~~~~~~~~~~~~~~~ 2559 as 2559, - ~~~~~~~~~~~~~~~~~ 2560 as 2560, - ~~~~~~~~~~~~~~~~~ 2561 as 2561, - ~~~~~~~~~~~~~~~~~ 2562 as 2562, - ~~~~~~~~~~~~~~~~~ 2563 as 2563, - ~~~~~~~~~~~~~~~~~ 2564 as 2564, - ~~~~~~~~~~~~~~~~~ 2565 as 2565, - ~~~~~~~~~~~~~~~~~ 2566 as 2566, - ~~~~~~~~~~~~~~~~~ 2567 as 2567, - ~~~~~~~~~~~~~~~~~ 2568 as 2568, - ~~~~~~~~~~~~~~~~~ 2569 as 2569, - ~~~~~~~~~~~~~~~~~ 2570 as 2570, - ~~~~~~~~~~~~~~~~~ 2571 as 2571, - ~~~~~~~~~~~~~~~~~ 2572 as 2572, - ~~~~~~~~~~~~~~~~~ 2573 as 2573, - ~~~~~~~~~~~~~~~~~ 2574 as 2574, - ~~~~~~~~~~~~~~~~~ 2575 as 2575, - ~~~~~~~~~~~~~~~~~ 2576 as 2576, - ~~~~~~~~~~~~~~~~~ 2577 as 2577, - ~~~~~~~~~~~~~~~~~ 2578 as 2578, - ~~~~~~~~~~~~~~~~~ 2579 as 2579, - ~~~~~~~~~~~~~~~~~ 2580 as 2580, - ~~~~~~~~~~~~~~~~~ 2581 as 2581, - ~~~~~~~~~~~~~~~~~ 2582 as 2582, - ~~~~~~~~~~~~~~~~~ 2583 as 2583, - ~~~~~~~~~~~~~~~~~ 2584 as 2584, - ~~~~~~~~~~~~~~~~~ 2585 as 2585, - ~~~~~~~~~~~~~~~~~ 2586 as 2586, - ~~~~~~~~~~~~~~~~~ 2587 as 2587, - ~~~~~~~~~~~~~~~~~ 2588 as 2588, - ~~~~~~~~~~~~~~~~~ 2589 as 2589, - ~~~~~~~~~~~~~~~~~ 2590 as 2590, - ~~~~~~~~~~~~~~~~~ 2591 as 2591, - ~~~~~~~~~~~~~~~~~ 2592 as 2592, - ~~~~~~~~~~~~~~~~~ 2593 as 2593, - ~~~~~~~~~~~~~~~~~ 2594 as 2594, - ~~~~~~~~~~~~~~~~~ 2595 as 2595, - ~~~~~~~~~~~~~~~~~ 2596 as 2596, - ~~~~~~~~~~~~~~~~~ 2597 as 2597, - ~~~~~~~~~~~~~~~~~ 2598 as 2598, - ~~~~~~~~~~~~~~~~~ 2599 as 2599, - ~~~~~~~~~~~~~~~~~ 2600 as 2600, - ~~~~~~~~~~~~~~~~~ 2601 as 2601, - ~~~~~~~~~~~~~~~~~ 2602 as 2602, - ~~~~~~~~~~~~~~~~~ 2603 as 2603, - ~~~~~~~~~~~~~~~~~ 2604 as 2604, - ~~~~~~~~~~~~~~~~~ 2605 as 2605, - ~~~~~~~~~~~~~~~~~ 2606 as 2606, - ~~~~~~~~~~~~~~~~~ 2607 as 2607, - ~~~~~~~~~~~~~~~~~ 2608 as 2608, - ~~~~~~~~~~~~~~~~~ 2609 as 2609, - ~~~~~~~~~~~~~~~~~ 2610 as 2610, - ~~~~~~~~~~~~~~~~~ 2611 as 2611, - ~~~~~~~~~~~~~~~~~ 2612 as 2612, - ~~~~~~~~~~~~~~~~~ 2613 as 2613, - ~~~~~~~~~~~~~~~~~ 2614 as 2614, - ~~~~~~~~~~~~~~~~~ 2615 as 2615, - ~~~~~~~~~~~~~~~~~ 2616 as 2616, - ~~~~~~~~~~~~~~~~~ 2617 as 2617, - ~~~~~~~~~~~~~~~~~ 2618 as 2618, - ~~~~~~~~~~~~~~~~~ 2619 as 2619, - ~~~~~~~~~~~~~~~~~ 2620 as 2620, - ~~~~~~~~~~~~~~~~~ 2621 as 2621, - ~~~~~~~~~~~~~~~~~ 2622 as 2622, - ~~~~~~~~~~~~~~~~~ 2623 as 2623, - ~~~~~~~~~~~~~~~~~ 2624 as 2624, - ~~~~~~~~~~~~~~~~~ 2625 as 2625, - ~~~~~~~~~~~~~~~~~ 2626 as 2626, - ~~~~~~~~~~~~~~~~~ 2627 as 2627, - ~~~~~~~~~~~~~~~~~ 2628 as 2628, - ~~~~~~~~~~~~~~~~~ 2629 as 2629, - ~~~~~~~~~~~~~~~~~ 2630 as 2630, - ~~~~~~~~~~~~~~~~~ 2631 as 2631, - ~~~~~~~~~~~~~~~~~ 2632 as 2632, - ~~~~~~~~~~~~~~~~~ 2633 as 2633, - ~~~~~~~~~~~~~~~~~ 2634 as 2634, - ~~~~~~~~~~~~~~~~~ 2635 as 2635, - ~~~~~~~~~~~~~~~~~ 2636 as 2636, - ~~~~~~~~~~~~~~~~~ 2637 as 2637, - ~~~~~~~~~~~~~~~~~ 2638 as 2638, - ~~~~~~~~~~~~~~~~~ 2639 as 2639, - ~~~~~~~~~~~~~~~~~ 2640 as 2640, - ~~~~~~~~~~~~~~~~~ 2641 as 2641, - ~~~~~~~~~~~~~~~~~ 2642 as 2642, - ~~~~~~~~~~~~~~~~~ 2643 as 2643, - ~~~~~~~~~~~~~~~~~ 2644 as 2644, - ~~~~~~~~~~~~~~~~~ 2645 as 2645, - ~~~~~~~~~~~~~~~~~ 2646 as 2646, - ~~~~~~~~~~~~~~~~~ 2647 as 2647, - ~~~~~~~~~~~~~~~~~ 2648 as 2648, - ~~~~~~~~~~~~~~~~~ 2649 as 2649, - ~~~~~~~~~~~~~~~~~ 2650 as 2650, - ~~~~~~~~~~~~~~~~~ 2651 as 2651, - ~~~~~~~~~~~~~~~~~ 2652 as 2652, - ~~~~~~~~~~~~~~~~~ 2653 as 2653, - ~~~~~~~~~~~~~~~~~ 2654 as 2654, - ~~~~~~~~~~~~~~~~~ 2655 as 2655, - ~~~~~~~~~~~~~~~~~ 2656 as 2656, - ~~~~~~~~~~~~~~~~~ 2657 as 2657, - ~~~~~~~~~~~~~~~~~ 2658 as 2658, - ~~~~~~~~~~~~~~~~~ 2659 as 2659, - ~~~~~~~~~~~~~~~~~ 2660 as 2660, - ~~~~~~~~~~~~~~~~~ 2661 as 2661, - ~~~~~~~~~~~~~~~~~ 2662 as 2662, - ~~~~~~~~~~~~~~~~~ 2663 as 2663, - ~~~~~~~~~~~~~~~~~ 2664 as 2664, - ~~~~~~~~~~~~~~~~~ 2665 as 2665, - ~~~~~~~~~~~~~~~~~ 2666 as 2666, - ~~~~~~~~~~~~~~~~~ 2667 as 2667, - ~~~~~~~~~~~~~~~~~ 2668 as 2668, - ~~~~~~~~~~~~~~~~~ 2669 as 2669, - ~~~~~~~~~~~~~~~~~ 2670 as 2670, - ~~~~~~~~~~~~~~~~~ 2671 as 2671, - ~~~~~~~~~~~~~~~~~ 2672 as 2672, - ~~~~~~~~~~~~~~~~~ 2673 as 2673, - ~~~~~~~~~~~~~~~~~ 2674 as 2674, - ~~~~~~~~~~~~~~~~~ 2675 as 2675, - ~~~~~~~~~~~~~~~~~ 2676 as 2676, - ~~~~~~~~~~~~~~~~~ 2677 as 2677, - ~~~~~~~~~~~~~~~~~ 2678 as 2678, - ~~~~~~~~~~~~~~~~~ 2679 as 2679, - ~~~~~~~~~~~~~~~~~ 2680 as 2680, - ~~~~~~~~~~~~~~~~~ 2681 as 2681, - ~~~~~~~~~~~~~~~~~ 2682 as 2682, - ~~~~~~~~~~~~~~~~~ 2683 as 2683, - ~~~~~~~~~~~~~~~~~ 2684 as 2684, - ~~~~~~~~~~~~~~~~~ 2685 as 2685, - ~~~~~~~~~~~~~~~~~ 2686 as 2686, - ~~~~~~~~~~~~~~~~~ 2687 as 2687, - ~~~~~~~~~~~~~~~~~ 2688 as 2688, - ~~~~~~~~~~~~~~~~~ 2689 as 2689, - ~~~~~~~~~~~~~~~~~ 2690 as 2690, - ~~~~~~~~~~~~~~~~~ 2691 as 2691, - ~~~~~~~~~~~~~~~~~ 2692 as 2692, - ~~~~~~~~~~~~~~~~~ 2693 as 2693, - ~~~~~~~~~~~~~~~~~ 2694 as 2694, - ~~~~~~~~~~~~~~~~~ 2695 as 2695, - ~~~~~~~~~~~~~~~~~ 2696 as 2696, - ~~~~~~~~~~~~~~~~~ 2697 as 2697, - ~~~~~~~~~~~~~~~~~ 2698 as 2698, - ~~~~~~~~~~~~~~~~~ 2699 as 2699, - ~~~~~~~~~~~~~~~~~ 2700 as 2700, - ~~~~~~~~~~~~~~~~~ 2701 as 2701, - ~~~~~~~~~~~~~~~~~ 2702 as 2702, - ~~~~~~~~~~~~~~~~~ 2703 as 2703, - ~~~~~~~~~~~~~~~~~ 2704 as 2704, - ~~~~~~~~~~~~~~~~~ 2705 as 2705, - ~~~~~~~~~~~~~~~~~ 2706 as 2706, - ~~~~~~~~~~~~~~~~~ 2707 as 2707, - ~~~~~~~~~~~~~~~~~ 2708 as 2708, - ~~~~~~~~~~~~~~~~~ 2709 as 2709, - ~~~~~~~~~~~~~~~~~ 2710 as 2710, - ~~~~~~~~~~~~~~~~~ 2711 as 2711, - ~~~~~~~~~~~~~~~~~ 2712 as 2712, - ~~~~~~~~~~~~~~~~~ 2713 as 2713, - ~~~~~~~~~~~~~~~~~ 2714 as 2714, - ~~~~~~~~~~~~~~~~~ 2715 as 2715, - ~~~~~~~~~~~~~~~~~ 2716 as 2716, - ~~~~~~~~~~~~~~~~~ 2717 as 2717, - ~~~~~~~~~~~~~~~~~ 2718 as 2718, - ~~~~~~~~~~~~~~~~~ 2719 as 2719, - ~~~~~~~~~~~~~~~~~ 2720 as 2720, - ~~~~~~~~~~~~~~~~~ 2721 as 2721, - ~~~~~~~~~~~~~~~~~ 2722 as 2722, - ~~~~~~~~~~~~~~~~~ 2723 as 2723, - ~~~~~~~~~~~~~~~~~ 2724 as 2724, - ~~~~~~~~~~~~~~~~~ 2725 as 2725, - ~~~~~~~~~~~~~~~~~ 2726 as 2726, - ~~~~~~~~~~~~~~~~~ 2727 as 2727, - ~~~~~~~~~~~~~~~~~ 2728 as 2728, - ~~~~~~~~~~~~~~~~~ 2729 as 2729, - ~~~~~~~~~~~~~~~~~ 2730 as 2730, - ~~~~~~~~~~~~~~~~~ 2731 as 2731, - ~~~~~~~~~~~~~~~~~ 2732 as 2732, - ~~~~~~~~~~~~~~~~~ 2733 as 2733, - ~~~~~~~~~~~~~~~~~ 2734 as 2734, - ~~~~~~~~~~~~~~~~~ 2735 as 2735, - ~~~~~~~~~~~~~~~~~ 2736 as 2736, - ~~~~~~~~~~~~~~~~~ 2737 as 2737, - ~~~~~~~~~~~~~~~~~ 2738 as 2738, - ~~~~~~~~~~~~~~~~~ 2739 as 2739, - ~~~~~~~~~~~~~~~~~ 2740 as 2740, - ~~~~~~~~~~~~~~~~~ 2741 as 2741, - ~~~~~~~~~~~~~~~~~ 2742 as 2742, - ~~~~~~~~~~~~~~~~~ 2743 as 2743, - ~~~~~~~~~~~~~~~~~ 2744 as 2744, - ~~~~~~~~~~~~~~~~~ 2745 as 2745, - ~~~~~~~~~~~~~~~~~ 2746 as 2746, - ~~~~~~~~~~~~~~~~~ 2747 as 2747, - ~~~~~~~~~~~~~~~~~ 2748 as 2748, - ~~~~~~~~~~~~~~~~~ 2749 as 2749, - ~~~~~~~~~~~~~~~~~ 2750 as 2750, - ~~~~~~~~~~~~~~~~~ 2751 as 2751, - ~~~~~~~~~~~~~~~~~ 2752 as 2752, - ~~~~~~~~~~~~~~~~~ 2753 as 2753, - ~~~~~~~~~~~~~~~~~ 2754 as 2754, - ~~~~~~~~~~~~~~~~~ 2755 as 2755, - ~~~~~~~~~~~~~~~~~ 2756 as 2756, - ~~~~~~~~~~~~~~~~~ 2757 as 2757, - ~~~~~~~~~~~~~~~~~ 2758 as 2758, - ~~~~~~~~~~~~~~~~~ 2759 as 2759, - ~~~~~~~~~~~~~~~~~ 2760 as 2760, - ~~~~~~~~~~~~~~~~~ 2761 as 2761, - ~~~~~~~~~~~~~~~~~ 2762 as 2762, - ~~~~~~~~~~~~~~~~~ 2763 as 2763, - ~~~~~~~~~~~~~~~~~ 2764 as 2764, - ~~~~~~~~~~~~~~~~~ 2765 as 2765, - ~~~~~~~~~~~~~~~~~ 2766 as 2766, - ~~~~~~~~~~~~~~~~~ 2767 as 2767, - ~~~~~~~~~~~~~~~~~ 2768 as 2768, - ~~~~~~~~~~~~~~~~~ 2769 as 2769, - ~~~~~~~~~~~~~~~~~ 2770 as 2770, - ~~~~~~~~~~~~~~~~~ 2771 as 2771, - ~~~~~~~~~~~~~~~~~ 2772 as 2772, - ~~~~~~~~~~~~~~~~~ 2773 as 2773, - ~~~~~~~~~~~~~~~~~ 2774 as 2774, - ~~~~~~~~~~~~~~~~~ 2775 as 2775, - ~~~~~~~~~~~~~~~~~ 2776 as 2776, - ~~~~~~~~~~~~~~~~~ 2777 as 2777, - ~~~~~~~~~~~~~~~~~ 2778 as 2778, - ~~~~~~~~~~~~~~~~~ 2779 as 2779, - ~~~~~~~~~~~~~~~~~ 2780 as 2780, - ~~~~~~~~~~~~~~~~~ 2781 as 2781, - ~~~~~~~~~~~~~~~~~ 2782 as 2782, - ~~~~~~~~~~~~~~~~~ 2783 as 2783, - ~~~~~~~~~~~~~~~~~ 2784 as 2784, - ~~~~~~~~~~~~~~~~~ 2785 as 2785, - ~~~~~~~~~~~~~~~~~ 2786 as 2786, - ~~~~~~~~~~~~~~~~~ 2787 as 2787, - ~~~~~~~~~~~~~~~~~ 2788 as 2788, - ~~~~~~~~~~~~~~~~~ 2789 as 2789, - ~~~~~~~~~~~~~~~~~ 2790 as 2790, - ~~~~~~~~~~~~~~~~~ 2791 as 2791, - ~~~~~~~~~~~~~~~~~ 2792 as 2792, - ~~~~~~~~~~~~~~~~~ 2793 as 2793, - ~~~~~~~~~~~~~~~~~ 2794 as 2794, - ~~~~~~~~~~~~~~~~~ 2795 as 2795, - ~~~~~~~~~~~~~~~~~ 2796 as 2796, - ~~~~~~~~~~~~~~~~~ 2797 as 2797, - ~~~~~~~~~~~~~~~~~ 2798 as 2798, - ~~~~~~~~~~~~~~~~~ 2799 as 2799, - ~~~~~~~~~~~~~~~~~ 2800 as 2800, - ~~~~~~~~~~~~~~~~~ 2801 as 2801, - ~~~~~~~~~~~~~~~~~ 2802 as 2802, - ~~~~~~~~~~~~~~~~~ 2803 as 2803, - ~~~~~~~~~~~~~~~~~ 2804 as 2804, - ~~~~~~~~~~~~~~~~~ 2805 as 2805, - ~~~~~~~~~~~~~~~~~ 2806 as 2806, - ~~~~~~~~~~~~~~~~~ 2807 as 2807, - ~~~~~~~~~~~~~~~~~ 2808 as 2808, - ~~~~~~~~~~~~~~~~~ 2809 as 2809, - ~~~~~~~~~~~~~~~~~ 2810 as 2810, - ~~~~~~~~~~~~~~~~~ 2811 as 2811, - ~~~~~~~~~~~~~~~~~ 2812 as 2812, - ~~~~~~~~~~~~~~~~~ 2813 as 2813, - ~~~~~~~~~~~~~~~~~ 2814 as 2814, - ~~~~~~~~~~~~~~~~~ 2815 as 2815, - ~~~~~~~~~~~~~~~~~ 2816 as 2816, - ~~~~~~~~~~~~~~~~~ 2817 as 2817, - ~~~~~~~~~~~~~~~~~ 2818 as 2818, - ~~~~~~~~~~~~~~~~~ 2819 as 2819, - ~~~~~~~~~~~~~~~~~ 2820 as 2820, - ~~~~~~~~~~~~~~~~~ 2821 as 2821, - ~~~~~~~~~~~~~~~~~ 2822 as 2822, - ~~~~~~~~~~~~~~~~~ 2823 as 2823, - ~~~~~~~~~~~~~~~~~ 2824 as 2824, - ~~~~~~~~~~~~~~~~~ 2825 as 2825, - ~~~~~~~~~~~~~~~~~ 2826 as 2826, - ~~~~~~~~~~~~~~~~~ 2827 as 2827, - ~~~~~~~~~~~~~~~~~ 2828 as 2828, - ~~~~~~~~~~~~~~~~~ 2829 as 2829, - ~~~~~~~~~~~~~~~~~ 2830 as 2830, - ~~~~~~~~~~~~~~~~~ 2831 as 2831, - ~~~~~~~~~~~~~~~~~ 2832 as 2832, - ~~~~~~~~~~~~~~~~~ 2833 as 2833, - ~~~~~~~~~~~~~~~~~ 2834 as 2834, - ~~~~~~~~~~~~~~~~~ 2835 as 2835, - ~~~~~~~~~~~~~~~~~ 2836 as 2836, - ~~~~~~~~~~~~~~~~~ 2837 as 2837, - ~~~~~~~~~~~~~~~~~ 2838 as 2838, - ~~~~~~~~~~~~~~~~~ 2839 as 2839, - ~~~~~~~~~~~~~~~~~ 2840 as 2840, - ~~~~~~~~~~~~~~~~~ 2841 as 2841, - ~~~~~~~~~~~~~~~~~ 2842 as 2842, - ~~~~~~~~~~~~~~~~~ 2843 as 2843, - ~~~~~~~~~~~~~~~~~ 2844 as 2844, - ~~~~~~~~~~~~~~~~~ 2845 as 2845, - ~~~~~~~~~~~~~~~~~ 2846 as 2846, - ~~~~~~~~~~~~~~~~~ 2847 as 2847, - ~~~~~~~~~~~~~~~~~ 2848 as 2848, - ~~~~~~~~~~~~~~~~~ 2849 as 2849, - ~~~~~~~~~~~~~~~~~ 2850 as 2850, - ~~~~~~~~~~~~~~~~~ 2851 as 2851, - ~~~~~~~~~~~~~~~~~ 2852 as 2852, - ~~~~~~~~~~~~~~~~~ 2853 as 2853, - ~~~~~~~~~~~~~~~~~ 2854 as 2854, - ~~~~~~~~~~~~~~~~~ 2855 as 2855, - ~~~~~~~~~~~~~~~~~ 2856 as 2856, - ~~~~~~~~~~~~~~~~~ 2857 as 2857, - ~~~~~~~~~~~~~~~~~ 2858 as 2858, - ~~~~~~~~~~~~~~~~~ 2859 as 2859, - ~~~~~~~~~~~~~~~~~ 2860 as 2860, - ~~~~~~~~~~~~~~~~~ 2861 as 2861, - ~~~~~~~~~~~~~~~~~ 2862 as 2862, - ~~~~~~~~~~~~~~~~~ 2863 as 2863, - ~~~~~~~~~~~~~~~~~ 2864 as 2864, - ~~~~~~~~~~~~~~~~~ 2865 as 2865, - ~~~~~~~~~~~~~~~~~ 2866 as 2866, - ~~~~~~~~~~~~~~~~~ 2867 as 2867, - ~~~~~~~~~~~~~~~~~ 2868 as 2868, - ~~~~~~~~~~~~~~~~~ 2869 as 2869, - ~~~~~~~~~~~~~~~~~ 2870 as 2870, - ~~~~~~~~~~~~~~~~~ 2871 as 2871, - ~~~~~~~~~~~~~~~~~ 2872 as 2872, - ~~~~~~~~~~~~~~~~~ 2873 as 2873, - ~~~~~~~~~~~~~~~~~ 2874 as 2874, - ~~~~~~~~~~~~~~~~~ 2875 as 2875, - ~~~~~~~~~~~~~~~~~ 2876 as 2876, - ~~~~~~~~~~~~~~~~~ 2877 as 2877, - ~~~~~~~~~~~~~~~~~ 2878 as 2878, - ~~~~~~~~~~~~~~~~~ 2879 as 2879, - ~~~~~~~~~~~~~~~~~ 2880 as 2880, - ~~~~~~~~~~~~~~~~~ 2881 as 2881, - ~~~~~~~~~~~~~~~~~ 2882 as 2882, - ~~~~~~~~~~~~~~~~~ 2883 as 2883, - ~~~~~~~~~~~~~~~~~ 2884 as 2884, - ~~~~~~~~~~~~~~~~~ 2885 as 2885, - ~~~~~~~~~~~~~~~~~ 2886 as 2886, - ~~~~~~~~~~~~~~~~~ 2887 as 2887, - ~~~~~~~~~~~~~~~~~ 2888 as 2888, - ~~~~~~~~~~~~~~~~~ 2889 as 2889, - ~~~~~~~~~~~~~~~~~ 2890 as 2890, - ~~~~~~~~~~~~~~~~~ 2891 as 2891, - ~~~~~~~~~~~~~~~~~ 2892 as 2892, - ~~~~~~~~~~~~~~~~~ 2893 as 2893, - ~~~~~~~~~~~~~~~~~ 2894 as 2894, - ~~~~~~~~~~~~~~~~~ 2895 as 2895, - ~~~~~~~~~~~~~~~~~ 2896 as 2896, - ~~~~~~~~~~~~~~~~~ 2897 as 2897, - ~~~~~~~~~~~~~~~~~ 2898 as 2898, - ~~~~~~~~~~~~~~~~~ 2899 as 2899, - ~~~~~~~~~~~~~~~~~ 2900 as 2900, - ~~~~~~~~~~~~~~~~~ 2901 as 2901, - ~~~~~~~~~~~~~~~~~ 2902 as 2902, - ~~~~~~~~~~~~~~~~~ 2903 as 2903, - ~~~~~~~~~~~~~~~~~ 2904 as 2904, - ~~~~~~~~~~~~~~~~~ 2905 as 2905, - ~~~~~~~~~~~~~~~~~ 2906 as 2906, - ~~~~~~~~~~~~~~~~~ 2907 as 2907, - ~~~~~~~~~~~~~~~~~ 2908 as 2908, - ~~~~~~~~~~~~~~~~~ 2909 as 2909, - ~~~~~~~~~~~~~~~~~ 2910 as 2910, - ~~~~~~~~~~~~~~~~~ 2911 as 2911, - ~~~~~~~~~~~~~~~~~ 2912 as 2912, - ~~~~~~~~~~~~~~~~~ 2913 as 2913, - ~~~~~~~~~~~~~~~~~ 2914 as 2914, - ~~~~~~~~~~~~~~~~~ 2915 as 2915, - ~~~~~~~~~~~~~~~~~ 2916 as 2916, - ~~~~~~~~~~~~~~~~~ 2917 as 2917, - ~~~~~~~~~~~~~~~~~ 2918 as 2918, - ~~~~~~~~~~~~~~~~~ 2919 as 2919, - ~~~~~~~~~~~~~~~~~ 2920 as 2920, - ~~~~~~~~~~~~~~~~~ 2921 as 2921, - ~~~~~~~~~~~~~~~~~ 2922 as 2922, - ~~~~~~~~~~~~~~~~~ 2923 as 2923, - ~~~~~~~~~~~~~~~~~ 2924 as 2924, - ~~~~~~~~~~~~~~~~~ 2925 as 2925, - ~~~~~~~~~~~~~~~~~ 2926 as 2926, - ~~~~~~~~~~~~~~~~~ 2927 as 2927, - ~~~~~~~~~~~~~~~~~ 2928 as 2928, - ~~~~~~~~~~~~~~~~~ 2929 as 2929, - ~~~~~~~~~~~~~~~~~ 2930 as 2930, - ~~~~~~~~~~~~~~~~~ 2931 as 2931, - ~~~~~~~~~~~~~~~~~ 2932 as 2932, - ~~~~~~~~~~~~~~~~~ 2933 as 2933, - ~~~~~~~~~~~~~~~~~ 2934 as 2934, - ~~~~~~~~~~~~~~~~~ 2935 as 2935, - ~~~~~~~~~~~~~~~~~ 2936 as 2936, - ~~~~~~~~~~~~~~~~~ 2937 as 2937, - ~~~~~~~~~~~~~~~~~ 2938 as 2938, - ~~~~~~~~~~~~~~~~~ 2939 as 2939, - ~~~~~~~~~~~~~~~~~ 2940 as 2940, - ~~~~~~~~~~~~~~~~~ 2941 as 2941, - ~~~~~~~~~~~~~~~~~ 2942 as 2942, - ~~~~~~~~~~~~~~~~~ 2943 as 2943, - ~~~~~~~~~~~~~~~~~ 2944 as 2944, - ~~~~~~~~~~~~~~~~~ 2945 as 2945, - ~~~~~~~~~~~~~~~~~ 2946 as 2946, - ~~~~~~~~~~~~~~~~~ 2947 as 2947, - ~~~~~~~~~~~~~~~~~ 2948 as 2948, - ~~~~~~~~~~~~~~~~~ 2949 as 2949, - ~~~~~~~~~~~~~~~~~ 2950 as 2950, - ~~~~~~~~~~~~~~~~~ 2951 as 2951, - ~~~~~~~~~~~~~~~~~ 2952 as 2952, - ~~~~~~~~~~~~~~~~~ 2953 as 2953, - ~~~~~~~~~~~~~~~~~ 2954 as 2954, - ~~~~~~~~~~~~~~~~~ 2955 as 2955, - ~~~~~~~~~~~~~~~~~ 2956 as 2956, - ~~~~~~~~~~~~~~~~~ 2957 as 2957, - ~~~~~~~~~~~~~~~~~ 2958 as 2958, - ~~~~~~~~~~~~~~~~~ 2959 as 2959, - ~~~~~~~~~~~~~~~~~ 2960 as 2960, - ~~~~~~~~~~~~~~~~~ 2961 as 2961, - ~~~~~~~~~~~~~~~~~ 2962 as 2962, - ~~~~~~~~~~~~~~~~~ 2963 as 2963, - ~~~~~~~~~~~~~~~~~ 2964 as 2964, - ~~~~~~~~~~~~~~~~~ 2965 as 2965, - ~~~~~~~~~~~~~~~~~ 2966 as 2966, - ~~~~~~~~~~~~~~~~~ 2967 as 2967, - ~~~~~~~~~~~~~~~~~ 2968 as 2968, - ~~~~~~~~~~~~~~~~~ 2969 as 2969, - ~~~~~~~~~~~~~~~~~ 2970 as 2970, - ~~~~~~~~~~~~~~~~~ 2971 as 2971, - ~~~~~~~~~~~~~~~~~ 2972 as 2972, - ~~~~~~~~~~~~~~~~~ 2973 as 2973, - ~~~~~~~~~~~~~~~~~ 2974 as 2974, - ~~~~~~~~~~~~~~~~~ 2975 as 2975, - ~~~~~~~~~~~~~~~~~ 2976 as 2976, - ~~~~~~~~~~~~~~~~~ 2977 as 2977, - ~~~~~~~~~~~~~~~~~ 2978 as 2978, - ~~~~~~~~~~~~~~~~~ 2979 as 2979, - ~~~~~~~~~~~~~~~~~ 2980 as 2980, - ~~~~~~~~~~~~~~~~~ 2981 as 2981, - ~~~~~~~~~~~~~~~~~ 2982 as 2982, - ~~~~~~~~~~~~~~~~~ 2983 as 2983, - ~~~~~~~~~~~~~~~~~ 2984 as 2984, - ~~~~~~~~~~~~~~~~~ 2985 as 2985, - ~~~~~~~~~~~~~~~~~ 2986 as 2986, - ~~~~~~~~~~~~~~~~~ 2987 as 2987, - ~~~~~~~~~~~~~~~~~ 2988 as 2988, - ~~~~~~~~~~~~~~~~~ 2989 as 2989, - ~~~~~~~~~~~~~~~~~ 2990 as 2990, - ~~~~~~~~~~~~~~~~~ 2991 as 2991, - ~~~~~~~~~~~~~~~~~ 2992 as 2992, - ~~~~~~~~~~~~~~~~~ 2993 as 2993, - ~~~~~~~~~~~~~~~~~ 2994 as 2994, - ~~~~~~~~~~~~~~~~~ 2995 as 2995, - ~~~~~~~~~~~~~~~~~ 2996 as 2996, - ~~~~~~~~~~~~~~~~~ 2997 as 2997, - ~~~~~~~~~~~~~~~~~ 2998 as 2998, - ~~~~~~~~~~~~~~~~~ 2999 as 2999, - ~~~~~~~~~~~~~~~~~ 3000 as 3000, - ~~~~~~~~~~~~~~~~~ 3001 as 3001, - ~~~~~~~~~~~~~~~~~ 3002 as 3002, - ~~~~~~~~~~~~~~~~~ 3003 as 3003, - ~~~~~~~~~~~~~~~~~ 3004 as 3004, - ~~~~~~~~~~~~~~~~~ 3005 as 3005, - ~~~~~~~~~~~~~~~~~ 3006 as 3006, - ~~~~~~~~~~~~~~~~~ 3007 as 3007, - ~~~~~~~~~~~~~~~~~ 3008 as 3008, - ~~~~~~~~~~~~~~~~~ 3009 as 3009, - ~~~~~~~~~~~~~~~~~ 3010 as 3010, - ~~~~~~~~~~~~~~~~~ 3011 as 3011, - ~~~~~~~~~~~~~~~~~ 3012 as 3012, - ~~~~~~~~~~~~~~~~~ 3013 as 3013, - ~~~~~~~~~~~~~~~~~ 3014 as 3014, - ~~~~~~~~~~~~~~~~~ 3015 as 3015, - ~~~~~~~~~~~~~~~~~ 3016 as 3016, - ~~~~~~~~~~~~~~~~~ 3017 as 3017, - ~~~~~~~~~~~~~~~~~ 3018 as 3018, - ~~~~~~~~~~~~~~~~~ 3019 as 3019, - ~~~~~~~~~~~~~~~~~ 3020 as 3020, - ~~~~~~~~~~~~~~~~~ 3021 as 3021, - ~~~~~~~~~~~~~~~~~ 3022 as 3022, - ~~~~~~~~~~~~~~~~~ 3023 as 3023, - ~~~~~~~~~~~~~~~~~ 3024 as 3024, - ~~~~~~~~~~~~~~~~~ 3025 as 3025, - ~~~~~~~~~~~~~~~~~ 3026 as 3026, - ~~~~~~~~~~~~~~~~~ 3027 as 3027, - ~~~~~~~~~~~~~~~~~ 3028 as 3028, - ~~~~~~~~~~~~~~~~~ 3029 as 3029, - ~~~~~~~~~~~~~~~~~ 3030 as 3030, - ~~~~~~~~~~~~~~~~~ 3031 as 3031, - ~~~~~~~~~~~~~~~~~ 3032 as 3032, - ~~~~~~~~~~~~~~~~~ 3033 as 3033, - ~~~~~~~~~~~~~~~~~ 3034 as 3034, - ~~~~~~~~~~~~~~~~~ 3035 as 3035, - ~~~~~~~~~~~~~~~~~ 3036 as 3036, - ~~~~~~~~~~~~~~~~~ 3037 as 3037, - ~~~~~~~~~~~~~~~~~ 3038 as 3038, - ~~~~~~~~~~~~~~~~~ 3039 as 3039, - ~~~~~~~~~~~~~~~~~ 3040 as 3040, - ~~~~~~~~~~~~~~~~~ 3041 as 3041, - ~~~~~~~~~~~~~~~~~ 3042 as 3042, - ~~~~~~~~~~~~~~~~~ 3043 as 3043, - ~~~~~~~~~~~~~~~~~ 3044 as 3044, - ~~~~~~~~~~~~~~~~~ 3045 as 3045, - ~~~~~~~~~~~~~~~~~ 3046 as 3046, - ~~~~~~~~~~~~~~~~~ 3047 as 3047, - ~~~~~~~~~~~~~~~~~ 3048 as 3048, - ~~~~~~~~~~~~~~~~~ 3049 as 3049, - ~~~~~~~~~~~~~~~~~ 3050 as 3050, - ~~~~~~~~~~~~~~~~~ 3051 as 3051, - ~~~~~~~~~~~~~~~~~ 3052 as 3052, - ~~~~~~~~~~~~~~~~~ 3053 as 3053, - ~~~~~~~~~~~~~~~~~ 3054 as 3054, - ~~~~~~~~~~~~~~~~~ 3055 as 3055, - ~~~~~~~~~~~~~~~~~ 3056 as 3056, - ~~~~~~~~~~~~~~~~~ 3057 as 3057, - ~~~~~~~~~~~~~~~~~ 3058 as 3058, - ~~~~~~~~~~~~~~~~~ 3059 as 3059, - ~~~~~~~~~~~~~~~~~ 3060 as 3060, - ~~~~~~~~~~~~~~~~~ 3061 as 3061, - ~~~~~~~~~~~~~~~~~ 3062 as 3062, - ~~~~~~~~~~~~~~~~~ 3063 as 3063, - ~~~~~~~~~~~~~~~~~ 3064 as 3064, - ~~~~~~~~~~~~~~~~~ 3065 as 3065, - ~~~~~~~~~~~~~~~~~ 3066 as 3066, - ~~~~~~~~~~~~~~~~~ 3067 as 3067, - ~~~~~~~~~~~~~~~~~ 3068 as 3068, - ~~~~~~~~~~~~~~~~~ 3069 as 3069, - ~~~~~~~~~~~~~~~~~ 3070 as 3070, - ~~~~~~~~~~~~~~~~~ 3071 as 3071, - ~~~~~~~~~~~~~~~~~ 3072 as 3072, - ~~~~~~~~~~~~~~~~~ 3073 as 3073, - ~~~~~~~~~~~~~~~~~ 3074 as 3074, - ~~~~~~~~~~~~~~~~~ 3075 as 3075, - ~~~~~~~~~~~~~~~~~ 3076 as 3076, - ~~~~~~~~~~~~~~~~~ 3077 as 3077, - ~~~~~~~~~~~~~~~~~ 3078 as 3078, - ~~~~~~~~~~~~~~~~~ 3079 as 3079, - ~~~~~~~~~~~~~~~~~ 3080 as 3080, - ~~~~~~~~~~~~~~~~~ 3081 as 3081, - ~~~~~~~~~~~~~~~~~ 3082 as 3082, - ~~~~~~~~~~~~~~~~~ 3083 as 3083, - ~~~~~~~~~~~~~~~~~ 3084 as 3084, - ~~~~~~~~~~~~~~~~~ 3085 as 3085, - ~~~~~~~~~~~~~~~~~ 3086 as 3086, - ~~~~~~~~~~~~~~~~~ 3087 as 3087, - ~~~~~~~~~~~~~~~~~ 3088 as 3088, - ~~~~~~~~~~~~~~~~~ 3089 as 3089, - ~~~~~~~~~~~~~~~~~ 3090 as 3090, - ~~~~~~~~~~~~~~~~~ 3091 as 3091, - ~~~~~~~~~~~~~~~~~ 3092 as 3092, - ~~~~~~~~~~~~~~~~~ 3093 as 3093, - ~~~~~~~~~~~~~~~~~ 3094 as 3094, - ~~~~~~~~~~~~~~~~~ 3095 as 3095, - ~~~~~~~~~~~~~~~~~ 3096 as 3096, - ~~~~~~~~~~~~~~~~~ 3097 as 3097, - ~~~~~~~~~~~~~~~~~ 3098 as 3098, - ~~~~~~~~~~~~~~~~~ 3099 as 3099, - ~~~~~~~~~~~~~~~~~ 3100 as 3100, - ~~~~~~~~~~~~~~~~~ 3101 as 3101, - ~~~~~~~~~~~~~~~~~ 3102 as 3102, - ~~~~~~~~~~~~~~~~~ 3103 as 3103, - ~~~~~~~~~~~~~~~~~ 3104 as 3104, - ~~~~~~~~~~~~~~~~~ 3105 as 3105, - ~~~~~~~~~~~~~~~~~ 3106 as 3106, - ~~~~~~~~~~~~~~~~~ 3107 as 3107, - ~~~~~~~~~~~~~~~~~ 3108 as 3108, - ~~~~~~~~~~~~~~~~~ 3109 as 3109, - ~~~~~~~~~~~~~~~~~ 3110 as 3110, - ~~~~~~~~~~~~~~~~~ 3111 as 3111, - ~~~~~~~~~~~~~~~~~ 3112 as 3112, - ~~~~~~~~~~~~~~~~~ 3113 as 3113, - ~~~~~~~~~~~~~~~~~ 3114 as 3114, - ~~~~~~~~~~~~~~~~~ 3115 as 3115, - ~~~~~~~~~~~~~~~~~ 3116 as 3116, - ~~~~~~~~~~~~~~~~~ 3117 as 3117, - ~~~~~~~~~~~~~~~~~ 3118 as 3118, - ~~~~~~~~~~~~~~~~~ 3119 as 3119, - ~~~~~~~~~~~~~~~~~ 3120 as 3120, - ~~~~~~~~~~~~~~~~~ 3121 as 3121, - ~~~~~~~~~~~~~~~~~ 3122 as 3122, - ~~~~~~~~~~~~~~~~~ 3123 as 3123, - ~~~~~~~~~~~~~~~~~ 3124 as 3124, - ~~~~~~~~~~~~~~~~~ 3125 as 3125, - ~~~~~~~~~~~~~~~~~ 3126 as 3126, - ~~~~~~~~~~~~~~~~~ 3127 as 3127, - ~~~~~~~~~~~~~~~~~ 3128 as 3128, - ~~~~~~~~~~~~~~~~~ 3129 as 3129, - ~~~~~~~~~~~~~~~~~ 3130 as 3130, - ~~~~~~~~~~~~~~~~~ 3131 as 3131, - ~~~~~~~~~~~~~~~~~ 3132 as 3132, - ~~~~~~~~~~~~~~~~~ 3133 as 3133, - ~~~~~~~~~~~~~~~~~ 3134 as 3134, - ~~~~~~~~~~~~~~~~~ 3135 as 3135, - ~~~~~~~~~~~~~~~~~ 3136 as 3136, - ~~~~~~~~~~~~~~~~~ 3137 as 3137, - ~~~~~~~~~~~~~~~~~ 3138 as 3138, - ~~~~~~~~~~~~~~~~~ 3139 as 3139, - ~~~~~~~~~~~~~~~~~ 3140 as 3140, - ~~~~~~~~~~~~~~~~~ 3141 as 3141, - ~~~~~~~~~~~~~~~~~ 3142 as 3142, - ~~~~~~~~~~~~~~~~~ 3143 as 3143, - ~~~~~~~~~~~~~~~~~ 3144 as 3144, - ~~~~~~~~~~~~~~~~~ 3145 as 3145, - ~~~~~~~~~~~~~~~~~ 3146 as 3146, - ~~~~~~~~~~~~~~~~~ 3147 as 3147, - ~~~~~~~~~~~~~~~~~ 3148 as 3148, - ~~~~~~~~~~~~~~~~~ 3149 as 3149, - ~~~~~~~~~~~~~~~~~ 3150 as 3150, - ~~~~~~~~~~~~~~~~~ 3151 as 3151, - ~~~~~~~~~~~~~~~~~ 3152 as 3152, - ~~~~~~~~~~~~~~~~~ 3153 as 3153, - ~~~~~~~~~~~~~~~~~ 3154 as 3154, - ~~~~~~~~~~~~~~~~~ 3155 as 3155, - ~~~~~~~~~~~~~~~~~ 3156 as 3156, - ~~~~~~~~~~~~~~~~~ 3157 as 3157, - ~~~~~~~~~~~~~~~~~ 3158 as 3158, - ~~~~~~~~~~~~~~~~~ 3159 as 3159, - ~~~~~~~~~~~~~~~~~ 3160 as 3160, - ~~~~~~~~~~~~~~~~~ 3161 as 3161, - ~~~~~~~~~~~~~~~~~ 3162 as 3162, - ~~~~~~~~~~~~~~~~~ 3163 as 3163, - ~~~~~~~~~~~~~~~~~ 3164 as 3164, - ~~~~~~~~~~~~~~~~~ 3165 as 3165, - ~~~~~~~~~~~~~~~~~ 3166 as 3166, - ~~~~~~~~~~~~~~~~~ 3167 as 3167, - ~~~~~~~~~~~~~~~~~ 3168 as 3168, - ~~~~~~~~~~~~~~~~~ 3169 as 3169, - ~~~~~~~~~~~~~~~~~ 3170 as 3170, - ~~~~~~~~~~~~~~~~~ 3171 as 3171, - ~~~~~~~~~~~~~~~~~ 3172 as 3172, - ~~~~~~~~~~~~~~~~~ 3173 as 3173, - ~~~~~~~~~~~~~~~~~ 3174 as 3174, - ~~~~~~~~~~~~~~~~~ 3175 as 3175, - ~~~~~~~~~~~~~~~~~ 3176 as 3176, - ~~~~~~~~~~~~~~~~~ 3177 as 3177, - ~~~~~~~~~~~~~~~~~ 3178 as 3178, - ~~~~~~~~~~~~~~~~~ 3179 as 3179, - ~~~~~~~~~~~~~~~~~ 3180 as 3180, - ~~~~~~~~~~~~~~~~~ 3181 as 3181, - ~~~~~~~~~~~~~~~~~ 3182 as 3182, - ~~~~~~~~~~~~~~~~~ 3183 as 3183, - ~~~~~~~~~~~~~~~~~ 3184 as 3184, - ~~~~~~~~~~~~~~~~~ 3185 as 3185, - ~~~~~~~~~~~~~~~~~ 3186 as 3186, - ~~~~~~~~~~~~~~~~~ 3187 as 3187, - ~~~~~~~~~~~~~~~~~ 3188 as 3188, - ~~~~~~~~~~~~~~~~~ 3189 as 3189, - ~~~~~~~~~~~~~~~~~ 3190 as 3190, - ~~~~~~~~~~~~~~~~~ 3191 as 3191, - ~~~~~~~~~~~~~~~~~ 3192 as 3192, - ~~~~~~~~~~~~~~~~~ 3193 as 3193, - ~~~~~~~~~~~~~~~~~ 3194 as 3194, - ~~~~~~~~~~~~~~~~~ 3195 as 3195, - ~~~~~~~~~~~~~~~~~ 3196 as 3196, - ~~~~~~~~~~~~~~~~~ 3197 as 3197, - ~~~~~~~~~~~~~~~~~ 3198 as 3198, - ~~~~~~~~~~~~~~~~~ 3199 as 3199, - ~~~~~~~~~~~~~~~~~ 3200 as 3200, - ~~~~~~~~~~~~~~~~~ 3201 as 3201, - ~~~~~~~~~~~~~~~~~ 3202 as 3202, - ~~~~~~~~~~~~~~~~~ 3203 as 3203, - ~~~~~~~~~~~~~~~~~ 3204 as 3204, - ~~~~~~~~~~~~~~~~~ 3205 as 3205, - ~~~~~~~~~~~~~~~~~ 3206 as 3206, - ~~~~~~~~~~~~~~~~~ 3207 as 3207, - ~~~~~~~~~~~~~~~~~ 3208 as 3208, - ~~~~~~~~~~~~~~~~~ 3209 as 3209, - ~~~~~~~~~~~~~~~~~ 3210 as 3210, - ~~~~~~~~~~~~~~~~~ 3211 as 3211, - ~~~~~~~~~~~~~~~~~ 3212 as 3212, - ~~~~~~~~~~~~~~~~~ 3213 as 3213, - ~~~~~~~~~~~~~~~~~ 3214 as 3214, - ~~~~~~~~~~~~~~~~~ 3215 as 3215, - ~~~~~~~~~~~~~~~~~ 3216 as 3216, - ~~~~~~~~~~~~~~~~~ 3217 as 3217, - ~~~~~~~~~~~~~~~~~ 3218 as 3218, - ~~~~~~~~~~~~~~~~~ 3219 as 3219, - ~~~~~~~~~~~~~~~~~ 3220 as 3220, - ~~~~~~~~~~~~~~~~~ 3221 as 3221, - ~~~~~~~~~~~~~~~~~ 3222 as 3222, - ~~~~~~~~~~~~~~~~~ 3223 as 3223, - ~~~~~~~~~~~~~~~~~ 3224 as 3224, - ~~~~~~~~~~~~~~~~~ 3225 as 3225, - ~~~~~~~~~~~~~~~~~ 3226 as 3226, - ~~~~~~~~~~~~~~~~~ 3227 as 3227, - ~~~~~~~~~~~~~~~~~ 3228 as 3228, - ~~~~~~~~~~~~~~~~~ 3229 as 3229, - ~~~~~~~~~~~~~~~~~ 3230 as 3230, - ~~~~~~~~~~~~~~~~~ 3231 as 3231, - ~~~~~~~~~~~~~~~~~ 3232 as 3232, - ~~~~~~~~~~~~~~~~~ 3233 as 3233, - ~~~~~~~~~~~~~~~~~ 3234 as 3234, - ~~~~~~~~~~~~~~~~~ 3235 as 3235, - ~~~~~~~~~~~~~~~~~ 3236 as 3236, - ~~~~~~~~~~~~~~~~~ 3237 as 3237, - ~~~~~~~~~~~~~~~~~ 3238 as 3238, - ~~~~~~~~~~~~~~~~~ 3239 as 3239, - ~~~~~~~~~~~~~~~~~ 3240 as 3240, - ~~~~~~~~~~~~~~~~~ 3241 as 3241, - ~~~~~~~~~~~~~~~~~ 3242 as 3242, - ~~~~~~~~~~~~~~~~~ 3243 as 3243, - ~~~~~~~~~~~~~~~~~ 3244 as 3244, - ~~~~~~~~~~~~~~~~~ 3245 as 3245, - ~~~~~~~~~~~~~~~~~ 3246 as 3246, - ~~~~~~~~~~~~~~~~~ 3247 as 3247, - ~~~~~~~~~~~~~~~~~ 3248 as 3248, - ~~~~~~~~~~~~~~~~~ 3249 as 3249, - ~~~~~~~~~~~~~~~~~ 3250 as 3250, - ~~~~~~~~~~~~~~~~~ 3251 as 3251, - ~~~~~~~~~~~~~~~~~ 3252 as 3252, - ~~~~~~~~~~~~~~~~~ 3253 as 3253, - ~~~~~~~~~~~~~~~~~ 3254 as 3254, - ~~~~~~~~~~~~~~~~~ 3255 as 3255, - ~~~~~~~~~~~~~~~~~ 3256 as 3256, - ~~~~~~~~~~~~~~~~~ 3257 as 3257, - ~~~~~~~~~~~~~~~~~ 3258 as 3258, - ~~~~~~~~~~~~~~~~~ 3259 as 3259, - ~~~~~~~~~~~~~~~~~ 3260 as 3260, - ~~~~~~~~~~~~~~~~~ 3261 as 3261, - ~~~~~~~~~~~~~~~~~ 3262 as 3262, - ~~~~~~~~~~~~~~~~~ 3263 as 3263, - ~~~~~~~~~~~~~~~~~ 3264 as 3264, - ~~~~~~~~~~~~~~~~~ 3265 as 3265, - ~~~~~~~~~~~~~~~~~ 3266 as 3266, - ~~~~~~~~~~~~~~~~~ 3267 as 3267, - ~~~~~~~~~~~~~~~~~ 3268 as 3268, - ~~~~~~~~~~~~~~~~~ 3269 as 3269, - ~~~~~~~~~~~~~~~~~ 3270 as 3270, - ~~~~~~~~~~~~~~~~~ 3271 as 3271, - ~~~~~~~~~~~~~~~~~ 3272 as 3272, - ~~~~~~~~~~~~~~~~~ 3273 as 3273, - ~~~~~~~~~~~~~~~~~ 3274 as 3274, - ~~~~~~~~~~~~~~~~~ 3275 as 3275, - ~~~~~~~~~~~~~~~~~ 3276 as 3276, - ~~~~~~~~~~~~~~~~~ 3277 as 3277, - ~~~~~~~~~~~~~~~~~ 3278 as 3278, - ~~~~~~~~~~~~~~~~~ 3279 as 3279, - ~~~~~~~~~~~~~~~~~ 3280 as 3280, - ~~~~~~~~~~~~~~~~~ 3281 as 3281, - ~~~~~~~~~~~~~~~~~ 3282 as 3282, - ~~~~~~~~~~~~~~~~~ 3283 as 3283, - ~~~~~~~~~~~~~~~~~ 3284 as 3284, - ~~~~~~~~~~~~~~~~~ 3285 as 3285, - ~~~~~~~~~~~~~~~~~ 3286 as 3286, - ~~~~~~~~~~~~~~~~~ 3287 as 3287, - ~~~~~~~~~~~~~~~~~ 3288 as 3288, - ~~~~~~~~~~~~~~~~~ 3289 as 3289, - ~~~~~~~~~~~~~~~~~ 3290 as 3290, - ~~~~~~~~~~~~~~~~~ 3291 as 3291, - ~~~~~~~~~~~~~~~~~ 3292 as 3292, - ~~~~~~~~~~~~~~~~~ 3293 as 3293, - ~~~~~~~~~~~~~~~~~ 3294 as 3294, - ~~~~~~~~~~~~~~~~~ 3295 as 3295, - ~~~~~~~~~~~~~~~~~ 3296 as 3296, - ~~~~~~~~~~~~~~~~~ 3297 as 3297, - ~~~~~~~~~~~~~~~~~ 3298 as 3298, - ~~~~~~~~~~~~~~~~~ 3299 as 3299, - ~~~~~~~~~~~~~~~~~ 3300 as 3300, - ~~~~~~~~~~~~~~~~~ 3301 as 3301, - ~~~~~~~~~~~~~~~~~ 3302 as 3302, - ~~~~~~~~~~~~~~~~~ 3303 as 3303, - ~~~~~~~~~~~~~~~~~ 3304 as 3304, - ~~~~~~~~~~~~~~~~~ 3305 as 3305, - ~~~~~~~~~~~~~~~~~ 3306 as 3306, - ~~~~~~~~~~~~~~~~~ 3307 as 3307, - ~~~~~~~~~~~~~~~~~ 3308 as 3308, - ~~~~~~~~~~~~~~~~~ 3309 as 3309, - ~~~~~~~~~~~~~~~~~ 3310 as 3310, - ~~~~~~~~~~~~~~~~~ 3311 as 3311, - ~~~~~~~~~~~~~~~~~ 3312 as 3312, - ~~~~~~~~~~~~~~~~~ 3313 as 3313, - ~~~~~~~~~~~~~~~~~ 3314 as 3314, - ~~~~~~~~~~~~~~~~~ 3315 as 3315, - ~~~~~~~~~~~~~~~~~ 3316 as 3316, - ~~~~~~~~~~~~~~~~~ 3317 as 3317, - ~~~~~~~~~~~~~~~~~ 3318 as 3318, - ~~~~~~~~~~~~~~~~~ 3319 as 3319, - ~~~~~~~~~~~~~~~~~ 3320 as 3320, - ~~~~~~~~~~~~~~~~~ 3321 as 3321, - ~~~~~~~~~~~~~~~~~ 3322 as 3322, - ~~~~~~~~~~~~~~~~~ 3323 as 3323, - ~~~~~~~~~~~~~~~~~ 3324 as 3324, - ~~~~~~~~~~~~~~~~~ 3325 as 3325, - ~~~~~~~~~~~~~~~~~ 3326 as 3326, - ~~~~~~~~~~~~~~~~~ 3327 as 3327, - ~~~~~~~~~~~~~~~~~ 3328 as 3328, - ~~~~~~~~~~~~~~~~~ 3329 as 3329, - ~~~~~~~~~~~~~~~~~ 3330 as 3330, - ~~~~~~~~~~~~~~~~~ 3331 as 3331, - ~~~~~~~~~~~~~~~~~ 3332 as 3332, - ~~~~~~~~~~~~~~~~~ 3333 as 3333, - ~~~~~~~~~~~~~~~~~ 3334 as 3334, - ~~~~~~~~~~~~~~~~~ 3335 as 3335, - ~~~~~~~~~~~~~~~~~ 3336 as 3336, - ~~~~~~~~~~~~~~~~~ 3337 as 3337, - ~~~~~~~~~~~~~~~~~ 3338 as 3338, - ~~~~~~~~~~~~~~~~~ 3339 as 3339, - ~~~~~~~~~~~~~~~~~ 3340 as 3340, - ~~~~~~~~~~~~~~~~~ 3341 as 3341, - ~~~~~~~~~~~~~~~~~ 3342 as 3342, - ~~~~~~~~~~~~~~~~~ 3343 as 3343, - ~~~~~~~~~~~~~~~~~ 3344 as 3344, - ~~~~~~~~~~~~~~~~~ 3345 as 3345, - ~~~~~~~~~~~~~~~~~ 3346 as 3346, - ~~~~~~~~~~~~~~~~~ 3347 as 3347, - ~~~~~~~~~~~~~~~~~ 3348 as 3348, - ~~~~~~~~~~~~~~~~~ 3349 as 3349, - ~~~~~~~~~~~~~~~~~ 3350 as 3350, - ~~~~~~~~~~~~~~~~~ 3351 as 3351, - ~~~~~~~~~~~~~~~~~ 3352 as 3352, - ~~~~~~~~~~~~~~~~~ 3353 as 3353, - ~~~~~~~~~~~~~~~~~ 3354 as 3354, - ~~~~~~~~~~~~~~~~~ 3355 as 3355, - ~~~~~~~~~~~~~~~~~ 3356 as 3356, - ~~~~~~~~~~~~~~~~~ 3357 as 3357, - ~~~~~~~~~~~~~~~~~ 3358 as 3358, - ~~~~~~~~~~~~~~~~~ 3359 as 3359, - ~~~~~~~~~~~~~~~~~ 3360 as 3360, - ~~~~~~~~~~~~~~~~~ 3361 as 3361, - ~~~~~~~~~~~~~~~~~ 3362 as 3362, - ~~~~~~~~~~~~~~~~~ 3363 as 3363, - ~~~~~~~~~~~~~~~~~ 3364 as 3364, - ~~~~~~~~~~~~~~~~~ 3365 as 3365, - ~~~~~~~~~~~~~~~~~ 3366 as 3366, - ~~~~~~~~~~~~~~~~~ 3367 as 3367, - ~~~~~~~~~~~~~~~~~ 3368 as 3368, - ~~~~~~~~~~~~~~~~~ 3369 as 3369, - ~~~~~~~~~~~~~~~~~ 3370 as 3370, - ~~~~~~~~~~~~~~~~~ 3371 as 3371, - ~~~~~~~~~~~~~~~~~ 3372 as 3372, - ~~~~~~~~~~~~~~~~~ 3373 as 3373, - ~~~~~~~~~~~~~~~~~ 3374 as 3374, - ~~~~~~~~~~~~~~~~~ 3375 as 3375, - ~~~~~~~~~~~~~~~~~ 3376 as 3376, - ~~~~~~~~~~~~~~~~~ 3377 as 3377, - ~~~~~~~~~~~~~~~~~ 3378 as 3378, - ~~~~~~~~~~~~~~~~~ 3379 as 3379, - ~~~~~~~~~~~~~~~~~ 3380 as 3380, - ~~~~~~~~~~~~~~~~~ 3381 as 3381, - ~~~~~~~~~~~~~~~~~ 3382 as 3382, - ~~~~~~~~~~~~~~~~~ 3383 as 3383, - ~~~~~~~~~~~~~~~~~ 3384 as 3384, - ~~~~~~~~~~~~~~~~~ 3385 as 3385, - ~~~~~~~~~~~~~~~~~ 3386 as 3386, - ~~~~~~~~~~~~~~~~~ 3387 as 3387, - ~~~~~~~~~~~~~~~~~ 3388 as 3388, - ~~~~~~~~~~~~~~~~~ 3389 as 3389, - ~~~~~~~~~~~~~~~~~ 3390 as 3390, - ~~~~~~~~~~~~~~~~~ 3391 as 3391, - ~~~~~~~~~~~~~~~~~ 3392 as 3392, - ~~~~~~~~~~~~~~~~~ 3393 as 3393, - ~~~~~~~~~~~~~~~~~ 3394 as 3394, - ~~~~~~~~~~~~~~~~~ 3395 as 3395, - ~~~~~~~~~~~~~~~~~ 3396 as 3396, - ~~~~~~~~~~~~~~~~~ 3397 as 3397, - ~~~~~~~~~~~~~~~~~ 3398 as 3398, - ~~~~~~~~~~~~~~~~~ 3399 as 3399, - ~~~~~~~~~~~~~~~~~ 3400 as 3400, - ~~~~~~~~~~~~~~~~~ 3401 as 3401, - ~~~~~~~~~~~~~~~~~ 3402 as 3402, - ~~~~~~~~~~~~~~~~~ 3403 as 3403, - ~~~~~~~~~~~~~~~~~ 3404 as 3404, - ~~~~~~~~~~~~~~~~~ 3405 as 3405, - ~~~~~~~~~~~~~~~~~ 3406 as 3406, - ~~~~~~~~~~~~~~~~~ 3407 as 3407, - ~~~~~~~~~~~~~~~~~ 3408 as 3408, - ~~~~~~~~~~~~~~~~~ 3409 as 3409, - ~~~~~~~~~~~~~~~~~ 3410 as 3410, - ~~~~~~~~~~~~~~~~~ 3411 as 3411, - ~~~~~~~~~~~~~~~~~ 3412 as 3412, - ~~~~~~~~~~~~~~~~~ 3413 as 3413, - ~~~~~~~~~~~~~~~~~ 3414 as 3414, - ~~~~~~~~~~~~~~~~~ 3415 as 3415, - ~~~~~~~~~~~~~~~~~ 3416 as 3416, - ~~~~~~~~~~~~~~~~~ 3417 as 3417, - ~~~~~~~~~~~~~~~~~ 3418 as 3418, - ~~~~~~~~~~~~~~~~~ 3419 as 3419, - ~~~~~~~~~~~~~~~~~ 3420 as 3420, - ~~~~~~~~~~~~~~~~~ 3421 as 3421, - ~~~~~~~~~~~~~~~~~ 3422 as 3422, - ~~~~~~~~~~~~~~~~~ 3423 as 3423, - ~~~~~~~~~~~~~~~~~ 3424 as 3424, - ~~~~~~~~~~~~~~~~~ 3425 as 3425, - ~~~~~~~~~~~~~~~~~ 3426 as 3426, - ~~~~~~~~~~~~~~~~~ 3427 as 3427, - ~~~~~~~~~~~~~~~~~ 3428 as 3428, - ~~~~~~~~~~~~~~~~~ 3429 as 3429, - ~~~~~~~~~~~~~~~~~ 3430 as 3430, - ~~~~~~~~~~~~~~~~~ 3431 as 3431, - ~~~~~~~~~~~~~~~~~ 3432 as 3432, - ~~~~~~~~~~~~~~~~~ 3433 as 3433, - ~~~~~~~~~~~~~~~~~ 3434 as 3434, - ~~~~~~~~~~~~~~~~~ 3435 as 3435, - ~~~~~~~~~~~~~~~~~ 3436 as 3436, - ~~~~~~~~~~~~~~~~~ 3437 as 3437, - ~~~~~~~~~~~~~~~~~ 3438 as 3438, - ~~~~~~~~~~~~~~~~~ 3439 as 3439, - ~~~~~~~~~~~~~~~~~ 3440 as 3440, - ~~~~~~~~~~~~~~~~~ 3441 as 3441, - ~~~~~~~~~~~~~~~~~ 3442 as 3442, - ~~~~~~~~~~~~~~~~~ 3443 as 3443, - ~~~~~~~~~~~~~~~~~ 3444 as 3444, - ~~~~~~~~~~~~~~~~~ 3445 as 3445, - ~~~~~~~~~~~~~~~~~ 3446 as 3446, - ~~~~~~~~~~~~~~~~~ 3447 as 3447, - ~~~~~~~~~~~~~~~~~ 3448 as 3448, - ~~~~~~~~~~~~~~~~~ 3449 as 3449, - ~~~~~~~~~~~~~~~~~ 3450 as 3450, - ~~~~~~~~~~~~~~~~~ 3451 as 3451, - ~~~~~~~~~~~~~~~~~ 3452 as 3452, - ~~~~~~~~~~~~~~~~~ 3453 as 3453, - ~~~~~~~~~~~~~~~~~ 3454 as 3454, - ~~~~~~~~~~~~~~~~~ 3455 as 3455, - ~~~~~~~~~~~~~~~~~ 3456 as 3456, - ~~~~~~~~~~~~~~~~~ 3457 as 3457, - ~~~~~~~~~~~~~~~~~ 3458 as 3458, - ~~~~~~~~~~~~~~~~~ 3459 as 3459, - ~~~~~~~~~~~~~~~~~ 3460 as 3460, - ~~~~~~~~~~~~~~~~~ 3461 as 3461, - ~~~~~~~~~~~~~~~~~ 3462 as 3462, - ~~~~~~~~~~~~~~~~~ 3463 as 3463, - ~~~~~~~~~~~~~~~~~ 3464 as 3464, - ~~~~~~~~~~~~~~~~~ 3465 as 3465, - ~~~~~~~~~~~~~~~~~ 3466 as 3466, - ~~~~~~~~~~~~~~~~~ 3467 as 3467, - ~~~~~~~~~~~~~~~~~ 3468 as 3468, - ~~~~~~~~~~~~~~~~~ 3469 as 3469, - ~~~~~~~~~~~~~~~~~ 3470 as 3470, - ~~~~~~~~~~~~~~~~~ 3471 as 3471, - ~~~~~~~~~~~~~~~~~ 3472 as 3472, - ~~~~~~~~~~~~~~~~~ 3473 as 3473, - ~~~~~~~~~~~~~~~~~ 3474 as 3474, - ~~~~~~~~~~~~~~~~~ 3475 as 3475, - ~~~~~~~~~~~~~~~~~ 3476 as 3476, - ~~~~~~~~~~~~~~~~~ 3477 as 3477, - ~~~~~~~~~~~~~~~~~ 3478 as 3478, - ~~~~~~~~~~~~~~~~~ 3479 as 3479, - ~~~~~~~~~~~~~~~~~ 3480 as 3480, - ~~~~~~~~~~~~~~~~~ 3481 as 3481, - ~~~~~~~~~~~~~~~~~ 3482 as 3482, - ~~~~~~~~~~~~~~~~~ 3483 as 3483, - ~~~~~~~~~~~~~~~~~ 3484 as 3484, - ~~~~~~~~~~~~~~~~~ 3485 as 3485, - ~~~~~~~~~~~~~~~~~ 3486 as 3486, - ~~~~~~~~~~~~~~~~~ 3487 as 3487, - ~~~~~~~~~~~~~~~~~ 3488 as 3488, - ~~~~~~~~~~~~~~~~~ 3489 as 3489, - ~~~~~~~~~~~~~~~~~ 3490 as 3490, - ~~~~~~~~~~~~~~~~~ 3491 as 3491, - ~~~~~~~~~~~~~~~~~ 3492 as 3492, - ~~~~~~~~~~~~~~~~~ 3493 as 3493, - ~~~~~~~~~~~~~~~~~ 3494 as 3494, - ~~~~~~~~~~~~~~~~~ 3495 as 3495, - ~~~~~~~~~~~~~~~~~ 3496 as 3496, - ~~~~~~~~~~~~~~~~~ 3497 as 3497, - ~~~~~~~~~~~~~~~~~ 3498 as 3498, - ~~~~~~~~~~~~~~~~~ 3499 as 3499, - ~~~~~~~~~~~~~~~~~ 3500 as 3500, - ~~~~~~~~~~~~~~~~~ 3501 as 3501, - ~~~~~~~~~~~~~~~~~ 3502 as 3502, - ~~~~~~~~~~~~~~~~~ 3503 as 3503, - ~~~~~~~~~~~~~~~~~ 3504 as 3504, - ~~~~~~~~~~~~~~~~~ 3505 as 3505, - ~~~~~~~~~~~~~~~~~ 3506 as 3506, - ~~~~~~~~~~~~~~~~~ 3507 as 3507, - ~~~~~~~~~~~~~~~~~ 3508 as 3508, - ~~~~~~~~~~~~~~~~~ 3509 as 3509, - ~~~~~~~~~~~~~~~~~ 3510 as 3510, - ~~~~~~~~~~~~~~~~~ 3511 as 3511, - ~~~~~~~~~~~~~~~~~ 3512 as 3512, - ~~~~~~~~~~~~~~~~~ 3513 as 3513, - ~~~~~~~~~~~~~~~~~ 3514 as 3514, - ~~~~~~~~~~~~~~~~~ 3515 as 3515, - ~~~~~~~~~~~~~~~~~ 3516 as 3516, - ~~~~~~~~~~~~~~~~~ 3517 as 3517, - ~~~~~~~~~~~~~~~~~ 3518 as 3518, - ~~~~~~~~~~~~~~~~~ 3519 as 3519, - ~~~~~~~~~~~~~~~~~ 3520 as 3520, - ~~~~~~~~~~~~~~~~~ 3521 as 3521, - ~~~~~~~~~~~~~~~~~ 3522 as 3522, - ~~~~~~~~~~~~~~~~~ 3523 as 3523, - ~~~~~~~~~~~~~~~~~ 3524 as 3524, - ~~~~~~~~~~~~~~~~~ 3525 as 3525, - ~~~~~~~~~~~~~~~~~ 3526 as 3526, - ~~~~~~~~~~~~~~~~~ 3527 as 3527, - ~~~~~~~~~~~~~~~~~ 3528 as 3528, - ~~~~~~~~~~~~~~~~~ 3529 as 3529, - ~~~~~~~~~~~~~~~~~ 3530 as 3530, - ~~~~~~~~~~~~~~~~~ 3531 as 3531, - ~~~~~~~~~~~~~~~~~ 3532 as 3532, - ~~~~~~~~~~~~~~~~~ 3533 as 3533, - ~~~~~~~~~~~~~~~~~ 3534 as 3534, - ~~~~~~~~~~~~~~~~~ 3535 as 3535, - ~~~~~~~~~~~~~~~~~ 3536 as 3536, - ~~~~~~~~~~~~~~~~~ 3537 as 3537, - ~~~~~~~~~~~~~~~~~ 3538 as 3538, - ~~~~~~~~~~~~~~~~~ 3539 as 3539, - ~~~~~~~~~~~~~~~~~ 3540 as 3540, - ~~~~~~~~~~~~~~~~~ 3541 as 3541, - ~~~~~~~~~~~~~~~~~ 3542 as 3542, - ~~~~~~~~~~~~~~~~~ 3543 as 3543, - ~~~~~~~~~~~~~~~~~ 3544 as 3544, - ~~~~~~~~~~~~~~~~~ 3545 as 3545, - ~~~~~~~~~~~~~~~~~ 3546 as 3546, - ~~~~~~~~~~~~~~~~~ 3547 as 3547, - ~~~~~~~~~~~~~~~~~ 3548 as 3548, - ~~~~~~~~~~~~~~~~~ 3549 as 3549, - ~~~~~~~~~~~~~~~~~ 3550 as 3550, - ~~~~~~~~~~~~~~~~~ 3551 as 3551, - ~~~~~~~~~~~~~~~~~ 3552 as 3552, - ~~~~~~~~~~~~~~~~~ 3553 as 3553, - ~~~~~~~~~~~~~~~~~ 3554 as 3554, - ~~~~~~~~~~~~~~~~~ 3555 as 3555, - ~~~~~~~~~~~~~~~~~ 3556 as 3556, - ~~~~~~~~~~~~~~~~~ 3557 as 3557, - ~~~~~~~~~~~~~~~~~ 3558 as 3558, - ~~~~~~~~~~~~~~~~~ 3559 as 3559, - ~~~~~~~~~~~~~~~~~ 3560 as 3560, - ~~~~~~~~~~~~~~~~~ 3561 as 3561, - ~~~~~~~~~~~~~~~~~ 3562 as 3562, - ~~~~~~~~~~~~~~~~~ 3563 as 3563, - ~~~~~~~~~~~~~~~~~ 3564 as 3564, - ~~~~~~~~~~~~~~~~~ 3565 as 3565, - ~~~~~~~~~~~~~~~~~ 3566 as 3566, - ~~~~~~~~~~~~~~~~~ 3567 as 3567, - ~~~~~~~~~~~~~~~~~ 3568 as 3568, - ~~~~~~~~~~~~~~~~~ 3569 as 3569, - ~~~~~~~~~~~~~~~~~ 3570 as 3570, - ~~~~~~~~~~~~~~~~~ 3571 as 3571, - ~~~~~~~~~~~~~~~~~ 3572 as 3572, - ~~~~~~~~~~~~~~~~~ 3573 as 3573, - ~~~~~~~~~~~~~~~~~ 3574 as 3574, - ~~~~~~~~~~~~~~~~~ 3575 as 3575, - ~~~~~~~~~~~~~~~~~ 3576 as 3576, - ~~~~~~~~~~~~~~~~~ 3577 as 3577, - ~~~~~~~~~~~~~~~~~ 3578 as 3578, - ~~~~~~~~~~~~~~~~~ 3579 as 3579, - ~~~~~~~~~~~~~~~~~ 3580 as 3580, - ~~~~~~~~~~~~~~~~~ 3581 as 3581, - ~~~~~~~~~~~~~~~~~ 3582 as 3582, - ~~~~~~~~~~~~~~~~~ 3583 as 3583, - ~~~~~~~~~~~~~~~~~ 3584 as 3584, - ~~~~~~~~~~~~~~~~~ 3585 as 3585, - ~~~~~~~~~~~~~~~~~ 3586 as 3586, - ~~~~~~~~~~~~~~~~~ 3587 as 3587, - ~~~~~~~~~~~~~~~~~ 3588 as 3588, - ~~~~~~~~~~~~~~~~~ 3589 as 3589, - ~~~~~~~~~~~~~~~~~ 3590 as 3590, - ~~~~~~~~~~~~~~~~~ 3591 as 3591, - ~~~~~~~~~~~~~~~~~ 3592 as 3592, - ~~~~~~~~~~~~~~~~~ 3593 as 3593, - ~~~~~~~~~~~~~~~~~ 3594 as 3594, - ~~~~~~~~~~~~~~~~~ 3595 as 3595, - ~~~~~~~~~~~~~~~~~ 3596 as 3596, - ~~~~~~~~~~~~~~~~~ 3597 as 3597, - ~~~~~~~~~~~~~~~~~ 3598 as 3598, - ~~~~~~~~~~~~~~~~~ 3599 as 3599, - ~~~~~~~~~~~~~~~~~ 3600 as 3600, - ~~~~~~~~~~~~~~~~~ 3601 as 3601, - ~~~~~~~~~~~~~~~~~ 3602 as 3602, - ~~~~~~~~~~~~~~~~~ 3603 as 3603, - ~~~~~~~~~~~~~~~~~ 3604 as 3604, - ~~~~~~~~~~~~~~~~~ 3605 as 3605, - ~~~~~~~~~~~~~~~~~ 3606 as 3606, - ~~~~~~~~~~~~~~~~~ 3607 as 3607, - ~~~~~~~~~~~~~~~~~ 3608 as 3608, - ~~~~~~~~~~~~~~~~~ 3609 as 3609, - ~~~~~~~~~~~~~~~~~ 3610 as 3610, - ~~~~~~~~~~~~~~~~~ 3611 as 3611, - ~~~~~~~~~~~~~~~~~ 3612 as 3612, - ~~~~~~~~~~~~~~~~~ 3613 as 3613, - ~~~~~~~~~~~~~~~~~ 3614 as 3614, - ~~~~~~~~~~~~~~~~~ 3615 as 3615, - ~~~~~~~~~~~~~~~~~ 3616 as 3616, - ~~~~~~~~~~~~~~~~~ 3617 as 3617, - ~~~~~~~~~~~~~~~~~ 3618 as 3618, - ~~~~~~~~~~~~~~~~~ 3619 as 3619, - ~~~~~~~~~~~~~~~~~ 3620 as 3620, - ~~~~~~~~~~~~~~~~~ 3621 as 3621, - ~~~~~~~~~~~~~~~~~ 3622 as 3622, - ~~~~~~~~~~~~~~~~~ 3623 as 3623, - ~~~~~~~~~~~~~~~~~ 3624 as 3624, - ~~~~~~~~~~~~~~~~~ 3625 as 3625, - ~~~~~~~~~~~~~~~~~ 3626 as 3626, - ~~~~~~~~~~~~~~~~~ 3627 as 3627, - ~~~~~~~~~~~~~~~~~ 3628 as 3628, - ~~~~~~~~~~~~~~~~~ 3629 as 3629, - ~~~~~~~~~~~~~~~~~ 3630 as 3630, - ~~~~~~~~~~~~~~~~~ 3631 as 3631, - ~~~~~~~~~~~~~~~~~ 3632 as 3632, - ~~~~~~~~~~~~~~~~~ 3633 as 3633, - ~~~~~~~~~~~~~~~~~ 3634 as 3634, - ~~~~~~~~~~~~~~~~~ 3635 as 3635, - ~~~~~~~~~~~~~~~~~ 3636 as 3636, - ~~~~~~~~~~~~~~~~~ 3637 as 3637, - ~~~~~~~~~~~~~~~~~ 3638 as 3638, - ~~~~~~~~~~~~~~~~~ 3639 as 3639, - ~~~~~~~~~~~~~~~~~ 3640 as 3640, - ~~~~~~~~~~~~~~~~~ 3641 as 3641, - ~~~~~~~~~~~~~~~~~ 3642 as 3642, - ~~~~~~~~~~~~~~~~~ 3643 as 3643, - ~~~~~~~~~~~~~~~~~ 3644 as 3644, - ~~~~~~~~~~~~~~~~~ 3645 as 3645, - ~~~~~~~~~~~~~~~~~ 3646 as 3646, - ~~~~~~~~~~~~~~~~~ 3647 as 3647, - ~~~~~~~~~~~~~~~~~ 3648 as 3648, - ~~~~~~~~~~~~~~~~~ 3649 as 3649, - ~~~~~~~~~~~~~~~~~ 3650 as 3650, - ~~~~~~~~~~~~~~~~~ 3651 as 3651, - ~~~~~~~~~~~~~~~~~ 3652 as 3652, - ~~~~~~~~~~~~~~~~~ 3653 as 3653, - ~~~~~~~~~~~~~~~~~ 3654 as 3654, - ~~~~~~~~~~~~~~~~~ 3655 as 3655, - ~~~~~~~~~~~~~~~~~ 3656 as 3656, - ~~~~~~~~~~~~~~~~~ 3657 as 3657, - ~~~~~~~~~~~~~~~~~ 3658 as 3658, - ~~~~~~~~~~~~~~~~~ 3659 as 3659, - ~~~~~~~~~~~~~~~~~ 3660 as 3660, - ~~~~~~~~~~~~~~~~~ 3661 as 3661, - ~~~~~~~~~~~~~~~~~ 3662 as 3662, - ~~~~~~~~~~~~~~~~~ 3663 as 3663, - ~~~~~~~~~~~~~~~~~ 3664 as 3664, - ~~~~~~~~~~~~~~~~~ 3665 as 3665, - ~~~~~~~~~~~~~~~~~ 3666 as 3666, - ~~~~~~~~~~~~~~~~~ 3667 as 3667, - ~~~~~~~~~~~~~~~~~ 3668 as 3668, - ~~~~~~~~~~~~~~~~~ 3669 as 3669, - ~~~~~~~~~~~~~~~~~ 3670 as 3670, - ~~~~~~~~~~~~~~~~~ 3671 as 3671, - ~~~~~~~~~~~~~~~~~ 3672 as 3672, - ~~~~~~~~~~~~~~~~~ 3673 as 3673, - ~~~~~~~~~~~~~~~~~ 3674 as 3674, - ~~~~~~~~~~~~~~~~~ 3675 as 3675, - ~~~~~~~~~~~~~~~~~ 3676 as 3676, - ~~~~~~~~~~~~~~~~~ 3677 as 3677, - ~~~~~~~~~~~~~~~~~ 3678 as 3678, - ~~~~~~~~~~~~~~~~~ 3679 as 3679, - ~~~~~~~~~~~~~~~~~ 3680 as 3680, - ~~~~~~~~~~~~~~~~~ 3681 as 3681, - ~~~~~~~~~~~~~~~~~ 3682 as 3682, - ~~~~~~~~~~~~~~~~~ 3683 as 3683, - ~~~~~~~~~~~~~~~~~ 3684 as 3684, - ~~~~~~~~~~~~~~~~~ 3685 as 3685, - ~~~~~~~~~~~~~~~~~ 3686 as 3686, - ~~~~~~~~~~~~~~~~~ 3687 as 3687, - ~~~~~~~~~~~~~~~~~ 3688 as 3688, - ~~~~~~~~~~~~~~~~~ 3689 as 3689, - ~~~~~~~~~~~~~~~~~ 3690 as 3690, - ~~~~~~~~~~~~~~~~~ 3691 as 3691, - ~~~~~~~~~~~~~~~~~ 3692 as 3692, - ~~~~~~~~~~~~~~~~~ 3693 as 3693, - ~~~~~~~~~~~~~~~~~ 3694 as 3694, - ~~~~~~~~~~~~~~~~~ 3695 as 3695, - ~~~~~~~~~~~~~~~~~ 3696 as 3696, - ~~~~~~~~~~~~~~~~~ 3697 as 3697, - ~~~~~~~~~~~~~~~~~ 3698 as 3698, - ~~~~~~~~~~~~~~~~~ 3699 as 3699, - ~~~~~~~~~~~~~~~~~ 3700 as 3700, - ~~~~~~~~~~~~~~~~~ 3701 as 3701, - ~~~~~~~~~~~~~~~~~ 3702 as 3702, - ~~~~~~~~~~~~~~~~~ 3703 as 3703, - ~~~~~~~~~~~~~~~~~ 3704 as 3704, - ~~~~~~~~~~~~~~~~~ 3705 as 3705, - ~~~~~~~~~~~~~~~~~ 3706 as 3706, - ~~~~~~~~~~~~~~~~~ 3707 as 3707, - ~~~~~~~~~~~~~~~~~ 3708 as 3708, - ~~~~~~~~~~~~~~~~~ 3709 as 3709, - ~~~~~~~~~~~~~~~~~ 3710 as 3710, - ~~~~~~~~~~~~~~~~~ 3711 as 3711, - ~~~~~~~~~~~~~~~~~ 3712 as 3712, - ~~~~~~~~~~~~~~~~~ 3713 as 3713, - ~~~~~~~~~~~~~~~~~ 3714 as 3714, - ~~~~~~~~~~~~~~~~~ 3715 as 3715, - ~~~~~~~~~~~~~~~~~ 3716 as 3716, - ~~~~~~~~~~~~~~~~~ 3717 as 3717, - ~~~~~~~~~~~~~~~~~ 3718 as 3718, - ~~~~~~~~~~~~~~~~~ 3719 as 3719, - ~~~~~~~~~~~~~~~~~ 3720 as 3720, - ~~~~~~~~~~~~~~~~~ 3721 as 3721, - ~~~~~~~~~~~~~~~~~ 3722 as 3722, - ~~~~~~~~~~~~~~~~~ 3723 as 3723, - ~~~~~~~~~~~~~~~~~ 3724 as 3724, - ~~~~~~~~~~~~~~~~~ 3725 as 3725, - ~~~~~~~~~~~~~~~~~ 3726 as 3726, - ~~~~~~~~~~~~~~~~~ 3727 as 3727, - ~~~~~~~~~~~~~~~~~ 3728 as 3728, - ~~~~~~~~~~~~~~~~~ 3729 as 3729, - ~~~~~~~~~~~~~~~~~ 3730 as 3730, - ~~~~~~~~~~~~~~~~~ 3731 as 3731, - ~~~~~~~~~~~~~~~~~ 3732 as 3732, - ~~~~~~~~~~~~~~~~~ 3733 as 3733, - ~~~~~~~~~~~~~~~~~ 3734 as 3734, - ~~~~~~~~~~~~~~~~~ 3735 as 3735, - ~~~~~~~~~~~~~~~~~ 3736 as 3736, - ~~~~~~~~~~~~~~~~~ 3737 as 3737, - ~~~~~~~~~~~~~~~~~ 3738 as 3738, - ~~~~~~~~~~~~~~~~~ 3739 as 3739, - ~~~~~~~~~~~~~~~~~ 3740 as 3740, - ~~~~~~~~~~~~~~~~~ 3741 as 3741, - ~~~~~~~~~~~~~~~~~ 3742 as 3742, - ~~~~~~~~~~~~~~~~~ 3743 as 3743, - ~~~~~~~~~~~~~~~~~ 3744 as 3744, - ~~~~~~~~~~~~~~~~~ 3745 as 3745, - ~~~~~~~~~~~~~~~~~ 3746 as 3746, - ~~~~~~~~~~~~~~~~~ 3747 as 3747, - ~~~~~~~~~~~~~~~~~ 3748 as 3748, - ~~~~~~~~~~~~~~~~~ 3749 as 3749, - ~~~~~~~~~~~~~~~~~ 3750 as 3750, - ~~~~~~~~~~~~~~~~~ 3751 as 3751, - ~~~~~~~~~~~~~~~~~ 3752 as 3752, - ~~~~~~~~~~~~~~~~~ 3753 as 3753, - ~~~~~~~~~~~~~~~~~ 3754 as 3754, - ~~~~~~~~~~~~~~~~~ 3755 as 3755, - ~~~~~~~~~~~~~~~~~ 3756 as 3756, - ~~~~~~~~~~~~~~~~~ 3757 as 3757, - ~~~~~~~~~~~~~~~~~ 3758 as 3758, - ~~~~~~~~~~~~~~~~~ 3759 as 3759, - ~~~~~~~~~~~~~~~~~ 3760 as 3760, - ~~~~~~~~~~~~~~~~~ 3761 as 3761, - ~~~~~~~~~~~~~~~~~ 3762 as 3762, - ~~~~~~~~~~~~~~~~~ 3763 as 3763, - ~~~~~~~~~~~~~~~~~ 3764 as 3764, - ~~~~~~~~~~~~~~~~~ 3765 as 3765, - ~~~~~~~~~~~~~~~~~ 3766 as 3766, - ~~~~~~~~~~~~~~~~~ 3767 as 3767, - ~~~~~~~~~~~~~~~~~ 3768 as 3768, - ~~~~~~~~~~~~~~~~~ 3769 as 3769, - ~~~~~~~~~~~~~~~~~ 3770 as 3770, - ~~~~~~~~~~~~~~~~~ 3771 as 3771, - ~~~~~~~~~~~~~~~~~ 3772 as 3772, - ~~~~~~~~~~~~~~~~~ 3773 as 3773, - ~~~~~~~~~~~~~~~~~ 3774 as 3774, - ~~~~~~~~~~~~~~~~~ 3775 as 3775, - ~~~~~~~~~~~~~~~~~ 3776 as 3776, - ~~~~~~~~~~~~~~~~~ 3777 as 3777, - ~~~~~~~~~~~~~~~~~ 3778 as 3778, - ~~~~~~~~~~~~~~~~~ 3779 as 3779, - ~~~~~~~~~~~~~~~~~ 3780 as 3780, - ~~~~~~~~~~~~~~~~~ 3781 as 3781, - ~~~~~~~~~~~~~~~~~ 3782 as 3782, - ~~~~~~~~~~~~~~~~~ 3783 as 3783, - ~~~~~~~~~~~~~~~~~ 3784 as 3784, - ~~~~~~~~~~~~~~~~~ 3785 as 3785, - ~~~~~~~~~~~~~~~~~ 3786 as 3786, - ~~~~~~~~~~~~~~~~~ 3787 as 3787, - ~~~~~~~~~~~~~~~~~ 3788 as 3788, - ~~~~~~~~~~~~~~~~~ 3789 as 3789, - ~~~~~~~~~~~~~~~~~ 3790 as 3790, - ~~~~~~~~~~~~~~~~~ 3791 as 3791, - ~~~~~~~~~~~~~~~~~ 3792 as 3792, - ~~~~~~~~~~~~~~~~~ 3793 as 3793, - ~~~~~~~~~~~~~~~~~ 3794 as 3794, - ~~~~~~~~~~~~~~~~~ 3795 as 3795, - ~~~~~~~~~~~~~~~~~ 3796 as 3796, - ~~~~~~~~~~~~~~~~~ 3797 as 3797, - ~~~~~~~~~~~~~~~~~ 3798 as 3798, - ~~~~~~~~~~~~~~~~~ 3799 as 3799, - ~~~~~~~~~~~~~~~~~ 3800 as 3800, - ~~~~~~~~~~~~~~~~~ 3801 as 3801, - ~~~~~~~~~~~~~~~~~ 3802 as 3802, - ~~~~~~~~~~~~~~~~~ 3803 as 3803, - ~~~~~~~~~~~~~~~~~ 3804 as 3804, - ~~~~~~~~~~~~~~~~~ 3805 as 3805, - ~~~~~~~~~~~~~~~~~ 3806 as 3806, - ~~~~~~~~~~~~~~~~~ 3807 as 3807, - ~~~~~~~~~~~~~~~~~ 3808 as 3808, - ~~~~~~~~~~~~~~~~~ 3809 as 3809, - ~~~~~~~~~~~~~~~~~ 3810 as 3810, - ~~~~~~~~~~~~~~~~~ 3811 as 3811, - ~~~~~~~~~~~~~~~~~ 3812 as 3812, - ~~~~~~~~~~~~~~~~~ 3813 as 3813, - ~~~~~~~~~~~~~~~~~ 3814 as 3814, - ~~~~~~~~~~~~~~~~~ 3815 as 3815, - ~~~~~~~~~~~~~~~~~ 3816 as 3816, - ~~~~~~~~~~~~~~~~~ 3817 as 3817, - ~~~~~~~~~~~~~~~~~ 3818 as 3818, - ~~~~~~~~~~~~~~~~~ 3819 as 3819, - ~~~~~~~~~~~~~~~~~ 3820 as 3820, - ~~~~~~~~~~~~~~~~~ 3821 as 3821, - ~~~~~~~~~~~~~~~~~ 3822 as 3822, - ~~~~~~~~~~~~~~~~~ 3823 as 3823, - ~~~~~~~~~~~~~~~~~ 3824 as 3824, - ~~~~~~~~~~~~~~~~~ 3825 as 3825, - ~~~~~~~~~~~~~~~~~ 3826 as 3826, - ~~~~~~~~~~~~~~~~~ 3827 as 3827, - ~~~~~~~~~~~~~~~~~ 3828 as 3828, - ~~~~~~~~~~~~~~~~~ 3829 as 3829, - ~~~~~~~~~~~~~~~~~ 3830 as 3830, - ~~~~~~~~~~~~~~~~~ 3831 as 3831, - ~~~~~~~~~~~~~~~~~ 3832 as 3832, - ~~~~~~~~~~~~~~~~~ 3833 as 3833, - ~~~~~~~~~~~~~~~~~ 3834 as 3834, - ~~~~~~~~~~~~~~~~~ 3835 as 3835, - ~~~~~~~~~~~~~~~~~ 3836 as 3836, - ~~~~~~~~~~~~~~~~~ 3837 as 3837, - ~~~~~~~~~~~~~~~~~ 3838 as 3838, - ~~~~~~~~~~~~~~~~~ 3839 as 3839, - ~~~~~~~~~~~~~~~~~ 3840 as 3840, - ~~~~~~~~~~~~~~~~~ 3841 as 3841, - ~~~~~~~~~~~~~~~~~ 3842 as 3842, - ~~~~~~~~~~~~~~~~~ 3843 as 3843, - ~~~~~~~~~~~~~~~~~ 3844 as 3844, - ~~~~~~~~~~~~~~~~~ 3845 as 3845, - ~~~~~~~~~~~~~~~~~ 3846 as 3846, - ~~~~~~~~~~~~~~~~~ 3847 as 3847, - ~~~~~~~~~~~~~~~~~ 3848 as 3848, - ~~~~~~~~~~~~~~~~~ 3849 as 3849, - ~~~~~~~~~~~~~~~~~ 3850 as 3850, - ~~~~~~~~~~~~~~~~~ 3851 as 3851, - ~~~~~~~~~~~~~~~~~ 3852 as 3852, - ~~~~~~~~~~~~~~~~~ 3853 as 3853, - ~~~~~~~~~~~~~~~~~ 3854 as 3854, - ~~~~~~~~~~~~~~~~~ 3855 as 3855, - ~~~~~~~~~~~~~~~~~ 3856 as 3856, - ~~~~~~~~~~~~~~~~~ 3857 as 3857, - ~~~~~~~~~~~~~~~~~ 3858 as 3858, - ~~~~~~~~~~~~~~~~~ 3859 as 3859, - ~~~~~~~~~~~~~~~~~ 3860 as 3860, - ~~~~~~~~~~~~~~~~~ 3861 as 3861, - ~~~~~~~~~~~~~~~~~ 3862 as 3862, - ~~~~~~~~~~~~~~~~~ 3863 as 3863, - ~~~~~~~~~~~~~~~~~ 3864 as 3864, - ~~~~~~~~~~~~~~~~~ 3865 as 3865, - ~~~~~~~~~~~~~~~~~ 3866 as 3866, - ~~~~~~~~~~~~~~~~~ 3867 as 3867, - ~~~~~~~~~~~~~~~~~ 3868 as 3868, - ~~~~~~~~~~~~~~~~~ 3869 as 3869, - ~~~~~~~~~~~~~~~~~ 3870 as 3870, - ~~~~~~~~~~~~~~~~~ 3871 as 3871, - ~~~~~~~~~~~~~~~~~ 3872 as 3872, - ~~~~~~~~~~~~~~~~~ 3873 as 3873, - ~~~~~~~~~~~~~~~~~ 3874 as 3874, - ~~~~~~~~~~~~~~~~~ 3875 as 3875, - ~~~~~~~~~~~~~~~~~ 3876 as 3876, - ~~~~~~~~~~~~~~~~~ 3877 as 3877, - ~~~~~~~~~~~~~~~~~ 3878 as 3878, - ~~~~~~~~~~~~~~~~~ 3879 as 3879, - ~~~~~~~~~~~~~~~~~ 3880 as 3880, - ~~~~~~~~~~~~~~~~~ 3881 as 3881, - ~~~~~~~~~~~~~~~~~ 3882 as 3882, - ~~~~~~~~~~~~~~~~~ 3883 as 3883, - ~~~~~~~~~~~~~~~~~ 3884 as 3884, - ~~~~~~~~~~~~~~~~~ 3885 as 3885, - ~~~~~~~~~~~~~~~~~ 3886 as 3886, - ~~~~~~~~~~~~~~~~~ 3887 as 3887, - ~~~~~~~~~~~~~~~~~ 3888 as 3888, - ~~~~~~~~~~~~~~~~~ 3889 as 3889, - ~~~~~~~~~~~~~~~~~ 3890 as 3890, - ~~~~~~~~~~~~~~~~~ 3891 as 3891, - ~~~~~~~~~~~~~~~~~ 3892 as 3892, - ~~~~~~~~~~~~~~~~~ 3893 as 3893, - ~~~~~~~~~~~~~~~~~ 3894 as 3894, - ~~~~~~~~~~~~~~~~~ 3895 as 3895, - ~~~~~~~~~~~~~~~~~ 3896 as 3896, - ~~~~~~~~~~~~~~~~~ 3897 as 3897, - ~~~~~~~~~~~~~~~~~ 3898 as 3898, - ~~~~~~~~~~~~~~~~~ 3899 as 3899, - ~~~~~~~~~~~~~~~~~ 3900 as 3900, - ~~~~~~~~~~~~~~~~~ 3901 as 3901, - ~~~~~~~~~~~~~~~~~ 3902 as 3902, - ~~~~~~~~~~~~~~~~~ 3903 as 3903, - ~~~~~~~~~~~~~~~~~ 3904 as 3904, - ~~~~~~~~~~~~~~~~~ 3905 as 3905, - ~~~~~~~~~~~~~~~~~ 3906 as 3906, - ~~~~~~~~~~~~~~~~~ 3907 as 3907, - ~~~~~~~~~~~~~~~~~ 3908 as 3908, - ~~~~~~~~~~~~~~~~~ 3909 as 3909, - ~~~~~~~~~~~~~~~~~ 3910 as 3910, - ~~~~~~~~~~~~~~~~~ 3911 as 3911, - ~~~~~~~~~~~~~~~~~ 3912 as 3912, - ~~~~~~~~~~~~~~~~~ 3913 as 3913, - ~~~~~~~~~~~~~~~~~ 3914 as 3914, - ~~~~~~~~~~~~~~~~~ 3915 as 3915, - ~~~~~~~~~~~~~~~~~ 3916 as 3916, - ~~~~~~~~~~~~~~~~~ 3917 as 3917, - ~~~~~~~~~~~~~~~~~ 3918 as 3918, - ~~~~~~~~~~~~~~~~~ 3919 as 3919, - ~~~~~~~~~~~~~~~~~ 3920 as 3920, - ~~~~~~~~~~~~~~~~~ 3921 as 3921, - ~~~~~~~~~~~~~~~~~ 3922 as 3922, - ~~~~~~~~~~~~~~~~~ 3923 as 3923, - ~~~~~~~~~~~~~~~~~ 3924 as 3924, - ~~~~~~~~~~~~~~~~~ 3925 as 3925, - ~~~~~~~~~~~~~~~~~ 3926 as 3926, - ~~~~~~~~~~~~~~~~~ 3927 as 3927, - ~~~~~~~~~~~~~~~~~ 3928 as 3928, - ~~~~~~~~~~~~~~~~~ 3929 as 3929, - ~~~~~~~~~~~~~~~~~ 3930 as 3930, - ~~~~~~~~~~~~~~~~~ 3931 as 3931, - ~~~~~~~~~~~~~~~~~ 3932 as 3932, - ~~~~~~~~~~~~~~~~~ 3933 as 3933, - ~~~~~~~~~~~~~~~~~ 3934 as 3934, - ~~~~~~~~~~~~~~~~~ 3935 as 3935, - ~~~~~~~~~~~~~~~~~ 3936 as 3936, - ~~~~~~~~~~~~~~~~~ 3937 as 3937, - ~~~~~~~~~~~~~~~~~ 3938 as 3938, - ~~~~~~~~~~~~~~~~~ 3939 as 3939, - ~~~~~~~~~~~~~~~~~ 3940 as 3940, - ~~~~~~~~~~~~~~~~~ 3941 as 3941, - ~~~~~~~~~~~~~~~~~ 3942 as 3942, - ~~~~~~~~~~~~~~~~~ 3943 as 3943, - ~~~~~~~~~~~~~~~~~ 3944 as 3944, - ~~~~~~~~~~~~~~~~~ 3945 as 3945, - ~~~~~~~~~~~~~~~~~ 3946 as 3946, - ~~~~~~~~~~~~~~~~~ 3947 as 3947, - ~~~~~~~~~~~~~~~~~ 3948 as 3948, - ~~~~~~~~~~~~~~~~~ 3949 as 3949, - ~~~~~~~~~~~~~~~~~ 3950 as 3950, - ~~~~~~~~~~~~~~~~~ 3951 as 3951, - ~~~~~~~~~~~~~~~~~ 3952 as 3952, - ~~~~~~~~~~~~~~~~~ 3953 as 3953, - ~~~~~~~~~~~~~~~~~ 3954 as 3954, - ~~~~~~~~~~~~~~~~~ 3955 as 3955, - ~~~~~~~~~~~~~~~~~ 3956 as 3956, - ~~~~~~~~~~~~~~~~~ 3957 as 3957, - ~~~~~~~~~~~~~~~~~ 3958 as 3958, - ~~~~~~~~~~~~~~~~~ 3959 as 3959, - ~~~~~~~~~~~~~~~~~ 3960 as 3960, - ~~~~~~~~~~~~~~~~~ 3961 as 3961, - ~~~~~~~~~~~~~~~~~ 3962 as 3962, - ~~~~~~~~~~~~~~~~~ 3963 as 3963, - ~~~~~~~~~~~~~~~~~ 3964 as 3964, - ~~~~~~~~~~~~~~~~~ 3965 as 3965, - ~~~~~~~~~~~~~~~~~ 3966 as 3966, - ~~~~~~~~~~~~~~~~~ 3967 as 3967, - ~~~~~~~~~~~~~~~~~ 3968 as 3968, - ~~~~~~~~~~~~~~~~~ 3969 as 3969, - ~~~~~~~~~~~~~~~~~ 3970 as 3970, - ~~~~~~~~~~~~~~~~~ 3971 as 3971, - ~~~~~~~~~~~~~~~~~ 3972 as 3972, - ~~~~~~~~~~~~~~~~~ 3973 as 3973, - ~~~~~~~~~~~~~~~~~ 3974 as 3974, - ~~~~~~~~~~~~~~~~~ 3975 as 3975, - ~~~~~~~~~~~~~~~~~ 3976 as 3976, - ~~~~~~~~~~~~~~~~~ 3977 as 3977, - ~~~~~~~~~~~~~~~~~ 3978 as 3978, - ~~~~~~~~~~~~~~~~~ 3979 as 3979, - ~~~~~~~~~~~~~~~~~ 3980 as 3980, - ~~~~~~~~~~~~~~~~~ 3981 as 3981, - ~~~~~~~~~~~~~~~~~ 3982 as 3982, - ~~~~~~~~~~~~~~~~~ 3983 as 3983, - ~~~~~~~~~~~~~~~~~ 3984 as 3984, - ~~~~~~~~~~~~~~~~~ 3985 as 3985, - ~~~~~~~~~~~~~~~~~ 3986 as 3986, - ~~~~~~~~~~~~~~~~~ 3987 as 3987, - ~~~~~~~~~~~~~~~~~ 3988 as 3988, - ~~~~~~~~~~~~~~~~~ 3989 as 3989, - ~~~~~~~~~~~~~~~~~ 3990 as 3990, - ~~~~~~~~~~~~~~~~~ 3991 as 3991, - ~~~~~~~~~~~~~~~~~ 3992 as 3992, - ~~~~~~~~~~~~~~~~~ 3993 as 3993, - ~~~~~~~~~~~~~~~~~ 3994 as 3994, - ~~~~~~~~~~~~~~~~~ 3995 as 3995, - ~~~~~~~~~~~~~~~~~ 3996 as 3996, - ~~~~~~~~~~~~~~~~~ 3997 as 3997, - ~~~~~~~~~~~~~~~~~ 3998 as 3998, - ~~~~~~~~~~~~~~~~~ 3999 as 3999, - ~~~~~~~~~~~~~~~~~ 4000 as 4000, - ~~~~~~~~~~~~~~~~~ 4001 as 4001, - ~~~~~~~~~~~~~~~~~ 4002 as 4002, - ~~~~~~~~~~~~~~~~~ 4003 as 4003, - ~~~~~~~~~~~~~~~~~ 4004 as 4004, - ~~~~~~~~~~~~~~~~~ 4005 as 4005, - ~~~~~~~~~~~~~~~~~ 4006 as 4006, - ~~~~~~~~~~~~~~~~~ 4007 as 4007, - ~~~~~~~~~~~~~~~~~ 4008 as 4008, - ~~~~~~~~~~~~~~~~~ 4009 as 4009, - ~~~~~~~~~~~~~~~~~ 4010 as 4010, - ~~~~~~~~~~~~~~~~~ 4011 as 4011, - ~~~~~~~~~~~~~~~~~ 4012 as 4012, - ~~~~~~~~~~~~~~~~~ 4013 as 4013, - ~~~~~~~~~~~~~~~~~ 4014 as 4014, - ~~~~~~~~~~~~~~~~~ 4015 as 4015, - ~~~~~~~~~~~~~~~~~ 4016 as 4016, - ~~~~~~~~~~~~~~~~~ 4017 as 4017, - ~~~~~~~~~~~~~~~~~ 4018 as 4018, - ~~~~~~~~~~~~~~~~~ 4019 as 4019, - ~~~~~~~~~~~~~~~~~ 4020 as 4020, - ~~~~~~~~~~~~~~~~~ 4021 as 4021, - ~~~~~~~~~~~~~~~~~ 4022 as 4022, - ~~~~~~~~~~~~~~~~~ 4023 as 4023, - ~~~~~~~~~~~~~~~~~ 4024 as 4024, - ~~~~~~~~~~~~~~~~~ 4025 as 4025, - ~~~~~~~~~~~~~~~~~ 4026 as 4026, - ~~~~~~~~~~~~~~~~~ 4027 as 4027, - ~~~~~~~~~~~~~~~~~ 4028 as 4028, - ~~~~~~~~~~~~~~~~~ 4029 as 4029, - ~~~~~~~~~~~~~~~~~ 4030 as 4030, - ~~~~~~~~~~~~~~~~~ 4031 as 4031, - ~~~~~~~~~~~~~~~~~ 4032 as 4032, - ~~~~~~~~~~~~~~~~~ 4033 as 4033, - ~~~~~~~~~~~~~~~~~ 4034 as 4034, - ~~~~~~~~~~~~~~~~~ 4035 as 4035, - ~~~~~~~~~~~~~~~~~ 4036 as 4036, - ~~~~~~~~~~~~~~~~~ 4037 as 4037, - ~~~~~~~~~~~~~~~~~ 4038 as 4038, - ~~~~~~~~~~~~~~~~~ 4039 as 4039, - ~~~~~~~~~~~~~~~~~ 4040 as 4040, - ~~~~~~~~~~~~~~~~~ 4041 as 4041, - ~~~~~~~~~~~~~~~~~ 4042 as 4042, - ~~~~~~~~~~~~~~~~~ 4043 as 4043, - ~~~~~~~~~~~~~~~~~ 4044 as 4044, - ~~~~~~~~~~~~~~~~~ 4045 as 4045, - ~~~~~~~~~~~~~~~~~ 4046 as 4046, - ~~~~~~~~~~~~~~~~~ 4047 as 4047, - ~~~~~~~~~~~~~~~~~ 4048 as 4048, - ~~~~~~~~~~~~~~~~~ 4049 as 4049, - ~~~~~~~~~~~~~~~~~ 4050 as 4050, - ~~~~~~~~~~~~~~~~~ 4051 as 4051, - ~~~~~~~~~~~~~~~~~ 4052 as 4052, - ~~~~~~~~~~~~~~~~~ 4053 as 4053, - ~~~~~~~~~~~~~~~~~ 4054 as 4054, - ~~~~~~~~~~~~~~~~~ 4055 as 4055, - ~~~~~~~~~~~~~~~~~ 4056 as 4056, - ~~~~~~~~~~~~~~~~~ 4057 as 4057, - ~~~~~~~~~~~~~~~~~ 4058 as 4058, - ~~~~~~~~~~~~~~~~~ 4059 as 4059, - ~~~~~~~~~~~~~~~~~ 4060 as 4060, - ~~~~~~~~~~~~~~~~~ 4061 as 4061, - ~~~~~~~~~~~~~~~~~ 4062 as 4062, - ~~~~~~~~~~~~~~~~~ 4063 as 4063, - ~~~~~~~~~~~~~~~~~ 4064 as 4064, - ~~~~~~~~~~~~~~~~~ 4065 as 4065, - ~~~~~~~~~~~~~~~~~ 4066 as 4066, - ~~~~~~~~~~~~~~~~~ 4067 as 4067, - ~~~~~~~~~~~~~~~~~ 4068 as 4068, - ~~~~~~~~~~~~~~~~~ 4069 as 4069, - ~~~~~~~~~~~~~~~~~ 4070 as 4070, - ~~~~~~~~~~~~~~~~~ 4071 as 4071, - ~~~~~~~~~~~~~~~~~ 4072 as 4072, - ~~~~~~~~~~~~~~~~~ 4073 as 4073, - ~~~~~~~~~~~~~~~~~ 4074 as 4074, - ~~~~~~~~~~~~~~~~~ 4075 as 4075, - ~~~~~~~~~~~~~~~~~ 4076 as 4076, - ~~~~~~~~~~~~~~~~~ 4077 as 4077, - ~~~~~~~~~~~~~~~~~ 4078 as 4078, - ~~~~~~~~~~~~~~~~~ 4079 as 4079, - ~~~~~~~~~~~~~~~~~ 4080 as 4080, - ~~~~~~~~~~~~~~~~~ 4081 as 4081, - ~~~~~~~~~~~~~~~~~ 4082 as 4082, - ~~~~~~~~~~~~~~~~~ 4083 as 4083, - ~~~~~~~~~~~~~~~~~ 4084 as 4084, - ~~~~~~~~~~~~~~~~~ 4085 as 4085, - ~~~~~~~~~~~~~~~~~ 4086 as 4086, - ~~~~~~~~~~~~~~~~~ 4087 as 4087, - ~~~~~~~~~~~~~~~~~ 4088 as 4088, - ~~~~~~~~~~~~~~~~~ 4089 as 4089, - ~~~~~~~~~~~~~~~~~ 4090 as 4090, - ~~~~~~~~~~~~~~~~~ 4091 as 4091, - ~~~~~~~~~~~~~~~~~ 4092 as 4092, - ~~~~~~~~~~~~~~~~~ 4093 as 4093, - ~~~~~~~~~~~~~~~~~ 4094 as 4094, - ~~~~~~~~~~~~~~~~~ 4095 as 4095, - ~~~~~~~~~~~~~~~~~ 4096 as 4096, - ~~~~~~~~~~~~~~~~~ 4097 as 4097, - ~~~~~~~~~~~~~~~~~ 4098 as 4098, - ~~~~~~~~~~~~~~~~~ 4099 as 4099, - ~~~~~~~~~~~~~~~~~ 4100 as 4100, - ~~~~~~~~~~~~~~~~~ 4101 as 4101, - ~~~~~~~~~~~~~~~~~ 4102 as 4102, - ~~~~~~~~~~~~~~~~~ 4103 as 4103, - ~~~~~~~~~~~~~~~~~ 4104 as 4104, - ~~~~~~~~~~~~~~~~~ 4105 as 4105, - ~~~~~~~~~~~~~~~~~ 4106 as 4106, - ~~~~~~~~~~~~~~~~~ 4107 as 4107, - ~~~~~~~~~~~~~~~~~ 4108 as 4108, - ~~~~~~~~~~~~~~~~~ 4109 as 4109, - ~~~~~~~~~~~~~~~~~ 4110 as 4110, - ~~~~~~~~~~~~~~~~~ 4111 as 4111, - ~~~~~~~~~~~~~~~~~ 4112 as 4112, - ~~~~~~~~~~~~~~~~~ 4113 as 4113, - ~~~~~~~~~~~~~~~~~ 4114 as 4114, - ~~~~~~~~~~~~~~~~~ 4115 as 4115, - ~~~~~~~~~~~~~~~~~ 4116 as 4116, - ~~~~~~~~~~~~~~~~~ 4117 as 4117, - ~~~~~~~~~~~~~~~~~ 4118 as 4118, - ~~~~~~~~~~~~~~~~~ 4119 as 4119, - ~~~~~~~~~~~~~~~~~ 4120 as 4120, - ~~~~~~~~~~~~~~~~~ 4121 as 4121, - ~~~~~~~~~~~~~~~~~ 4122 as 4122, - ~~~~~~~~~~~~~~~~~ 4123 as 4123, - ~~~~~~~~~~~~~~~~~ 4124 as 4124, - ~~~~~~~~~~~~~~~~~ 4125 as 4125, - ~~~~~~~~~~~~~~~~~ 4126 as 4126, - ~~~~~~~~~~~~~~~~~ 4127 as 4127, - ~~~~~~~~~~~~~~~~~ 4128 as 4128, - ~~~~~~~~~~~~~~~~~ 4129 as 4129, - ~~~~~~~~~~~~~~~~~ 4130 as 4130, - ~~~~~~~~~~~~~~~~~ 4131 as 4131, - ~~~~~~~~~~~~~~~~~ 4132 as 4132, - ~~~~~~~~~~~~~~~~~ 4133 as 4133, - ~~~~~~~~~~~~~~~~~ 4134 as 4134, - ~~~~~~~~~~~~~~~~~ 4135 as 4135, - ~~~~~~~~~~~~~~~~~ 4136 as 4136, - ~~~~~~~~~~~~~~~~~ 4137 as 4137, - ~~~~~~~~~~~~~~~~~ 4138 as 4138, - ~~~~~~~~~~~~~~~~~ 4139 as 4139, - ~~~~~~~~~~~~~~~~~ 4140 as 4140, - ~~~~~~~~~~~~~~~~~ 4141 as 4141, - ~~~~~~~~~~~~~~~~~ 4142 as 4142, - ~~~~~~~~~~~~~~~~~ 4143 as 4143, - ~~~~~~~~~~~~~~~~~ 4144 as 4144, - ~~~~~~~~~~~~~~~~~ 4145 as 4145, - ~~~~~~~~~~~~~~~~~ 4146 as 4146, - ~~~~~~~~~~~~~~~~~ 4147 as 4147, - ~~~~~~~~~~~~~~~~~ 4148 as 4148, - ~~~~~~~~~~~~~~~~~ 4149 as 4149, - ~~~~~~~~~~~~~~~~~ 4150 as 4150, - ~~~~~~~~~~~~~~~~~ 4151 as 4151, - ~~~~~~~~~~~~~~~~~ 4152 as 4152, - ~~~~~~~~~~~~~~~~~ 4153 as 4153, - ~~~~~~~~~~~~~~~~~ 4154 as 4154, - ~~~~~~~~~~~~~~~~~ 4155 as 4155, - ~~~~~~~~~~~~~~~~~ 4156 as 4156, - ~~~~~~~~~~~~~~~~~ 4157 as 4157, - ~~~~~~~~~~~~~~~~~ 4158 as 4158, - ~~~~~~~~~~~~~~~~~ 4159 as 4159, - ~~~~~~~~~~~~~~~~~ 4160 as 4160, - ~~~~~~~~~~~~~~~~~ 4161 as 4161, - ~~~~~~~~~~~~~~~~~ 4162 as 4162, - ~~~~~~~~~~~~~~~~~ 4163 as 4163, - ~~~~~~~~~~~~~~~~~ 4164 as 4164, - ~~~~~~~~~~~~~~~~~ 4165 as 4165, - ~~~~~~~~~~~~~~~~~ 4166 as 4166, - ~~~~~~~~~~~~~~~~~ 4167 as 4167, - ~~~~~~~~~~~~~~~~~ 4168 as 4168, - ~~~~~~~~~~~~~~~~~ 4169 as 4169, - ~~~~~~~~~~~~~~~~~ 4170 as 4170, - ~~~~~~~~~~~~~~~~~ 4171 as 4171, - ~~~~~~~~~~~~~~~~~ 4172 as 4172, - ~~~~~~~~~~~~~~~~~ 4173 as 4173, - ~~~~~~~~~~~~~~~~~ 4174 as 4174, - ~~~~~~~~~~~~~~~~~ 4175 as 4175, - ~~~~~~~~~~~~~~~~~ 4176 as 4176, - ~~~~~~~~~~~~~~~~~ 4177 as 4177, - ~~~~~~~~~~~~~~~~~ 4178 as 4178, - ~~~~~~~~~~~~~~~~~ 4179 as 4179, - ~~~~~~~~~~~~~~~~~ 4180 as 4180, - ~~~~~~~~~~~~~~~~~ 4181 as 4181, - ~~~~~~~~~~~~~~~~~ 4182 as 4182, - ~~~~~~~~~~~~~~~~~ 4183 as 4183, - ~~~~~~~~~~~~~~~~~ 4184 as 4184, - ~~~~~~~~~~~~~~~~~ 4185 as 4185, - ~~~~~~~~~~~~~~~~~ 4186 as 4186, - ~~~~~~~~~~~~~~~~~ 4187 as 4187, - ~~~~~~~~~~~~~~~~~ 4188 as 4188, - ~~~~~~~~~~~~~~~~~ 4189 as 4189, - ~~~~~~~~~~~~~~~~~ 4190 as 4190, - ~~~~~~~~~~~~~~~~~ 4191 as 4191, - ~~~~~~~~~~~~~~~~~ 4192 as 4192, - ~~~~~~~~~~~~~~~~~ 4193 as 4193, - ~~~~~~~~~~~~~~~~~ 4194 as 4194, - ~~~~~~~~~~~~~~~~~ 4195 as 4195, - ~~~~~~~~~~~~~~~~~ 4196 as 4196, - ~~~~~~~~~~~~~~~~~ 4197 as 4197, - ~~~~~~~~~~~~~~~~~ 4198 as 4198, - ~~~~~~~~~~~~~~~~~ 4199 as 4199, - ~~~~~~~~~~~~~~~~~ 4200 as 4200, - ~~~~~~~~~~~~~~~~~ 4201 as 4201, - ~~~~~~~~~~~~~~~~~ 4202 as 4202, - ~~~~~~~~~~~~~~~~~ 4203 as 4203, - ~~~~~~~~~~~~~~~~~ 4204 as 4204, - ~~~~~~~~~~~~~~~~~ 4205 as 4205, - ~~~~~~~~~~~~~~~~~ 4206 as 4206, - ~~~~~~~~~~~~~~~~~ 4207 as 4207, - ~~~~~~~~~~~~~~~~~ 4208 as 4208, - ~~~~~~~~~~~~~~~~~ 4209 as 4209, - ~~~~~~~~~~~~~~~~~ 4210 as 4210, - ~~~~~~~~~~~~~~~~~ 4211 as 4211, - ~~~~~~~~~~~~~~~~~ 4212 as 4212, - ~~~~~~~~~~~~~~~~~ 4213 as 4213, - ~~~~~~~~~~~~~~~~~ 4214 as 4214, - ~~~~~~~~~~~~~~~~~ 4215 as 4215, - ~~~~~~~~~~~~~~~~~ 4216 as 4216, - ~~~~~~~~~~~~~~~~~ 4217 as 4217, - ~~~~~~~~~~~~~~~~~ 4218 as 4218, - ~~~~~~~~~~~~~~~~~ 4219 as 4219, - ~~~~~~~~~~~~~~~~~ 4220 as 4220, - ~~~~~~~~~~~~~~~~~ 4221 as 4221, - ~~~~~~~~~~~~~~~~~ 4222 as 4222, - ~~~~~~~~~~~~~~~~~ 4223 as 4223, - ~~~~~~~~~~~~~~~~~ 4224 as 4224, - ~~~~~~~~~~~~~~~~~ 4225 as 4225, - ~~~~~~~~~~~~~~~~~ 4226 as 4226, - ~~~~~~~~~~~~~~~~~ 4227 as 4227, - ~~~~~~~~~~~~~~~~~ 4228 as 4228, - ~~~~~~~~~~~~~~~~~ 4229 as 4229, - ~~~~~~~~~~~~~~~~~ 4230 as 4230, - ~~~~~~~~~~~~~~~~~ 4231 as 4231, - ~~~~~~~~~~~~~~~~~ 4232 as 4232, - ~~~~~~~~~~~~~~~~~ 4233 as 4233, - ~~~~~~~~~~~~~~~~~ 4234 as 4234, - ~~~~~~~~~~~~~~~~~ 4235 as 4235, - ~~~~~~~~~~~~~~~~~ 4236 as 4236, - ~~~~~~~~~~~~~~~~~ 4237 as 4237, - ~~~~~~~~~~~~~~~~~ 4238 as 4238, - ~~~~~~~~~~~~~~~~~ 4239 as 4239, - ~~~~~~~~~~~~~~~~~ 4240 as 4240, - ~~~~~~~~~~~~~~~~~ 4241 as 4241, - ~~~~~~~~~~~~~~~~~ 4242 as 4242, - ~~~~~~~~~~~~~~~~~ 4243 as 4243, - ~~~~~~~~~~~~~~~~~ 4244 as 4244, - ~~~~~~~~~~~~~~~~~ 4245 as 4245, - ~~~~~~~~~~~~~~~~~ 4246 as 4246, - ~~~~~~~~~~~~~~~~~ 4247 as 4247, - ~~~~~~~~~~~~~~~~~ 4248 as 4248, - ~~~~~~~~~~~~~~~~~ 4249 as 4249, - ~~~~~~~~~~~~~~~~~ 4250 as 4250, - ~~~~~~~~~~~~~~~~~ 4251 as 4251, - ~~~~~~~~~~~~~~~~~ 4252 as 4252, - ~~~~~~~~~~~~~~~~~ 4253 as 4253, - ~~~~~~~~~~~~~~~~~ 4254 as 4254, - ~~~~~~~~~~~~~~~~~ 4255 as 4255, - ~~~~~~~~~~~~~~~~~ 4256 as 4256, - ~~~~~~~~~~~~~~~~~ 4257 as 4257, - ~~~~~~~~~~~~~~~~~ 4258 as 4258, - ~~~~~~~~~~~~~~~~~ 4259 as 4259, - ~~~~~~~~~~~~~~~~~ 4260 as 4260, - ~~~~~~~~~~~~~~~~~ 4261 as 4261, - ~~~~~~~~~~~~~~~~~ 4262 as 4262, - ~~~~~~~~~~~~~~~~~ 4263 as 4263, - ~~~~~~~~~~~~~~~~~ 4264 as 4264, - ~~~~~~~~~~~~~~~~~ 4265 as 4265, - ~~~~~~~~~~~~~~~~~ 4266 as 4266, - ~~~~~~~~~~~~~~~~~ 4267 as 4267, - ~~~~~~~~~~~~~~~~~ 4268 as 4268, - ~~~~~~~~~~~~~~~~~ 4269 as 4269, - ~~~~~~~~~~~~~~~~~ 4270 as 4270, - ~~~~~~~~~~~~~~~~~ 4271 as 4271, - ~~~~~~~~~~~~~~~~~ 4272 as 4272, - ~~~~~~~~~~~~~~~~~ 4273 as 4273, - ~~~~~~~~~~~~~~~~~ 4274 as 4274, - ~~~~~~~~~~~~~~~~~ 4275 as 4275, - ~~~~~~~~~~~~~~~~~ 4276 as 4276, - ~~~~~~~~~~~~~~~~~ 4277 as 4277, - ~~~~~~~~~~~~~~~~~ 4278 as 4278, - ~~~~~~~~~~~~~~~~~ 4279 as 4279, - ~~~~~~~~~~~~~~~~~ 4280 as 4280, - ~~~~~~~~~~~~~~~~~ 4281 as 4281, - ~~~~~~~~~~~~~~~~~ 4282 as 4282, - ~~~~~~~~~~~~~~~~~ 4283 as 4283, - ~~~~~~~~~~~~~~~~~ 4284 as 4284, - ~~~~~~~~~~~~~~~~~ 4285 as 4285, - ~~~~~~~~~~~~~~~~~ 4286 as 4286, - ~~~~~~~~~~~~~~~~~ 4287 as 4287, - ~~~~~~~~~~~~~~~~~ 4288 as 4288, - ~~~~~~~~~~~~~~~~~ 4289 as 4289, - ~~~~~~~~~~~~~~~~~ 4290 as 4290, - ~~~~~~~~~~~~~~~~~ 4291 as 4291, - ~~~~~~~~~~~~~~~~~ 4292 as 4292, - ~~~~~~~~~~~~~~~~~ 4293 as 4293, - ~~~~~~~~~~~~~~~~~ 4294 as 4294, - ~~~~~~~~~~~~~~~~~ 4295 as 4295, - ~~~~~~~~~~~~~~~~~ 4296 as 4296, - ~~~~~~~~~~~~~~~~~ 4297 as 4297, - ~~~~~~~~~~~~~~~~~ 4298 as 4298, - ~~~~~~~~~~~~~~~~~ 4299 as 4299, - ~~~~~~~~~~~~~~~~~ 4300 as 4300, - ~~~~~~~~~~~~~~~~~ 4301 as 4301, - ~~~~~~~~~~~~~~~~~ 4302 as 4302, - ~~~~~~~~~~~~~~~~~ 4303 as 4303, - ~~~~~~~~~~~~~~~~~ 4304 as 4304, - ~~~~~~~~~~~~~~~~~ 4305 as 4305, - ~~~~~~~~~~~~~~~~~ 4306 as 4306, - ~~~~~~~~~~~~~~~~~ 4307 as 4307, - ~~~~~~~~~~~~~~~~~ 4308 as 4308, - ~~~~~~~~~~~~~~~~~ 4309 as 4309, - ~~~~~~~~~~~~~~~~~ 4310 as 4310, - ~~~~~~~~~~~~~~~~~ 4311 as 4311, - ~~~~~~~~~~~~~~~~~ 4312 as 4312, - ~~~~~~~~~~~~~~~~~ 4313 as 4313, - ~~~~~~~~~~~~~~~~~ 4314 as 4314, - ~~~~~~~~~~~~~~~~~ 4315 as 4315, - ~~~~~~~~~~~~~~~~~ 4316 as 4316, - ~~~~~~~~~~~~~~~~~ 4317 as 4317, - ~~~~~~~~~~~~~~~~~ 4318 as 4318, - ~~~~~~~~~~~~~~~~~ 4319 as 4319, - ~~~~~~~~~~~~~~~~~ 4320 as 4320, - ~~~~~~~~~~~~~~~~~ 4321 as 4321, - ~~~~~~~~~~~~~~~~~ 4322 as 4322, - ~~~~~~~~~~~~~~~~~ 4323 as 4323, - ~~~~~~~~~~~~~~~~~ 4324 as 4324, - ~~~~~~~~~~~~~~~~~ 4325 as 4325, - ~~~~~~~~~~~~~~~~~ 4326 as 4326, - ~~~~~~~~~~~~~~~~~ 4327 as 4327, - ~~~~~~~~~~~~~~~~~ 4328 as 4328, - ~~~~~~~~~~~~~~~~~ 4329 as 4329, - ~~~~~~~~~~~~~~~~~ 4330 as 4330, - ~~~~~~~~~~~~~~~~~ 4331 as 4331, - ~~~~~~~~~~~~~~~~~ 4332 as 4332, - ~~~~~~~~~~~~~~~~~ 4333 as 4333, - ~~~~~~~~~~~~~~~~~ 4334 as 4334, - ~~~~~~~~~~~~~~~~~ 4335 as 4335, - ~~~~~~~~~~~~~~~~~ 4336 as 4336, - ~~~~~~~~~~~~~~~~~ 4337 as 4337, - ~~~~~~~~~~~~~~~~~ 4338 as 4338, - ~~~~~~~~~~~~~~~~~ 4339 as 4339, - ~~~~~~~~~~~~~~~~~ 4340 as 4340, - ~~~~~~~~~~~~~~~~~ 4341 as 4341, - ~~~~~~~~~~~~~~~~~ 4342 as 4342, - ~~~~~~~~~~~~~~~~~ 4343 as 4343, - ~~~~~~~~~~~~~~~~~ 4344 as 4344, - ~~~~~~~~~~~~~~~~~ 4345 as 4345, - ~~~~~~~~~~~~~~~~~ 4346 as 4346, - ~~~~~~~~~~~~~~~~~ 4347 as 4347, - ~~~~~~~~~~~~~~~~~ 4348 as 4348, - ~~~~~~~~~~~~~~~~~ 4349 as 4349, - ~~~~~~~~~~~~~~~~~ 4350 as 4350, - ~~~~~~~~~~~~~~~~~ 4351 as 4351, - ~~~~~~~~~~~~~~~~~ 4352 as 4352, - ~~~~~~~~~~~~~~~~~ 4353 as 4353, - ~~~~~~~~~~~~~~~~~ 4354 as 4354, - ~~~~~~~~~~~~~~~~~ 4355 as 4355, - ~~~~~~~~~~~~~~~~~ 4356 as 4356, - ~~~~~~~~~~~~~~~~~ 4357 as 4357, - ~~~~~~~~~~~~~~~~~ 4358 as 4358, - ~~~~~~~~~~~~~~~~~ 4359 as 4359, - ~~~~~~~~~~~~~~~~~ 4360 as 4360, - ~~~~~~~~~~~~~~~~~ 4361 as 4361, - ~~~~~~~~~~~~~~~~~ 4362 as 4362, - ~~~~~~~~~~~~~~~~~ 4363 as 4363, - ~~~~~~~~~~~~~~~~~ 4364 as 4364, - ~~~~~~~~~~~~~~~~~ 4365 as 4365, - ~~~~~~~~~~~~~~~~~ 4366 as 4366, - ~~~~~~~~~~~~~~~~~ 4367 as 4367, - ~~~~~~~~~~~~~~~~~ 4368 as 4368, - ~~~~~~~~~~~~~~~~~ 4369 as 4369, - ~~~~~~~~~~~~~~~~~ 4370 as 4370, - ~~~~~~~~~~~~~~~~~ 4371 as 4371, - ~~~~~~~~~~~~~~~~~ 4372 as 4372, - ~~~~~~~~~~~~~~~~~ 4373 as 4373, - ~~~~~~~~~~~~~~~~~ 4374 as 4374, - ~~~~~~~~~~~~~~~~~ 4375 as 4375, - ~~~~~~~~~~~~~~~~~ 4376 as 4376, - ~~~~~~~~~~~~~~~~~ 4377 as 4377, - ~~~~~~~~~~~~~~~~~ 4378 as 4378, - ~~~~~~~~~~~~~~~~~ 4379 as 4379, - ~~~~~~~~~~~~~~~~~ 4380 as 4380, - ~~~~~~~~~~~~~~~~~ 4381 as 4381, - ~~~~~~~~~~~~~~~~~ 4382 as 4382, - ~~~~~~~~~~~~~~~~~ 4383 as 4383, - ~~~~~~~~~~~~~~~~~ 4384 as 4384, - ~~~~~~~~~~~~~~~~~ 4385 as 4385, - ~~~~~~~~~~~~~~~~~ 4386 as 4386, - ~~~~~~~~~~~~~~~~~ 4387 as 4387, - ~~~~~~~~~~~~~~~~~ 4388 as 4388, - ~~~~~~~~~~~~~~~~~ 4389 as 4389, - ~~~~~~~~~~~~~~~~~ 4390 as 4390, - ~~~~~~~~~~~~~~~~~ 4391 as 4391, - ~~~~~~~~~~~~~~~~~ 4392 as 4392, - ~~~~~~~~~~~~~~~~~ 4393 as 4393, - ~~~~~~~~~~~~~~~~~ 4394 as 4394, - ~~~~~~~~~~~~~~~~~ 4395 as 4395, - ~~~~~~~~~~~~~~~~~ 4396 as 4396, - ~~~~~~~~~~~~~~~~~ 4397 as 4397, - ~~~~~~~~~~~~~~~~~ 4398 as 4398, - ~~~~~~~~~~~~~~~~~ 4399 as 4399, - ~~~~~~~~~~~~~~~~~ 4400 as 4400, - ~~~~~~~~~~~~~~~~~ 4401 as 4401, - ~~~~~~~~~~~~~~~~~ 4402 as 4402, - ~~~~~~~~~~~~~~~~~ 4403 as 4403, - ~~~~~~~~~~~~~~~~~ 4404 as 4404, - ~~~~~~~~~~~~~~~~~ 4405 as 4405, - ~~~~~~~~~~~~~~~~~ 4406 as 4406, - ~~~~~~~~~~~~~~~~~ 4407 as 4407, - ~~~~~~~~~~~~~~~~~ 4408 as 4408, - ~~~~~~~~~~~~~~~~~ 4409 as 4409, - ~~~~~~~~~~~~~~~~~ 4410 as 4410, - ~~~~~~~~~~~~~~~~~ 4411 as 4411, - ~~~~~~~~~~~~~~~~~ 4412 as 4412, - ~~~~~~~~~~~~~~~~~ 4413 as 4413, - ~~~~~~~~~~~~~~~~~ 4414 as 4414, - ~~~~~~~~~~~~~~~~~ 4415 as 4415, - ~~~~~~~~~~~~~~~~~ 4416 as 4416, - ~~~~~~~~~~~~~~~~~ 4417 as 4417, - ~~~~~~~~~~~~~~~~~ 4418 as 4418, - ~~~~~~~~~~~~~~~~~ 4419 as 4419, - ~~~~~~~~~~~~~~~~~ 4420 as 4420, - ~~~~~~~~~~~~~~~~~ 4421 as 4421, - ~~~~~~~~~~~~~~~~~ 4422 as 4422, - ~~~~~~~~~~~~~~~~~ 4423 as 4423, - ~~~~~~~~~~~~~~~~~ 4424 as 4424, - ~~~~~~~~~~~~~~~~~ 4425 as 4425, - ~~~~~~~~~~~~~~~~~ 4426 as 4426, - ~~~~~~~~~~~~~~~~~ 4427 as 4427, - ~~~~~~~~~~~~~~~~~ 4428 as 4428, - ~~~~~~~~~~~~~~~~~ 4429 as 4429, - ~~~~~~~~~~~~~~~~~ 4430 as 4430, - ~~~~~~~~~~~~~~~~~ 4431 as 4431, - ~~~~~~~~~~~~~~~~~ 4432 as 4432, - ~~~~~~~~~~~~~~~~~ 4433 as 4433, - ~~~~~~~~~~~~~~~~~ 4434 as 4434, - ~~~~~~~~~~~~~~~~~ 4435 as 4435, - ~~~~~~~~~~~~~~~~~ 4436 as 4436, - ~~~~~~~~~~~~~~~~~ 4437 as 4437, - ~~~~~~~~~~~~~~~~~ 4438 as 4438, - ~~~~~~~~~~~~~~~~~ 4439 as 4439, - ~~~~~~~~~~~~~~~~~ 4440 as 4440, - ~~~~~~~~~~~~~~~~~ 4441 as 4441, - ~~~~~~~~~~~~~~~~~ 4442 as 4442, - ~~~~~~~~~~~~~~~~~ 4443 as 4443, - ~~~~~~~~~~~~~~~~~ 4444 as 4444, - ~~~~~~~~~~~~~~~~~ 4445 as 4445, - ~~~~~~~~~~~~~~~~~ 4446 as 4446, - ~~~~~~~~~~~~~~~~~ 4447 as 4447, - ~~~~~~~~~~~~~~~~~ 4448 as 4448, - ~~~~~~~~~~~~~~~~~ 4449 as 4449, - ~~~~~~~~~~~~~~~~~ 4450 as 4450, - ~~~~~~~~~~~~~~~~~ 4451 as 4451, - ~~~~~~~~~~~~~~~~~ 4452 as 4452, - ~~~~~~~~~~~~~~~~~ 4453 as 4453, - ~~~~~~~~~~~~~~~~~ 4454 as 4454, - ~~~~~~~~~~~~~~~~~ 4455 as 4455, - ~~~~~~~~~~~~~~~~~ 4456 as 4456, - ~~~~~~~~~~~~~~~~~ 4457 as 4457, - ~~~~~~~~~~~~~~~~~ 4458 as 4458, - ~~~~~~~~~~~~~~~~~ 4459 as 4459, - ~~~~~~~~~~~~~~~~~ 4460 as 4460, - ~~~~~~~~~~~~~~~~~ 4461 as 4461, - ~~~~~~~~~~~~~~~~~ 4462 as 4462, - ~~~~~~~~~~~~~~~~~ 4463 as 4463, - ~~~~~~~~~~~~~~~~~ 4464 as 4464, - ~~~~~~~~~~~~~~~~~ 4465 as 4465, - ~~~~~~~~~~~~~~~~~ 4466 as 4466, - ~~~~~~~~~~~~~~~~~ 4467 as 4467, - ~~~~~~~~~~~~~~~~~ 4468 as 4468, - ~~~~~~~~~~~~~~~~~ 4469 as 4469, - ~~~~~~~~~~~~~~~~~ 4470 as 4470, - ~~~~~~~~~~~~~~~~~ 4471 as 4471, - ~~~~~~~~~~~~~~~~~ 4472 as 4472, - ~~~~~~~~~~~~~~~~~ 4473 as 4473, - ~~~~~~~~~~~~~~~~~ 4474 as 4474, - ~~~~~~~~~~~~~~~~~ 4475 as 4475, - ~~~~~~~~~~~~~~~~~ 4476 as 4476, - ~~~~~~~~~~~~~~~~~ 4477 as 4477, - ~~~~~~~~~~~~~~~~~ 4478 as 4478, - ~~~~~~~~~~~~~~~~~ 4479 as 4479, - ~~~~~~~~~~~~~~~~~ 4480 as 4480, - ~~~~~~~~~~~~~~~~~ 4481 as 4481, - ~~~~~~~~~~~~~~~~~ 4482 as 4482, - ~~~~~~~~~~~~~~~~~ 4483 as 4483, - ~~~~~~~~~~~~~~~~~ 4484 as 4484, - ~~~~~~~~~~~~~~~~~ 4485 as 4485, - ~~~~~~~~~~~~~~~~~ 4486 as 4486, - ~~~~~~~~~~~~~~~~~ 4487 as 4487, - ~~~~~~~~~~~~~~~~~ 4488 as 4488, - ~~~~~~~~~~~~~~~~~ 4489 as 4489, - ~~~~~~~~~~~~~~~~~ 4490 as 4490, - ~~~~~~~~~~~~~~~~~ 4491 as 4491, - ~~~~~~~~~~~~~~~~~ 4492 as 4492, - ~~~~~~~~~~~~~~~~~ 4493 as 4493, - ~~~~~~~~~~~~~~~~~ 4494 as 4494, - ~~~~~~~~~~~~~~~~~ 4495 as 4495, - ~~~~~~~~~~~~~~~~~ 4496 as 4496, - ~~~~~~~~~~~~~~~~~ 4497 as 4497, - ~~~~~~~~~~~~~~~~~ 4498 as 4498, - ~~~~~~~~~~~~~~~~~ 4499 as 4499, - ~~~~~~~~~~~~~~~~~ 4500 as 4500, - ~~~~~~~~~~~~~~~~~ 4501 as 4501, - ~~~~~~~~~~~~~~~~~ 4502 as 4502, - ~~~~~~~~~~~~~~~~~ 4503 as 4503, - ~~~~~~~~~~~~~~~~~ 4504 as 4504, - ~~~~~~~~~~~~~~~~~ 4505 as 4505, - ~~~~~~~~~~~~~~~~~ 4506 as 4506, - ~~~~~~~~~~~~~~~~~ 4507 as 4507, - ~~~~~~~~~~~~~~~~~ 4508 as 4508, - ~~~~~~~~~~~~~~~~~ 4509 as 4509, - ~~~~~~~~~~~~~~~~~ 4510 as 4510, - ~~~~~~~~~~~~~~~~~ 4511 as 4511, - ~~~~~~~~~~~~~~~~~ 4512 as 4512, - ~~~~~~~~~~~~~~~~~ 4513 as 4513, - ~~~~~~~~~~~~~~~~~ 4514 as 4514, - ~~~~~~~~~~~~~~~~~ 4515 as 4515, - ~~~~~~~~~~~~~~~~~ 4516 as 4516, - ~~~~~~~~~~~~~~~~~ 4517 as 4517, - ~~~~~~~~~~~~~~~~~ 4518 as 4518, - ~~~~~~~~~~~~~~~~~ 4519 as 4519, - ~~~~~~~~~~~~~~~~~ 4520 as 4520, - ~~~~~~~~~~~~~~~~~ 4521 as 4521, - ~~~~~~~~~~~~~~~~~ 4522 as 4522, - ~~~~~~~~~~~~~~~~~ 4523 as 4523, - ~~~~~~~~~~~~~~~~~ 4524 as 4524, - ~~~~~~~~~~~~~~~~~ 4525 as 4525, - ~~~~~~~~~~~~~~~~~ 4526 as 4526, - ~~~~~~~~~~~~~~~~~ 4527 as 4527, - ~~~~~~~~~~~~~~~~~ 4528 as 4528, - ~~~~~~~~~~~~~~~~~ 4529 as 4529, - ~~~~~~~~~~~~~~~~~ 4530 as 4530, - ~~~~~~~~~~~~~~~~~ 4531 as 4531, - ~~~~~~~~~~~~~~~~~ 4532 as 4532, - ~~~~~~~~~~~~~~~~~ 4533 as 4533, - ~~~~~~~~~~~~~~~~~ 4534 as 4534, - ~~~~~~~~~~~~~~~~~ 4535 as 4535, - ~~~~~~~~~~~~~~~~~ 4536 as 4536, - ~~~~~~~~~~~~~~~~~ 4537 as 4537, - ~~~~~~~~~~~~~~~~~ 4538 as 4538, - ~~~~~~~~~~~~~~~~~ 4539 as 4539, - ~~~~~~~~~~~~~~~~~ 4540 as 4540, - ~~~~~~~~~~~~~~~~~ 4541 as 4541, - ~~~~~~~~~~~~~~~~~ 4542 as 4542, - ~~~~~~~~~~~~~~~~~ 4543 as 4543, - ~~~~~~~~~~~~~~~~~ 4544 as 4544, - ~~~~~~~~~~~~~~~~~ 4545 as 4545, - ~~~~~~~~~~~~~~~~~ 4546 as 4546, - ~~~~~~~~~~~~~~~~~ 4547 as 4547, - ~~~~~~~~~~~~~~~~~ 4548 as 4548, - ~~~~~~~~~~~~~~~~~ 4549 as 4549, - ~~~~~~~~~~~~~~~~~ 4550 as 4550, - ~~~~~~~~~~~~~~~~~ 4551 as 4551, - ~~~~~~~~~~~~~~~~~ 4552 as 4552, - ~~~~~~~~~~~~~~~~~ 4553 as 4553, - ~~~~~~~~~~~~~~~~~ 4554 as 4554, - ~~~~~~~~~~~~~~~~~ 4555 as 4555, - ~~~~~~~~~~~~~~~~~ 4556 as 4556, - ~~~~~~~~~~~~~~~~~ 4557 as 4557, - ~~~~~~~~~~~~~~~~~ 4558 as 4558, - ~~~~~~~~~~~~~~~~~ 4559 as 4559, - ~~~~~~~~~~~~~~~~~ 4560 as 4560, - ~~~~~~~~~~~~~~~~~ 4561 as 4561, - ~~~~~~~~~~~~~~~~~ 4562 as 4562, - ~~~~~~~~~~~~~~~~~ 4563 as 4563, - ~~~~~~~~~~~~~~~~~ 4564 as 4564, - ~~~~~~~~~~~~~~~~~ 4565 as 4565, - ~~~~~~~~~~~~~~~~~ 4566 as 4566, - ~~~~~~~~~~~~~~~~~ 4567 as 4567, - ~~~~~~~~~~~~~~~~~ 4568 as 4568, - ~~~~~~~~~~~~~~~~~ 4569 as 4569, - ~~~~~~~~~~~~~~~~~ 4570 as 4570, - ~~~~~~~~~~~~~~~~~ 4571 as 4571, - ~~~~~~~~~~~~~~~~~ 4572 as 4572, - ~~~~~~~~~~~~~~~~~ 4573 as 4573, - ~~~~~~~~~~~~~~~~~ 4574 as 4574, - ~~~~~~~~~~~~~~~~~ 4575 as 4575, - ~~~~~~~~~~~~~~~~~ 4576 as 4576, - ~~~~~~~~~~~~~~~~~ 4577 as 4577, - ~~~~~~~~~~~~~~~~~ 4578 as 4578, - ~~~~~~~~~~~~~~~~~ 4579 as 4579, - ~~~~~~~~~~~~~~~~~ 4580 as 4580, - ~~~~~~~~~~~~~~~~~ 4581 as 4581, - ~~~~~~~~~~~~~~~~~ 4582 as 4582, - ~~~~~~~~~~~~~~~~~ 4583 as 4583, - ~~~~~~~~~~~~~~~~~ 4584 as 4584, - ~~~~~~~~~~~~~~~~~ 4585 as 4585, - ~~~~~~~~~~~~~~~~~ 4586 as 4586, - ~~~~~~~~~~~~~~~~~ 4587 as 4587, - ~~~~~~~~~~~~~~~~~ 4588 as 4588, - ~~~~~~~~~~~~~~~~~ 4589 as 4589, - ~~~~~~~~~~~~~~~~~ 4590 as 4590, - ~~~~~~~~~~~~~~~~~ 4591 as 4591, - ~~~~~~~~~~~~~~~~~ 4592 as 4592, - ~~~~~~~~~~~~~~~~~ 4593 as 4593, - ~~~~~~~~~~~~~~~~~ 4594 as 4594, - ~~~~~~~~~~~~~~~~~ 4595 as 4595, - ~~~~~~~~~~~~~~~~~ 4596 as 4596, - ~~~~~~~~~~~~~~~~~ 4597 as 4597, - ~~~~~~~~~~~~~~~~~ 4598 as 4598, - ~~~~~~~~~~~~~~~~~ 4599 as 4599, - ~~~~~~~~~~~~~~~~~ 4600 as 4600, - ~~~~~~~~~~~~~~~~~ 4601 as 4601, - ~~~~~~~~~~~~~~~~~ 4602 as 4602, - ~~~~~~~~~~~~~~~~~ 4603 as 4603, - ~~~~~~~~~~~~~~~~~ 4604 as 4604, - ~~~~~~~~~~~~~~~~~ 4605 as 4605, - ~~~~~~~~~~~~~~~~~ 4606 as 4606, - ~~~~~~~~~~~~~~~~~ 4607 as 4607, - ~~~~~~~~~~~~~~~~~ 4608 as 4608, - ~~~~~~~~~~~~~~~~~ 4609 as 4609, - ~~~~~~~~~~~~~~~~~ 4610 as 4610, - ~~~~~~~~~~~~~~~~~ 4611 as 4611, - ~~~~~~~~~~~~~~~~~ 4612 as 4612, - ~~~~~~~~~~~~~~~~~ 4613 as 4613, - ~~~~~~~~~~~~~~~~~ 4614 as 4614, - ~~~~~~~~~~~~~~~~~ 4615 as 4615, - ~~~~~~~~~~~~~~~~~ 4616 as 4616, - ~~~~~~~~~~~~~~~~~ 4617 as 4617, - ~~~~~~~~~~~~~~~~~ 4618 as 4618, - ~~~~~~~~~~~~~~~~~ 4619 as 4619, - ~~~~~~~~~~~~~~~~~ 4620 as 4620, - ~~~~~~~~~~~~~~~~~ 4621 as 4621, - ~~~~~~~~~~~~~~~~~ 4622 as 4622, - ~~~~~~~~~~~~~~~~~ 4623 as 4623, - ~~~~~~~~~~~~~~~~~ 4624 as 4624, - ~~~~~~~~~~~~~~~~~ 4625 as 4625, - ~~~~~~~~~~~~~~~~~ 4626 as 4626, - ~~~~~~~~~~~~~~~~~ 4627 as 4627, - ~~~~~~~~~~~~~~~~~ 4628 as 4628, - ~~~~~~~~~~~~~~~~~ 4629 as 4629, - ~~~~~~~~~~~~~~~~~ 4630 as 4630, - ~~~~~~~~~~~~~~~~~ 4631 as 4631, - ~~~~~~~~~~~~~~~~~ 4632 as 4632, - ~~~~~~~~~~~~~~~~~ 4633 as 4633, - ~~~~~~~~~~~~~~~~~ 4634 as 4634, - ~~~~~~~~~~~~~~~~~ 4635 as 4635, - ~~~~~~~~~~~~~~~~~ 4636 as 4636, - ~~~~~~~~~~~~~~~~~ 4637 as 4637, - ~~~~~~~~~~~~~~~~~ 4638 as 4638, - ~~~~~~~~~~~~~~~~~ 4639 as 4639, - ~~~~~~~~~~~~~~~~~ 4640 as 4640, - ~~~~~~~~~~~~~~~~~ 4641 as 4641, - ~~~~~~~~~~~~~~~~~ 4642 as 4642, - ~~~~~~~~~~~~~~~~~ 4643 as 4643, - ~~~~~~~~~~~~~~~~~ 4644 as 4644, - ~~~~~~~~~~~~~~~~~ 4645 as 4645, - ~~~~~~~~~~~~~~~~~ 4646 as 4646, - ~~~~~~~~~~~~~~~~~ 4647 as 4647, - ~~~~~~~~~~~~~~~~~ 4648 as 4648, - ~~~~~~~~~~~~~~~~~ 4649 as 4649, - ~~~~~~~~~~~~~~~~~ 4650 as 4650, - ~~~~~~~~~~~~~~~~~ 4651 as 4651, - ~~~~~~~~~~~~~~~~~ 4652 as 4652, - ~~~~~~~~~~~~~~~~~ 4653 as 4653, - ~~~~~~~~~~~~~~~~~ 4654 as 4654, - ~~~~~~~~~~~~~~~~~ 4655 as 4655, - ~~~~~~~~~~~~~~~~~ 4656 as 4656, - ~~~~~~~~~~~~~~~~~ 4657 as 4657, - ~~~~~~~~~~~~~~~~~ 4658 as 4658, - ~~~~~~~~~~~~~~~~~ 4659 as 4659, - ~~~~~~~~~~~~~~~~~ 4660 as 4660, - ~~~~~~~~~~~~~~~~~ 4661 as 4661, - ~~~~~~~~~~~~~~~~~ 4662 as 4662, - ~~~~~~~~~~~~~~~~~ 4663 as 4663, - ~~~~~~~~~~~~~~~~~ 4664 as 4664, - ~~~~~~~~~~~~~~~~~ 4665 as 4665, - ~~~~~~~~~~~~~~~~~ 4666 as 4666, - ~~~~~~~~~~~~~~~~~ 4667 as 4667, - ~~~~~~~~~~~~~~~~~ 4668 as 4668, - ~~~~~~~~~~~~~~~~~ 4669 as 4669, - ~~~~~~~~~~~~~~~~~ 4670 as 4670, - ~~~~~~~~~~~~~~~~~ 4671 as 4671, - ~~~~~~~~~~~~~~~~~ 4672 as 4672, - ~~~~~~~~~~~~~~~~~ 4673 as 4673, - ~~~~~~~~~~~~~~~~~ 4674 as 4674, - ~~~~~~~~~~~~~~~~~ 4675 as 4675, - ~~~~~~~~~~~~~~~~~ 4676 as 4676, - ~~~~~~~~~~~~~~~~~ 4677 as 4677, - ~~~~~~~~~~~~~~~~~ 4678 as 4678, - ~~~~~~~~~~~~~~~~~ 4679 as 4679, - ~~~~~~~~~~~~~~~~~ 4680 as 4680, - ~~~~~~~~~~~~~~~~~ 4681 as 4681, - ~~~~~~~~~~~~~~~~~ 4682 as 4682, - ~~~~~~~~~~~~~~~~~ 4683 as 4683, - ~~~~~~~~~~~~~~~~~ 4684 as 4684, - ~~~~~~~~~~~~~~~~~ 4685 as 4685, - ~~~~~~~~~~~~~~~~~ 4686 as 4686, - ~~~~~~~~~~~~~~~~~ 4687 as 4687, - ~~~~~~~~~~~~~~~~~ 4688 as 4688, - ~~~~~~~~~~~~~~~~~ 4689 as 4689, - ~~~~~~~~~~~~~~~~~ 4690 as 4690, - ~~~~~~~~~~~~~~~~~ 4691 as 4691, - ~~~~~~~~~~~~~~~~~ 4692 as 4692, - ~~~~~~~~~~~~~~~~~ 4693 as 4693, - ~~~~~~~~~~~~~~~~~ 4694 as 4694, - ~~~~~~~~~~~~~~~~~ 4695 as 4695, - ~~~~~~~~~~~~~~~~~ 4696 as 4696, - ~~~~~~~~~~~~~~~~~ 4697 as 4697, - ~~~~~~~~~~~~~~~~~ 4698 as 4698, - ~~~~~~~~~~~~~~~~~ 4699 as 4699, - ~~~~~~~~~~~~~~~~~ 4700 as 4700, - ~~~~~~~~~~~~~~~~~ 4701 as 4701, - ~~~~~~~~~~~~~~~~~ 4702 as 4702, - ~~~~~~~~~~~~~~~~~ 4703 as 4703, - ~~~~~~~~~~~~~~~~~ 4704 as 4704, - ~~~~~~~~~~~~~~~~~ 4705 as 4705, - ~~~~~~~~~~~~~~~~~ 4706 as 4706, - ~~~~~~~~~~~~~~~~~ 4707 as 4707, - ~~~~~~~~~~~~~~~~~ 4708 as 4708, - ~~~~~~~~~~~~~~~~~ 4709 as 4709, - ~~~~~~~~~~~~~~~~~ 4710 as 4710, - ~~~~~~~~~~~~~~~~~ 4711 as 4711, - ~~~~~~~~~~~~~~~~~ 4712 as 4712, - ~~~~~~~~~~~~~~~~~ 4713 as 4713, - ~~~~~~~~~~~~~~~~~ 4714 as 4714, - ~~~~~~~~~~~~~~~~~ 4715 as 4715, - ~~~~~~~~~~~~~~~~~ 4716 as 4716, - ~~~~~~~~~~~~~~~~~ 4717 as 4717, - ~~~~~~~~~~~~~~~~~ 4718 as 4718, - ~~~~~~~~~~~~~~~~~ 4719 as 4719, - ~~~~~~~~~~~~~~~~~ 4720 as 4720, - ~~~~~~~~~~~~~~~~~ 4721 as 4721, - ~~~~~~~~~~~~~~~~~ 4722 as 4722, - ~~~~~~~~~~~~~~~~~ 4723 as 4723, - ~~~~~~~~~~~~~~~~~ 4724 as 4724, - ~~~~~~~~~~~~~~~~~ 4725 as 4725, - ~~~~~~~~~~~~~~~~~ 4726 as 4726, - ~~~~~~~~~~~~~~~~~ 4727 as 4727, - ~~~~~~~~~~~~~~~~~ 4728 as 4728, - ~~~~~~~~~~~~~~~~~ 4729 as 4729, - ~~~~~~~~~~~~~~~~~ 4730 as 4730, - ~~~~~~~~~~~~~~~~~ 4731 as 4731, - ~~~~~~~~~~~~~~~~~ 4732 as 4732, - ~~~~~~~~~~~~~~~~~ 4733 as 4733, - ~~~~~~~~~~~~~~~~~ 4734 as 4734, - ~~~~~~~~~~~~~~~~~ 4735 as 4735, - ~~~~~~~~~~~~~~~~~ 4736 as 4736, - ~~~~~~~~~~~~~~~~~ 4737 as 4737, - ~~~~~~~~~~~~~~~~~ 4738 as 4738, - ~~~~~~~~~~~~~~~~~ 4739 as 4739, - ~~~~~~~~~~~~~~~~~ 4740 as 4740, - ~~~~~~~~~~~~~~~~~ 4741 as 4741, - ~~~~~~~~~~~~~~~~~ 4742 as 4742, - ~~~~~~~~~~~~~~~~~ 4743 as 4743, - ~~~~~~~~~~~~~~~~~ 4744 as 4744, - ~~~~~~~~~~~~~~~~~ 4745 as 4745, - ~~~~~~~~~~~~~~~~~ 4746 as 4746, - ~~~~~~~~~~~~~~~~~ 4747 as 4747, - ~~~~~~~~~~~~~~~~~ 4748 as 4748, - ~~~~~~~~~~~~~~~~~ 4749 as 4749, - ~~~~~~~~~~~~~~~~~ 4750 as 4750, - ~~~~~~~~~~~~~~~~~ 4751 as 4751, - ~~~~~~~~~~~~~~~~~ 4752 as 4752, - ~~~~~~~~~~~~~~~~~ 4753 as 4753, - ~~~~~~~~~~~~~~~~~ 4754 as 4754, - ~~~~~~~~~~~~~~~~~ 4755 as 4755, - ~~~~~~~~~~~~~~~~~ 4756 as 4756, - ~~~~~~~~~~~~~~~~~ 4757 as 4757, - ~~~~~~~~~~~~~~~~~ 4758 as 4758, - ~~~~~~~~~~~~~~~~~ 4759 as 4759, - ~~~~~~~~~~~~~~~~~ 4760 as 4760, - ~~~~~~~~~~~~~~~~~ 4761 as 4761, - ~~~~~~~~~~~~~~~~~ 4762 as 4762, - ~~~~~~~~~~~~~~~~~ 4763 as 4763, - ~~~~~~~~~~~~~~~~~ 4764 as 4764, - ~~~~~~~~~~~~~~~~~ 4765 as 4765, - ~~~~~~~~~~~~~~~~~ 4766 as 4766, - ~~~~~~~~~~~~~~~~~ 4767 as 4767, - ~~~~~~~~~~~~~~~~~ 4768 as 4768, - ~~~~~~~~~~~~~~~~~ 4769 as 4769, - ~~~~~~~~~~~~~~~~~ 4770 as 4770, - ~~~~~~~~~~~~~~~~~ 4771 as 4771, - ~~~~~~~~~~~~~~~~~ 4772 as 4772, - ~~~~~~~~~~~~~~~~~ 4773 as 4773, - ~~~~~~~~~~~~~~~~~ 4774 as 4774, - ~~~~~~~~~~~~~~~~~ 4775 as 4775, - ~~~~~~~~~~~~~~~~~ 4776 as 4776, - ~~~~~~~~~~~~~~~~~ 4777 as 4777, - ~~~~~~~~~~~~~~~~~ 4778 as 4778, - ~~~~~~~~~~~~~~~~~ 4779 as 4779, - ~~~~~~~~~~~~~~~~~ 4780 as 4780, - ~~~~~~~~~~~~~~~~~ 4781 as 4781, - ~~~~~~~~~~~~~~~~~ 4782 as 4782, - ~~~~~~~~~~~~~~~~~ 4783 as 4783, - ~~~~~~~~~~~~~~~~~ 4784 as 4784, - ~~~~~~~~~~~~~~~~~ 4785 as 4785, - ~~~~~~~~~~~~~~~~~ 4786 as 4786, - ~~~~~~~~~~~~~~~~~ 4787 as 4787, - ~~~~~~~~~~~~~~~~~ 4788 as 4788, - ~~~~~~~~~~~~~~~~~ 4789 as 4789, - ~~~~~~~~~~~~~~~~~ 4790 as 4790, - ~~~~~~~~~~~~~~~~~ 4791 as 4791, - ~~~~~~~~~~~~~~~~~ 4792 as 4792, - ~~~~~~~~~~~~~~~~~ 4793 as 4793, - ~~~~~~~~~~~~~~~~~ 4794 as 4794, - ~~~~~~~~~~~~~~~~~ 4795 as 4795, - ~~~~~~~~~~~~~~~~~ 4796 as 4796, - ~~~~~~~~~~~~~~~~~ 4797 as 4797, - ~~~~~~~~~~~~~~~~~ 4798 as 4798, - ~~~~~~~~~~~~~~~~~ 4799 as 4799, - ~~~~~~~~~~~~~~~~~ 4800 as 4800, - ~~~~~~~~~~~~~~~~~ 4801 as 4801, - ~~~~~~~~~~~~~~~~~ 4802 as 4802, - ~~~~~~~~~~~~~~~~~ 4803 as 4803, - ~~~~~~~~~~~~~~~~~ 4804 as 4804, - ~~~~~~~~~~~~~~~~~ 4805 as 4805, - ~~~~~~~~~~~~~~~~~ 4806 as 4806, - ~~~~~~~~~~~~~~~~~ 4807 as 4807, - ~~~~~~~~~~~~~~~~~ 4808 as 4808, - ~~~~~~~~~~~~~~~~~ 4809 as 4809, - ~~~~~~~~~~~~~~~~~ 4810 as 4810, - ~~~~~~~~~~~~~~~~~ 4811 as 4811, - ~~~~~~~~~~~~~~~~~ 4812 as 4812, - ~~~~~~~~~~~~~~~~~ 4813 as 4813, - ~~~~~~~~~~~~~~~~~ 4814 as 4814, - ~~~~~~~~~~~~~~~~~ 4815 as 4815, - ~~~~~~~~~~~~~~~~~ 4816 as 4816, - ~~~~~~~~~~~~~~~~~ 4817 as 4817, - ~~~~~~~~~~~~~~~~~ 4818 as 4818, - ~~~~~~~~~~~~~~~~~ 4819 as 4819, - ~~~~~~~~~~~~~~~~~ 4820 as 4820, - ~~~~~~~~~~~~~~~~~ 4821 as 4821, - ~~~~~~~~~~~~~~~~~ 4822 as 4822, - ~~~~~~~~~~~~~~~~~ 4823 as 4823, - ~~~~~~~~~~~~~~~~~ 4824 as 4824, - ~~~~~~~~~~~~~~~~~ 4825 as 4825, - ~~~~~~~~~~~~~~~~~ 4826 as 4826, - ~~~~~~~~~~~~~~~~~ 4827 as 4827, - ~~~~~~~~~~~~~~~~~ 4828 as 4828, - ~~~~~~~~~~~~~~~~~ 4829 as 4829, - ~~~~~~~~~~~~~~~~~ 4830 as 4830, - ~~~~~~~~~~~~~~~~~ 4831 as 4831, - ~~~~~~~~~~~~~~~~~ 4832 as 4832, - ~~~~~~~~~~~~~~~~~ 4833 as 4833, - ~~~~~~~~~~~~~~~~~ 4834 as 4834, - ~~~~~~~~~~~~~~~~~ 4835 as 4835, - ~~~~~~~~~~~~~~~~~ 4836 as 4836, - ~~~~~~~~~~~~~~~~~ 4837 as 4837, - ~~~~~~~~~~~~~~~~~ 4838 as 4838, - ~~~~~~~~~~~~~~~~~ 4839 as 4839, - ~~~~~~~~~~~~~~~~~ 4840 as 4840, - ~~~~~~~~~~~~~~~~~ 4841 as 4841, - ~~~~~~~~~~~~~~~~~ 4842 as 4842, - ~~~~~~~~~~~~~~~~~ 4843 as 4843, - ~~~~~~~~~~~~~~~~~ 4844 as 4844, - ~~~~~~~~~~~~~~~~~ 4845 as 4845, - ~~~~~~~~~~~~~~~~~ 4846 as 4846, - ~~~~~~~~~~~~~~~~~ 4847 as 4847, - ~~~~~~~~~~~~~~~~~ 4848 as 4848, - ~~~~~~~~~~~~~~~~~ 4849 as 4849, - ~~~~~~~~~~~~~~~~~ 4850 as 4850, - ~~~~~~~~~~~~~~~~~ 4851 as 4851, - ~~~~~~~~~~~~~~~~~ 4852 as 4852, - ~~~~~~~~~~~~~~~~~ 4853 as 4853, - ~~~~~~~~~~~~~~~~~ 4854 as 4854, - ~~~~~~~~~~~~~~~~~ 4855 as 4855, - ~~~~~~~~~~~~~~~~~ 4856 as 4856, - ~~~~~~~~~~~~~~~~~ 4857 as 4857, - ~~~~~~~~~~~~~~~~~ 4858 as 4858, - ~~~~~~~~~~~~~~~~~ 4859 as 4859, - ~~~~~~~~~~~~~~~~~ 4860 as 4860, - ~~~~~~~~~~~~~~~~~ 4861 as 4861, - ~~~~~~~~~~~~~~~~~ 4862 as 4862, - ~~~~~~~~~~~~~~~~~ 4863 as 4863, - ~~~~~~~~~~~~~~~~~ 4864 as 4864, - ~~~~~~~~~~~~~~~~~ 4865 as 4865, - ~~~~~~~~~~~~~~~~~ 4866 as 4866, - ~~~~~~~~~~~~~~~~~ 4867 as 4867, - ~~~~~~~~~~~~~~~~~ 4868 as 4868, - ~~~~~~~~~~~~~~~~~ 4869 as 4869, - ~~~~~~~~~~~~~~~~~ 4870 as 4870, - ~~~~~~~~~~~~~~~~~ 4871 as 4871, - ~~~~~~~~~~~~~~~~~ 4872 as 4872, - ~~~~~~~~~~~~~~~~~ 4873 as 4873, - ~~~~~~~~~~~~~~~~~ 4874 as 4874, - ~~~~~~~~~~~~~~~~~ 4875 as 4875, - ~~~~~~~~~~~~~~~~~ 4876 as 4876, - ~~~~~~~~~~~~~~~~~ 4877 as 4877, - ~~~~~~~~~~~~~~~~~ 4878 as 4878, - ~~~~~~~~~~~~~~~~~ 4879 as 4879, - ~~~~~~~~~~~~~~~~~ 4880 as 4880, - ~~~~~~~~~~~~~~~~~ 4881 as 4881, - ~~~~~~~~~~~~~~~~~ 4882 as 4882, - ~~~~~~~~~~~~~~~~~ 4883 as 4883, - ~~~~~~~~~~~~~~~~~ 4884 as 4884, - ~~~~~~~~~~~~~~~~~ 4885 as 4885, - ~~~~~~~~~~~~~~~~~ 4886 as 4886, - ~~~~~~~~~~~~~~~~~ 4887 as 4887, - ~~~~~~~~~~~~~~~~~ 4888 as 4888, - ~~~~~~~~~~~~~~~~~ 4889 as 4889, - ~~~~~~~~~~~~~~~~~ 4890 as 4890, - ~~~~~~~~~~~~~~~~~ 4891 as 4891, - ~~~~~~~~~~~~~~~~~ 4892 as 4892, - ~~~~~~~~~~~~~~~~~ 4893 as 4893, - ~~~~~~~~~~~~~~~~~ 4894 as 4894, - ~~~~~~~~~~~~~~~~~ 4895 as 4895, - ~~~~~~~~~~~~~~~~~ 4896 as 4896, - ~~~~~~~~~~~~~~~~~ 4897 as 4897, - ~~~~~~~~~~~~~~~~~ 4898 as 4898, - ~~~~~~~~~~~~~~~~~ 4899 as 4899, - ~~~~~~~~~~~~~~~~~ 4900 as 4900, - ~~~~~~~~~~~~~~~~~ 4901 as 4901, - ~~~~~~~~~~~~~~~~~ 4902 as 4902, - ~~~~~~~~~~~~~~~~~ 4903 as 4903, - ~~~~~~~~~~~~~~~~~ 4904 as 4904, - ~~~~~~~~~~~~~~~~~ 4905 as 4905, - ~~~~~~~~~~~~~~~~~ 4906 as 4906, - ~~~~~~~~~~~~~~~~~ 4907 as 4907, - ~~~~~~~~~~~~~~~~~ 4908 as 4908, - ~~~~~~~~~~~~~~~~~ 4909 as 4909, - ~~~~~~~~~~~~~~~~~ 4910 as 4910, - ~~~~~~~~~~~~~~~~~ 4911 as 4911, - ~~~~~~~~~~~~~~~~~ 4912 as 4912, - ~~~~~~~~~~~~~~~~~ 4913 as 4913, - ~~~~~~~~~~~~~~~~~ 4914 as 4914, - ~~~~~~~~~~~~~~~~~ 4915 as 4915, - ~~~~~~~~~~~~~~~~~ 4916 as 4916, - ~~~~~~~~~~~~~~~~~ 4917 as 4917, - ~~~~~~~~~~~~~~~~~ 4918 as 4918, - ~~~~~~~~~~~~~~~~~ 4919 as 4919, - ~~~~~~~~~~~~~~~~~ 4920 as 4920, - ~~~~~~~~~~~~~~~~~ 4921 as 4921, - ~~~~~~~~~~~~~~~~~ 4922 as 4922, - ~~~~~~~~~~~~~~~~~ 4923 as 4923, - ~~~~~~~~~~~~~~~~~ 4924 as 4924, - ~~~~~~~~~~~~~~~~~ 4925 as 4925, - ~~~~~~~~~~~~~~~~~ 4926 as 4926, - ~~~~~~~~~~~~~~~~~ 4927 as 4927, - ~~~~~~~~~~~~~~~~~ 4928 as 4928, - ~~~~~~~~~~~~~~~~~ 4929 as 4929, - ~~~~~~~~~~~~~~~~~ 4930 as 4930, - ~~~~~~~~~~~~~~~~~ 4931 as 4931, - ~~~~~~~~~~~~~~~~~ 4932 as 4932, - ~~~~~~~~~~~~~~~~~ 4933 as 4933, - ~~~~~~~~~~~~~~~~~ 4934 as 4934, - ~~~~~~~~~~~~~~~~~ 4935 as 4935, - ~~~~~~~~~~~~~~~~~ 4936 as 4936, - ~~~~~~~~~~~~~~~~~ 4937 as 4937, - ~~~~~~~~~~~~~~~~~ 4938 as 4938, - ~~~~~~~~~~~~~~~~~ 4939 as 4939, - ~~~~~~~~~~~~~~~~~ 4940 as 4940, - ~~~~~~~~~~~~~~~~~ 4941 as 4941, - ~~~~~~~~~~~~~~~~~ 4942 as 4942, - ~~~~~~~~~~~~~~~~~ 4943 as 4943, - ~~~~~~~~~~~~~~~~~ 4944 as 4944, - ~~~~~~~~~~~~~~~~~ 4945 as 4945, - ~~~~~~~~~~~~~~~~~ 4946 as 4946, - ~~~~~~~~~~~~~~~~~ 4947 as 4947, - ~~~~~~~~~~~~~~~~~ 4948 as 4948, - ~~~~~~~~~~~~~~~~~ 4949 as 4949, - ~~~~~~~~~~~~~~~~~ 4950 as 4950, - ~~~~~~~~~~~~~~~~~ 4951 as 4951, - ~~~~~~~~~~~~~~~~~ 4952 as 4952, - ~~~~~~~~~~~~~~~~~ 4953 as 4953, - ~~~~~~~~~~~~~~~~~ 4954 as 4954, - ~~~~~~~~~~~~~~~~~ 4955 as 4955, - ~~~~~~~~~~~~~~~~~ 4956 as 4956, - ~~~~~~~~~~~~~~~~~ 4957 as 4957, - ~~~~~~~~~~~~~~~~~ 4958 as 4958, - ~~~~~~~~~~~~~~~~~ 4959 as 4959, - ~~~~~~~~~~~~~~~~~ 4960 as 4960, - ~~~~~~~~~~~~~~~~~ 4961 as 4961, - ~~~~~~~~~~~~~~~~~ 4962 as 4962, - ~~~~~~~~~~~~~~~~~ 4963 as 4963, - ~~~~~~~~~~~~~~~~~ 4964 as 4964, - ~~~~~~~~~~~~~~~~~ 4965 as 4965, - ~~~~~~~~~~~~~~~~~ 4966 as 4966, - ~~~~~~~~~~~~~~~~~ 4967 as 4967, - ~~~~~~~~~~~~~~~~~ 4968 as 4968, - ~~~~~~~~~~~~~~~~~ 4969 as 4969, - ~~~~~~~~~~~~~~~~~ 4970 as 4970, - ~~~~~~~~~~~~~~~~~ 4971 as 4971, - ~~~~~~~~~~~~~~~~~ 4972 as 4972, - ~~~~~~~~~~~~~~~~~ 4973 as 4973, - ~~~~~~~~~~~~~~~~~ 4974 as 4974, - ~~~~~~~~~~~~~~~~~ 4975 as 4975, - ~~~~~~~~~~~~~~~~~ 4976 as 4976, - ~~~~~~~~~~~~~~~~~ 4977 as 4977, - ~~~~~~~~~~~~~~~~~ 4978 as 4978, - ~~~~~~~~~~~~~~~~~ 4979 as 4979, - ~~~~~~~~~~~~~~~~~ 4980 as 4980, - ~~~~~~~~~~~~~~~~~ 4981 as 4981, - ~~~~~~~~~~~~~~~~~ 4982 as 4982, - ~~~~~~~~~~~~~~~~~ 4983 as 4983, - ~~~~~~~~~~~~~~~~~ 4984 as 4984, - ~~~~~~~~~~~~~~~~~ 4985 as 4985, - ~~~~~~~~~~~~~~~~~ 4986 as 4986, - ~~~~~~~~~~~~~~~~~ 4987 as 4987, - ~~~~~~~~~~~~~~~~~ 4988 as 4988, - ~~~~~~~~~~~~~~~~~ 4989 as 4989, - ~~~~~~~~~~~~~~~~~ 4990 as 4990, - ~~~~~~~~~~~~~~~~~ 4991 as 4991, - ~~~~~~~~~~~~~~~~~ 4992 as 4992, - ~~~~~~~~~~~~~~~~~ 4993 as 4993, - ~~~~~~~~~~~~~~~~~ 4994 as 4994, - ~~~~~~~~~~~~~~~~~ 4995 as 4995, - ~~~~~~~~~~~~~~~~~ 4996 as 4996, - ~~~~~~~~~~~~~~~~~ 4997 as 4997, - ~~~~~~~~~~~~~~~~~ 4998 as 4998, - ~~~~~~~~~~~~~~~~~ 4999 as 4999, - ~~~~~~~~~~~~~~~~~ 5000 as 5000, - ~~~~~~~~~~~~~~~~~ 5001 as 5001, - ~~~~~~~~~~~~~~~~~ ]; - ~ -!!! error TS2590: Expression produces a union type that is too complex to represent. let b = [ ~ diff --git a/tests/baselines/reference/unionSubtypeReductionErrors.types b/tests/baselines/reference/unionSubtypeReductionErrors.types index 0df721a8ee0..0f4927a294c 100644 --- a/tests/baselines/reference/unionSubtypeReductionErrors.types +++ b/tests/baselines/reference/unionSubtypeReductionErrors.types @@ -1,7 +1,7 @@ === tests/cases/compiler/unionSubtypeReductionErrors.ts === let a = [ ->a : any[] ->[ 0 as 0, 1 as 1, 2 as 2, 3 as 3, 4 as 4, 5 as 5, 6 as 6, 7 as 7, 8 as 8, 9 as 9, 10 as 10, 11 as 11, 12 as 12, 13 as 13, 14 as 14, 15 as 15, 16 as 16, 17 as 17, 18 as 18, 19 as 19, 20 as 20, 21 as 21, 22 as 22, 23 as 23, 24 as 24, 25 as 25, 26 as 26, 27 as 27, 28 as 28, 29 as 29, 30 as 30, 31 as 31, 32 as 32, 33 as 33, 34 as 34, 35 as 35, 36 as 36, 37 as 37, 38 as 38, 39 as 39, 40 as 40, 41 as 41, 42 as 42, 43 as 43, 44 as 44, 45 as 45, 46 as 46, 47 as 47, 48 as 48, 49 as 49, 50 as 50, 51 as 51, 52 as 52, 53 as 53, 54 as 54, 55 as 55, 56 as 56, 57 as 57, 58 as 58, 59 as 59, 60 as 60, 61 as 61, 62 as 62, 63 as 63, 64 as 64, 65 as 65, 66 as 66, 67 as 67, 68 as 68, 69 as 69, 70 as 70, 71 as 71, 72 as 72, 73 as 73, 74 as 74, 75 as 75, 76 as 76, 77 as 77, 78 as 78, 79 as 79, 80 as 80, 81 as 81, 82 as 82, 83 as 83, 84 as 84, 85 as 85, 86 as 86, 87 as 87, 88 as 88, 89 as 89, 90 as 90, 91 as 91, 92 as 92, 93 as 93, 94 as 94, 95 as 95, 96 as 96, 97 as 97, 98 as 98, 99 as 99, 100 as 100, 101 as 101, 102 as 102, 103 as 103, 104 as 104, 105 as 105, 106 as 106, 107 as 107, 108 as 108, 109 as 109, 110 as 110, 111 as 111, 112 as 112, 113 as 113, 114 as 114, 115 as 115, 116 as 116, 117 as 117, 118 as 118, 119 as 119, 120 as 120, 121 as 121, 122 as 122, 123 as 123, 124 as 124, 125 as 125, 126 as 126, 127 as 127, 128 as 128, 129 as 129, 130 as 130, 131 as 131, 132 as 132, 133 as 133, 134 as 134, 135 as 135, 136 as 136, 137 as 137, 138 as 138, 139 as 139, 140 as 140, 141 as 141, 142 as 142, 143 as 143, 144 as 144, 145 as 145, 146 as 146, 147 as 147, 148 as 148, 149 as 149, 150 as 150, 151 as 151, 152 as 152, 153 as 153, 154 as 154, 155 as 155, 156 as 156, 157 as 157, 158 as 158, 159 as 159, 160 as 160, 161 as 161, 162 as 162, 163 as 163, 164 as 164, 165 as 165, 166 as 166, 167 as 167, 168 as 168, 169 as 169, 170 as 170, 171 as 171, 172 as 172, 173 as 173, 174 as 174, 175 as 175, 176 as 176, 177 as 177, 178 as 178, 179 as 179, 180 as 180, 181 as 181, 182 as 182, 183 as 183, 184 as 184, 185 as 185, 186 as 186, 187 as 187, 188 as 188, 189 as 189, 190 as 190, 191 as 191, 192 as 192, 193 as 193, 194 as 194, 195 as 195, 196 as 196, 197 as 197, 198 as 198, 199 as 199, 200 as 200, 201 as 201, 202 as 202, 203 as 203, 204 as 204, 205 as 205, 206 as 206, 207 as 207, 208 as 208, 209 as 209, 210 as 210, 211 as 211, 212 as 212, 213 as 213, 214 as 214, 215 as 215, 216 as 216, 217 as 217, 218 as 218, 219 as 219, 220 as 220, 221 as 221, 222 as 222, 223 as 223, 224 as 224, 225 as 225, 226 as 226, 227 as 227, 228 as 228, 229 as 229, 230 as 230, 231 as 231, 232 as 232, 233 as 233, 234 as 234, 235 as 235, 236 as 236, 237 as 237, 238 as 238, 239 as 239, 240 as 240, 241 as 241, 242 as 242, 243 as 243, 244 as 244, 245 as 245, 246 as 246, 247 as 247, 248 as 248, 249 as 249, 250 as 250, 251 as 251, 252 as 252, 253 as 253, 254 as 254, 255 as 255, 256 as 256, 257 as 257, 258 as 258, 259 as 259, 260 as 260, 261 as 261, 262 as 262, 263 as 263, 264 as 264, 265 as 265, 266 as 266, 267 as 267, 268 as 268, 269 as 269, 270 as 270, 271 as 271, 272 as 272, 273 as 273, 274 as 274, 275 as 275, 276 as 276, 277 as 277, 278 as 278, 279 as 279, 280 as 280, 281 as 281, 282 as 282, 283 as 283, 284 as 284, 285 as 285, 286 as 286, 287 as 287, 288 as 288, 289 as 289, 290 as 290, 291 as 291, 292 as 292, 293 as 293, 294 as 294, 295 as 295, 296 as 296, 297 as 297, 298 as 298, 299 as 299, 300 as 300, 301 as 301, 302 as 302, 303 as 303, 304 as 304, 305 as 305, 306 as 306, 307 as 307, 308 as 308, 309 as 309, 310 as 310, 311 as 311, 312 as 312, 313 as 313, 314 as 314, 315 as 315, 316 as 316, 317 as 317, 318 as 318, 319 as 319, 320 as 320, 321 as 321, 322 as 322, 323 as 323, 324 as 324, 325 as 325, 326 as 326, 327 as 327, 328 as 328, 329 as 329, 330 as 330, 331 as 331, 332 as 332, 333 as 333, 334 as 334, 335 as 335, 336 as 336, 337 as 337, 338 as 338, 339 as 339, 340 as 340, 341 as 341, 342 as 342, 343 as 343, 344 as 344, 345 as 345, 346 as 346, 347 as 347, 348 as 348, 349 as 349, 350 as 350, 351 as 351, 352 as 352, 353 as 353, 354 as 354, 355 as 355, 356 as 356, 357 as 357, 358 as 358, 359 as 359, 360 as 360, 361 as 361, 362 as 362, 363 as 363, 364 as 364, 365 as 365, 366 as 366, 367 as 367, 368 as 368, 369 as 369, 370 as 370, 371 as 371, 372 as 372, 373 as 373, 374 as 374, 375 as 375, 376 as 376, 377 as 377, 378 as 378, 379 as 379, 380 as 380, 381 as 381, 382 as 382, 383 as 383, 384 as 384, 385 as 385, 386 as 386, 387 as 387, 388 as 388, 389 as 389, 390 as 390, 391 as 391, 392 as 392, 393 as 393, 394 as 394, 395 as 395, 396 as 396, 397 as 397, 398 as 398, 399 as 399, 400 as 400, 401 as 401, 402 as 402, 403 as 403, 404 as 404, 405 as 405, 406 as 406, 407 as 407, 408 as 408, 409 as 409, 410 as 410, 411 as 411, 412 as 412, 413 as 413, 414 as 414, 415 as 415, 416 as 416, 417 as 417, 418 as 418, 419 as 419, 420 as 420, 421 as 421, 422 as 422, 423 as 423, 424 as 424, 425 as 425, 426 as 426, 427 as 427, 428 as 428, 429 as 429, 430 as 430, 431 as 431, 432 as 432, 433 as 433, 434 as 434, 435 as 435, 436 as 436, 437 as 437, 438 as 438, 439 as 439, 440 as 440, 441 as 441, 442 as 442, 443 as 443, 444 as 444, 445 as 445, 446 as 446, 447 as 447, 448 as 448, 449 as 449, 450 as 450, 451 as 451, 452 as 452, 453 as 453, 454 as 454, 455 as 455, 456 as 456, 457 as 457, 458 as 458, 459 as 459, 460 as 460, 461 as 461, 462 as 462, 463 as 463, 464 as 464, 465 as 465, 466 as 466, 467 as 467, 468 as 468, 469 as 469, 470 as 470, 471 as 471, 472 as 472, 473 as 473, 474 as 474, 475 as 475, 476 as 476, 477 as 477, 478 as 478, 479 as 479, 480 as 480, 481 as 481, 482 as 482, 483 as 483, 484 as 484, 485 as 485, 486 as 486, 487 as 487, 488 as 488, 489 as 489, 490 as 490, 491 as 491, 492 as 492, 493 as 493, 494 as 494, 495 as 495, 496 as 496, 497 as 497, 498 as 498, 499 as 499, 500 as 500, 501 as 501, 502 as 502, 503 as 503, 504 as 504, 505 as 505, 506 as 506, 507 as 507, 508 as 508, 509 as 509, 510 as 510, 511 as 511, 512 as 512, 513 as 513, 514 as 514, 515 as 515, 516 as 516, 517 as 517, 518 as 518, 519 as 519, 520 as 520, 521 as 521, 522 as 522, 523 as 523, 524 as 524, 525 as 525, 526 as 526, 527 as 527, 528 as 528, 529 as 529, 530 as 530, 531 as 531, 532 as 532, 533 as 533, 534 as 534, 535 as 535, 536 as 536, 537 as 537, 538 as 538, 539 as 539, 540 as 540, 541 as 541, 542 as 542, 543 as 543, 544 as 544, 545 as 545, 546 as 546, 547 as 547, 548 as 548, 549 as 549, 550 as 550, 551 as 551, 552 as 552, 553 as 553, 554 as 554, 555 as 555, 556 as 556, 557 as 557, 558 as 558, 559 as 559, 560 as 560, 561 as 561, 562 as 562, 563 as 563, 564 as 564, 565 as 565, 566 as 566, 567 as 567, 568 as 568, 569 as 569, 570 as 570, 571 as 571, 572 as 572, 573 as 573, 574 as 574, 575 as 575, 576 as 576, 577 as 577, 578 as 578, 579 as 579, 580 as 580, 581 as 581, 582 as 582, 583 as 583, 584 as 584, 585 as 585, 586 as 586, 587 as 587, 588 as 588, 589 as 589, 590 as 590, 591 as 591, 592 as 592, 593 as 593, 594 as 594, 595 as 595, 596 as 596, 597 as 597, 598 as 598, 599 as 599, 600 as 600, 601 as 601, 602 as 602, 603 as 603, 604 as 604, 605 as 605, 606 as 606, 607 as 607, 608 as 608, 609 as 609, 610 as 610, 611 as 611, 612 as 612, 613 as 613, 614 as 614, 615 as 615, 616 as 616, 617 as 617, 618 as 618, 619 as 619, 620 as 620, 621 as 621, 622 as 622, 623 as 623, 624 as 624, 625 as 625, 626 as 626, 627 as 627, 628 as 628, 629 as 629, 630 as 630, 631 as 631, 632 as 632, 633 as 633, 634 as 634, 635 as 635, 636 as 636, 637 as 637, 638 as 638, 639 as 639, 640 as 640, 641 as 641, 642 as 642, 643 as 643, 644 as 644, 645 as 645, 646 as 646, 647 as 647, 648 as 648, 649 as 649, 650 as 650, 651 as 651, 652 as 652, 653 as 653, 654 as 654, 655 as 655, 656 as 656, 657 as 657, 658 as 658, 659 as 659, 660 as 660, 661 as 661, 662 as 662, 663 as 663, 664 as 664, 665 as 665, 666 as 666, 667 as 667, 668 as 668, 669 as 669, 670 as 670, 671 as 671, 672 as 672, 673 as 673, 674 as 674, 675 as 675, 676 as 676, 677 as 677, 678 as 678, 679 as 679, 680 as 680, 681 as 681, 682 as 682, 683 as 683, 684 as 684, 685 as 685, 686 as 686, 687 as 687, 688 as 688, 689 as 689, 690 as 690, 691 as 691, 692 as 692, 693 as 693, 694 as 694, 695 as 695, 696 as 696, 697 as 697, 698 as 698, 699 as 699, 700 as 700, 701 as 701, 702 as 702, 703 as 703, 704 as 704, 705 as 705, 706 as 706, 707 as 707, 708 as 708, 709 as 709, 710 as 710, 711 as 711, 712 as 712, 713 as 713, 714 as 714, 715 as 715, 716 as 716, 717 as 717, 718 as 718, 719 as 719, 720 as 720, 721 as 721, 722 as 722, 723 as 723, 724 as 724, 725 as 725, 726 as 726, 727 as 727, 728 as 728, 729 as 729, 730 as 730, 731 as 731, 732 as 732, 733 as 733, 734 as 734, 735 as 735, 736 as 736, 737 as 737, 738 as 738, 739 as 739, 740 as 740, 741 as 741, 742 as 742, 743 as 743, 744 as 744, 745 as 745, 746 as 746, 747 as 747, 748 as 748, 749 as 749, 750 as 750, 751 as 751, 752 as 752, 753 as 753, 754 as 754, 755 as 755, 756 as 756, 757 as 757, 758 as 758, 759 as 759, 760 as 760, 761 as 761, 762 as 762, 763 as 763, 764 as 764, 765 as 765, 766 as 766, 767 as 767, 768 as 768, 769 as 769, 770 as 770, 771 as 771, 772 as 772, 773 as 773, 774 as 774, 775 as 775, 776 as 776, 777 as 777, 778 as 778, 779 as 779, 780 as 780, 781 as 781, 782 as 782, 783 as 783, 784 as 784, 785 as 785, 786 as 786, 787 as 787, 788 as 788, 789 as 789, 790 as 790, 791 as 791, 792 as 792, 793 as 793, 794 as 794, 795 as 795, 796 as 796, 797 as 797, 798 as 798, 799 as 799, 800 as 800, 801 as 801, 802 as 802, 803 as 803, 804 as 804, 805 as 805, 806 as 806, 807 as 807, 808 as 808, 809 as 809, 810 as 810, 811 as 811, 812 as 812, 813 as 813, 814 as 814, 815 as 815, 816 as 816, 817 as 817, 818 as 818, 819 as 819, 820 as 820, 821 as 821, 822 as 822, 823 as 823, 824 as 824, 825 as 825, 826 as 826, 827 as 827, 828 as 828, 829 as 829, 830 as 830, 831 as 831, 832 as 832, 833 as 833, 834 as 834, 835 as 835, 836 as 836, 837 as 837, 838 as 838, 839 as 839, 840 as 840, 841 as 841, 842 as 842, 843 as 843, 844 as 844, 845 as 845, 846 as 846, 847 as 847, 848 as 848, 849 as 849, 850 as 850, 851 as 851, 852 as 852, 853 as 853, 854 as 854, 855 as 855, 856 as 856, 857 as 857, 858 as 858, 859 as 859, 860 as 860, 861 as 861, 862 as 862, 863 as 863, 864 as 864, 865 as 865, 866 as 866, 867 as 867, 868 as 868, 869 as 869, 870 as 870, 871 as 871, 872 as 872, 873 as 873, 874 as 874, 875 as 875, 876 as 876, 877 as 877, 878 as 878, 879 as 879, 880 as 880, 881 as 881, 882 as 882, 883 as 883, 884 as 884, 885 as 885, 886 as 886, 887 as 887, 888 as 888, 889 as 889, 890 as 890, 891 as 891, 892 as 892, 893 as 893, 894 as 894, 895 as 895, 896 as 896, 897 as 897, 898 as 898, 899 as 899, 900 as 900, 901 as 901, 902 as 902, 903 as 903, 904 as 904, 905 as 905, 906 as 906, 907 as 907, 908 as 908, 909 as 909, 910 as 910, 911 as 911, 912 as 912, 913 as 913, 914 as 914, 915 as 915, 916 as 916, 917 as 917, 918 as 918, 919 as 919, 920 as 920, 921 as 921, 922 as 922, 923 as 923, 924 as 924, 925 as 925, 926 as 926, 927 as 927, 928 as 928, 929 as 929, 930 as 930, 931 as 931, 932 as 932, 933 as 933, 934 as 934, 935 as 935, 936 as 936, 937 as 937, 938 as 938, 939 as 939, 940 as 940, 941 as 941, 942 as 942, 943 as 943, 944 as 944, 945 as 945, 946 as 946, 947 as 947, 948 as 948, 949 as 949, 950 as 950, 951 as 951, 952 as 952, 953 as 953, 954 as 954, 955 as 955, 956 as 956, 957 as 957, 958 as 958, 959 as 959, 960 as 960, 961 as 961, 962 as 962, 963 as 963, 964 as 964, 965 as 965, 966 as 966, 967 as 967, 968 as 968, 969 as 969, 970 as 970, 971 as 971, 972 as 972, 973 as 973, 974 as 974, 975 as 975, 976 as 976, 977 as 977, 978 as 978, 979 as 979, 980 as 980, 981 as 981, 982 as 982, 983 as 983, 984 as 984, 985 as 985, 986 as 986, 987 as 987, 988 as 988, 989 as 989, 990 as 990, 991 as 991, 992 as 992, 993 as 993, 994 as 994, 995 as 995, 996 as 996, 997 as 997, 998 as 998, 999 as 999, 1000 as 1000, 1001 as 1001, 1002 as 1002, 1003 as 1003, 1004 as 1004, 1005 as 1005, 1006 as 1006, 1007 as 1007, 1008 as 1008, 1009 as 1009, 1010 as 1010, 1011 as 1011, 1012 as 1012, 1013 as 1013, 1014 as 1014, 1015 as 1015, 1016 as 1016, 1017 as 1017, 1018 as 1018, 1019 as 1019, 1020 as 1020, 1021 as 1021, 1022 as 1022, 1023 as 1023, 1024 as 1024, 1025 as 1025, 1026 as 1026, 1027 as 1027, 1028 as 1028, 1029 as 1029, 1030 as 1030, 1031 as 1031, 1032 as 1032, 1033 as 1033, 1034 as 1034, 1035 as 1035, 1036 as 1036, 1037 as 1037, 1038 as 1038, 1039 as 1039, 1040 as 1040, 1041 as 1041, 1042 as 1042, 1043 as 1043, 1044 as 1044, 1045 as 1045, 1046 as 1046, 1047 as 1047, 1048 as 1048, 1049 as 1049, 1050 as 1050, 1051 as 1051, 1052 as 1052, 1053 as 1053, 1054 as 1054, 1055 as 1055, 1056 as 1056, 1057 as 1057, 1058 as 1058, 1059 as 1059, 1060 as 1060, 1061 as 1061, 1062 as 1062, 1063 as 1063, 1064 as 1064, 1065 as 1065, 1066 as 1066, 1067 as 1067, 1068 as 1068, 1069 as 1069, 1070 as 1070, 1071 as 1071, 1072 as 1072, 1073 as 1073, 1074 as 1074, 1075 as 1075, 1076 as 1076, 1077 as 1077, 1078 as 1078, 1079 as 1079, 1080 as 1080, 1081 as 1081, 1082 as 1082, 1083 as 1083, 1084 as 1084, 1085 as 1085, 1086 as 1086, 1087 as 1087, 1088 as 1088, 1089 as 1089, 1090 as 1090, 1091 as 1091, 1092 as 1092, 1093 as 1093, 1094 as 1094, 1095 as 1095, 1096 as 1096, 1097 as 1097, 1098 as 1098, 1099 as 1099, 1100 as 1100, 1101 as 1101, 1102 as 1102, 1103 as 1103, 1104 as 1104, 1105 as 1105, 1106 as 1106, 1107 as 1107, 1108 as 1108, 1109 as 1109, 1110 as 1110, 1111 as 1111, 1112 as 1112, 1113 as 1113, 1114 as 1114, 1115 as 1115, 1116 as 1116, 1117 as 1117, 1118 as 1118, 1119 as 1119, 1120 as 1120, 1121 as 1121, 1122 as 1122, 1123 as 1123, 1124 as 1124, 1125 as 1125, 1126 as 1126, 1127 as 1127, 1128 as 1128, 1129 as 1129, 1130 as 1130, 1131 as 1131, 1132 as 1132, 1133 as 1133, 1134 as 1134, 1135 as 1135, 1136 as 1136, 1137 as 1137, 1138 as 1138, 1139 as 1139, 1140 as 1140, 1141 as 1141, 1142 as 1142, 1143 as 1143, 1144 as 1144, 1145 as 1145, 1146 as 1146, 1147 as 1147, 1148 as 1148, 1149 as 1149, 1150 as 1150, 1151 as 1151, 1152 as 1152, 1153 as 1153, 1154 as 1154, 1155 as 1155, 1156 as 1156, 1157 as 1157, 1158 as 1158, 1159 as 1159, 1160 as 1160, 1161 as 1161, 1162 as 1162, 1163 as 1163, 1164 as 1164, 1165 as 1165, 1166 as 1166, 1167 as 1167, 1168 as 1168, 1169 as 1169, 1170 as 1170, 1171 as 1171, 1172 as 1172, 1173 as 1173, 1174 as 1174, 1175 as 1175, 1176 as 1176, 1177 as 1177, 1178 as 1178, 1179 as 1179, 1180 as 1180, 1181 as 1181, 1182 as 1182, 1183 as 1183, 1184 as 1184, 1185 as 1185, 1186 as 1186, 1187 as 1187, 1188 as 1188, 1189 as 1189, 1190 as 1190, 1191 as 1191, 1192 as 1192, 1193 as 1193, 1194 as 1194, 1195 as 1195, 1196 as 1196, 1197 as 1197, 1198 as 1198, 1199 as 1199, 1200 as 1200, 1201 as 1201, 1202 as 1202, 1203 as 1203, 1204 as 1204, 1205 as 1205, 1206 as 1206, 1207 as 1207, 1208 as 1208, 1209 as 1209, 1210 as 1210, 1211 as 1211, 1212 as 1212, 1213 as 1213, 1214 as 1214, 1215 as 1215, 1216 as 1216, 1217 as 1217, 1218 as 1218, 1219 as 1219, 1220 as 1220, 1221 as 1221, 1222 as 1222, 1223 as 1223, 1224 as 1224, 1225 as 1225, 1226 as 1226, 1227 as 1227, 1228 as 1228, 1229 as 1229, 1230 as 1230, 1231 as 1231, 1232 as 1232, 1233 as 1233, 1234 as 1234, 1235 as 1235, 1236 as 1236, 1237 as 1237, 1238 as 1238, 1239 as 1239, 1240 as 1240, 1241 as 1241, 1242 as 1242, 1243 as 1243, 1244 as 1244, 1245 as 1245, 1246 as 1246, 1247 as 1247, 1248 as 1248, 1249 as 1249, 1250 as 1250, 1251 as 1251, 1252 as 1252, 1253 as 1253, 1254 as 1254, 1255 as 1255, 1256 as 1256, 1257 as 1257, 1258 as 1258, 1259 as 1259, 1260 as 1260, 1261 as 1261, 1262 as 1262, 1263 as 1263, 1264 as 1264, 1265 as 1265, 1266 as 1266, 1267 as 1267, 1268 as 1268, 1269 as 1269, 1270 as 1270, 1271 as 1271, 1272 as 1272, 1273 as 1273, 1274 as 1274, 1275 as 1275, 1276 as 1276, 1277 as 1277, 1278 as 1278, 1279 as 1279, 1280 as 1280, 1281 as 1281, 1282 as 1282, 1283 as 1283, 1284 as 1284, 1285 as 1285, 1286 as 1286, 1287 as 1287, 1288 as 1288, 1289 as 1289, 1290 as 1290, 1291 as 1291, 1292 as 1292, 1293 as 1293, 1294 as 1294, 1295 as 1295, 1296 as 1296, 1297 as 1297, 1298 as 1298, 1299 as 1299, 1300 as 1300, 1301 as 1301, 1302 as 1302, 1303 as 1303, 1304 as 1304, 1305 as 1305, 1306 as 1306, 1307 as 1307, 1308 as 1308, 1309 as 1309, 1310 as 1310, 1311 as 1311, 1312 as 1312, 1313 as 1313, 1314 as 1314, 1315 as 1315, 1316 as 1316, 1317 as 1317, 1318 as 1318, 1319 as 1319, 1320 as 1320, 1321 as 1321, 1322 as 1322, 1323 as 1323, 1324 as 1324, 1325 as 1325, 1326 as 1326, 1327 as 1327, 1328 as 1328, 1329 as 1329, 1330 as 1330, 1331 as 1331, 1332 as 1332, 1333 as 1333, 1334 as 1334, 1335 as 1335, 1336 as 1336, 1337 as 1337, 1338 as 1338, 1339 as 1339, 1340 as 1340, 1341 as 1341, 1342 as 1342, 1343 as 1343, 1344 as 1344, 1345 as 1345, 1346 as 1346, 1347 as 1347, 1348 as 1348, 1349 as 1349, 1350 as 1350, 1351 as 1351, 1352 as 1352, 1353 as 1353, 1354 as 1354, 1355 as 1355, 1356 as 1356, 1357 as 1357, 1358 as 1358, 1359 as 1359, 1360 as 1360, 1361 as 1361, 1362 as 1362, 1363 as 1363, 1364 as 1364, 1365 as 1365, 1366 as 1366, 1367 as 1367, 1368 as 1368, 1369 as 1369, 1370 as 1370, 1371 as 1371, 1372 as 1372, 1373 as 1373, 1374 as 1374, 1375 as 1375, 1376 as 1376, 1377 as 1377, 1378 as 1378, 1379 as 1379, 1380 as 1380, 1381 as 1381, 1382 as 1382, 1383 as 1383, 1384 as 1384, 1385 as 1385, 1386 as 1386, 1387 as 1387, 1388 as 1388, 1389 as 1389, 1390 as 1390, 1391 as 1391, 1392 as 1392, 1393 as 1393, 1394 as 1394, 1395 as 1395, 1396 as 1396, 1397 as 1397, 1398 as 1398, 1399 as 1399, 1400 as 1400, 1401 as 1401, 1402 as 1402, 1403 as 1403, 1404 as 1404, 1405 as 1405, 1406 as 1406, 1407 as 1407, 1408 as 1408, 1409 as 1409, 1410 as 1410, 1411 as 1411, 1412 as 1412, 1413 as 1413, 1414 as 1414, 1415 as 1415, 1416 as 1416, 1417 as 1417, 1418 as 1418, 1419 as 1419, 1420 as 1420, 1421 as 1421, 1422 as 1422, 1423 as 1423, 1424 as 1424, 1425 as 1425, 1426 as 1426, 1427 as 1427, 1428 as 1428, 1429 as 1429, 1430 as 1430, 1431 as 1431, 1432 as 1432, 1433 as 1433, 1434 as 1434, 1435 as 1435, 1436 as 1436, 1437 as 1437, 1438 as 1438, 1439 as 1439, 1440 as 1440, 1441 as 1441, 1442 as 1442, 1443 as 1443, 1444 as 1444, 1445 as 1445, 1446 as 1446, 1447 as 1447, 1448 as 1448, 1449 as 1449, 1450 as 1450, 1451 as 1451, 1452 as 1452, 1453 as 1453, 1454 as 1454, 1455 as 1455, 1456 as 1456, 1457 as 1457, 1458 as 1458, 1459 as 1459, 1460 as 1460, 1461 as 1461, 1462 as 1462, 1463 as 1463, 1464 as 1464, 1465 as 1465, 1466 as 1466, 1467 as 1467, 1468 as 1468, 1469 as 1469, 1470 as 1470, 1471 as 1471, 1472 as 1472, 1473 as 1473, 1474 as 1474, 1475 as 1475, 1476 as 1476, 1477 as 1477, 1478 as 1478, 1479 as 1479, 1480 as 1480, 1481 as 1481, 1482 as 1482, 1483 as 1483, 1484 as 1484, 1485 as 1485, 1486 as 1486, 1487 as 1487, 1488 as 1488, 1489 as 1489, 1490 as 1490, 1491 as 1491, 1492 as 1492, 1493 as 1493, 1494 as 1494, 1495 as 1495, 1496 as 1496, 1497 as 1497, 1498 as 1498, 1499 as 1499, 1500 as 1500, 1501 as 1501, 1502 as 1502, 1503 as 1503, 1504 as 1504, 1505 as 1505, 1506 as 1506, 1507 as 1507, 1508 as 1508, 1509 as 1509, 1510 as 1510, 1511 as 1511, 1512 as 1512, 1513 as 1513, 1514 as 1514, 1515 as 1515, 1516 as 1516, 1517 as 1517, 1518 as 1518, 1519 as 1519, 1520 as 1520, 1521 as 1521, 1522 as 1522, 1523 as 1523, 1524 as 1524, 1525 as 1525, 1526 as 1526, 1527 as 1527, 1528 as 1528, 1529 as 1529, 1530 as 1530, 1531 as 1531, 1532 as 1532, 1533 as 1533, 1534 as 1534, 1535 as 1535, 1536 as 1536, 1537 as 1537, 1538 as 1538, 1539 as 1539, 1540 as 1540, 1541 as 1541, 1542 as 1542, 1543 as 1543, 1544 as 1544, 1545 as 1545, 1546 as 1546, 1547 as 1547, 1548 as 1548, 1549 as 1549, 1550 as 1550, 1551 as 1551, 1552 as 1552, 1553 as 1553, 1554 as 1554, 1555 as 1555, 1556 as 1556, 1557 as 1557, 1558 as 1558, 1559 as 1559, 1560 as 1560, 1561 as 1561, 1562 as 1562, 1563 as 1563, 1564 as 1564, 1565 as 1565, 1566 as 1566, 1567 as 1567, 1568 as 1568, 1569 as 1569, 1570 as 1570, 1571 as 1571, 1572 as 1572, 1573 as 1573, 1574 as 1574, 1575 as 1575, 1576 as 1576, 1577 as 1577, 1578 as 1578, 1579 as 1579, 1580 as 1580, 1581 as 1581, 1582 as 1582, 1583 as 1583, 1584 as 1584, 1585 as 1585, 1586 as 1586, 1587 as 1587, 1588 as 1588, 1589 as 1589, 1590 as 1590, 1591 as 1591, 1592 as 1592, 1593 as 1593, 1594 as 1594, 1595 as 1595, 1596 as 1596, 1597 as 1597, 1598 as 1598, 1599 as 1599, 1600 as 1600, 1601 as 1601, 1602 as 1602, 1603 as 1603, 1604 as 1604, 1605 as 1605, 1606 as 1606, 1607 as 1607, 1608 as 1608, 1609 as 1609, 1610 as 1610, 1611 as 1611, 1612 as 1612, 1613 as 1613, 1614 as 1614, 1615 as 1615, 1616 as 1616, 1617 as 1617, 1618 as 1618, 1619 as 1619, 1620 as 1620, 1621 as 1621, 1622 as 1622, 1623 as 1623, 1624 as 1624, 1625 as 1625, 1626 as 1626, 1627 as 1627, 1628 as 1628, 1629 as 1629, 1630 as 1630, 1631 as 1631, 1632 as 1632, 1633 as 1633, 1634 as 1634, 1635 as 1635, 1636 as 1636, 1637 as 1637, 1638 as 1638, 1639 as 1639, 1640 as 1640, 1641 as 1641, 1642 as 1642, 1643 as 1643, 1644 as 1644, 1645 as 1645, 1646 as 1646, 1647 as 1647, 1648 as 1648, 1649 as 1649, 1650 as 1650, 1651 as 1651, 1652 as 1652, 1653 as 1653, 1654 as 1654, 1655 as 1655, 1656 as 1656, 1657 as 1657, 1658 as 1658, 1659 as 1659, 1660 as 1660, 1661 as 1661, 1662 as 1662, 1663 as 1663, 1664 as 1664, 1665 as 1665, 1666 as 1666, 1667 as 1667, 1668 as 1668, 1669 as 1669, 1670 as 1670, 1671 as 1671, 1672 as 1672, 1673 as 1673, 1674 as 1674, 1675 as 1675, 1676 as 1676, 1677 as 1677, 1678 as 1678, 1679 as 1679, 1680 as 1680, 1681 as 1681, 1682 as 1682, 1683 as 1683, 1684 as 1684, 1685 as 1685, 1686 as 1686, 1687 as 1687, 1688 as 1688, 1689 as 1689, 1690 as 1690, 1691 as 1691, 1692 as 1692, 1693 as 1693, 1694 as 1694, 1695 as 1695, 1696 as 1696, 1697 as 1697, 1698 as 1698, 1699 as 1699, 1700 as 1700, 1701 as 1701, 1702 as 1702, 1703 as 1703, 1704 as 1704, 1705 as 1705, 1706 as 1706, 1707 as 1707, 1708 as 1708, 1709 as 1709, 1710 as 1710, 1711 as 1711, 1712 as 1712, 1713 as 1713, 1714 as 1714, 1715 as 1715, 1716 as 1716, 1717 as 1717, 1718 as 1718, 1719 as 1719, 1720 as 1720, 1721 as 1721, 1722 as 1722, 1723 as 1723, 1724 as 1724, 1725 as 1725, 1726 as 1726, 1727 as 1727, 1728 as 1728, 1729 as 1729, 1730 as 1730, 1731 as 1731, 1732 as 1732, 1733 as 1733, 1734 as 1734, 1735 as 1735, 1736 as 1736, 1737 as 1737, 1738 as 1738, 1739 as 1739, 1740 as 1740, 1741 as 1741, 1742 as 1742, 1743 as 1743, 1744 as 1744, 1745 as 1745, 1746 as 1746, 1747 as 1747, 1748 as 1748, 1749 as 1749, 1750 as 1750, 1751 as 1751, 1752 as 1752, 1753 as 1753, 1754 as 1754, 1755 as 1755, 1756 as 1756, 1757 as 1757, 1758 as 1758, 1759 as 1759, 1760 as 1760, 1761 as 1761, 1762 as 1762, 1763 as 1763, 1764 as 1764, 1765 as 1765, 1766 as 1766, 1767 as 1767, 1768 as 1768, 1769 as 1769, 1770 as 1770, 1771 as 1771, 1772 as 1772, 1773 as 1773, 1774 as 1774, 1775 as 1775, 1776 as 1776, 1777 as 1777, 1778 as 1778, 1779 as 1779, 1780 as 1780, 1781 as 1781, 1782 as 1782, 1783 as 1783, 1784 as 1784, 1785 as 1785, 1786 as 1786, 1787 as 1787, 1788 as 1788, 1789 as 1789, 1790 as 1790, 1791 as 1791, 1792 as 1792, 1793 as 1793, 1794 as 1794, 1795 as 1795, 1796 as 1796, 1797 as 1797, 1798 as 1798, 1799 as 1799, 1800 as 1800, 1801 as 1801, 1802 as 1802, 1803 as 1803, 1804 as 1804, 1805 as 1805, 1806 as 1806, 1807 as 1807, 1808 as 1808, 1809 as 1809, 1810 as 1810, 1811 as 1811, 1812 as 1812, 1813 as 1813, 1814 as 1814, 1815 as 1815, 1816 as 1816, 1817 as 1817, 1818 as 1818, 1819 as 1819, 1820 as 1820, 1821 as 1821, 1822 as 1822, 1823 as 1823, 1824 as 1824, 1825 as 1825, 1826 as 1826, 1827 as 1827, 1828 as 1828, 1829 as 1829, 1830 as 1830, 1831 as 1831, 1832 as 1832, 1833 as 1833, 1834 as 1834, 1835 as 1835, 1836 as 1836, 1837 as 1837, 1838 as 1838, 1839 as 1839, 1840 as 1840, 1841 as 1841, 1842 as 1842, 1843 as 1843, 1844 as 1844, 1845 as 1845, 1846 as 1846, 1847 as 1847, 1848 as 1848, 1849 as 1849, 1850 as 1850, 1851 as 1851, 1852 as 1852, 1853 as 1853, 1854 as 1854, 1855 as 1855, 1856 as 1856, 1857 as 1857, 1858 as 1858, 1859 as 1859, 1860 as 1860, 1861 as 1861, 1862 as 1862, 1863 as 1863, 1864 as 1864, 1865 as 1865, 1866 as 1866, 1867 as 1867, 1868 as 1868, 1869 as 1869, 1870 as 1870, 1871 as 1871, 1872 as 1872, 1873 as 1873, 1874 as 1874, 1875 as 1875, 1876 as 1876, 1877 as 1877, 1878 as 1878, 1879 as 1879, 1880 as 1880, 1881 as 1881, 1882 as 1882, 1883 as 1883, 1884 as 1884, 1885 as 1885, 1886 as 1886, 1887 as 1887, 1888 as 1888, 1889 as 1889, 1890 as 1890, 1891 as 1891, 1892 as 1892, 1893 as 1893, 1894 as 1894, 1895 as 1895, 1896 as 1896, 1897 as 1897, 1898 as 1898, 1899 as 1899, 1900 as 1900, 1901 as 1901, 1902 as 1902, 1903 as 1903, 1904 as 1904, 1905 as 1905, 1906 as 1906, 1907 as 1907, 1908 as 1908, 1909 as 1909, 1910 as 1910, 1911 as 1911, 1912 as 1912, 1913 as 1913, 1914 as 1914, 1915 as 1915, 1916 as 1916, 1917 as 1917, 1918 as 1918, 1919 as 1919, 1920 as 1920, 1921 as 1921, 1922 as 1922, 1923 as 1923, 1924 as 1924, 1925 as 1925, 1926 as 1926, 1927 as 1927, 1928 as 1928, 1929 as 1929, 1930 as 1930, 1931 as 1931, 1932 as 1932, 1933 as 1933, 1934 as 1934, 1935 as 1935, 1936 as 1936, 1937 as 1937, 1938 as 1938, 1939 as 1939, 1940 as 1940, 1941 as 1941, 1942 as 1942, 1943 as 1943, 1944 as 1944, 1945 as 1945, 1946 as 1946, 1947 as 1947, 1948 as 1948, 1949 as 1949, 1950 as 1950, 1951 as 1951, 1952 as 1952, 1953 as 1953, 1954 as 1954, 1955 as 1955, 1956 as 1956, 1957 as 1957, 1958 as 1958, 1959 as 1959, 1960 as 1960, 1961 as 1961, 1962 as 1962, 1963 as 1963, 1964 as 1964, 1965 as 1965, 1966 as 1966, 1967 as 1967, 1968 as 1968, 1969 as 1969, 1970 as 1970, 1971 as 1971, 1972 as 1972, 1973 as 1973, 1974 as 1974, 1975 as 1975, 1976 as 1976, 1977 as 1977, 1978 as 1978, 1979 as 1979, 1980 as 1980, 1981 as 1981, 1982 as 1982, 1983 as 1983, 1984 as 1984, 1985 as 1985, 1986 as 1986, 1987 as 1987, 1988 as 1988, 1989 as 1989, 1990 as 1990, 1991 as 1991, 1992 as 1992, 1993 as 1993, 1994 as 1994, 1995 as 1995, 1996 as 1996, 1997 as 1997, 1998 as 1998, 1999 as 1999, 2000 as 2000, 2001 as 2001, 2002 as 2002, 2003 as 2003, 2004 as 2004, 2005 as 2005, 2006 as 2006, 2007 as 2007, 2008 as 2008, 2009 as 2009, 2010 as 2010, 2011 as 2011, 2012 as 2012, 2013 as 2013, 2014 as 2014, 2015 as 2015, 2016 as 2016, 2017 as 2017, 2018 as 2018, 2019 as 2019, 2020 as 2020, 2021 as 2021, 2022 as 2022, 2023 as 2023, 2024 as 2024, 2025 as 2025, 2026 as 2026, 2027 as 2027, 2028 as 2028, 2029 as 2029, 2030 as 2030, 2031 as 2031, 2032 as 2032, 2033 as 2033, 2034 as 2034, 2035 as 2035, 2036 as 2036, 2037 as 2037, 2038 as 2038, 2039 as 2039, 2040 as 2040, 2041 as 2041, 2042 as 2042, 2043 as 2043, 2044 as 2044, 2045 as 2045, 2046 as 2046, 2047 as 2047, 2048 as 2048, 2049 as 2049, 2050 as 2050, 2051 as 2051, 2052 as 2052, 2053 as 2053, 2054 as 2054, 2055 as 2055, 2056 as 2056, 2057 as 2057, 2058 as 2058, 2059 as 2059, 2060 as 2060, 2061 as 2061, 2062 as 2062, 2063 as 2063, 2064 as 2064, 2065 as 2065, 2066 as 2066, 2067 as 2067, 2068 as 2068, 2069 as 2069, 2070 as 2070, 2071 as 2071, 2072 as 2072, 2073 as 2073, 2074 as 2074, 2075 as 2075, 2076 as 2076, 2077 as 2077, 2078 as 2078, 2079 as 2079, 2080 as 2080, 2081 as 2081, 2082 as 2082, 2083 as 2083, 2084 as 2084, 2085 as 2085, 2086 as 2086, 2087 as 2087, 2088 as 2088, 2089 as 2089, 2090 as 2090, 2091 as 2091, 2092 as 2092, 2093 as 2093, 2094 as 2094, 2095 as 2095, 2096 as 2096, 2097 as 2097, 2098 as 2098, 2099 as 2099, 2100 as 2100, 2101 as 2101, 2102 as 2102, 2103 as 2103, 2104 as 2104, 2105 as 2105, 2106 as 2106, 2107 as 2107, 2108 as 2108, 2109 as 2109, 2110 as 2110, 2111 as 2111, 2112 as 2112, 2113 as 2113, 2114 as 2114, 2115 as 2115, 2116 as 2116, 2117 as 2117, 2118 as 2118, 2119 as 2119, 2120 as 2120, 2121 as 2121, 2122 as 2122, 2123 as 2123, 2124 as 2124, 2125 as 2125, 2126 as 2126, 2127 as 2127, 2128 as 2128, 2129 as 2129, 2130 as 2130, 2131 as 2131, 2132 as 2132, 2133 as 2133, 2134 as 2134, 2135 as 2135, 2136 as 2136, 2137 as 2137, 2138 as 2138, 2139 as 2139, 2140 as 2140, 2141 as 2141, 2142 as 2142, 2143 as 2143, 2144 as 2144, 2145 as 2145, 2146 as 2146, 2147 as 2147, 2148 as 2148, 2149 as 2149, 2150 as 2150, 2151 as 2151, 2152 as 2152, 2153 as 2153, 2154 as 2154, 2155 as 2155, 2156 as 2156, 2157 as 2157, 2158 as 2158, 2159 as 2159, 2160 as 2160, 2161 as 2161, 2162 as 2162, 2163 as 2163, 2164 as 2164, 2165 as 2165, 2166 as 2166, 2167 as 2167, 2168 as 2168, 2169 as 2169, 2170 as 2170, 2171 as 2171, 2172 as 2172, 2173 as 2173, 2174 as 2174, 2175 as 2175, 2176 as 2176, 2177 as 2177, 2178 as 2178, 2179 as 2179, 2180 as 2180, 2181 as 2181, 2182 as 2182, 2183 as 2183, 2184 as 2184, 2185 as 2185, 2186 as 2186, 2187 as 2187, 2188 as 2188, 2189 as 2189, 2190 as 2190, 2191 as 2191, 2192 as 2192, 2193 as 2193, 2194 as 2194, 2195 as 2195, 2196 as 2196, 2197 as 2197, 2198 as 2198, 2199 as 2199, 2200 as 2200, 2201 as 2201, 2202 as 2202, 2203 as 2203, 2204 as 2204, 2205 as 2205, 2206 as 2206, 2207 as 2207, 2208 as 2208, 2209 as 2209, 2210 as 2210, 2211 as 2211, 2212 as 2212, 2213 as 2213, 2214 as 2214, 2215 as 2215, 2216 as 2216, 2217 as 2217, 2218 as 2218, 2219 as 2219, 2220 as 2220, 2221 as 2221, 2222 as 2222, 2223 as 2223, 2224 as 2224, 2225 as 2225, 2226 as 2226, 2227 as 2227, 2228 as 2228, 2229 as 2229, 2230 as 2230, 2231 as 2231, 2232 as 2232, 2233 as 2233, 2234 as 2234, 2235 as 2235, 2236 as 2236, 2237 as 2237, 2238 as 2238, 2239 as 2239, 2240 as 2240, 2241 as 2241, 2242 as 2242, 2243 as 2243, 2244 as 2244, 2245 as 2245, 2246 as 2246, 2247 as 2247, 2248 as 2248, 2249 as 2249, 2250 as 2250, 2251 as 2251, 2252 as 2252, 2253 as 2253, 2254 as 2254, 2255 as 2255, 2256 as 2256, 2257 as 2257, 2258 as 2258, 2259 as 2259, 2260 as 2260, 2261 as 2261, 2262 as 2262, 2263 as 2263, 2264 as 2264, 2265 as 2265, 2266 as 2266, 2267 as 2267, 2268 as 2268, 2269 as 2269, 2270 as 2270, 2271 as 2271, 2272 as 2272, 2273 as 2273, 2274 as 2274, 2275 as 2275, 2276 as 2276, 2277 as 2277, 2278 as 2278, 2279 as 2279, 2280 as 2280, 2281 as 2281, 2282 as 2282, 2283 as 2283, 2284 as 2284, 2285 as 2285, 2286 as 2286, 2287 as 2287, 2288 as 2288, 2289 as 2289, 2290 as 2290, 2291 as 2291, 2292 as 2292, 2293 as 2293, 2294 as 2294, 2295 as 2295, 2296 as 2296, 2297 as 2297, 2298 as 2298, 2299 as 2299, 2300 as 2300, 2301 as 2301, 2302 as 2302, 2303 as 2303, 2304 as 2304, 2305 as 2305, 2306 as 2306, 2307 as 2307, 2308 as 2308, 2309 as 2309, 2310 as 2310, 2311 as 2311, 2312 as 2312, 2313 as 2313, 2314 as 2314, 2315 as 2315, 2316 as 2316, 2317 as 2317, 2318 as 2318, 2319 as 2319, 2320 as 2320, 2321 as 2321, 2322 as 2322, 2323 as 2323, 2324 as 2324, 2325 as 2325, 2326 as 2326, 2327 as 2327, 2328 as 2328, 2329 as 2329, 2330 as 2330, 2331 as 2331, 2332 as 2332, 2333 as 2333, 2334 as 2334, 2335 as 2335, 2336 as 2336, 2337 as 2337, 2338 as 2338, 2339 as 2339, 2340 as 2340, 2341 as 2341, 2342 as 2342, 2343 as 2343, 2344 as 2344, 2345 as 2345, 2346 as 2346, 2347 as 2347, 2348 as 2348, 2349 as 2349, 2350 as 2350, 2351 as 2351, 2352 as 2352, 2353 as 2353, 2354 as 2354, 2355 as 2355, 2356 as 2356, 2357 as 2357, 2358 as 2358, 2359 as 2359, 2360 as 2360, 2361 as 2361, 2362 as 2362, 2363 as 2363, 2364 as 2364, 2365 as 2365, 2366 as 2366, 2367 as 2367, 2368 as 2368, 2369 as 2369, 2370 as 2370, 2371 as 2371, 2372 as 2372, 2373 as 2373, 2374 as 2374, 2375 as 2375, 2376 as 2376, 2377 as 2377, 2378 as 2378, 2379 as 2379, 2380 as 2380, 2381 as 2381, 2382 as 2382, 2383 as 2383, 2384 as 2384, 2385 as 2385, 2386 as 2386, 2387 as 2387, 2388 as 2388, 2389 as 2389, 2390 as 2390, 2391 as 2391, 2392 as 2392, 2393 as 2393, 2394 as 2394, 2395 as 2395, 2396 as 2396, 2397 as 2397, 2398 as 2398, 2399 as 2399, 2400 as 2400, 2401 as 2401, 2402 as 2402, 2403 as 2403, 2404 as 2404, 2405 as 2405, 2406 as 2406, 2407 as 2407, 2408 as 2408, 2409 as 2409, 2410 as 2410, 2411 as 2411, 2412 as 2412, 2413 as 2413, 2414 as 2414, 2415 as 2415, 2416 as 2416, 2417 as 2417, 2418 as 2418, 2419 as 2419, 2420 as 2420, 2421 as 2421, 2422 as 2422, 2423 as 2423, 2424 as 2424, 2425 as 2425, 2426 as 2426, 2427 as 2427, 2428 as 2428, 2429 as 2429, 2430 as 2430, 2431 as 2431, 2432 as 2432, 2433 as 2433, 2434 as 2434, 2435 as 2435, 2436 as 2436, 2437 as 2437, 2438 as 2438, 2439 as 2439, 2440 as 2440, 2441 as 2441, 2442 as 2442, 2443 as 2443, 2444 as 2444, 2445 as 2445, 2446 as 2446, 2447 as 2447, 2448 as 2448, 2449 as 2449, 2450 as 2450, 2451 as 2451, 2452 as 2452, 2453 as 2453, 2454 as 2454, 2455 as 2455, 2456 as 2456, 2457 as 2457, 2458 as 2458, 2459 as 2459, 2460 as 2460, 2461 as 2461, 2462 as 2462, 2463 as 2463, 2464 as 2464, 2465 as 2465, 2466 as 2466, 2467 as 2467, 2468 as 2468, 2469 as 2469, 2470 as 2470, 2471 as 2471, 2472 as 2472, 2473 as 2473, 2474 as 2474, 2475 as 2475, 2476 as 2476, 2477 as 2477, 2478 as 2478, 2479 as 2479, 2480 as 2480, 2481 as 2481, 2482 as 2482, 2483 as 2483, 2484 as 2484, 2485 as 2485, 2486 as 2486, 2487 as 2487, 2488 as 2488, 2489 as 2489, 2490 as 2490, 2491 as 2491, 2492 as 2492, 2493 as 2493, 2494 as 2494, 2495 as 2495, 2496 as 2496, 2497 as 2497, 2498 as 2498, 2499 as 2499, 2500 as 2500, 2501 as 2501, 2502 as 2502, 2503 as 2503, 2504 as 2504, 2505 as 2505, 2506 as 2506, 2507 as 2507, 2508 as 2508, 2509 as 2509, 2510 as 2510, 2511 as 2511, 2512 as 2512, 2513 as 2513, 2514 as 2514, 2515 as 2515, 2516 as 2516, 2517 as 2517, 2518 as 2518, 2519 as 2519, 2520 as 2520, 2521 as 2521, 2522 as 2522, 2523 as 2523, 2524 as 2524, 2525 as 2525, 2526 as 2526, 2527 as 2527, 2528 as 2528, 2529 as 2529, 2530 as 2530, 2531 as 2531, 2532 as 2532, 2533 as 2533, 2534 as 2534, 2535 as 2535, 2536 as 2536, 2537 as 2537, 2538 as 2538, 2539 as 2539, 2540 as 2540, 2541 as 2541, 2542 as 2542, 2543 as 2543, 2544 as 2544, 2545 as 2545, 2546 as 2546, 2547 as 2547, 2548 as 2548, 2549 as 2549, 2550 as 2550, 2551 as 2551, 2552 as 2552, 2553 as 2553, 2554 as 2554, 2555 as 2555, 2556 as 2556, 2557 as 2557, 2558 as 2558, 2559 as 2559, 2560 as 2560, 2561 as 2561, 2562 as 2562, 2563 as 2563, 2564 as 2564, 2565 as 2565, 2566 as 2566, 2567 as 2567, 2568 as 2568, 2569 as 2569, 2570 as 2570, 2571 as 2571, 2572 as 2572, 2573 as 2573, 2574 as 2574, 2575 as 2575, 2576 as 2576, 2577 as 2577, 2578 as 2578, 2579 as 2579, 2580 as 2580, 2581 as 2581, 2582 as 2582, 2583 as 2583, 2584 as 2584, 2585 as 2585, 2586 as 2586, 2587 as 2587, 2588 as 2588, 2589 as 2589, 2590 as 2590, 2591 as 2591, 2592 as 2592, 2593 as 2593, 2594 as 2594, 2595 as 2595, 2596 as 2596, 2597 as 2597, 2598 as 2598, 2599 as 2599, 2600 as 2600, 2601 as 2601, 2602 as 2602, 2603 as 2603, 2604 as 2604, 2605 as 2605, 2606 as 2606, 2607 as 2607, 2608 as 2608, 2609 as 2609, 2610 as 2610, 2611 as 2611, 2612 as 2612, 2613 as 2613, 2614 as 2614, 2615 as 2615, 2616 as 2616, 2617 as 2617, 2618 as 2618, 2619 as 2619, 2620 as 2620, 2621 as 2621, 2622 as 2622, 2623 as 2623, 2624 as 2624, 2625 as 2625, 2626 as 2626, 2627 as 2627, 2628 as 2628, 2629 as 2629, 2630 as 2630, 2631 as 2631, 2632 as 2632, 2633 as 2633, 2634 as 2634, 2635 as 2635, 2636 as 2636, 2637 as 2637, 2638 as 2638, 2639 as 2639, 2640 as 2640, 2641 as 2641, 2642 as 2642, 2643 as 2643, 2644 as 2644, 2645 as 2645, 2646 as 2646, 2647 as 2647, 2648 as 2648, 2649 as 2649, 2650 as 2650, 2651 as 2651, 2652 as 2652, 2653 as 2653, 2654 as 2654, 2655 as 2655, 2656 as 2656, 2657 as 2657, 2658 as 2658, 2659 as 2659, 2660 as 2660, 2661 as 2661, 2662 as 2662, 2663 as 2663, 2664 as 2664, 2665 as 2665, 2666 as 2666, 2667 as 2667, 2668 as 2668, 2669 as 2669, 2670 as 2670, 2671 as 2671, 2672 as 2672, 2673 as 2673, 2674 as 2674, 2675 as 2675, 2676 as 2676, 2677 as 2677, 2678 as 2678, 2679 as 2679, 2680 as 2680, 2681 as 2681, 2682 as 2682, 2683 as 2683, 2684 as 2684, 2685 as 2685, 2686 as 2686, 2687 as 2687, 2688 as 2688, 2689 as 2689, 2690 as 2690, 2691 as 2691, 2692 as 2692, 2693 as 2693, 2694 as 2694, 2695 as 2695, 2696 as 2696, 2697 as 2697, 2698 as 2698, 2699 as 2699, 2700 as 2700, 2701 as 2701, 2702 as 2702, 2703 as 2703, 2704 as 2704, 2705 as 2705, 2706 as 2706, 2707 as 2707, 2708 as 2708, 2709 as 2709, 2710 as 2710, 2711 as 2711, 2712 as 2712, 2713 as 2713, 2714 as 2714, 2715 as 2715, 2716 as 2716, 2717 as 2717, 2718 as 2718, 2719 as 2719, 2720 as 2720, 2721 as 2721, 2722 as 2722, 2723 as 2723, 2724 as 2724, 2725 as 2725, 2726 as 2726, 2727 as 2727, 2728 as 2728, 2729 as 2729, 2730 as 2730, 2731 as 2731, 2732 as 2732, 2733 as 2733, 2734 as 2734, 2735 as 2735, 2736 as 2736, 2737 as 2737, 2738 as 2738, 2739 as 2739, 2740 as 2740, 2741 as 2741, 2742 as 2742, 2743 as 2743, 2744 as 2744, 2745 as 2745, 2746 as 2746, 2747 as 2747, 2748 as 2748, 2749 as 2749, 2750 as 2750, 2751 as 2751, 2752 as 2752, 2753 as 2753, 2754 as 2754, 2755 as 2755, 2756 as 2756, 2757 as 2757, 2758 as 2758, 2759 as 2759, 2760 as 2760, 2761 as 2761, 2762 as 2762, 2763 as 2763, 2764 as 2764, 2765 as 2765, 2766 as 2766, 2767 as 2767, 2768 as 2768, 2769 as 2769, 2770 as 2770, 2771 as 2771, 2772 as 2772, 2773 as 2773, 2774 as 2774, 2775 as 2775, 2776 as 2776, 2777 as 2777, 2778 as 2778, 2779 as 2779, 2780 as 2780, 2781 as 2781, 2782 as 2782, 2783 as 2783, 2784 as 2784, 2785 as 2785, 2786 as 2786, 2787 as 2787, 2788 as 2788, 2789 as 2789, 2790 as 2790, 2791 as 2791, 2792 as 2792, 2793 as 2793, 2794 as 2794, 2795 as 2795, 2796 as 2796, 2797 as 2797, 2798 as 2798, 2799 as 2799, 2800 as 2800, 2801 as 2801, 2802 as 2802, 2803 as 2803, 2804 as 2804, 2805 as 2805, 2806 as 2806, 2807 as 2807, 2808 as 2808, 2809 as 2809, 2810 as 2810, 2811 as 2811, 2812 as 2812, 2813 as 2813, 2814 as 2814, 2815 as 2815, 2816 as 2816, 2817 as 2817, 2818 as 2818, 2819 as 2819, 2820 as 2820, 2821 as 2821, 2822 as 2822, 2823 as 2823, 2824 as 2824, 2825 as 2825, 2826 as 2826, 2827 as 2827, 2828 as 2828, 2829 as 2829, 2830 as 2830, 2831 as 2831, 2832 as 2832, 2833 as 2833, 2834 as 2834, 2835 as 2835, 2836 as 2836, 2837 as 2837, 2838 as 2838, 2839 as 2839, 2840 as 2840, 2841 as 2841, 2842 as 2842, 2843 as 2843, 2844 as 2844, 2845 as 2845, 2846 as 2846, 2847 as 2847, 2848 as 2848, 2849 as 2849, 2850 as 2850, 2851 as 2851, 2852 as 2852, 2853 as 2853, 2854 as 2854, 2855 as 2855, 2856 as 2856, 2857 as 2857, 2858 as 2858, 2859 as 2859, 2860 as 2860, 2861 as 2861, 2862 as 2862, 2863 as 2863, 2864 as 2864, 2865 as 2865, 2866 as 2866, 2867 as 2867, 2868 as 2868, 2869 as 2869, 2870 as 2870, 2871 as 2871, 2872 as 2872, 2873 as 2873, 2874 as 2874, 2875 as 2875, 2876 as 2876, 2877 as 2877, 2878 as 2878, 2879 as 2879, 2880 as 2880, 2881 as 2881, 2882 as 2882, 2883 as 2883, 2884 as 2884, 2885 as 2885, 2886 as 2886, 2887 as 2887, 2888 as 2888, 2889 as 2889, 2890 as 2890, 2891 as 2891, 2892 as 2892, 2893 as 2893, 2894 as 2894, 2895 as 2895, 2896 as 2896, 2897 as 2897, 2898 as 2898, 2899 as 2899, 2900 as 2900, 2901 as 2901, 2902 as 2902, 2903 as 2903, 2904 as 2904, 2905 as 2905, 2906 as 2906, 2907 as 2907, 2908 as 2908, 2909 as 2909, 2910 as 2910, 2911 as 2911, 2912 as 2912, 2913 as 2913, 2914 as 2914, 2915 as 2915, 2916 as 2916, 2917 as 2917, 2918 as 2918, 2919 as 2919, 2920 as 2920, 2921 as 2921, 2922 as 2922, 2923 as 2923, 2924 as 2924, 2925 as 2925, 2926 as 2926, 2927 as 2927, 2928 as 2928, 2929 as 2929, 2930 as 2930, 2931 as 2931, 2932 as 2932, 2933 as 2933, 2934 as 2934, 2935 as 2935, 2936 as 2936, 2937 as 2937, 2938 as 2938, 2939 as 2939, 2940 as 2940, 2941 as 2941, 2942 as 2942, 2943 as 2943, 2944 as 2944, 2945 as 2945, 2946 as 2946, 2947 as 2947, 2948 as 2948, 2949 as 2949, 2950 as 2950, 2951 as 2951, 2952 as 2952, 2953 as 2953, 2954 as 2954, 2955 as 2955, 2956 as 2956, 2957 as 2957, 2958 as 2958, 2959 as 2959, 2960 as 2960, 2961 as 2961, 2962 as 2962, 2963 as 2963, 2964 as 2964, 2965 as 2965, 2966 as 2966, 2967 as 2967, 2968 as 2968, 2969 as 2969, 2970 as 2970, 2971 as 2971, 2972 as 2972, 2973 as 2973, 2974 as 2974, 2975 as 2975, 2976 as 2976, 2977 as 2977, 2978 as 2978, 2979 as 2979, 2980 as 2980, 2981 as 2981, 2982 as 2982, 2983 as 2983, 2984 as 2984, 2985 as 2985, 2986 as 2986, 2987 as 2987, 2988 as 2988, 2989 as 2989, 2990 as 2990, 2991 as 2991, 2992 as 2992, 2993 as 2993, 2994 as 2994, 2995 as 2995, 2996 as 2996, 2997 as 2997, 2998 as 2998, 2999 as 2999, 3000 as 3000, 3001 as 3001, 3002 as 3002, 3003 as 3003, 3004 as 3004, 3005 as 3005, 3006 as 3006, 3007 as 3007, 3008 as 3008, 3009 as 3009, 3010 as 3010, 3011 as 3011, 3012 as 3012, 3013 as 3013, 3014 as 3014, 3015 as 3015, 3016 as 3016, 3017 as 3017, 3018 as 3018, 3019 as 3019, 3020 as 3020, 3021 as 3021, 3022 as 3022, 3023 as 3023, 3024 as 3024, 3025 as 3025, 3026 as 3026, 3027 as 3027, 3028 as 3028, 3029 as 3029, 3030 as 3030, 3031 as 3031, 3032 as 3032, 3033 as 3033, 3034 as 3034, 3035 as 3035, 3036 as 3036, 3037 as 3037, 3038 as 3038, 3039 as 3039, 3040 as 3040, 3041 as 3041, 3042 as 3042, 3043 as 3043, 3044 as 3044, 3045 as 3045, 3046 as 3046, 3047 as 3047, 3048 as 3048, 3049 as 3049, 3050 as 3050, 3051 as 3051, 3052 as 3052, 3053 as 3053, 3054 as 3054, 3055 as 3055, 3056 as 3056, 3057 as 3057, 3058 as 3058, 3059 as 3059, 3060 as 3060, 3061 as 3061, 3062 as 3062, 3063 as 3063, 3064 as 3064, 3065 as 3065, 3066 as 3066, 3067 as 3067, 3068 as 3068, 3069 as 3069, 3070 as 3070, 3071 as 3071, 3072 as 3072, 3073 as 3073, 3074 as 3074, 3075 as 3075, 3076 as 3076, 3077 as 3077, 3078 as 3078, 3079 as 3079, 3080 as 3080, 3081 as 3081, 3082 as 3082, 3083 as 3083, 3084 as 3084, 3085 as 3085, 3086 as 3086, 3087 as 3087, 3088 as 3088, 3089 as 3089, 3090 as 3090, 3091 as 3091, 3092 as 3092, 3093 as 3093, 3094 as 3094, 3095 as 3095, 3096 as 3096, 3097 as 3097, 3098 as 3098, 3099 as 3099, 3100 as 3100, 3101 as 3101, 3102 as 3102, 3103 as 3103, 3104 as 3104, 3105 as 3105, 3106 as 3106, 3107 as 3107, 3108 as 3108, 3109 as 3109, 3110 as 3110, 3111 as 3111, 3112 as 3112, 3113 as 3113, 3114 as 3114, 3115 as 3115, 3116 as 3116, 3117 as 3117, 3118 as 3118, 3119 as 3119, 3120 as 3120, 3121 as 3121, 3122 as 3122, 3123 as 3123, 3124 as 3124, 3125 as 3125, 3126 as 3126, 3127 as 3127, 3128 as 3128, 3129 as 3129, 3130 as 3130, 3131 as 3131, 3132 as 3132, 3133 as 3133, 3134 as 3134, 3135 as 3135, 3136 as 3136, 3137 as 3137, 3138 as 3138, 3139 as 3139, 3140 as 3140, 3141 as 3141, 3142 as 3142, 3143 as 3143, 3144 as 3144, 3145 as 3145, 3146 as 3146, 3147 as 3147, 3148 as 3148, 3149 as 3149, 3150 as 3150, 3151 as 3151, 3152 as 3152, 3153 as 3153, 3154 as 3154, 3155 as 3155, 3156 as 3156, 3157 as 3157, 3158 as 3158, 3159 as 3159, 3160 as 3160, 3161 as 3161, 3162 as 3162, 3163 as 3163, 3164 as 3164, 3165 as 3165, 3166 as 3166, 3167 as 3167, 3168 as 3168, 3169 as 3169, 3170 as 3170, 3171 as 3171, 3172 as 3172, 3173 as 3173, 3174 as 3174, 3175 as 3175, 3176 as 3176, 3177 as 3177, 3178 as 3178, 3179 as 3179, 3180 as 3180, 3181 as 3181, 3182 as 3182, 3183 as 3183, 3184 as 3184, 3185 as 3185, 3186 as 3186, 3187 as 3187, 3188 as 3188, 3189 as 3189, 3190 as 3190, 3191 as 3191, 3192 as 3192, 3193 as 3193, 3194 as 3194, 3195 as 3195, 3196 as 3196, 3197 as 3197, 3198 as 3198, 3199 as 3199, 3200 as 3200, 3201 as 3201, 3202 as 3202, 3203 as 3203, 3204 as 3204, 3205 as 3205, 3206 as 3206, 3207 as 3207, 3208 as 3208, 3209 as 3209, 3210 as 3210, 3211 as 3211, 3212 as 3212, 3213 as 3213, 3214 as 3214, 3215 as 3215, 3216 as 3216, 3217 as 3217, 3218 as 3218, 3219 as 3219, 3220 as 3220, 3221 as 3221, 3222 as 3222, 3223 as 3223, 3224 as 3224, 3225 as 3225, 3226 as 3226, 3227 as 3227, 3228 as 3228, 3229 as 3229, 3230 as 3230, 3231 as 3231, 3232 as 3232, 3233 as 3233, 3234 as 3234, 3235 as 3235, 3236 as 3236, 3237 as 3237, 3238 as 3238, 3239 as 3239, 3240 as 3240, 3241 as 3241, 3242 as 3242, 3243 as 3243, 3244 as 3244, 3245 as 3245, 3246 as 3246, 3247 as 3247, 3248 as 3248, 3249 as 3249, 3250 as 3250, 3251 as 3251, 3252 as 3252, 3253 as 3253, 3254 as 3254, 3255 as 3255, 3256 as 3256, 3257 as 3257, 3258 as 3258, 3259 as 3259, 3260 as 3260, 3261 as 3261, 3262 as 3262, 3263 as 3263, 3264 as 3264, 3265 as 3265, 3266 as 3266, 3267 as 3267, 3268 as 3268, 3269 as 3269, 3270 as 3270, 3271 as 3271, 3272 as 3272, 3273 as 3273, 3274 as 3274, 3275 as 3275, 3276 as 3276, 3277 as 3277, 3278 as 3278, 3279 as 3279, 3280 as 3280, 3281 as 3281, 3282 as 3282, 3283 as 3283, 3284 as 3284, 3285 as 3285, 3286 as 3286, 3287 as 3287, 3288 as 3288, 3289 as 3289, 3290 as 3290, 3291 as 3291, 3292 as 3292, 3293 as 3293, 3294 as 3294, 3295 as 3295, 3296 as 3296, 3297 as 3297, 3298 as 3298, 3299 as 3299, 3300 as 3300, 3301 as 3301, 3302 as 3302, 3303 as 3303, 3304 as 3304, 3305 as 3305, 3306 as 3306, 3307 as 3307, 3308 as 3308, 3309 as 3309, 3310 as 3310, 3311 as 3311, 3312 as 3312, 3313 as 3313, 3314 as 3314, 3315 as 3315, 3316 as 3316, 3317 as 3317, 3318 as 3318, 3319 as 3319, 3320 as 3320, 3321 as 3321, 3322 as 3322, 3323 as 3323, 3324 as 3324, 3325 as 3325, 3326 as 3326, 3327 as 3327, 3328 as 3328, 3329 as 3329, 3330 as 3330, 3331 as 3331, 3332 as 3332, 3333 as 3333, 3334 as 3334, 3335 as 3335, 3336 as 3336, 3337 as 3337, 3338 as 3338, 3339 as 3339, 3340 as 3340, 3341 as 3341, 3342 as 3342, 3343 as 3343, 3344 as 3344, 3345 as 3345, 3346 as 3346, 3347 as 3347, 3348 as 3348, 3349 as 3349, 3350 as 3350, 3351 as 3351, 3352 as 3352, 3353 as 3353, 3354 as 3354, 3355 as 3355, 3356 as 3356, 3357 as 3357, 3358 as 3358, 3359 as 3359, 3360 as 3360, 3361 as 3361, 3362 as 3362, 3363 as 3363, 3364 as 3364, 3365 as 3365, 3366 as 3366, 3367 as 3367, 3368 as 3368, 3369 as 3369, 3370 as 3370, 3371 as 3371, 3372 as 3372, 3373 as 3373, 3374 as 3374, 3375 as 3375, 3376 as 3376, 3377 as 3377, 3378 as 3378, 3379 as 3379, 3380 as 3380, 3381 as 3381, 3382 as 3382, 3383 as 3383, 3384 as 3384, 3385 as 3385, 3386 as 3386, 3387 as 3387, 3388 as 3388, 3389 as 3389, 3390 as 3390, 3391 as 3391, 3392 as 3392, 3393 as 3393, 3394 as 3394, 3395 as 3395, 3396 as 3396, 3397 as 3397, 3398 as 3398, 3399 as 3399, 3400 as 3400, 3401 as 3401, 3402 as 3402, 3403 as 3403, 3404 as 3404, 3405 as 3405, 3406 as 3406, 3407 as 3407, 3408 as 3408, 3409 as 3409, 3410 as 3410, 3411 as 3411, 3412 as 3412, 3413 as 3413, 3414 as 3414, 3415 as 3415, 3416 as 3416, 3417 as 3417, 3418 as 3418, 3419 as 3419, 3420 as 3420, 3421 as 3421, 3422 as 3422, 3423 as 3423, 3424 as 3424, 3425 as 3425, 3426 as 3426, 3427 as 3427, 3428 as 3428, 3429 as 3429, 3430 as 3430, 3431 as 3431, 3432 as 3432, 3433 as 3433, 3434 as 3434, 3435 as 3435, 3436 as 3436, 3437 as 3437, 3438 as 3438, 3439 as 3439, 3440 as 3440, 3441 as 3441, 3442 as 3442, 3443 as 3443, 3444 as 3444, 3445 as 3445, 3446 as 3446, 3447 as 3447, 3448 as 3448, 3449 as 3449, 3450 as 3450, 3451 as 3451, 3452 as 3452, 3453 as 3453, 3454 as 3454, 3455 as 3455, 3456 as 3456, 3457 as 3457, 3458 as 3458, 3459 as 3459, 3460 as 3460, 3461 as 3461, 3462 as 3462, 3463 as 3463, 3464 as 3464, 3465 as 3465, 3466 as 3466, 3467 as 3467, 3468 as 3468, 3469 as 3469, 3470 as 3470, 3471 as 3471, 3472 as 3472, 3473 as 3473, 3474 as 3474, 3475 as 3475, 3476 as 3476, 3477 as 3477, 3478 as 3478, 3479 as 3479, 3480 as 3480, 3481 as 3481, 3482 as 3482, 3483 as 3483, 3484 as 3484, 3485 as 3485, 3486 as 3486, 3487 as 3487, 3488 as 3488, 3489 as 3489, 3490 as 3490, 3491 as 3491, 3492 as 3492, 3493 as 3493, 3494 as 3494, 3495 as 3495, 3496 as 3496, 3497 as 3497, 3498 as 3498, 3499 as 3499, 3500 as 3500, 3501 as 3501, 3502 as 3502, 3503 as 3503, 3504 as 3504, 3505 as 3505, 3506 as 3506, 3507 as 3507, 3508 as 3508, 3509 as 3509, 3510 as 3510, 3511 as 3511, 3512 as 3512, 3513 as 3513, 3514 as 3514, 3515 as 3515, 3516 as 3516, 3517 as 3517, 3518 as 3518, 3519 as 3519, 3520 as 3520, 3521 as 3521, 3522 as 3522, 3523 as 3523, 3524 as 3524, 3525 as 3525, 3526 as 3526, 3527 as 3527, 3528 as 3528, 3529 as 3529, 3530 as 3530, 3531 as 3531, 3532 as 3532, 3533 as 3533, 3534 as 3534, 3535 as 3535, 3536 as 3536, 3537 as 3537, 3538 as 3538, 3539 as 3539, 3540 as 3540, 3541 as 3541, 3542 as 3542, 3543 as 3543, 3544 as 3544, 3545 as 3545, 3546 as 3546, 3547 as 3547, 3548 as 3548, 3549 as 3549, 3550 as 3550, 3551 as 3551, 3552 as 3552, 3553 as 3553, 3554 as 3554, 3555 as 3555, 3556 as 3556, 3557 as 3557, 3558 as 3558, 3559 as 3559, 3560 as 3560, 3561 as 3561, 3562 as 3562, 3563 as 3563, 3564 as 3564, 3565 as 3565, 3566 as 3566, 3567 as 3567, 3568 as 3568, 3569 as 3569, 3570 as 3570, 3571 as 3571, 3572 as 3572, 3573 as 3573, 3574 as 3574, 3575 as 3575, 3576 as 3576, 3577 as 3577, 3578 as 3578, 3579 as 3579, 3580 as 3580, 3581 as 3581, 3582 as 3582, 3583 as 3583, 3584 as 3584, 3585 as 3585, 3586 as 3586, 3587 as 3587, 3588 as 3588, 3589 as 3589, 3590 as 3590, 3591 as 3591, 3592 as 3592, 3593 as 3593, 3594 as 3594, 3595 as 3595, 3596 as 3596, 3597 as 3597, 3598 as 3598, 3599 as 3599, 3600 as 3600, 3601 as 3601, 3602 as 3602, 3603 as 3603, 3604 as 3604, 3605 as 3605, 3606 as 3606, 3607 as 3607, 3608 as 3608, 3609 as 3609, 3610 as 3610, 3611 as 3611, 3612 as 3612, 3613 as 3613, 3614 as 3614, 3615 as 3615, 3616 as 3616, 3617 as 3617, 3618 as 3618, 3619 as 3619, 3620 as 3620, 3621 as 3621, 3622 as 3622, 3623 as 3623, 3624 as 3624, 3625 as 3625, 3626 as 3626, 3627 as 3627, 3628 as 3628, 3629 as 3629, 3630 as 3630, 3631 as 3631, 3632 as 3632, 3633 as 3633, 3634 as 3634, 3635 as 3635, 3636 as 3636, 3637 as 3637, 3638 as 3638, 3639 as 3639, 3640 as 3640, 3641 as 3641, 3642 as 3642, 3643 as 3643, 3644 as 3644, 3645 as 3645, 3646 as 3646, 3647 as 3647, 3648 as 3648, 3649 as 3649, 3650 as 3650, 3651 as 3651, 3652 as 3652, 3653 as 3653, 3654 as 3654, 3655 as 3655, 3656 as 3656, 3657 as 3657, 3658 as 3658, 3659 as 3659, 3660 as 3660, 3661 as 3661, 3662 as 3662, 3663 as 3663, 3664 as 3664, 3665 as 3665, 3666 as 3666, 3667 as 3667, 3668 as 3668, 3669 as 3669, 3670 as 3670, 3671 as 3671, 3672 as 3672, 3673 as 3673, 3674 as 3674, 3675 as 3675, 3676 as 3676, 3677 as 3677, 3678 as 3678, 3679 as 3679, 3680 as 3680, 3681 as 3681, 3682 as 3682, 3683 as 3683, 3684 as 3684, 3685 as 3685, 3686 as 3686, 3687 as 3687, 3688 as 3688, 3689 as 3689, 3690 as 3690, 3691 as 3691, 3692 as 3692, 3693 as 3693, 3694 as 3694, 3695 as 3695, 3696 as 3696, 3697 as 3697, 3698 as 3698, 3699 as 3699, 3700 as 3700, 3701 as 3701, 3702 as 3702, 3703 as 3703, 3704 as 3704, 3705 as 3705, 3706 as 3706, 3707 as 3707, 3708 as 3708, 3709 as 3709, 3710 as 3710, 3711 as 3711, 3712 as 3712, 3713 as 3713, 3714 as 3714, 3715 as 3715, 3716 as 3716, 3717 as 3717, 3718 as 3718, 3719 as 3719, 3720 as 3720, 3721 as 3721, 3722 as 3722, 3723 as 3723, 3724 as 3724, 3725 as 3725, 3726 as 3726, 3727 as 3727, 3728 as 3728, 3729 as 3729, 3730 as 3730, 3731 as 3731, 3732 as 3732, 3733 as 3733, 3734 as 3734, 3735 as 3735, 3736 as 3736, 3737 as 3737, 3738 as 3738, 3739 as 3739, 3740 as 3740, 3741 as 3741, 3742 as 3742, 3743 as 3743, 3744 as 3744, 3745 as 3745, 3746 as 3746, 3747 as 3747, 3748 as 3748, 3749 as 3749, 3750 as 3750, 3751 as 3751, 3752 as 3752, 3753 as 3753, 3754 as 3754, 3755 as 3755, 3756 as 3756, 3757 as 3757, 3758 as 3758, 3759 as 3759, 3760 as 3760, 3761 as 3761, 3762 as 3762, 3763 as 3763, 3764 as 3764, 3765 as 3765, 3766 as 3766, 3767 as 3767, 3768 as 3768, 3769 as 3769, 3770 as 3770, 3771 as 3771, 3772 as 3772, 3773 as 3773, 3774 as 3774, 3775 as 3775, 3776 as 3776, 3777 as 3777, 3778 as 3778, 3779 as 3779, 3780 as 3780, 3781 as 3781, 3782 as 3782, 3783 as 3783, 3784 as 3784, 3785 as 3785, 3786 as 3786, 3787 as 3787, 3788 as 3788, 3789 as 3789, 3790 as 3790, 3791 as 3791, 3792 as 3792, 3793 as 3793, 3794 as 3794, 3795 as 3795, 3796 as 3796, 3797 as 3797, 3798 as 3798, 3799 as 3799, 3800 as 3800, 3801 as 3801, 3802 as 3802, 3803 as 3803, 3804 as 3804, 3805 as 3805, 3806 as 3806, 3807 as 3807, 3808 as 3808, 3809 as 3809, 3810 as 3810, 3811 as 3811, 3812 as 3812, 3813 as 3813, 3814 as 3814, 3815 as 3815, 3816 as 3816, 3817 as 3817, 3818 as 3818, 3819 as 3819, 3820 as 3820, 3821 as 3821, 3822 as 3822, 3823 as 3823, 3824 as 3824, 3825 as 3825, 3826 as 3826, 3827 as 3827, 3828 as 3828, 3829 as 3829, 3830 as 3830, 3831 as 3831, 3832 as 3832, 3833 as 3833, 3834 as 3834, 3835 as 3835, 3836 as 3836, 3837 as 3837, 3838 as 3838, 3839 as 3839, 3840 as 3840, 3841 as 3841, 3842 as 3842, 3843 as 3843, 3844 as 3844, 3845 as 3845, 3846 as 3846, 3847 as 3847, 3848 as 3848, 3849 as 3849, 3850 as 3850, 3851 as 3851, 3852 as 3852, 3853 as 3853, 3854 as 3854, 3855 as 3855, 3856 as 3856, 3857 as 3857, 3858 as 3858, 3859 as 3859, 3860 as 3860, 3861 as 3861, 3862 as 3862, 3863 as 3863, 3864 as 3864, 3865 as 3865, 3866 as 3866, 3867 as 3867, 3868 as 3868, 3869 as 3869, 3870 as 3870, 3871 as 3871, 3872 as 3872, 3873 as 3873, 3874 as 3874, 3875 as 3875, 3876 as 3876, 3877 as 3877, 3878 as 3878, 3879 as 3879, 3880 as 3880, 3881 as 3881, 3882 as 3882, 3883 as 3883, 3884 as 3884, 3885 as 3885, 3886 as 3886, 3887 as 3887, 3888 as 3888, 3889 as 3889, 3890 as 3890, 3891 as 3891, 3892 as 3892, 3893 as 3893, 3894 as 3894, 3895 as 3895, 3896 as 3896, 3897 as 3897, 3898 as 3898, 3899 as 3899, 3900 as 3900, 3901 as 3901, 3902 as 3902, 3903 as 3903, 3904 as 3904, 3905 as 3905, 3906 as 3906, 3907 as 3907, 3908 as 3908, 3909 as 3909, 3910 as 3910, 3911 as 3911, 3912 as 3912, 3913 as 3913, 3914 as 3914, 3915 as 3915, 3916 as 3916, 3917 as 3917, 3918 as 3918, 3919 as 3919, 3920 as 3920, 3921 as 3921, 3922 as 3922, 3923 as 3923, 3924 as 3924, 3925 as 3925, 3926 as 3926, 3927 as 3927, 3928 as 3928, 3929 as 3929, 3930 as 3930, 3931 as 3931, 3932 as 3932, 3933 as 3933, 3934 as 3934, 3935 as 3935, 3936 as 3936, 3937 as 3937, 3938 as 3938, 3939 as 3939, 3940 as 3940, 3941 as 3941, 3942 as 3942, 3943 as 3943, 3944 as 3944, 3945 as 3945, 3946 as 3946, 3947 as 3947, 3948 as 3948, 3949 as 3949, 3950 as 3950, 3951 as 3951, 3952 as 3952, 3953 as 3953, 3954 as 3954, 3955 as 3955, 3956 as 3956, 3957 as 3957, 3958 as 3958, 3959 as 3959, 3960 as 3960, 3961 as 3961, 3962 as 3962, 3963 as 3963, 3964 as 3964, 3965 as 3965, 3966 as 3966, 3967 as 3967, 3968 as 3968, 3969 as 3969, 3970 as 3970, 3971 as 3971, 3972 as 3972, 3973 as 3973, 3974 as 3974, 3975 as 3975, 3976 as 3976, 3977 as 3977, 3978 as 3978, 3979 as 3979, 3980 as 3980, 3981 as 3981, 3982 as 3982, 3983 as 3983, 3984 as 3984, 3985 as 3985, 3986 as 3986, 3987 as 3987, 3988 as 3988, 3989 as 3989, 3990 as 3990, 3991 as 3991, 3992 as 3992, 3993 as 3993, 3994 as 3994, 3995 as 3995, 3996 as 3996, 3997 as 3997, 3998 as 3998, 3999 as 3999, 4000 as 4000, 4001 as 4001, 4002 as 4002, 4003 as 4003, 4004 as 4004, 4005 as 4005, 4006 as 4006, 4007 as 4007, 4008 as 4008, 4009 as 4009, 4010 as 4010, 4011 as 4011, 4012 as 4012, 4013 as 4013, 4014 as 4014, 4015 as 4015, 4016 as 4016, 4017 as 4017, 4018 as 4018, 4019 as 4019, 4020 as 4020, 4021 as 4021, 4022 as 4022, 4023 as 4023, 4024 as 4024, 4025 as 4025, 4026 as 4026, 4027 as 4027, 4028 as 4028, 4029 as 4029, 4030 as 4030, 4031 as 4031, 4032 as 4032, 4033 as 4033, 4034 as 4034, 4035 as 4035, 4036 as 4036, 4037 as 4037, 4038 as 4038, 4039 as 4039, 4040 as 4040, 4041 as 4041, 4042 as 4042, 4043 as 4043, 4044 as 4044, 4045 as 4045, 4046 as 4046, 4047 as 4047, 4048 as 4048, 4049 as 4049, 4050 as 4050, 4051 as 4051, 4052 as 4052, 4053 as 4053, 4054 as 4054, 4055 as 4055, 4056 as 4056, 4057 as 4057, 4058 as 4058, 4059 as 4059, 4060 as 4060, 4061 as 4061, 4062 as 4062, 4063 as 4063, 4064 as 4064, 4065 as 4065, 4066 as 4066, 4067 as 4067, 4068 as 4068, 4069 as 4069, 4070 as 4070, 4071 as 4071, 4072 as 4072, 4073 as 4073, 4074 as 4074, 4075 as 4075, 4076 as 4076, 4077 as 4077, 4078 as 4078, 4079 as 4079, 4080 as 4080, 4081 as 4081, 4082 as 4082, 4083 as 4083, 4084 as 4084, 4085 as 4085, 4086 as 4086, 4087 as 4087, 4088 as 4088, 4089 as 4089, 4090 as 4090, 4091 as 4091, 4092 as 4092, 4093 as 4093, 4094 as 4094, 4095 as 4095, 4096 as 4096, 4097 as 4097, 4098 as 4098, 4099 as 4099, 4100 as 4100, 4101 as 4101, 4102 as 4102, 4103 as 4103, 4104 as 4104, 4105 as 4105, 4106 as 4106, 4107 as 4107, 4108 as 4108, 4109 as 4109, 4110 as 4110, 4111 as 4111, 4112 as 4112, 4113 as 4113, 4114 as 4114, 4115 as 4115, 4116 as 4116, 4117 as 4117, 4118 as 4118, 4119 as 4119, 4120 as 4120, 4121 as 4121, 4122 as 4122, 4123 as 4123, 4124 as 4124, 4125 as 4125, 4126 as 4126, 4127 as 4127, 4128 as 4128, 4129 as 4129, 4130 as 4130, 4131 as 4131, 4132 as 4132, 4133 as 4133, 4134 as 4134, 4135 as 4135, 4136 as 4136, 4137 as 4137, 4138 as 4138, 4139 as 4139, 4140 as 4140, 4141 as 4141, 4142 as 4142, 4143 as 4143, 4144 as 4144, 4145 as 4145, 4146 as 4146, 4147 as 4147, 4148 as 4148, 4149 as 4149, 4150 as 4150, 4151 as 4151, 4152 as 4152, 4153 as 4153, 4154 as 4154, 4155 as 4155, 4156 as 4156, 4157 as 4157, 4158 as 4158, 4159 as 4159, 4160 as 4160, 4161 as 4161, 4162 as 4162, 4163 as 4163, 4164 as 4164, 4165 as 4165, 4166 as 4166, 4167 as 4167, 4168 as 4168, 4169 as 4169, 4170 as 4170, 4171 as 4171, 4172 as 4172, 4173 as 4173, 4174 as 4174, 4175 as 4175, 4176 as 4176, 4177 as 4177, 4178 as 4178, 4179 as 4179, 4180 as 4180, 4181 as 4181, 4182 as 4182, 4183 as 4183, 4184 as 4184, 4185 as 4185, 4186 as 4186, 4187 as 4187, 4188 as 4188, 4189 as 4189, 4190 as 4190, 4191 as 4191, 4192 as 4192, 4193 as 4193, 4194 as 4194, 4195 as 4195, 4196 as 4196, 4197 as 4197, 4198 as 4198, 4199 as 4199, 4200 as 4200, 4201 as 4201, 4202 as 4202, 4203 as 4203, 4204 as 4204, 4205 as 4205, 4206 as 4206, 4207 as 4207, 4208 as 4208, 4209 as 4209, 4210 as 4210, 4211 as 4211, 4212 as 4212, 4213 as 4213, 4214 as 4214, 4215 as 4215, 4216 as 4216, 4217 as 4217, 4218 as 4218, 4219 as 4219, 4220 as 4220, 4221 as 4221, 4222 as 4222, 4223 as 4223, 4224 as 4224, 4225 as 4225, 4226 as 4226, 4227 as 4227, 4228 as 4228, 4229 as 4229, 4230 as 4230, 4231 as 4231, 4232 as 4232, 4233 as 4233, 4234 as 4234, 4235 as 4235, 4236 as 4236, 4237 as 4237, 4238 as 4238, 4239 as 4239, 4240 as 4240, 4241 as 4241, 4242 as 4242, 4243 as 4243, 4244 as 4244, 4245 as 4245, 4246 as 4246, 4247 as 4247, 4248 as 4248, 4249 as 4249, 4250 as 4250, 4251 as 4251, 4252 as 4252, 4253 as 4253, 4254 as 4254, 4255 as 4255, 4256 as 4256, 4257 as 4257, 4258 as 4258, 4259 as 4259, 4260 as 4260, 4261 as 4261, 4262 as 4262, 4263 as 4263, 4264 as 4264, 4265 as 4265, 4266 as 4266, 4267 as 4267, 4268 as 4268, 4269 as 4269, 4270 as 4270, 4271 as 4271, 4272 as 4272, 4273 as 4273, 4274 as 4274, 4275 as 4275, 4276 as 4276, 4277 as 4277, 4278 as 4278, 4279 as 4279, 4280 as 4280, 4281 as 4281, 4282 as 4282, 4283 as 4283, 4284 as 4284, 4285 as 4285, 4286 as 4286, 4287 as 4287, 4288 as 4288, 4289 as 4289, 4290 as 4290, 4291 as 4291, 4292 as 4292, 4293 as 4293, 4294 as 4294, 4295 as 4295, 4296 as 4296, 4297 as 4297, 4298 as 4298, 4299 as 4299, 4300 as 4300, 4301 as 4301, 4302 as 4302, 4303 as 4303, 4304 as 4304, 4305 as 4305, 4306 as 4306, 4307 as 4307, 4308 as 4308, 4309 as 4309, 4310 as 4310, 4311 as 4311, 4312 as 4312, 4313 as 4313, 4314 as 4314, 4315 as 4315, 4316 as 4316, 4317 as 4317, 4318 as 4318, 4319 as 4319, 4320 as 4320, 4321 as 4321, 4322 as 4322, 4323 as 4323, 4324 as 4324, 4325 as 4325, 4326 as 4326, 4327 as 4327, 4328 as 4328, 4329 as 4329, 4330 as 4330, 4331 as 4331, 4332 as 4332, 4333 as 4333, 4334 as 4334, 4335 as 4335, 4336 as 4336, 4337 as 4337, 4338 as 4338, 4339 as 4339, 4340 as 4340, 4341 as 4341, 4342 as 4342, 4343 as 4343, 4344 as 4344, 4345 as 4345, 4346 as 4346, 4347 as 4347, 4348 as 4348, 4349 as 4349, 4350 as 4350, 4351 as 4351, 4352 as 4352, 4353 as 4353, 4354 as 4354, 4355 as 4355, 4356 as 4356, 4357 as 4357, 4358 as 4358, 4359 as 4359, 4360 as 4360, 4361 as 4361, 4362 as 4362, 4363 as 4363, 4364 as 4364, 4365 as 4365, 4366 as 4366, 4367 as 4367, 4368 as 4368, 4369 as 4369, 4370 as 4370, 4371 as 4371, 4372 as 4372, 4373 as 4373, 4374 as 4374, 4375 as 4375, 4376 as 4376, 4377 as 4377, 4378 as 4378, 4379 as 4379, 4380 as 4380, 4381 as 4381, 4382 as 4382, 4383 as 4383, 4384 as 4384, 4385 as 4385, 4386 as 4386, 4387 as 4387, 4388 as 4388, 4389 as 4389, 4390 as 4390, 4391 as 4391, 4392 as 4392, 4393 as 4393, 4394 as 4394, 4395 as 4395, 4396 as 4396, 4397 as 4397, 4398 as 4398, 4399 as 4399, 4400 as 4400, 4401 as 4401, 4402 as 4402, 4403 as 4403, 4404 as 4404, 4405 as 4405, 4406 as 4406, 4407 as 4407, 4408 as 4408, 4409 as 4409, 4410 as 4410, 4411 as 4411, 4412 as 4412, 4413 as 4413, 4414 as 4414, 4415 as 4415, 4416 as 4416, 4417 as 4417, 4418 as 4418, 4419 as 4419, 4420 as 4420, 4421 as 4421, 4422 as 4422, 4423 as 4423, 4424 as 4424, 4425 as 4425, 4426 as 4426, 4427 as 4427, 4428 as 4428, 4429 as 4429, 4430 as 4430, 4431 as 4431, 4432 as 4432, 4433 as 4433, 4434 as 4434, 4435 as 4435, 4436 as 4436, 4437 as 4437, 4438 as 4438, 4439 as 4439, 4440 as 4440, 4441 as 4441, 4442 as 4442, 4443 as 4443, 4444 as 4444, 4445 as 4445, 4446 as 4446, 4447 as 4447, 4448 as 4448, 4449 as 4449, 4450 as 4450, 4451 as 4451, 4452 as 4452, 4453 as 4453, 4454 as 4454, 4455 as 4455, 4456 as 4456, 4457 as 4457, 4458 as 4458, 4459 as 4459, 4460 as 4460, 4461 as 4461, 4462 as 4462, 4463 as 4463, 4464 as 4464, 4465 as 4465, 4466 as 4466, 4467 as 4467, 4468 as 4468, 4469 as 4469, 4470 as 4470, 4471 as 4471, 4472 as 4472, 4473 as 4473, 4474 as 4474, 4475 as 4475, 4476 as 4476, 4477 as 4477, 4478 as 4478, 4479 as 4479, 4480 as 4480, 4481 as 4481, 4482 as 4482, 4483 as 4483, 4484 as 4484, 4485 as 4485, 4486 as 4486, 4487 as 4487, 4488 as 4488, 4489 as 4489, 4490 as 4490, 4491 as 4491, 4492 as 4492, 4493 as 4493, 4494 as 4494, 4495 as 4495, 4496 as 4496, 4497 as 4497, 4498 as 4498, 4499 as 4499, 4500 as 4500, 4501 as 4501, 4502 as 4502, 4503 as 4503, 4504 as 4504, 4505 as 4505, 4506 as 4506, 4507 as 4507, 4508 as 4508, 4509 as 4509, 4510 as 4510, 4511 as 4511, 4512 as 4512, 4513 as 4513, 4514 as 4514, 4515 as 4515, 4516 as 4516, 4517 as 4517, 4518 as 4518, 4519 as 4519, 4520 as 4520, 4521 as 4521, 4522 as 4522, 4523 as 4523, 4524 as 4524, 4525 as 4525, 4526 as 4526, 4527 as 4527, 4528 as 4528, 4529 as 4529, 4530 as 4530, 4531 as 4531, 4532 as 4532, 4533 as 4533, 4534 as 4534, 4535 as 4535, 4536 as 4536, 4537 as 4537, 4538 as 4538, 4539 as 4539, 4540 as 4540, 4541 as 4541, 4542 as 4542, 4543 as 4543, 4544 as 4544, 4545 as 4545, 4546 as 4546, 4547 as 4547, 4548 as 4548, 4549 as 4549, 4550 as 4550, 4551 as 4551, 4552 as 4552, 4553 as 4553, 4554 as 4554, 4555 as 4555, 4556 as 4556, 4557 as 4557, 4558 as 4558, 4559 as 4559, 4560 as 4560, 4561 as 4561, 4562 as 4562, 4563 as 4563, 4564 as 4564, 4565 as 4565, 4566 as 4566, 4567 as 4567, 4568 as 4568, 4569 as 4569, 4570 as 4570, 4571 as 4571, 4572 as 4572, 4573 as 4573, 4574 as 4574, 4575 as 4575, 4576 as 4576, 4577 as 4577, 4578 as 4578, 4579 as 4579, 4580 as 4580, 4581 as 4581, 4582 as 4582, 4583 as 4583, 4584 as 4584, 4585 as 4585, 4586 as 4586, 4587 as 4587, 4588 as 4588, 4589 as 4589, 4590 as 4590, 4591 as 4591, 4592 as 4592, 4593 as 4593, 4594 as 4594, 4595 as 4595, 4596 as 4596, 4597 as 4597, 4598 as 4598, 4599 as 4599, 4600 as 4600, 4601 as 4601, 4602 as 4602, 4603 as 4603, 4604 as 4604, 4605 as 4605, 4606 as 4606, 4607 as 4607, 4608 as 4608, 4609 as 4609, 4610 as 4610, 4611 as 4611, 4612 as 4612, 4613 as 4613, 4614 as 4614, 4615 as 4615, 4616 as 4616, 4617 as 4617, 4618 as 4618, 4619 as 4619, 4620 as 4620, 4621 as 4621, 4622 as 4622, 4623 as 4623, 4624 as 4624, 4625 as 4625, 4626 as 4626, 4627 as 4627, 4628 as 4628, 4629 as 4629, 4630 as 4630, 4631 as 4631, 4632 as 4632, 4633 as 4633, 4634 as 4634, 4635 as 4635, 4636 as 4636, 4637 as 4637, 4638 as 4638, 4639 as 4639, 4640 as 4640, 4641 as 4641, 4642 as 4642, 4643 as 4643, 4644 as 4644, 4645 as 4645, 4646 as 4646, 4647 as 4647, 4648 as 4648, 4649 as 4649, 4650 as 4650, 4651 as 4651, 4652 as 4652, 4653 as 4653, 4654 as 4654, 4655 as 4655, 4656 as 4656, 4657 as 4657, 4658 as 4658, 4659 as 4659, 4660 as 4660, 4661 as 4661, 4662 as 4662, 4663 as 4663, 4664 as 4664, 4665 as 4665, 4666 as 4666, 4667 as 4667, 4668 as 4668, 4669 as 4669, 4670 as 4670, 4671 as 4671, 4672 as 4672, 4673 as 4673, 4674 as 4674, 4675 as 4675, 4676 as 4676, 4677 as 4677, 4678 as 4678, 4679 as 4679, 4680 as 4680, 4681 as 4681, 4682 as 4682, 4683 as 4683, 4684 as 4684, 4685 as 4685, 4686 as 4686, 4687 as 4687, 4688 as 4688, 4689 as 4689, 4690 as 4690, 4691 as 4691, 4692 as 4692, 4693 as 4693, 4694 as 4694, 4695 as 4695, 4696 as 4696, 4697 as 4697, 4698 as 4698, 4699 as 4699, 4700 as 4700, 4701 as 4701, 4702 as 4702, 4703 as 4703, 4704 as 4704, 4705 as 4705, 4706 as 4706, 4707 as 4707, 4708 as 4708, 4709 as 4709, 4710 as 4710, 4711 as 4711, 4712 as 4712, 4713 as 4713, 4714 as 4714, 4715 as 4715, 4716 as 4716, 4717 as 4717, 4718 as 4718, 4719 as 4719, 4720 as 4720, 4721 as 4721, 4722 as 4722, 4723 as 4723, 4724 as 4724, 4725 as 4725, 4726 as 4726, 4727 as 4727, 4728 as 4728, 4729 as 4729, 4730 as 4730, 4731 as 4731, 4732 as 4732, 4733 as 4733, 4734 as 4734, 4735 as 4735, 4736 as 4736, 4737 as 4737, 4738 as 4738, 4739 as 4739, 4740 as 4740, 4741 as 4741, 4742 as 4742, 4743 as 4743, 4744 as 4744, 4745 as 4745, 4746 as 4746, 4747 as 4747, 4748 as 4748, 4749 as 4749, 4750 as 4750, 4751 as 4751, 4752 as 4752, 4753 as 4753, 4754 as 4754, 4755 as 4755, 4756 as 4756, 4757 as 4757, 4758 as 4758, 4759 as 4759, 4760 as 4760, 4761 as 4761, 4762 as 4762, 4763 as 4763, 4764 as 4764, 4765 as 4765, 4766 as 4766, 4767 as 4767, 4768 as 4768, 4769 as 4769, 4770 as 4770, 4771 as 4771, 4772 as 4772, 4773 as 4773, 4774 as 4774, 4775 as 4775, 4776 as 4776, 4777 as 4777, 4778 as 4778, 4779 as 4779, 4780 as 4780, 4781 as 4781, 4782 as 4782, 4783 as 4783, 4784 as 4784, 4785 as 4785, 4786 as 4786, 4787 as 4787, 4788 as 4788, 4789 as 4789, 4790 as 4790, 4791 as 4791, 4792 as 4792, 4793 as 4793, 4794 as 4794, 4795 as 4795, 4796 as 4796, 4797 as 4797, 4798 as 4798, 4799 as 4799, 4800 as 4800, 4801 as 4801, 4802 as 4802, 4803 as 4803, 4804 as 4804, 4805 as 4805, 4806 as 4806, 4807 as 4807, 4808 as 4808, 4809 as 4809, 4810 as 4810, 4811 as 4811, 4812 as 4812, 4813 as 4813, 4814 as 4814, 4815 as 4815, 4816 as 4816, 4817 as 4817, 4818 as 4818, 4819 as 4819, 4820 as 4820, 4821 as 4821, 4822 as 4822, 4823 as 4823, 4824 as 4824, 4825 as 4825, 4826 as 4826, 4827 as 4827, 4828 as 4828, 4829 as 4829, 4830 as 4830, 4831 as 4831, 4832 as 4832, 4833 as 4833, 4834 as 4834, 4835 as 4835, 4836 as 4836, 4837 as 4837, 4838 as 4838, 4839 as 4839, 4840 as 4840, 4841 as 4841, 4842 as 4842, 4843 as 4843, 4844 as 4844, 4845 as 4845, 4846 as 4846, 4847 as 4847, 4848 as 4848, 4849 as 4849, 4850 as 4850, 4851 as 4851, 4852 as 4852, 4853 as 4853, 4854 as 4854, 4855 as 4855, 4856 as 4856, 4857 as 4857, 4858 as 4858, 4859 as 4859, 4860 as 4860, 4861 as 4861, 4862 as 4862, 4863 as 4863, 4864 as 4864, 4865 as 4865, 4866 as 4866, 4867 as 4867, 4868 as 4868, 4869 as 4869, 4870 as 4870, 4871 as 4871, 4872 as 4872, 4873 as 4873, 4874 as 4874, 4875 as 4875, 4876 as 4876, 4877 as 4877, 4878 as 4878, 4879 as 4879, 4880 as 4880, 4881 as 4881, 4882 as 4882, 4883 as 4883, 4884 as 4884, 4885 as 4885, 4886 as 4886, 4887 as 4887, 4888 as 4888, 4889 as 4889, 4890 as 4890, 4891 as 4891, 4892 as 4892, 4893 as 4893, 4894 as 4894, 4895 as 4895, 4896 as 4896, 4897 as 4897, 4898 as 4898, 4899 as 4899, 4900 as 4900, 4901 as 4901, 4902 as 4902, 4903 as 4903, 4904 as 4904, 4905 as 4905, 4906 as 4906, 4907 as 4907, 4908 as 4908, 4909 as 4909, 4910 as 4910, 4911 as 4911, 4912 as 4912, 4913 as 4913, 4914 as 4914, 4915 as 4915, 4916 as 4916, 4917 as 4917, 4918 as 4918, 4919 as 4919, 4920 as 4920, 4921 as 4921, 4922 as 4922, 4923 as 4923, 4924 as 4924, 4925 as 4925, 4926 as 4926, 4927 as 4927, 4928 as 4928, 4929 as 4929, 4930 as 4930, 4931 as 4931, 4932 as 4932, 4933 as 4933, 4934 as 4934, 4935 as 4935, 4936 as 4936, 4937 as 4937, 4938 as 4938, 4939 as 4939, 4940 as 4940, 4941 as 4941, 4942 as 4942, 4943 as 4943, 4944 as 4944, 4945 as 4945, 4946 as 4946, 4947 as 4947, 4948 as 4948, 4949 as 4949, 4950 as 4950, 4951 as 4951, 4952 as 4952, 4953 as 4953, 4954 as 4954, 4955 as 4955, 4956 as 4956, 4957 as 4957, 4958 as 4958, 4959 as 4959, 4960 as 4960, 4961 as 4961, 4962 as 4962, 4963 as 4963, 4964 as 4964, 4965 as 4965, 4966 as 4966, 4967 as 4967, 4968 as 4968, 4969 as 4969, 4970 as 4970, 4971 as 4971, 4972 as 4972, 4973 as 4973, 4974 as 4974, 4975 as 4975, 4976 as 4976, 4977 as 4977, 4978 as 4978, 4979 as 4979, 4980 as 4980, 4981 as 4981, 4982 as 4982, 4983 as 4983, 4984 as 4984, 4985 as 4985, 4986 as 4986, 4987 as 4987, 4988 as 4988, 4989 as 4989, 4990 as 4990, 4991 as 4991, 4992 as 4992, 4993 as 4993, 4994 as 4994, 4995 as 4995, 4996 as 4996, 4997 as 4997, 4998 as 4998, 4999 as 4999, 5000 as 5000, 5001 as 5001,] : any[] +>a : (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1440 | 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 | 1482 | 1483 | 1484 | 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1518 | 1519 | 1520 | 1521 | 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1581 | 1582 | 1583 | 1584 | 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 | 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 1606 | 1607 | 1608 | 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 1616 | 1617 | 1618 | 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | 1625 | 1626 | 1627 | 1628 | 1629 | 1630 | 1631 | 1632 | 1633 | 1634 | 1635 | 1636 | 1637 | 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | 1652 | 1653 | 1654 | 1655 | 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 1666 | 1667 | 1668 | 1669 | 1670 | 1671 | 1672 | 1673 | 1674 | 1675 | 1676 | 1677 | 1678 | 1679 | 1680 | 1681 | 1682 | 1683 | 1684 | 1685 | 1686 | 1687 | 1688 | 1689 | 1690 | 1691 | 1692 | 1693 | 1694 | 1695 | 1696 | 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | 1720 | 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 1727 | 1728 | 1729 | 1730 | 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 1737 | 1738 | 1739 | 1740 | 1741 | 1742 | 1743 | 1744 | 1745 | 1746 | 1747 | 1748 | 1749 | 1750 | 1751 | 1752 | 1753 | 1754 | 1755 | 1756 | 1757 | 1758 | 1759 | 1760 | 1761 | 1762 | 1763 | 1764 | 1765 | 1766 | 1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1774 | 1775 | 1776 | 1777 | 1778 | 1779 | 1780 | 1781 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 1817 | 1818 | 1819 | 1820 | 1821 | 1822 | 1823 | 1824 | 1825 | 1826 | 1827 | 1828 | 1829 | 1830 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1839 | 1840 | 1841 | 1842 | 1843 | 1844 | 1845 | 1846 | 1847 | 1848 | 1849 | 1850 | 1851 | 1852 | 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | 1860 | 1861 | 1862 | 1863 | 1864 | 1865 | 1866 | 1867 | 1868 | 1869 | 1870 | 1871 | 1872 | 1873 | 1874 | 1875 | 1876 | 1877 | 1878 | 1879 | 1880 | 1881 | 1882 | 1883 | 1884 | 1885 | 1886 | 1887 | 1888 | 1889 | 1890 | 1891 | 1892 | 1893 | 1894 | 1895 | 1896 | 1897 | 1898 | 1899 | 1900 | 1901 | 1902 | 1903 | 1904 | 1905 | 1906 | 1907 | 1908 | 1909 | 1910 | 1911 | 1912 | 1913 | 1914 | 1915 | 1916 | 1917 | 1918 | 1919 | 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 1928 | 1929 | 1930 | 1931 | 1932 | 1933 | 1934 | 1935 | 1936 | 1937 | 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 1945 | 1946 | 1947 | 1948 | 1949 | 1950 | 1951 | 1952 | 1953 | 1954 | 1955 | 1956 | 1957 | 1958 | 1959 | 1960 | 1961 | 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | 2053 | 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 2068 | 2069 | 2070 | 2071 | 2072 | 2073 | 2074 | 2075 | 2076 | 2077 | 2078 | 2079 | 2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 2087 | 2088 | 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 2113 | 2114 | 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | 2121 | 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 2130 | 2131 | 2132 | 2133 | 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2146 | 2147 | 2148 | 2149 | 2150 | 2151 | 2152 | 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 2164 | 2165 | 2166 | 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | 2182 | 2183 | 2184 | 2185 | 2186 | 2187 | 2188 | 2189 | 2190 | 2191 | 2192 | 2193 | 2194 | 2195 | 2196 | 2197 | 2198 | 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 2212 | 2213 | 2214 | 2215 | 2216 | 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | 2228 | 2229 | 2230 | 2231 | 2232 | 2233 | 2234 | 2235 | 2236 | 2237 | 2238 | 2239 | 2240 | 2241 | 2242 | 2243 | 2244 | 2245 | 2246 | 2247 | 2248 | 2249 | 2250 | 2251 | 2252 | 2253 | 2254 | 2255 | 2256 | 2257 | 2258 | 2259 | 2260 | 2261 | 2262 | 2263 | 2264 | 2265 | 2266 | 2267 | 2268 | 2269 | 2270 | 2271 | 2272 | 2273 | 2274 | 2275 | 2276 | 2277 | 2278 | 2279 | 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 2286 | 2287 | 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 2295 | 2296 | 2297 | 2298 | 2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 2310 | 2311 | 2312 | 2313 | 2314 | 2315 | 2316 | 2317 | 2318 | 2319 | 2320 | 2321 | 2322 | 2323 | 2324 | 2325 | 2326 | 2327 | 2328 | 2329 | 2330 | 2331 | 2332 | 2333 | 2334 | 2335 | 2336 | 2337 | 2338 | 2339 | 2340 | 2341 | 2342 | 2343 | 2344 | 2345 | 2346 | 2347 | 2348 | 2349 | 2350 | 2351 | 2352 | 2353 | 2354 | 2355 | 2356 | 2357 | 2358 | 2359 | 2360 | 2361 | 2362 | 2363 | 2364 | 2365 | 2366 | 2367 | 2368 | 2369 | 2370 | 2371 | 2372 | 2373 | 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 2380 | 2381 | 2382 | 2383 | 2384 | 2385 | 2386 | 2387 | 2388 | 2389 | 2390 | 2391 | 2392 | 2393 | 2394 | 2395 | 2396 | 2397 | 2398 | 2399 | 2400 | 2401 | 2402 | 2403 | 2404 | 2405 | 2406 | 2407 | 2408 | 2409 | 2410 | 2411 | 2412 | 2413 | 2414 | 2415 | 2416 | 2417 | 2418 | 2419 | 2420 | 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 2427 | 2428 | 2429 | 2430 | 2431 | 2432 | 2433 | 2434 | 2435 | 2436 | 2437 | 2438 | 2439 | 2440 | 2441 | 2442 | 2443 | 2444 | 2445 | 2446 | 2447 | 2448 | 2449 | 2450 | 2451 | 2452 | 2453 | 2454 | 2455 | 2456 | 2457 | 2458 | 2459 | 2460 | 2461 | 2462 | 2463 | 2464 | 2465 | 2466 | 2467 | 2468 | 2469 | 2470 | 2471 | 2472 | 2473 | 2474 | 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 2482 | 2483 | 2484 | 2485 | 2486 | 2487 | 2488 | 2489 | 2490 | 2491 | 2492 | 2493 | 2494 | 2495 | 2496 | 2497 | 2498 | 2499 | 2500 | 2501 | 2502 | 2503 | 2504 | 2505 | 2506 | 2507 | 2508 | 2509 | 2510 | 2511 | 2512 | 2513 | 2514 | 2515 | 2516 | 2517 | 2518 | 2519 | 2520 | 2521 | 2522 | 2523 | 2524 | 2525 | 2526 | 2527 | 2528 | 2529 | 2530 | 2531 | 2532 | 2533 | 2534 | 2535 | 2536 | 2537 | 2538 | 2539 | 2540 | 2541 | 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 2548 | 2549 | 2550 | 2551 | 2552 | 2553 | 2554 | 2555 | 2556 | 2557 | 2558 | 2559 | 2560 | 2561 | 2562 | 2563 | 2564 | 2565 | 2566 | 2567 | 2568 | 2569 | 2570 | 2571 | 2572 | 2573 | 2574 | 2575 | 2576 | 2577 | 2578 | 2579 | 2580 | 2581 | 2582 | 2583 | 2584 | 2585 | 2586 | 2587 | 2588 | 2589 | 2590 | 2591 | 2592 | 2593 | 2594 | 2595 | 2596 | 2597 | 2598 | 2599 | 2600 | 2601 | 2602 | 2603 | 2604 | 2605 | 2606 | 2607 | 2608 | 2609 | 2610 | 2611 | 2612 | 2613 | 2614 | 2615 | 2616 | 2617 | 2618 | 2619 | 2620 | 2621 | 2622 | 2623 | 2624 | 2625 | 2626 | 2627 | 2628 | 2629 | 2630 | 2631 | 2632 | 2633 | 2634 | 2635 | 2636 | 2637 | 2638 | 2639 | 2640 | 2641 | 2642 | 2643 | 2644 | 2645 | 2646 | 2647 | 2648 | 2649 | 2650 | 2651 | 2652 | 2653 | 2654 | 2655 | 2656 | 2657 | 2658 | 2659 | 2660 | 2661 | 2662 | 2663 | 2664 | 2665 | 2666 | 2667 | 2668 | 2669 | 2670 | 2671 | 2672 | 2673 | 2674 | 2675 | 2676 | 2677 | 2678 | 2679 | 2680 | 2681 | 2682 | 2683 | 2684 | 2685 | 2686 | 2687 | 2688 | 2689 | 2690 | 2691 | 2692 | 2693 | 2694 | 2695 | 2696 | 2697 | 2698 | 2699 | 2700 | 2701 | 2702 | 2703 | 2704 | 2705 | 2706 | 2707 | 2708 | 2709 | 2710 | 2711 | 2712 | 2713 | 2714 | 2715 | 2716 | 2717 | 2718 | 2719 | 2720 | 2721 | 2722 | 2723 | 2724 | 2725 | 2726 | 2727 | 2728 | 2729 | 2730 | 2731 | 2732 | 2733 | 2734 | 2735 | 2736 | 2737 | 2738 | 2739 | 2740 | 2741 | 2742 | 2743 | 2744 | 2745 | 2746 | 2747 | 2748 | 2749 | 2750 | 2751 | 2752 | 2753 | 2754 | 2755 | 2756 | 2757 | 2758 | 2759 | 2760 | 2761 | 2762 | 2763 | 2764 | 2765 | 2766 | 2767 | 2768 | 2769 | 2770 | 2771 | 2772 | 2773 | 2774 | 2775 | 2776 | 2777 | 2778 | 2779 | 2780 | 2781 | 2782 | 2783 | 2784 | 2785 | 2786 | 2787 | 2788 | 2789 | 2790 | 2791 | 2792 | 2793 | 2794 | 2795 | 2796 | 2797 | 2798 | 2799 | 2800 | 2801 | 2802 | 2803 | 2804 | 2805 | 2806 | 2807 | 2808 | 2809 | 2810 | 2811 | 2812 | 2813 | 2814 | 2815 | 2816 | 2817 | 2818 | 2819 | 2820 | 2821 | 2822 | 2823 | 2824 | 2825 | 2826 | 2827 | 2828 | 2829 | 2830 | 2831 | 2832 | 2833 | 2834 | 2835 | 2836 | 2837 | 2838 | 2839 | 2840 | 2841 | 2842 | 2843 | 2844 | 2845 | 2846 | 2847 | 2848 | 2849 | 2850 | 2851 | 2852 | 2853 | 2854 | 2855 | 2856 | 2857 | 2858 | 2859 | 2860 | 2861 | 2862 | 2863 | 2864 | 2865 | 2866 | 2867 | 2868 | 2869 | 2870 | 2871 | 2872 | 2873 | 2874 | 2875 | 2876 | 2877 | 2878 | 2879 | 2880 | 2881 | 2882 | 2883 | 2884 | 2885 | 2886 | 2887 | 2888 | 2889 | 2890 | 2891 | 2892 | 2893 | 2894 | 2895 | 2896 | 2897 | 2898 | 2899 | 2900 | 2901 | 2902 | 2903 | 2904 | 2905 | 2906 | 2907 | 2908 | 2909 | 2910 | 2911 | 2912 | 2913 | 2914 | 2915 | 2916 | 2917 | 2918 | 2919 | 2920 | 2921 | 2922 | 2923 | 2924 | 2925 | 2926 | 2927 | 2928 | 2929 | 2930 | 2931 | 2932 | 2933 | 2934 | 2935 | 2936 | 2937 | 2938 | 2939 | 2940 | 2941 | 2942 | 2943 | 2944 | 2945 | 2946 | 2947 | 2948 | 2949 | 2950 | 2951 | 2952 | 2953 | 2954 | 2955 | 2956 | 2957 | 2958 | 2959 | 2960 | 2961 | 2962 | 2963 | 2964 | 2965 | 2966 | 2967 | 2968 | 2969 | 2970 | 2971 | 2972 | 2973 | 2974 | 2975 | 2976 | 2977 | 2978 | 2979 | 2980 | 2981 | 2982 | 2983 | 2984 | 2985 | 2986 | 2987 | 2988 | 2989 | 2990 | 2991 | 2992 | 2993 | 2994 | 2995 | 2996 | 2997 | 2998 | 2999 | 3000 | 3001 | 3002 | 3003 | 3004 | 3005 | 3006 | 3007 | 3008 | 3009 | 3010 | 3011 | 3012 | 3013 | 3014 | 3015 | 3016 | 3017 | 3018 | 3019 | 3020 | 3021 | 3022 | 3023 | 3024 | 3025 | 3026 | 3027 | 3028 | 3029 | 3030 | 3031 | 3032 | 3033 | 3034 | 3035 | 3036 | 3037 | 3038 | 3039 | 3040 | 3041 | 3042 | 3043 | 3044 | 3045 | 3046 | 3047 | 3048 | 3049 | 3050 | 3051 | 3052 | 3053 | 3054 | 3055 | 3056 | 3057 | 3058 | 3059 | 3060 | 3061 | 3062 | 3063 | 3064 | 3065 | 3066 | 3067 | 3068 | 3069 | 3070 | 3071 | 3072 | 3073 | 3074 | 3075 | 3076 | 3077 | 3078 | 3079 | 3080 | 3081 | 3082 | 3083 | 3084 | 3085 | 3086 | 3087 | 3088 | 3089 | 3090 | 3091 | 3092 | 3093 | 3094 | 3095 | 3096 | 3097 | 3098 | 3099 | 3100 | 3101 | 3102 | 3103 | 3104 | 3105 | 3106 | 3107 | 3108 | 3109 | 3110 | 3111 | 3112 | 3113 | 3114 | 3115 | 3116 | 3117 | 3118 | 3119 | 3120 | 3121 | 3122 | 3123 | 3124 | 3125 | 3126 | 3127 | 3128 | 3129 | 3130 | 3131 | 3132 | 3133 | 3134 | 3135 | 3136 | 3137 | 3138 | 3139 | 3140 | 3141 | 3142 | 3143 | 3144 | 3145 | 3146 | 3147 | 3148 | 3149 | 3150 | 3151 | 3152 | 3153 | 3154 | 3155 | 3156 | 3157 | 3158 | 3159 | 3160 | 3161 | 3162 | 3163 | 3164 | 3165 | 3166 | 3167 | 3168 | 3169 | 3170 | 3171 | 3172 | 3173 | 3174 | 3175 | 3176 | 3177 | 3178 | 3179 | 3180 | 3181 | 3182 | 3183 | 3184 | 3185 | 3186 | 3187 | 3188 | 3189 | 3190 | 3191 | 3192 | 3193 | 3194 | 3195 | 3196 | 3197 | 3198 | 3199 | 3200 | 3201 | 3202 | 3203 | 3204 | 3205 | 3206 | 3207 | 3208 | 3209 | 3210 | 3211 | 3212 | 3213 | 3214 | 3215 | 3216 | 3217 | 3218 | 3219 | 3220 | 3221 | 3222 | 3223 | 3224 | 3225 | 3226 | 3227 | 3228 | 3229 | 3230 | 3231 | 3232 | 3233 | 3234 | 3235 | 3236 | 3237 | 3238 | 3239 | 3240 | 3241 | 3242 | 3243 | 3244 | 3245 | 3246 | 3247 | 3248 | 3249 | 3250 | 3251 | 3252 | 3253 | 3254 | 3255 | 3256 | 3257 | 3258 | 3259 | 3260 | 3261 | 3262 | 3263 | 3264 | 3265 | 3266 | 3267 | 3268 | 3269 | 3270 | 3271 | 3272 | 3273 | 3274 | 3275 | 3276 | 3277 | 3278 | 3279 | 3280 | 3281 | 3282 | 3283 | 3284 | 3285 | 3286 | 3287 | 3288 | 3289 | 3290 | 3291 | 3292 | 3293 | 3294 | 3295 | 3296 | 3297 | 3298 | 3299 | 3300 | 3301 | 3302 | 3303 | 3304 | 3305 | 3306 | 3307 | 3308 | 3309 | 3310 | 3311 | 3312 | 3313 | 3314 | 3315 | 3316 | 3317 | 3318 | 3319 | 3320 | 3321 | 3322 | 3323 | 3324 | 3325 | 3326 | 3327 | 3328 | 3329 | 3330 | 3331 | 3332 | 3333 | 3334 | 3335 | 3336 | 3337 | 3338 | 3339 | 3340 | 3341 | 3342 | 3343 | 3344 | 3345 | 3346 | 3347 | 3348 | 3349 | 3350 | 3351 | 3352 | 3353 | 3354 | 3355 | 3356 | 3357 | 3358 | 3359 | 3360 | 3361 | 3362 | 3363 | 3364 | 3365 | 3366 | 3367 | 3368 | 3369 | 3370 | 3371 | 3372 | 3373 | 3374 | 3375 | 3376 | 3377 | 3378 | 3379 | 3380 | 3381 | 3382 | 3383 | 3384 | 3385 | 3386 | 3387 | 3388 | 3389 | 3390 | 3391 | 3392 | 3393 | 3394 | 3395 | 3396 | 3397 | 3398 | 3399 | 3400 | 3401 | 3402 | 3403 | 3404 | 3405 | 3406 | 3407 | 3408 | 3409 | 3410 | 3411 | 3412 | 3413 | 3414 | 3415 | 3416 | 3417 | 3418 | 3419 | 3420 | 3421 | 3422 | 3423 | 3424 | 3425 | 3426 | 3427 | 3428 | 3429 | 3430 | 3431 | 3432 | 3433 | 3434 | 3435 | 3436 | 3437 | 3438 | 3439 | 3440 | 3441 | 3442 | 3443 | 3444 | 3445 | 3446 | 3447 | 3448 | 3449 | 3450 | 3451 | 3452 | 3453 | 3454 | 3455 | 3456 | 3457 | 3458 | 3459 | 3460 | 3461 | 3462 | 3463 | 3464 | 3465 | 3466 | 3467 | 3468 | 3469 | 3470 | 3471 | 3472 | 3473 | 3474 | 3475 | 3476 | 3477 | 3478 | 3479 | 3480 | 3481 | 3482 | 3483 | 3484 | 3485 | 3486 | 3487 | 3488 | 3489 | 3490 | 3491 | 3492 | 3493 | 3494 | 3495 | 3496 | 3497 | 3498 | 3499 | 3500 | 3501 | 3502 | 3503 | 3504 | 3505 | 3506 | 3507 | 3508 | 3509 | 3510 | 3511 | 3512 | 3513 | 3514 | 3515 | 3516 | 3517 | 3518 | 3519 | 3520 | 3521 | 3522 | 3523 | 3524 | 3525 | 3526 | 3527 | 3528 | 3529 | 3530 | 3531 | 3532 | 3533 | 3534 | 3535 | 3536 | 3537 | 3538 | 3539 | 3540 | 3541 | 3542 | 3543 | 3544 | 3545 | 3546 | 3547 | 3548 | 3549 | 3550 | 3551 | 3552 | 3553 | 3554 | 3555 | 3556 | 3557 | 3558 | 3559 | 3560 | 3561 | 3562 | 3563 | 3564 | 3565 | 3566 | 3567 | 3568 | 3569 | 3570 | 3571 | 3572 | 3573 | 3574 | 3575 | 3576 | 3577 | 3578 | 3579 | 3580 | 3581 | 3582 | 3583 | 3584 | 3585 | 3586 | 3587 | 3588 | 3589 | 3590 | 3591 | 3592 | 3593 | 3594 | 3595 | 3596 | 3597 | 3598 | 3599 | 3600 | 3601 | 3602 | 3603 | 3604 | 3605 | 3606 | 3607 | 3608 | 3609 | 3610 | 3611 | 3612 | 3613 | 3614 | 3615 | 3616 | 3617 | 3618 | 3619 | 3620 | 3621 | 3622 | 3623 | 3624 | 3625 | 3626 | 3627 | 3628 | 3629 | 3630 | 3631 | 3632 | 3633 | 3634 | 3635 | 3636 | 3637 | 3638 | 3639 | 3640 | 3641 | 3642 | 3643 | 3644 | 3645 | 3646 | 3647 | 3648 | 3649 | 3650 | 3651 | 3652 | 3653 | 3654 | 3655 | 3656 | 3657 | 3658 | 3659 | 3660 | 3661 | 3662 | 3663 | 3664 | 3665 | 3666 | 3667 | 3668 | 3669 | 3670 | 3671 | 3672 | 3673 | 3674 | 3675 | 3676 | 3677 | 3678 | 3679 | 3680 | 3681 | 3682 | 3683 | 3684 | 3685 | 3686 | 3687 | 3688 | 3689 | 3690 | 3691 | 3692 | 3693 | 3694 | 3695 | 3696 | 3697 | 3698 | 3699 | 3700 | 3701 | 3702 | 3703 | 3704 | 3705 | 3706 | 3707 | 3708 | 3709 | 3710 | 3711 | 3712 | 3713 | 3714 | 3715 | 3716 | 3717 | 3718 | 3719 | 3720 | 3721 | 3722 | 3723 | 3724 | 3725 | 3726 | 3727 | 3728 | 3729 | 3730 | 3731 | 3732 | 3733 | 3734 | 3735 | 3736 | 3737 | 3738 | 3739 | 3740 | 3741 | 3742 | 3743 | 3744 | 3745 | 3746 | 3747 | 3748 | 3749 | 3750 | 3751 | 3752 | 3753 | 3754 | 3755 | 3756 | 3757 | 3758 | 3759 | 3760 | 3761 | 3762 | 3763 | 3764 | 3765 | 3766 | 3767 | 3768 | 3769 | 3770 | 3771 | 3772 | 3773 | 3774 | 3775 | 3776 | 3777 | 3778 | 3779 | 3780 | 3781 | 3782 | 3783 | 3784 | 3785 | 3786 | 3787 | 3788 | 3789 | 3790 | 3791 | 3792 | 3793 | 3794 | 3795 | 3796 | 3797 | 3798 | 3799 | 3800 | 3801 | 3802 | 3803 | 3804 | 3805 | 3806 | 3807 | 3808 | 3809 | 3810 | 3811 | 3812 | 3813 | 3814 | 3815 | 3816 | 3817 | 3818 | 3819 | 3820 | 3821 | 3822 | 3823 | 3824 | 3825 | 3826 | 3827 | 3828 | 3829 | 3830 | 3831 | 3832 | 3833 | 3834 | 3835 | 3836 | 3837 | 3838 | 3839 | 3840 | 3841 | 3842 | 3843 | 3844 | 3845 | 3846 | 3847 | 3848 | 3849 | 3850 | 3851 | 3852 | 3853 | 3854 | 3855 | 3856 | 3857 | 3858 | 3859 | 3860 | 3861 | 3862 | 3863 | 3864 | 3865 | 3866 | 3867 | 3868 | 3869 | 3870 | 3871 | 3872 | 3873 | 3874 | 3875 | 3876 | 3877 | 3878 | 3879 | 3880 | 3881 | 3882 | 3883 | 3884 | 3885 | 3886 | 3887 | 3888 | 3889 | 3890 | 3891 | 3892 | 3893 | 3894 | 3895 | 3896 | 3897 | 3898 | 3899 | 3900 | 3901 | 3902 | 3903 | 3904 | 3905 | 3906 | 3907 | 3908 | 3909 | 3910 | 3911 | 3912 | 3913 | 3914 | 3915 | 3916 | 3917 | 3918 | 3919 | 3920 | 3921 | 3922 | 3923 | 3924 | 3925 | 3926 | 3927 | 3928 | 3929 | 3930 | 3931 | 3932 | 3933 | 3934 | 3935 | 3936 | 3937 | 3938 | 3939 | 3940 | 3941 | 3942 | 3943 | 3944 | 3945 | 3946 | 3947 | 3948 | 3949 | 3950 | 3951 | 3952 | 3953 | 3954 | 3955 | 3956 | 3957 | 3958 | 3959 | 3960 | 3961 | 3962 | 3963 | 3964 | 3965 | 3966 | 3967 | 3968 | 3969 | 3970 | 3971 | 3972 | 3973 | 3974 | 3975 | 3976 | 3977 | 3978 | 3979 | 3980 | 3981 | 3982 | 3983 | 3984 | 3985 | 3986 | 3987 | 3988 | 3989 | 3990 | 3991 | 3992 | 3993 | 3994 | 3995 | 3996 | 3997 | 3998 | 3999 | 4000 | 4001 | 4002 | 4003 | 4004 | 4005 | 4006 | 4007 | 4008 | 4009 | 4010 | 4011 | 4012 | 4013 | 4014 | 4015 | 4016 | 4017 | 4018 | 4019 | 4020 | 4021 | 4022 | 4023 | 4024 | 4025 | 4026 | 4027 | 4028 | 4029 | 4030 | 4031 | 4032 | 4033 | 4034 | 4035 | 4036 | 4037 | 4038 | 4039 | 4040 | 4041 | 4042 | 4043 | 4044 | 4045 | 4046 | 4047 | 4048 | 4049 | 4050 | 4051 | 4052 | 4053 | 4054 | 4055 | 4056 | 4057 | 4058 | 4059 | 4060 | 4061 | 4062 | 4063 | 4064 | 4065 | 4066 | 4067 | 4068 | 4069 | 4070 | 4071 | 4072 | 4073 | 4074 | 4075 | 4076 | 4077 | 4078 | 4079 | 4080 | 4081 | 4082 | 4083 | 4084 | 4085 | 4086 | 4087 | 4088 | 4089 | 4090 | 4091 | 4092 | 4093 | 4094 | 4095 | 4096 | 4097 | 4098 | 4099 | 4100 | 4101 | 4102 | 4103 | 4104 | 4105 | 4106 | 4107 | 4108 | 4109 | 4110 | 4111 | 4112 | 4113 | 4114 | 4115 | 4116 | 4117 | 4118 | 4119 | 4120 | 4121 | 4122 | 4123 | 4124 | 4125 | 4126 | 4127 | 4128 | 4129 | 4130 | 4131 | 4132 | 4133 | 4134 | 4135 | 4136 | 4137 | 4138 | 4139 | 4140 | 4141 | 4142 | 4143 | 4144 | 4145 | 4146 | 4147 | 4148 | 4149 | 4150 | 4151 | 4152 | 4153 | 4154 | 4155 | 4156 | 4157 | 4158 | 4159 | 4160 | 4161 | 4162 | 4163 | 4164 | 4165 | 4166 | 4167 | 4168 | 4169 | 4170 | 4171 | 4172 | 4173 | 4174 | 4175 | 4176 | 4177 | 4178 | 4179 | 4180 | 4181 | 4182 | 4183 | 4184 | 4185 | 4186 | 4187 | 4188 | 4189 | 4190 | 4191 | 4192 | 4193 | 4194 | 4195 | 4196 | 4197 | 4198 | 4199 | 4200 | 4201 | 4202 | 4203 | 4204 | 4205 | 4206 | 4207 | 4208 | 4209 | 4210 | 4211 | 4212 | 4213 | 4214 | 4215 | 4216 | 4217 | 4218 | 4219 | 4220 | 4221 | 4222 | 4223 | 4224 | 4225 | 4226 | 4227 | 4228 | 4229 | 4230 | 4231 | 4232 | 4233 | 4234 | 4235 | 4236 | 4237 | 4238 | 4239 | 4240 | 4241 | 4242 | 4243 | 4244 | 4245 | 4246 | 4247 | 4248 | 4249 | 4250 | 4251 | 4252 | 4253 | 4254 | 4255 | 4256 | 4257 | 4258 | 4259 | 4260 | 4261 | 4262 | 4263 | 4264 | 4265 | 4266 | 4267 | 4268 | 4269 | 4270 | 4271 | 4272 | 4273 | 4274 | 4275 | 4276 | 4277 | 4278 | 4279 | 4280 | 4281 | 4282 | 4283 | 4284 | 4285 | 4286 | 4287 | 4288 | 4289 | 4290 | 4291 | 4292 | 4293 | 4294 | 4295 | 4296 | 4297 | 4298 | 4299 | 4300 | 4301 | 4302 | 4303 | 4304 | 4305 | 4306 | 4307 | 4308 | 4309 | 4310 | 4311 | 4312 | 4313 | 4314 | 4315 | 4316 | 4317 | 4318 | 4319 | 4320 | 4321 | 4322 | 4323 | 4324 | 4325 | 4326 | 4327 | 4328 | 4329 | 4330 | 4331 | 4332 | 4333 | 4334 | 4335 | 4336 | 4337 | 4338 | 4339 | 4340 | 4341 | 4342 | 4343 | 4344 | 4345 | 4346 | 4347 | 4348 | 4349 | 4350 | 4351 | 4352 | 4353 | 4354 | 4355 | 4356 | 4357 | 4358 | 4359 | 4360 | 4361 | 4362 | 4363 | 4364 | 4365 | 4366 | 4367 | 4368 | 4369 | 4370 | 4371 | 4372 | 4373 | 4374 | 4375 | 4376 | 4377 | 4378 | 4379 | 4380 | 4381 | 4382 | 4383 | 4384 | 4385 | 4386 | 4387 | 4388 | 4389 | 4390 | 4391 | 4392 | 4393 | 4394 | 4395 | 4396 | 4397 | 4398 | 4399 | 4400 | 4401 | 4402 | 4403 | 4404 | 4405 | 4406 | 4407 | 4408 | 4409 | 4410 | 4411 | 4412 | 4413 | 4414 | 4415 | 4416 | 4417 | 4418 | 4419 | 4420 | 4421 | 4422 | 4423 | 4424 | 4425 | 4426 | 4427 | 4428 | 4429 | 4430 | 4431 | 4432 | 4433 | 4434 | 4435 | 4436 | 4437 | 4438 | 4439 | 4440 | 4441 | 4442 | 4443 | 4444 | 4445 | 4446 | 4447 | 4448 | 4449 | 4450 | 4451 | 4452 | 4453 | 4454 | 4455 | 4456 | 4457 | 4458 | 4459 | 4460 | 4461 | 4462 | 4463 | 4464 | 4465 | 4466 | 4467 | 4468 | 4469 | 4470 | 4471 | 4472 | 4473 | 4474 | 4475 | 4476 | 4477 | 4478 | 4479 | 4480 | 4481 | 4482 | 4483 | 4484 | 4485 | 4486 | 4487 | 4488 | 4489 | 4490 | 4491 | 4492 | 4493 | 4494 | 4495 | 4496 | 4497 | 4498 | 4499 | 4500 | 4501 | 4502 | 4503 | 4504 | 4505 | 4506 | 4507 | 4508 | 4509 | 4510 | 4511 | 4512 | 4513 | 4514 | 4515 | 4516 | 4517 | 4518 | 4519 | 4520 | 4521 | 4522 | 4523 | 4524 | 4525 | 4526 | 4527 | 4528 | 4529 | 4530 | 4531 | 4532 | 4533 | 4534 | 4535 | 4536 | 4537 | 4538 | 4539 | 4540 | 4541 | 4542 | 4543 | 4544 | 4545 | 4546 | 4547 | 4548 | 4549 | 4550 | 4551 | 4552 | 4553 | 4554 | 4555 | 4556 | 4557 | 4558 | 4559 | 4560 | 4561 | 4562 | 4563 | 4564 | 4565 | 4566 | 4567 | 4568 | 4569 | 4570 | 4571 | 4572 | 4573 | 4574 | 4575 | 4576 | 4577 | 4578 | 4579 | 4580 | 4581 | 4582 | 4583 | 4584 | 4585 | 4586 | 4587 | 4588 | 4589 | 4590 | 4591 | 4592 | 4593 | 4594 | 4595 | 4596 | 4597 | 4598 | 4599 | 4600 | 4601 | 4602 | 4603 | 4604 | 4605 | 4606 | 4607 | 4608 | 4609 | 4610 | 4611 | 4612 | 4613 | 4614 | 4615 | 4616 | 4617 | 4618 | 4619 | 4620 | 4621 | 4622 | 4623 | 4624 | 4625 | 4626 | 4627 | 4628 | 4629 | 4630 | 4631 | 4632 | 4633 | 4634 | 4635 | 4636 | 4637 | 4638 | 4639 | 4640 | 4641 | 4642 | 4643 | 4644 | 4645 | 4646 | 4647 | 4648 | 4649 | 4650 | 4651 | 4652 | 4653 | 4654 | 4655 | 4656 | 4657 | 4658 | 4659 | 4660 | 4661 | 4662 | 4663 | 4664 | 4665 | 4666 | 4667 | 4668 | 4669 | 4670 | 4671 | 4672 | 4673 | 4674 | 4675 | 4676 | 4677 | 4678 | 4679 | 4680 | 4681 | 4682 | 4683 | 4684 | 4685 | 4686 | 4687 | 4688 | 4689 | 4690 | 4691 | 4692 | 4693 | 4694 | 4695 | 4696 | 4697 | 4698 | 4699 | 4700 | 4701 | 4702 | 4703 | 4704 | 4705 | 4706 | 4707 | 4708 | 4709 | 4710 | 4711 | 4712 | 4713 | 4714 | 4715 | 4716 | 4717 | 4718 | 4719 | 4720 | 4721 | 4722 | 4723 | 4724 | 4725 | 4726 | 4727 | 4728 | 4729 | 4730 | 4731 | 4732 | 4733 | 4734 | 4735 | 4736 | 4737 | 4738 | 4739 | 4740 | 4741 | 4742 | 4743 | 4744 | 4745 | 4746 | 4747 | 4748 | 4749 | 4750 | 4751 | 4752 | 4753 | 4754 | 4755 | 4756 | 4757 | 4758 | 4759 | 4760 | 4761 | 4762 | 4763 | 4764 | 4765 | 4766 | 4767 | 4768 | 4769 | 4770 | 4771 | 4772 | 4773 | 4774 | 4775 | 4776 | 4777 | 4778 | 4779 | 4780 | 4781 | 4782 | 4783 | 4784 | 4785 | 4786 | 4787 | 4788 | 4789 | 4790 | 4791 | 4792 | 4793 | 4794 | 4795 | 4796 | 4797 | 4798 | 4799 | 4800 | 4801 | 4802 | 4803 | 4804 | 4805 | 4806 | 4807 | 4808 | 4809 | 4810 | 4811 | 4812 | 4813 | 4814 | 4815 | 4816 | 4817 | 4818 | 4819 | 4820 | 4821 | 4822 | 4823 | 4824 | 4825 | 4826 | 4827 | 4828 | 4829 | 4830 | 4831 | 4832 | 4833 | 4834 | 4835 | 4836 | 4837 | 4838 | 4839 | 4840 | 4841 | 4842 | 4843 | 4844 | 4845 | 4846 | 4847 | 4848 | 4849 | 4850 | 4851 | 4852 | 4853 | 4854 | 4855 | 4856 | 4857 | 4858 | 4859 | 4860 | 4861 | 4862 | 4863 | 4864 | 4865 | 4866 | 4867 | 4868 | 4869 | 4870 | 4871 | 4872 | 4873 | 4874 | 4875 | 4876 | 4877 | 4878 | 4879 | 4880 | 4881 | 4882 | 4883 | 4884 | 4885 | 4886 | 4887 | 4888 | 4889 | 4890 | 4891 | 4892 | 4893 | 4894 | 4895 | 4896 | 4897 | 4898 | 4899 | 4900 | 4901 | 4902 | 4903 | 4904 | 4905 | 4906 | 4907 | 4908 | 4909 | 4910 | 4911 | 4912 | 4913 | 4914 | 4915 | 4916 | 4917 | 4918 | 4919 | 4920 | 4921 | 4922 | 4923 | 4924 | 4925 | 4926 | 4927 | 4928 | 4929 | 4930 | 4931 | 4932 | 4933 | 4934 | 4935 | 4936 | 4937 | 4938 | 4939 | 4940 | 4941 | 4942 | 4943 | 4944 | 4945 | 4946 | 4947 | 4948 | 4949 | 4950 | 4951 | 4952 | 4953 | 4954 | 4955 | 4956 | 4957 | 4958 | 4959 | 4960 | 4961 | 4962 | 4963 | 4964 | 4965 | 4966 | 4967 | 4968 | 4969 | 4970 | 4971 | 4972 | 4973 | 4974 | 4975 | 4976 | 4977 | 4978 | 4979 | 4980 | 4981 | 4982 | 4983 | 4984 | 4985 | 4986 | 4987 | 4988 | 4989 | 4990 | 4991 | 4992 | 4993 | 4994 | 4995 | 4996 | 4997 | 4998 | 4999 | 5000 | 5001)[] +>[ 0 as 0, 1 as 1, 2 as 2, 3 as 3, 4 as 4, 5 as 5, 6 as 6, 7 as 7, 8 as 8, 9 as 9, 10 as 10, 11 as 11, 12 as 12, 13 as 13, 14 as 14, 15 as 15, 16 as 16, 17 as 17, 18 as 18, 19 as 19, 20 as 20, 21 as 21, 22 as 22, 23 as 23, 24 as 24, 25 as 25, 26 as 26, 27 as 27, 28 as 28, 29 as 29, 30 as 30, 31 as 31, 32 as 32, 33 as 33, 34 as 34, 35 as 35, 36 as 36, 37 as 37, 38 as 38, 39 as 39, 40 as 40, 41 as 41, 42 as 42, 43 as 43, 44 as 44, 45 as 45, 46 as 46, 47 as 47, 48 as 48, 49 as 49, 50 as 50, 51 as 51, 52 as 52, 53 as 53, 54 as 54, 55 as 55, 56 as 56, 57 as 57, 58 as 58, 59 as 59, 60 as 60, 61 as 61, 62 as 62, 63 as 63, 64 as 64, 65 as 65, 66 as 66, 67 as 67, 68 as 68, 69 as 69, 70 as 70, 71 as 71, 72 as 72, 73 as 73, 74 as 74, 75 as 75, 76 as 76, 77 as 77, 78 as 78, 79 as 79, 80 as 80, 81 as 81, 82 as 82, 83 as 83, 84 as 84, 85 as 85, 86 as 86, 87 as 87, 88 as 88, 89 as 89, 90 as 90, 91 as 91, 92 as 92, 93 as 93, 94 as 94, 95 as 95, 96 as 96, 97 as 97, 98 as 98, 99 as 99, 100 as 100, 101 as 101, 102 as 102, 103 as 103, 104 as 104, 105 as 105, 106 as 106, 107 as 107, 108 as 108, 109 as 109, 110 as 110, 111 as 111, 112 as 112, 113 as 113, 114 as 114, 115 as 115, 116 as 116, 117 as 117, 118 as 118, 119 as 119, 120 as 120, 121 as 121, 122 as 122, 123 as 123, 124 as 124, 125 as 125, 126 as 126, 127 as 127, 128 as 128, 129 as 129, 130 as 130, 131 as 131, 132 as 132, 133 as 133, 134 as 134, 135 as 135, 136 as 136, 137 as 137, 138 as 138, 139 as 139, 140 as 140, 141 as 141, 142 as 142, 143 as 143, 144 as 144, 145 as 145, 146 as 146, 147 as 147, 148 as 148, 149 as 149, 150 as 150, 151 as 151, 152 as 152, 153 as 153, 154 as 154, 155 as 155, 156 as 156, 157 as 157, 158 as 158, 159 as 159, 160 as 160, 161 as 161, 162 as 162, 163 as 163, 164 as 164, 165 as 165, 166 as 166, 167 as 167, 168 as 168, 169 as 169, 170 as 170, 171 as 171, 172 as 172, 173 as 173, 174 as 174, 175 as 175, 176 as 176, 177 as 177, 178 as 178, 179 as 179, 180 as 180, 181 as 181, 182 as 182, 183 as 183, 184 as 184, 185 as 185, 186 as 186, 187 as 187, 188 as 188, 189 as 189, 190 as 190, 191 as 191, 192 as 192, 193 as 193, 194 as 194, 195 as 195, 196 as 196, 197 as 197, 198 as 198, 199 as 199, 200 as 200, 201 as 201, 202 as 202, 203 as 203, 204 as 204, 205 as 205, 206 as 206, 207 as 207, 208 as 208, 209 as 209, 210 as 210, 211 as 211, 212 as 212, 213 as 213, 214 as 214, 215 as 215, 216 as 216, 217 as 217, 218 as 218, 219 as 219, 220 as 220, 221 as 221, 222 as 222, 223 as 223, 224 as 224, 225 as 225, 226 as 226, 227 as 227, 228 as 228, 229 as 229, 230 as 230, 231 as 231, 232 as 232, 233 as 233, 234 as 234, 235 as 235, 236 as 236, 237 as 237, 238 as 238, 239 as 239, 240 as 240, 241 as 241, 242 as 242, 243 as 243, 244 as 244, 245 as 245, 246 as 246, 247 as 247, 248 as 248, 249 as 249, 250 as 250, 251 as 251, 252 as 252, 253 as 253, 254 as 254, 255 as 255, 256 as 256, 257 as 257, 258 as 258, 259 as 259, 260 as 260, 261 as 261, 262 as 262, 263 as 263, 264 as 264, 265 as 265, 266 as 266, 267 as 267, 268 as 268, 269 as 269, 270 as 270, 271 as 271, 272 as 272, 273 as 273, 274 as 274, 275 as 275, 276 as 276, 277 as 277, 278 as 278, 279 as 279, 280 as 280, 281 as 281, 282 as 282, 283 as 283, 284 as 284, 285 as 285, 286 as 286, 287 as 287, 288 as 288, 289 as 289, 290 as 290, 291 as 291, 292 as 292, 293 as 293, 294 as 294, 295 as 295, 296 as 296, 297 as 297, 298 as 298, 299 as 299, 300 as 300, 301 as 301, 302 as 302, 303 as 303, 304 as 304, 305 as 305, 306 as 306, 307 as 307, 308 as 308, 309 as 309, 310 as 310, 311 as 311, 312 as 312, 313 as 313, 314 as 314, 315 as 315, 316 as 316, 317 as 317, 318 as 318, 319 as 319, 320 as 320, 321 as 321, 322 as 322, 323 as 323, 324 as 324, 325 as 325, 326 as 326, 327 as 327, 328 as 328, 329 as 329, 330 as 330, 331 as 331, 332 as 332, 333 as 333, 334 as 334, 335 as 335, 336 as 336, 337 as 337, 338 as 338, 339 as 339, 340 as 340, 341 as 341, 342 as 342, 343 as 343, 344 as 344, 345 as 345, 346 as 346, 347 as 347, 348 as 348, 349 as 349, 350 as 350, 351 as 351, 352 as 352, 353 as 353, 354 as 354, 355 as 355, 356 as 356, 357 as 357, 358 as 358, 359 as 359, 360 as 360, 361 as 361, 362 as 362, 363 as 363, 364 as 364, 365 as 365, 366 as 366, 367 as 367, 368 as 368, 369 as 369, 370 as 370, 371 as 371, 372 as 372, 373 as 373, 374 as 374, 375 as 375, 376 as 376, 377 as 377, 378 as 378, 379 as 379, 380 as 380, 381 as 381, 382 as 382, 383 as 383, 384 as 384, 385 as 385, 386 as 386, 387 as 387, 388 as 388, 389 as 389, 390 as 390, 391 as 391, 392 as 392, 393 as 393, 394 as 394, 395 as 395, 396 as 396, 397 as 397, 398 as 398, 399 as 399, 400 as 400, 401 as 401, 402 as 402, 403 as 403, 404 as 404, 405 as 405, 406 as 406, 407 as 407, 408 as 408, 409 as 409, 410 as 410, 411 as 411, 412 as 412, 413 as 413, 414 as 414, 415 as 415, 416 as 416, 417 as 417, 418 as 418, 419 as 419, 420 as 420, 421 as 421, 422 as 422, 423 as 423, 424 as 424, 425 as 425, 426 as 426, 427 as 427, 428 as 428, 429 as 429, 430 as 430, 431 as 431, 432 as 432, 433 as 433, 434 as 434, 435 as 435, 436 as 436, 437 as 437, 438 as 438, 439 as 439, 440 as 440, 441 as 441, 442 as 442, 443 as 443, 444 as 444, 445 as 445, 446 as 446, 447 as 447, 448 as 448, 449 as 449, 450 as 450, 451 as 451, 452 as 452, 453 as 453, 454 as 454, 455 as 455, 456 as 456, 457 as 457, 458 as 458, 459 as 459, 460 as 460, 461 as 461, 462 as 462, 463 as 463, 464 as 464, 465 as 465, 466 as 466, 467 as 467, 468 as 468, 469 as 469, 470 as 470, 471 as 471, 472 as 472, 473 as 473, 474 as 474, 475 as 475, 476 as 476, 477 as 477, 478 as 478, 479 as 479, 480 as 480, 481 as 481, 482 as 482, 483 as 483, 484 as 484, 485 as 485, 486 as 486, 487 as 487, 488 as 488, 489 as 489, 490 as 490, 491 as 491, 492 as 492, 493 as 493, 494 as 494, 495 as 495, 496 as 496, 497 as 497, 498 as 498, 499 as 499, 500 as 500, 501 as 501, 502 as 502, 503 as 503, 504 as 504, 505 as 505, 506 as 506, 507 as 507, 508 as 508, 509 as 509, 510 as 510, 511 as 511, 512 as 512, 513 as 513, 514 as 514, 515 as 515, 516 as 516, 517 as 517, 518 as 518, 519 as 519, 520 as 520, 521 as 521, 522 as 522, 523 as 523, 524 as 524, 525 as 525, 526 as 526, 527 as 527, 528 as 528, 529 as 529, 530 as 530, 531 as 531, 532 as 532, 533 as 533, 534 as 534, 535 as 535, 536 as 536, 537 as 537, 538 as 538, 539 as 539, 540 as 540, 541 as 541, 542 as 542, 543 as 543, 544 as 544, 545 as 545, 546 as 546, 547 as 547, 548 as 548, 549 as 549, 550 as 550, 551 as 551, 552 as 552, 553 as 553, 554 as 554, 555 as 555, 556 as 556, 557 as 557, 558 as 558, 559 as 559, 560 as 560, 561 as 561, 562 as 562, 563 as 563, 564 as 564, 565 as 565, 566 as 566, 567 as 567, 568 as 568, 569 as 569, 570 as 570, 571 as 571, 572 as 572, 573 as 573, 574 as 574, 575 as 575, 576 as 576, 577 as 577, 578 as 578, 579 as 579, 580 as 580, 581 as 581, 582 as 582, 583 as 583, 584 as 584, 585 as 585, 586 as 586, 587 as 587, 588 as 588, 589 as 589, 590 as 590, 591 as 591, 592 as 592, 593 as 593, 594 as 594, 595 as 595, 596 as 596, 597 as 597, 598 as 598, 599 as 599, 600 as 600, 601 as 601, 602 as 602, 603 as 603, 604 as 604, 605 as 605, 606 as 606, 607 as 607, 608 as 608, 609 as 609, 610 as 610, 611 as 611, 612 as 612, 613 as 613, 614 as 614, 615 as 615, 616 as 616, 617 as 617, 618 as 618, 619 as 619, 620 as 620, 621 as 621, 622 as 622, 623 as 623, 624 as 624, 625 as 625, 626 as 626, 627 as 627, 628 as 628, 629 as 629, 630 as 630, 631 as 631, 632 as 632, 633 as 633, 634 as 634, 635 as 635, 636 as 636, 637 as 637, 638 as 638, 639 as 639, 640 as 640, 641 as 641, 642 as 642, 643 as 643, 644 as 644, 645 as 645, 646 as 646, 647 as 647, 648 as 648, 649 as 649, 650 as 650, 651 as 651, 652 as 652, 653 as 653, 654 as 654, 655 as 655, 656 as 656, 657 as 657, 658 as 658, 659 as 659, 660 as 660, 661 as 661, 662 as 662, 663 as 663, 664 as 664, 665 as 665, 666 as 666, 667 as 667, 668 as 668, 669 as 669, 670 as 670, 671 as 671, 672 as 672, 673 as 673, 674 as 674, 675 as 675, 676 as 676, 677 as 677, 678 as 678, 679 as 679, 680 as 680, 681 as 681, 682 as 682, 683 as 683, 684 as 684, 685 as 685, 686 as 686, 687 as 687, 688 as 688, 689 as 689, 690 as 690, 691 as 691, 692 as 692, 693 as 693, 694 as 694, 695 as 695, 696 as 696, 697 as 697, 698 as 698, 699 as 699, 700 as 700, 701 as 701, 702 as 702, 703 as 703, 704 as 704, 705 as 705, 706 as 706, 707 as 707, 708 as 708, 709 as 709, 710 as 710, 711 as 711, 712 as 712, 713 as 713, 714 as 714, 715 as 715, 716 as 716, 717 as 717, 718 as 718, 719 as 719, 720 as 720, 721 as 721, 722 as 722, 723 as 723, 724 as 724, 725 as 725, 726 as 726, 727 as 727, 728 as 728, 729 as 729, 730 as 730, 731 as 731, 732 as 732, 733 as 733, 734 as 734, 735 as 735, 736 as 736, 737 as 737, 738 as 738, 739 as 739, 740 as 740, 741 as 741, 742 as 742, 743 as 743, 744 as 744, 745 as 745, 746 as 746, 747 as 747, 748 as 748, 749 as 749, 750 as 750, 751 as 751, 752 as 752, 753 as 753, 754 as 754, 755 as 755, 756 as 756, 757 as 757, 758 as 758, 759 as 759, 760 as 760, 761 as 761, 762 as 762, 763 as 763, 764 as 764, 765 as 765, 766 as 766, 767 as 767, 768 as 768, 769 as 769, 770 as 770, 771 as 771, 772 as 772, 773 as 773, 774 as 774, 775 as 775, 776 as 776, 777 as 777, 778 as 778, 779 as 779, 780 as 780, 781 as 781, 782 as 782, 783 as 783, 784 as 784, 785 as 785, 786 as 786, 787 as 787, 788 as 788, 789 as 789, 790 as 790, 791 as 791, 792 as 792, 793 as 793, 794 as 794, 795 as 795, 796 as 796, 797 as 797, 798 as 798, 799 as 799, 800 as 800, 801 as 801, 802 as 802, 803 as 803, 804 as 804, 805 as 805, 806 as 806, 807 as 807, 808 as 808, 809 as 809, 810 as 810, 811 as 811, 812 as 812, 813 as 813, 814 as 814, 815 as 815, 816 as 816, 817 as 817, 818 as 818, 819 as 819, 820 as 820, 821 as 821, 822 as 822, 823 as 823, 824 as 824, 825 as 825, 826 as 826, 827 as 827, 828 as 828, 829 as 829, 830 as 830, 831 as 831, 832 as 832, 833 as 833, 834 as 834, 835 as 835, 836 as 836, 837 as 837, 838 as 838, 839 as 839, 840 as 840, 841 as 841, 842 as 842, 843 as 843, 844 as 844, 845 as 845, 846 as 846, 847 as 847, 848 as 848, 849 as 849, 850 as 850, 851 as 851, 852 as 852, 853 as 853, 854 as 854, 855 as 855, 856 as 856, 857 as 857, 858 as 858, 859 as 859, 860 as 860, 861 as 861, 862 as 862, 863 as 863, 864 as 864, 865 as 865, 866 as 866, 867 as 867, 868 as 868, 869 as 869, 870 as 870, 871 as 871, 872 as 872, 873 as 873, 874 as 874, 875 as 875, 876 as 876, 877 as 877, 878 as 878, 879 as 879, 880 as 880, 881 as 881, 882 as 882, 883 as 883, 884 as 884, 885 as 885, 886 as 886, 887 as 887, 888 as 888, 889 as 889, 890 as 890, 891 as 891, 892 as 892, 893 as 893, 894 as 894, 895 as 895, 896 as 896, 897 as 897, 898 as 898, 899 as 899, 900 as 900, 901 as 901, 902 as 902, 903 as 903, 904 as 904, 905 as 905, 906 as 906, 907 as 907, 908 as 908, 909 as 909, 910 as 910, 911 as 911, 912 as 912, 913 as 913, 914 as 914, 915 as 915, 916 as 916, 917 as 917, 918 as 918, 919 as 919, 920 as 920, 921 as 921, 922 as 922, 923 as 923, 924 as 924, 925 as 925, 926 as 926, 927 as 927, 928 as 928, 929 as 929, 930 as 930, 931 as 931, 932 as 932, 933 as 933, 934 as 934, 935 as 935, 936 as 936, 937 as 937, 938 as 938, 939 as 939, 940 as 940, 941 as 941, 942 as 942, 943 as 943, 944 as 944, 945 as 945, 946 as 946, 947 as 947, 948 as 948, 949 as 949, 950 as 950, 951 as 951, 952 as 952, 953 as 953, 954 as 954, 955 as 955, 956 as 956, 957 as 957, 958 as 958, 959 as 959, 960 as 960, 961 as 961, 962 as 962, 963 as 963, 964 as 964, 965 as 965, 966 as 966, 967 as 967, 968 as 968, 969 as 969, 970 as 970, 971 as 971, 972 as 972, 973 as 973, 974 as 974, 975 as 975, 976 as 976, 977 as 977, 978 as 978, 979 as 979, 980 as 980, 981 as 981, 982 as 982, 983 as 983, 984 as 984, 985 as 985, 986 as 986, 987 as 987, 988 as 988, 989 as 989, 990 as 990, 991 as 991, 992 as 992, 993 as 993, 994 as 994, 995 as 995, 996 as 996, 997 as 997, 998 as 998, 999 as 999, 1000 as 1000, 1001 as 1001, 1002 as 1002, 1003 as 1003, 1004 as 1004, 1005 as 1005, 1006 as 1006, 1007 as 1007, 1008 as 1008, 1009 as 1009, 1010 as 1010, 1011 as 1011, 1012 as 1012, 1013 as 1013, 1014 as 1014, 1015 as 1015, 1016 as 1016, 1017 as 1017, 1018 as 1018, 1019 as 1019, 1020 as 1020, 1021 as 1021, 1022 as 1022, 1023 as 1023, 1024 as 1024, 1025 as 1025, 1026 as 1026, 1027 as 1027, 1028 as 1028, 1029 as 1029, 1030 as 1030, 1031 as 1031, 1032 as 1032, 1033 as 1033, 1034 as 1034, 1035 as 1035, 1036 as 1036, 1037 as 1037, 1038 as 1038, 1039 as 1039, 1040 as 1040, 1041 as 1041, 1042 as 1042, 1043 as 1043, 1044 as 1044, 1045 as 1045, 1046 as 1046, 1047 as 1047, 1048 as 1048, 1049 as 1049, 1050 as 1050, 1051 as 1051, 1052 as 1052, 1053 as 1053, 1054 as 1054, 1055 as 1055, 1056 as 1056, 1057 as 1057, 1058 as 1058, 1059 as 1059, 1060 as 1060, 1061 as 1061, 1062 as 1062, 1063 as 1063, 1064 as 1064, 1065 as 1065, 1066 as 1066, 1067 as 1067, 1068 as 1068, 1069 as 1069, 1070 as 1070, 1071 as 1071, 1072 as 1072, 1073 as 1073, 1074 as 1074, 1075 as 1075, 1076 as 1076, 1077 as 1077, 1078 as 1078, 1079 as 1079, 1080 as 1080, 1081 as 1081, 1082 as 1082, 1083 as 1083, 1084 as 1084, 1085 as 1085, 1086 as 1086, 1087 as 1087, 1088 as 1088, 1089 as 1089, 1090 as 1090, 1091 as 1091, 1092 as 1092, 1093 as 1093, 1094 as 1094, 1095 as 1095, 1096 as 1096, 1097 as 1097, 1098 as 1098, 1099 as 1099, 1100 as 1100, 1101 as 1101, 1102 as 1102, 1103 as 1103, 1104 as 1104, 1105 as 1105, 1106 as 1106, 1107 as 1107, 1108 as 1108, 1109 as 1109, 1110 as 1110, 1111 as 1111, 1112 as 1112, 1113 as 1113, 1114 as 1114, 1115 as 1115, 1116 as 1116, 1117 as 1117, 1118 as 1118, 1119 as 1119, 1120 as 1120, 1121 as 1121, 1122 as 1122, 1123 as 1123, 1124 as 1124, 1125 as 1125, 1126 as 1126, 1127 as 1127, 1128 as 1128, 1129 as 1129, 1130 as 1130, 1131 as 1131, 1132 as 1132, 1133 as 1133, 1134 as 1134, 1135 as 1135, 1136 as 1136, 1137 as 1137, 1138 as 1138, 1139 as 1139, 1140 as 1140, 1141 as 1141, 1142 as 1142, 1143 as 1143, 1144 as 1144, 1145 as 1145, 1146 as 1146, 1147 as 1147, 1148 as 1148, 1149 as 1149, 1150 as 1150, 1151 as 1151, 1152 as 1152, 1153 as 1153, 1154 as 1154, 1155 as 1155, 1156 as 1156, 1157 as 1157, 1158 as 1158, 1159 as 1159, 1160 as 1160, 1161 as 1161, 1162 as 1162, 1163 as 1163, 1164 as 1164, 1165 as 1165, 1166 as 1166, 1167 as 1167, 1168 as 1168, 1169 as 1169, 1170 as 1170, 1171 as 1171, 1172 as 1172, 1173 as 1173, 1174 as 1174, 1175 as 1175, 1176 as 1176, 1177 as 1177, 1178 as 1178, 1179 as 1179, 1180 as 1180, 1181 as 1181, 1182 as 1182, 1183 as 1183, 1184 as 1184, 1185 as 1185, 1186 as 1186, 1187 as 1187, 1188 as 1188, 1189 as 1189, 1190 as 1190, 1191 as 1191, 1192 as 1192, 1193 as 1193, 1194 as 1194, 1195 as 1195, 1196 as 1196, 1197 as 1197, 1198 as 1198, 1199 as 1199, 1200 as 1200, 1201 as 1201, 1202 as 1202, 1203 as 1203, 1204 as 1204, 1205 as 1205, 1206 as 1206, 1207 as 1207, 1208 as 1208, 1209 as 1209, 1210 as 1210, 1211 as 1211, 1212 as 1212, 1213 as 1213, 1214 as 1214, 1215 as 1215, 1216 as 1216, 1217 as 1217, 1218 as 1218, 1219 as 1219, 1220 as 1220, 1221 as 1221, 1222 as 1222, 1223 as 1223, 1224 as 1224, 1225 as 1225, 1226 as 1226, 1227 as 1227, 1228 as 1228, 1229 as 1229, 1230 as 1230, 1231 as 1231, 1232 as 1232, 1233 as 1233, 1234 as 1234, 1235 as 1235, 1236 as 1236, 1237 as 1237, 1238 as 1238, 1239 as 1239, 1240 as 1240, 1241 as 1241, 1242 as 1242, 1243 as 1243, 1244 as 1244, 1245 as 1245, 1246 as 1246, 1247 as 1247, 1248 as 1248, 1249 as 1249, 1250 as 1250, 1251 as 1251, 1252 as 1252, 1253 as 1253, 1254 as 1254, 1255 as 1255, 1256 as 1256, 1257 as 1257, 1258 as 1258, 1259 as 1259, 1260 as 1260, 1261 as 1261, 1262 as 1262, 1263 as 1263, 1264 as 1264, 1265 as 1265, 1266 as 1266, 1267 as 1267, 1268 as 1268, 1269 as 1269, 1270 as 1270, 1271 as 1271, 1272 as 1272, 1273 as 1273, 1274 as 1274, 1275 as 1275, 1276 as 1276, 1277 as 1277, 1278 as 1278, 1279 as 1279, 1280 as 1280, 1281 as 1281, 1282 as 1282, 1283 as 1283, 1284 as 1284, 1285 as 1285, 1286 as 1286, 1287 as 1287, 1288 as 1288, 1289 as 1289, 1290 as 1290, 1291 as 1291, 1292 as 1292, 1293 as 1293, 1294 as 1294, 1295 as 1295, 1296 as 1296, 1297 as 1297, 1298 as 1298, 1299 as 1299, 1300 as 1300, 1301 as 1301, 1302 as 1302, 1303 as 1303, 1304 as 1304, 1305 as 1305, 1306 as 1306, 1307 as 1307, 1308 as 1308, 1309 as 1309, 1310 as 1310, 1311 as 1311, 1312 as 1312, 1313 as 1313, 1314 as 1314, 1315 as 1315, 1316 as 1316, 1317 as 1317, 1318 as 1318, 1319 as 1319, 1320 as 1320, 1321 as 1321, 1322 as 1322, 1323 as 1323, 1324 as 1324, 1325 as 1325, 1326 as 1326, 1327 as 1327, 1328 as 1328, 1329 as 1329, 1330 as 1330, 1331 as 1331, 1332 as 1332, 1333 as 1333, 1334 as 1334, 1335 as 1335, 1336 as 1336, 1337 as 1337, 1338 as 1338, 1339 as 1339, 1340 as 1340, 1341 as 1341, 1342 as 1342, 1343 as 1343, 1344 as 1344, 1345 as 1345, 1346 as 1346, 1347 as 1347, 1348 as 1348, 1349 as 1349, 1350 as 1350, 1351 as 1351, 1352 as 1352, 1353 as 1353, 1354 as 1354, 1355 as 1355, 1356 as 1356, 1357 as 1357, 1358 as 1358, 1359 as 1359, 1360 as 1360, 1361 as 1361, 1362 as 1362, 1363 as 1363, 1364 as 1364, 1365 as 1365, 1366 as 1366, 1367 as 1367, 1368 as 1368, 1369 as 1369, 1370 as 1370, 1371 as 1371, 1372 as 1372, 1373 as 1373, 1374 as 1374, 1375 as 1375, 1376 as 1376, 1377 as 1377, 1378 as 1378, 1379 as 1379, 1380 as 1380, 1381 as 1381, 1382 as 1382, 1383 as 1383, 1384 as 1384, 1385 as 1385, 1386 as 1386, 1387 as 1387, 1388 as 1388, 1389 as 1389, 1390 as 1390, 1391 as 1391, 1392 as 1392, 1393 as 1393, 1394 as 1394, 1395 as 1395, 1396 as 1396, 1397 as 1397, 1398 as 1398, 1399 as 1399, 1400 as 1400, 1401 as 1401, 1402 as 1402, 1403 as 1403, 1404 as 1404, 1405 as 1405, 1406 as 1406, 1407 as 1407, 1408 as 1408, 1409 as 1409, 1410 as 1410, 1411 as 1411, 1412 as 1412, 1413 as 1413, 1414 as 1414, 1415 as 1415, 1416 as 1416, 1417 as 1417, 1418 as 1418, 1419 as 1419, 1420 as 1420, 1421 as 1421, 1422 as 1422, 1423 as 1423, 1424 as 1424, 1425 as 1425, 1426 as 1426, 1427 as 1427, 1428 as 1428, 1429 as 1429, 1430 as 1430, 1431 as 1431, 1432 as 1432, 1433 as 1433, 1434 as 1434, 1435 as 1435, 1436 as 1436, 1437 as 1437, 1438 as 1438, 1439 as 1439, 1440 as 1440, 1441 as 1441, 1442 as 1442, 1443 as 1443, 1444 as 1444, 1445 as 1445, 1446 as 1446, 1447 as 1447, 1448 as 1448, 1449 as 1449, 1450 as 1450, 1451 as 1451, 1452 as 1452, 1453 as 1453, 1454 as 1454, 1455 as 1455, 1456 as 1456, 1457 as 1457, 1458 as 1458, 1459 as 1459, 1460 as 1460, 1461 as 1461, 1462 as 1462, 1463 as 1463, 1464 as 1464, 1465 as 1465, 1466 as 1466, 1467 as 1467, 1468 as 1468, 1469 as 1469, 1470 as 1470, 1471 as 1471, 1472 as 1472, 1473 as 1473, 1474 as 1474, 1475 as 1475, 1476 as 1476, 1477 as 1477, 1478 as 1478, 1479 as 1479, 1480 as 1480, 1481 as 1481, 1482 as 1482, 1483 as 1483, 1484 as 1484, 1485 as 1485, 1486 as 1486, 1487 as 1487, 1488 as 1488, 1489 as 1489, 1490 as 1490, 1491 as 1491, 1492 as 1492, 1493 as 1493, 1494 as 1494, 1495 as 1495, 1496 as 1496, 1497 as 1497, 1498 as 1498, 1499 as 1499, 1500 as 1500, 1501 as 1501, 1502 as 1502, 1503 as 1503, 1504 as 1504, 1505 as 1505, 1506 as 1506, 1507 as 1507, 1508 as 1508, 1509 as 1509, 1510 as 1510, 1511 as 1511, 1512 as 1512, 1513 as 1513, 1514 as 1514, 1515 as 1515, 1516 as 1516, 1517 as 1517, 1518 as 1518, 1519 as 1519, 1520 as 1520, 1521 as 1521, 1522 as 1522, 1523 as 1523, 1524 as 1524, 1525 as 1525, 1526 as 1526, 1527 as 1527, 1528 as 1528, 1529 as 1529, 1530 as 1530, 1531 as 1531, 1532 as 1532, 1533 as 1533, 1534 as 1534, 1535 as 1535, 1536 as 1536, 1537 as 1537, 1538 as 1538, 1539 as 1539, 1540 as 1540, 1541 as 1541, 1542 as 1542, 1543 as 1543, 1544 as 1544, 1545 as 1545, 1546 as 1546, 1547 as 1547, 1548 as 1548, 1549 as 1549, 1550 as 1550, 1551 as 1551, 1552 as 1552, 1553 as 1553, 1554 as 1554, 1555 as 1555, 1556 as 1556, 1557 as 1557, 1558 as 1558, 1559 as 1559, 1560 as 1560, 1561 as 1561, 1562 as 1562, 1563 as 1563, 1564 as 1564, 1565 as 1565, 1566 as 1566, 1567 as 1567, 1568 as 1568, 1569 as 1569, 1570 as 1570, 1571 as 1571, 1572 as 1572, 1573 as 1573, 1574 as 1574, 1575 as 1575, 1576 as 1576, 1577 as 1577, 1578 as 1578, 1579 as 1579, 1580 as 1580, 1581 as 1581, 1582 as 1582, 1583 as 1583, 1584 as 1584, 1585 as 1585, 1586 as 1586, 1587 as 1587, 1588 as 1588, 1589 as 1589, 1590 as 1590, 1591 as 1591, 1592 as 1592, 1593 as 1593, 1594 as 1594, 1595 as 1595, 1596 as 1596, 1597 as 1597, 1598 as 1598, 1599 as 1599, 1600 as 1600, 1601 as 1601, 1602 as 1602, 1603 as 1603, 1604 as 1604, 1605 as 1605, 1606 as 1606, 1607 as 1607, 1608 as 1608, 1609 as 1609, 1610 as 1610, 1611 as 1611, 1612 as 1612, 1613 as 1613, 1614 as 1614, 1615 as 1615, 1616 as 1616, 1617 as 1617, 1618 as 1618, 1619 as 1619, 1620 as 1620, 1621 as 1621, 1622 as 1622, 1623 as 1623, 1624 as 1624, 1625 as 1625, 1626 as 1626, 1627 as 1627, 1628 as 1628, 1629 as 1629, 1630 as 1630, 1631 as 1631, 1632 as 1632, 1633 as 1633, 1634 as 1634, 1635 as 1635, 1636 as 1636, 1637 as 1637, 1638 as 1638, 1639 as 1639, 1640 as 1640, 1641 as 1641, 1642 as 1642, 1643 as 1643, 1644 as 1644, 1645 as 1645, 1646 as 1646, 1647 as 1647, 1648 as 1648, 1649 as 1649, 1650 as 1650, 1651 as 1651, 1652 as 1652, 1653 as 1653, 1654 as 1654, 1655 as 1655, 1656 as 1656, 1657 as 1657, 1658 as 1658, 1659 as 1659, 1660 as 1660, 1661 as 1661, 1662 as 1662, 1663 as 1663, 1664 as 1664, 1665 as 1665, 1666 as 1666, 1667 as 1667, 1668 as 1668, 1669 as 1669, 1670 as 1670, 1671 as 1671, 1672 as 1672, 1673 as 1673, 1674 as 1674, 1675 as 1675, 1676 as 1676, 1677 as 1677, 1678 as 1678, 1679 as 1679, 1680 as 1680, 1681 as 1681, 1682 as 1682, 1683 as 1683, 1684 as 1684, 1685 as 1685, 1686 as 1686, 1687 as 1687, 1688 as 1688, 1689 as 1689, 1690 as 1690, 1691 as 1691, 1692 as 1692, 1693 as 1693, 1694 as 1694, 1695 as 1695, 1696 as 1696, 1697 as 1697, 1698 as 1698, 1699 as 1699, 1700 as 1700, 1701 as 1701, 1702 as 1702, 1703 as 1703, 1704 as 1704, 1705 as 1705, 1706 as 1706, 1707 as 1707, 1708 as 1708, 1709 as 1709, 1710 as 1710, 1711 as 1711, 1712 as 1712, 1713 as 1713, 1714 as 1714, 1715 as 1715, 1716 as 1716, 1717 as 1717, 1718 as 1718, 1719 as 1719, 1720 as 1720, 1721 as 1721, 1722 as 1722, 1723 as 1723, 1724 as 1724, 1725 as 1725, 1726 as 1726, 1727 as 1727, 1728 as 1728, 1729 as 1729, 1730 as 1730, 1731 as 1731, 1732 as 1732, 1733 as 1733, 1734 as 1734, 1735 as 1735, 1736 as 1736, 1737 as 1737, 1738 as 1738, 1739 as 1739, 1740 as 1740, 1741 as 1741, 1742 as 1742, 1743 as 1743, 1744 as 1744, 1745 as 1745, 1746 as 1746, 1747 as 1747, 1748 as 1748, 1749 as 1749, 1750 as 1750, 1751 as 1751, 1752 as 1752, 1753 as 1753, 1754 as 1754, 1755 as 1755, 1756 as 1756, 1757 as 1757, 1758 as 1758, 1759 as 1759, 1760 as 1760, 1761 as 1761, 1762 as 1762, 1763 as 1763, 1764 as 1764, 1765 as 1765, 1766 as 1766, 1767 as 1767, 1768 as 1768, 1769 as 1769, 1770 as 1770, 1771 as 1771, 1772 as 1772, 1773 as 1773, 1774 as 1774, 1775 as 1775, 1776 as 1776, 1777 as 1777, 1778 as 1778, 1779 as 1779, 1780 as 1780, 1781 as 1781, 1782 as 1782, 1783 as 1783, 1784 as 1784, 1785 as 1785, 1786 as 1786, 1787 as 1787, 1788 as 1788, 1789 as 1789, 1790 as 1790, 1791 as 1791, 1792 as 1792, 1793 as 1793, 1794 as 1794, 1795 as 1795, 1796 as 1796, 1797 as 1797, 1798 as 1798, 1799 as 1799, 1800 as 1800, 1801 as 1801, 1802 as 1802, 1803 as 1803, 1804 as 1804, 1805 as 1805, 1806 as 1806, 1807 as 1807, 1808 as 1808, 1809 as 1809, 1810 as 1810, 1811 as 1811, 1812 as 1812, 1813 as 1813, 1814 as 1814, 1815 as 1815, 1816 as 1816, 1817 as 1817, 1818 as 1818, 1819 as 1819, 1820 as 1820, 1821 as 1821, 1822 as 1822, 1823 as 1823, 1824 as 1824, 1825 as 1825, 1826 as 1826, 1827 as 1827, 1828 as 1828, 1829 as 1829, 1830 as 1830, 1831 as 1831, 1832 as 1832, 1833 as 1833, 1834 as 1834, 1835 as 1835, 1836 as 1836, 1837 as 1837, 1838 as 1838, 1839 as 1839, 1840 as 1840, 1841 as 1841, 1842 as 1842, 1843 as 1843, 1844 as 1844, 1845 as 1845, 1846 as 1846, 1847 as 1847, 1848 as 1848, 1849 as 1849, 1850 as 1850, 1851 as 1851, 1852 as 1852, 1853 as 1853, 1854 as 1854, 1855 as 1855, 1856 as 1856, 1857 as 1857, 1858 as 1858, 1859 as 1859, 1860 as 1860, 1861 as 1861, 1862 as 1862, 1863 as 1863, 1864 as 1864, 1865 as 1865, 1866 as 1866, 1867 as 1867, 1868 as 1868, 1869 as 1869, 1870 as 1870, 1871 as 1871, 1872 as 1872, 1873 as 1873, 1874 as 1874, 1875 as 1875, 1876 as 1876, 1877 as 1877, 1878 as 1878, 1879 as 1879, 1880 as 1880, 1881 as 1881, 1882 as 1882, 1883 as 1883, 1884 as 1884, 1885 as 1885, 1886 as 1886, 1887 as 1887, 1888 as 1888, 1889 as 1889, 1890 as 1890, 1891 as 1891, 1892 as 1892, 1893 as 1893, 1894 as 1894, 1895 as 1895, 1896 as 1896, 1897 as 1897, 1898 as 1898, 1899 as 1899, 1900 as 1900, 1901 as 1901, 1902 as 1902, 1903 as 1903, 1904 as 1904, 1905 as 1905, 1906 as 1906, 1907 as 1907, 1908 as 1908, 1909 as 1909, 1910 as 1910, 1911 as 1911, 1912 as 1912, 1913 as 1913, 1914 as 1914, 1915 as 1915, 1916 as 1916, 1917 as 1917, 1918 as 1918, 1919 as 1919, 1920 as 1920, 1921 as 1921, 1922 as 1922, 1923 as 1923, 1924 as 1924, 1925 as 1925, 1926 as 1926, 1927 as 1927, 1928 as 1928, 1929 as 1929, 1930 as 1930, 1931 as 1931, 1932 as 1932, 1933 as 1933, 1934 as 1934, 1935 as 1935, 1936 as 1936, 1937 as 1937, 1938 as 1938, 1939 as 1939, 1940 as 1940, 1941 as 1941, 1942 as 1942, 1943 as 1943, 1944 as 1944, 1945 as 1945, 1946 as 1946, 1947 as 1947, 1948 as 1948, 1949 as 1949, 1950 as 1950, 1951 as 1951, 1952 as 1952, 1953 as 1953, 1954 as 1954, 1955 as 1955, 1956 as 1956, 1957 as 1957, 1958 as 1958, 1959 as 1959, 1960 as 1960, 1961 as 1961, 1962 as 1962, 1963 as 1963, 1964 as 1964, 1965 as 1965, 1966 as 1966, 1967 as 1967, 1968 as 1968, 1969 as 1969, 1970 as 1970, 1971 as 1971, 1972 as 1972, 1973 as 1973, 1974 as 1974, 1975 as 1975, 1976 as 1976, 1977 as 1977, 1978 as 1978, 1979 as 1979, 1980 as 1980, 1981 as 1981, 1982 as 1982, 1983 as 1983, 1984 as 1984, 1985 as 1985, 1986 as 1986, 1987 as 1987, 1988 as 1988, 1989 as 1989, 1990 as 1990, 1991 as 1991, 1992 as 1992, 1993 as 1993, 1994 as 1994, 1995 as 1995, 1996 as 1996, 1997 as 1997, 1998 as 1998, 1999 as 1999, 2000 as 2000, 2001 as 2001, 2002 as 2002, 2003 as 2003, 2004 as 2004, 2005 as 2005, 2006 as 2006, 2007 as 2007, 2008 as 2008, 2009 as 2009, 2010 as 2010, 2011 as 2011, 2012 as 2012, 2013 as 2013, 2014 as 2014, 2015 as 2015, 2016 as 2016, 2017 as 2017, 2018 as 2018, 2019 as 2019, 2020 as 2020, 2021 as 2021, 2022 as 2022, 2023 as 2023, 2024 as 2024, 2025 as 2025, 2026 as 2026, 2027 as 2027, 2028 as 2028, 2029 as 2029, 2030 as 2030, 2031 as 2031, 2032 as 2032, 2033 as 2033, 2034 as 2034, 2035 as 2035, 2036 as 2036, 2037 as 2037, 2038 as 2038, 2039 as 2039, 2040 as 2040, 2041 as 2041, 2042 as 2042, 2043 as 2043, 2044 as 2044, 2045 as 2045, 2046 as 2046, 2047 as 2047, 2048 as 2048, 2049 as 2049, 2050 as 2050, 2051 as 2051, 2052 as 2052, 2053 as 2053, 2054 as 2054, 2055 as 2055, 2056 as 2056, 2057 as 2057, 2058 as 2058, 2059 as 2059, 2060 as 2060, 2061 as 2061, 2062 as 2062, 2063 as 2063, 2064 as 2064, 2065 as 2065, 2066 as 2066, 2067 as 2067, 2068 as 2068, 2069 as 2069, 2070 as 2070, 2071 as 2071, 2072 as 2072, 2073 as 2073, 2074 as 2074, 2075 as 2075, 2076 as 2076, 2077 as 2077, 2078 as 2078, 2079 as 2079, 2080 as 2080, 2081 as 2081, 2082 as 2082, 2083 as 2083, 2084 as 2084, 2085 as 2085, 2086 as 2086, 2087 as 2087, 2088 as 2088, 2089 as 2089, 2090 as 2090, 2091 as 2091, 2092 as 2092, 2093 as 2093, 2094 as 2094, 2095 as 2095, 2096 as 2096, 2097 as 2097, 2098 as 2098, 2099 as 2099, 2100 as 2100, 2101 as 2101, 2102 as 2102, 2103 as 2103, 2104 as 2104, 2105 as 2105, 2106 as 2106, 2107 as 2107, 2108 as 2108, 2109 as 2109, 2110 as 2110, 2111 as 2111, 2112 as 2112, 2113 as 2113, 2114 as 2114, 2115 as 2115, 2116 as 2116, 2117 as 2117, 2118 as 2118, 2119 as 2119, 2120 as 2120, 2121 as 2121, 2122 as 2122, 2123 as 2123, 2124 as 2124, 2125 as 2125, 2126 as 2126, 2127 as 2127, 2128 as 2128, 2129 as 2129, 2130 as 2130, 2131 as 2131, 2132 as 2132, 2133 as 2133, 2134 as 2134, 2135 as 2135, 2136 as 2136, 2137 as 2137, 2138 as 2138, 2139 as 2139, 2140 as 2140, 2141 as 2141, 2142 as 2142, 2143 as 2143, 2144 as 2144, 2145 as 2145, 2146 as 2146, 2147 as 2147, 2148 as 2148, 2149 as 2149, 2150 as 2150, 2151 as 2151, 2152 as 2152, 2153 as 2153, 2154 as 2154, 2155 as 2155, 2156 as 2156, 2157 as 2157, 2158 as 2158, 2159 as 2159, 2160 as 2160, 2161 as 2161, 2162 as 2162, 2163 as 2163, 2164 as 2164, 2165 as 2165, 2166 as 2166, 2167 as 2167, 2168 as 2168, 2169 as 2169, 2170 as 2170, 2171 as 2171, 2172 as 2172, 2173 as 2173, 2174 as 2174, 2175 as 2175, 2176 as 2176, 2177 as 2177, 2178 as 2178, 2179 as 2179, 2180 as 2180, 2181 as 2181, 2182 as 2182, 2183 as 2183, 2184 as 2184, 2185 as 2185, 2186 as 2186, 2187 as 2187, 2188 as 2188, 2189 as 2189, 2190 as 2190, 2191 as 2191, 2192 as 2192, 2193 as 2193, 2194 as 2194, 2195 as 2195, 2196 as 2196, 2197 as 2197, 2198 as 2198, 2199 as 2199, 2200 as 2200, 2201 as 2201, 2202 as 2202, 2203 as 2203, 2204 as 2204, 2205 as 2205, 2206 as 2206, 2207 as 2207, 2208 as 2208, 2209 as 2209, 2210 as 2210, 2211 as 2211, 2212 as 2212, 2213 as 2213, 2214 as 2214, 2215 as 2215, 2216 as 2216, 2217 as 2217, 2218 as 2218, 2219 as 2219, 2220 as 2220, 2221 as 2221, 2222 as 2222, 2223 as 2223, 2224 as 2224, 2225 as 2225, 2226 as 2226, 2227 as 2227, 2228 as 2228, 2229 as 2229, 2230 as 2230, 2231 as 2231, 2232 as 2232, 2233 as 2233, 2234 as 2234, 2235 as 2235, 2236 as 2236, 2237 as 2237, 2238 as 2238, 2239 as 2239, 2240 as 2240, 2241 as 2241, 2242 as 2242, 2243 as 2243, 2244 as 2244, 2245 as 2245, 2246 as 2246, 2247 as 2247, 2248 as 2248, 2249 as 2249, 2250 as 2250, 2251 as 2251, 2252 as 2252, 2253 as 2253, 2254 as 2254, 2255 as 2255, 2256 as 2256, 2257 as 2257, 2258 as 2258, 2259 as 2259, 2260 as 2260, 2261 as 2261, 2262 as 2262, 2263 as 2263, 2264 as 2264, 2265 as 2265, 2266 as 2266, 2267 as 2267, 2268 as 2268, 2269 as 2269, 2270 as 2270, 2271 as 2271, 2272 as 2272, 2273 as 2273, 2274 as 2274, 2275 as 2275, 2276 as 2276, 2277 as 2277, 2278 as 2278, 2279 as 2279, 2280 as 2280, 2281 as 2281, 2282 as 2282, 2283 as 2283, 2284 as 2284, 2285 as 2285, 2286 as 2286, 2287 as 2287, 2288 as 2288, 2289 as 2289, 2290 as 2290, 2291 as 2291, 2292 as 2292, 2293 as 2293, 2294 as 2294, 2295 as 2295, 2296 as 2296, 2297 as 2297, 2298 as 2298, 2299 as 2299, 2300 as 2300, 2301 as 2301, 2302 as 2302, 2303 as 2303, 2304 as 2304, 2305 as 2305, 2306 as 2306, 2307 as 2307, 2308 as 2308, 2309 as 2309, 2310 as 2310, 2311 as 2311, 2312 as 2312, 2313 as 2313, 2314 as 2314, 2315 as 2315, 2316 as 2316, 2317 as 2317, 2318 as 2318, 2319 as 2319, 2320 as 2320, 2321 as 2321, 2322 as 2322, 2323 as 2323, 2324 as 2324, 2325 as 2325, 2326 as 2326, 2327 as 2327, 2328 as 2328, 2329 as 2329, 2330 as 2330, 2331 as 2331, 2332 as 2332, 2333 as 2333, 2334 as 2334, 2335 as 2335, 2336 as 2336, 2337 as 2337, 2338 as 2338, 2339 as 2339, 2340 as 2340, 2341 as 2341, 2342 as 2342, 2343 as 2343, 2344 as 2344, 2345 as 2345, 2346 as 2346, 2347 as 2347, 2348 as 2348, 2349 as 2349, 2350 as 2350, 2351 as 2351, 2352 as 2352, 2353 as 2353, 2354 as 2354, 2355 as 2355, 2356 as 2356, 2357 as 2357, 2358 as 2358, 2359 as 2359, 2360 as 2360, 2361 as 2361, 2362 as 2362, 2363 as 2363, 2364 as 2364, 2365 as 2365, 2366 as 2366, 2367 as 2367, 2368 as 2368, 2369 as 2369, 2370 as 2370, 2371 as 2371, 2372 as 2372, 2373 as 2373, 2374 as 2374, 2375 as 2375, 2376 as 2376, 2377 as 2377, 2378 as 2378, 2379 as 2379, 2380 as 2380, 2381 as 2381, 2382 as 2382, 2383 as 2383, 2384 as 2384, 2385 as 2385, 2386 as 2386, 2387 as 2387, 2388 as 2388, 2389 as 2389, 2390 as 2390, 2391 as 2391, 2392 as 2392, 2393 as 2393, 2394 as 2394, 2395 as 2395, 2396 as 2396, 2397 as 2397, 2398 as 2398, 2399 as 2399, 2400 as 2400, 2401 as 2401, 2402 as 2402, 2403 as 2403, 2404 as 2404, 2405 as 2405, 2406 as 2406, 2407 as 2407, 2408 as 2408, 2409 as 2409, 2410 as 2410, 2411 as 2411, 2412 as 2412, 2413 as 2413, 2414 as 2414, 2415 as 2415, 2416 as 2416, 2417 as 2417, 2418 as 2418, 2419 as 2419, 2420 as 2420, 2421 as 2421, 2422 as 2422, 2423 as 2423, 2424 as 2424, 2425 as 2425, 2426 as 2426, 2427 as 2427, 2428 as 2428, 2429 as 2429, 2430 as 2430, 2431 as 2431, 2432 as 2432, 2433 as 2433, 2434 as 2434, 2435 as 2435, 2436 as 2436, 2437 as 2437, 2438 as 2438, 2439 as 2439, 2440 as 2440, 2441 as 2441, 2442 as 2442, 2443 as 2443, 2444 as 2444, 2445 as 2445, 2446 as 2446, 2447 as 2447, 2448 as 2448, 2449 as 2449, 2450 as 2450, 2451 as 2451, 2452 as 2452, 2453 as 2453, 2454 as 2454, 2455 as 2455, 2456 as 2456, 2457 as 2457, 2458 as 2458, 2459 as 2459, 2460 as 2460, 2461 as 2461, 2462 as 2462, 2463 as 2463, 2464 as 2464, 2465 as 2465, 2466 as 2466, 2467 as 2467, 2468 as 2468, 2469 as 2469, 2470 as 2470, 2471 as 2471, 2472 as 2472, 2473 as 2473, 2474 as 2474, 2475 as 2475, 2476 as 2476, 2477 as 2477, 2478 as 2478, 2479 as 2479, 2480 as 2480, 2481 as 2481, 2482 as 2482, 2483 as 2483, 2484 as 2484, 2485 as 2485, 2486 as 2486, 2487 as 2487, 2488 as 2488, 2489 as 2489, 2490 as 2490, 2491 as 2491, 2492 as 2492, 2493 as 2493, 2494 as 2494, 2495 as 2495, 2496 as 2496, 2497 as 2497, 2498 as 2498, 2499 as 2499, 2500 as 2500, 2501 as 2501, 2502 as 2502, 2503 as 2503, 2504 as 2504, 2505 as 2505, 2506 as 2506, 2507 as 2507, 2508 as 2508, 2509 as 2509, 2510 as 2510, 2511 as 2511, 2512 as 2512, 2513 as 2513, 2514 as 2514, 2515 as 2515, 2516 as 2516, 2517 as 2517, 2518 as 2518, 2519 as 2519, 2520 as 2520, 2521 as 2521, 2522 as 2522, 2523 as 2523, 2524 as 2524, 2525 as 2525, 2526 as 2526, 2527 as 2527, 2528 as 2528, 2529 as 2529, 2530 as 2530, 2531 as 2531, 2532 as 2532, 2533 as 2533, 2534 as 2534, 2535 as 2535, 2536 as 2536, 2537 as 2537, 2538 as 2538, 2539 as 2539, 2540 as 2540, 2541 as 2541, 2542 as 2542, 2543 as 2543, 2544 as 2544, 2545 as 2545, 2546 as 2546, 2547 as 2547, 2548 as 2548, 2549 as 2549, 2550 as 2550, 2551 as 2551, 2552 as 2552, 2553 as 2553, 2554 as 2554, 2555 as 2555, 2556 as 2556, 2557 as 2557, 2558 as 2558, 2559 as 2559, 2560 as 2560, 2561 as 2561, 2562 as 2562, 2563 as 2563, 2564 as 2564, 2565 as 2565, 2566 as 2566, 2567 as 2567, 2568 as 2568, 2569 as 2569, 2570 as 2570, 2571 as 2571, 2572 as 2572, 2573 as 2573, 2574 as 2574, 2575 as 2575, 2576 as 2576, 2577 as 2577, 2578 as 2578, 2579 as 2579, 2580 as 2580, 2581 as 2581, 2582 as 2582, 2583 as 2583, 2584 as 2584, 2585 as 2585, 2586 as 2586, 2587 as 2587, 2588 as 2588, 2589 as 2589, 2590 as 2590, 2591 as 2591, 2592 as 2592, 2593 as 2593, 2594 as 2594, 2595 as 2595, 2596 as 2596, 2597 as 2597, 2598 as 2598, 2599 as 2599, 2600 as 2600, 2601 as 2601, 2602 as 2602, 2603 as 2603, 2604 as 2604, 2605 as 2605, 2606 as 2606, 2607 as 2607, 2608 as 2608, 2609 as 2609, 2610 as 2610, 2611 as 2611, 2612 as 2612, 2613 as 2613, 2614 as 2614, 2615 as 2615, 2616 as 2616, 2617 as 2617, 2618 as 2618, 2619 as 2619, 2620 as 2620, 2621 as 2621, 2622 as 2622, 2623 as 2623, 2624 as 2624, 2625 as 2625, 2626 as 2626, 2627 as 2627, 2628 as 2628, 2629 as 2629, 2630 as 2630, 2631 as 2631, 2632 as 2632, 2633 as 2633, 2634 as 2634, 2635 as 2635, 2636 as 2636, 2637 as 2637, 2638 as 2638, 2639 as 2639, 2640 as 2640, 2641 as 2641, 2642 as 2642, 2643 as 2643, 2644 as 2644, 2645 as 2645, 2646 as 2646, 2647 as 2647, 2648 as 2648, 2649 as 2649, 2650 as 2650, 2651 as 2651, 2652 as 2652, 2653 as 2653, 2654 as 2654, 2655 as 2655, 2656 as 2656, 2657 as 2657, 2658 as 2658, 2659 as 2659, 2660 as 2660, 2661 as 2661, 2662 as 2662, 2663 as 2663, 2664 as 2664, 2665 as 2665, 2666 as 2666, 2667 as 2667, 2668 as 2668, 2669 as 2669, 2670 as 2670, 2671 as 2671, 2672 as 2672, 2673 as 2673, 2674 as 2674, 2675 as 2675, 2676 as 2676, 2677 as 2677, 2678 as 2678, 2679 as 2679, 2680 as 2680, 2681 as 2681, 2682 as 2682, 2683 as 2683, 2684 as 2684, 2685 as 2685, 2686 as 2686, 2687 as 2687, 2688 as 2688, 2689 as 2689, 2690 as 2690, 2691 as 2691, 2692 as 2692, 2693 as 2693, 2694 as 2694, 2695 as 2695, 2696 as 2696, 2697 as 2697, 2698 as 2698, 2699 as 2699, 2700 as 2700, 2701 as 2701, 2702 as 2702, 2703 as 2703, 2704 as 2704, 2705 as 2705, 2706 as 2706, 2707 as 2707, 2708 as 2708, 2709 as 2709, 2710 as 2710, 2711 as 2711, 2712 as 2712, 2713 as 2713, 2714 as 2714, 2715 as 2715, 2716 as 2716, 2717 as 2717, 2718 as 2718, 2719 as 2719, 2720 as 2720, 2721 as 2721, 2722 as 2722, 2723 as 2723, 2724 as 2724, 2725 as 2725, 2726 as 2726, 2727 as 2727, 2728 as 2728, 2729 as 2729, 2730 as 2730, 2731 as 2731, 2732 as 2732, 2733 as 2733, 2734 as 2734, 2735 as 2735, 2736 as 2736, 2737 as 2737, 2738 as 2738, 2739 as 2739, 2740 as 2740, 2741 as 2741, 2742 as 2742, 2743 as 2743, 2744 as 2744, 2745 as 2745, 2746 as 2746, 2747 as 2747, 2748 as 2748, 2749 as 2749, 2750 as 2750, 2751 as 2751, 2752 as 2752, 2753 as 2753, 2754 as 2754, 2755 as 2755, 2756 as 2756, 2757 as 2757, 2758 as 2758, 2759 as 2759, 2760 as 2760, 2761 as 2761, 2762 as 2762, 2763 as 2763, 2764 as 2764, 2765 as 2765, 2766 as 2766, 2767 as 2767, 2768 as 2768, 2769 as 2769, 2770 as 2770, 2771 as 2771, 2772 as 2772, 2773 as 2773, 2774 as 2774, 2775 as 2775, 2776 as 2776, 2777 as 2777, 2778 as 2778, 2779 as 2779, 2780 as 2780, 2781 as 2781, 2782 as 2782, 2783 as 2783, 2784 as 2784, 2785 as 2785, 2786 as 2786, 2787 as 2787, 2788 as 2788, 2789 as 2789, 2790 as 2790, 2791 as 2791, 2792 as 2792, 2793 as 2793, 2794 as 2794, 2795 as 2795, 2796 as 2796, 2797 as 2797, 2798 as 2798, 2799 as 2799, 2800 as 2800, 2801 as 2801, 2802 as 2802, 2803 as 2803, 2804 as 2804, 2805 as 2805, 2806 as 2806, 2807 as 2807, 2808 as 2808, 2809 as 2809, 2810 as 2810, 2811 as 2811, 2812 as 2812, 2813 as 2813, 2814 as 2814, 2815 as 2815, 2816 as 2816, 2817 as 2817, 2818 as 2818, 2819 as 2819, 2820 as 2820, 2821 as 2821, 2822 as 2822, 2823 as 2823, 2824 as 2824, 2825 as 2825, 2826 as 2826, 2827 as 2827, 2828 as 2828, 2829 as 2829, 2830 as 2830, 2831 as 2831, 2832 as 2832, 2833 as 2833, 2834 as 2834, 2835 as 2835, 2836 as 2836, 2837 as 2837, 2838 as 2838, 2839 as 2839, 2840 as 2840, 2841 as 2841, 2842 as 2842, 2843 as 2843, 2844 as 2844, 2845 as 2845, 2846 as 2846, 2847 as 2847, 2848 as 2848, 2849 as 2849, 2850 as 2850, 2851 as 2851, 2852 as 2852, 2853 as 2853, 2854 as 2854, 2855 as 2855, 2856 as 2856, 2857 as 2857, 2858 as 2858, 2859 as 2859, 2860 as 2860, 2861 as 2861, 2862 as 2862, 2863 as 2863, 2864 as 2864, 2865 as 2865, 2866 as 2866, 2867 as 2867, 2868 as 2868, 2869 as 2869, 2870 as 2870, 2871 as 2871, 2872 as 2872, 2873 as 2873, 2874 as 2874, 2875 as 2875, 2876 as 2876, 2877 as 2877, 2878 as 2878, 2879 as 2879, 2880 as 2880, 2881 as 2881, 2882 as 2882, 2883 as 2883, 2884 as 2884, 2885 as 2885, 2886 as 2886, 2887 as 2887, 2888 as 2888, 2889 as 2889, 2890 as 2890, 2891 as 2891, 2892 as 2892, 2893 as 2893, 2894 as 2894, 2895 as 2895, 2896 as 2896, 2897 as 2897, 2898 as 2898, 2899 as 2899, 2900 as 2900, 2901 as 2901, 2902 as 2902, 2903 as 2903, 2904 as 2904, 2905 as 2905, 2906 as 2906, 2907 as 2907, 2908 as 2908, 2909 as 2909, 2910 as 2910, 2911 as 2911, 2912 as 2912, 2913 as 2913, 2914 as 2914, 2915 as 2915, 2916 as 2916, 2917 as 2917, 2918 as 2918, 2919 as 2919, 2920 as 2920, 2921 as 2921, 2922 as 2922, 2923 as 2923, 2924 as 2924, 2925 as 2925, 2926 as 2926, 2927 as 2927, 2928 as 2928, 2929 as 2929, 2930 as 2930, 2931 as 2931, 2932 as 2932, 2933 as 2933, 2934 as 2934, 2935 as 2935, 2936 as 2936, 2937 as 2937, 2938 as 2938, 2939 as 2939, 2940 as 2940, 2941 as 2941, 2942 as 2942, 2943 as 2943, 2944 as 2944, 2945 as 2945, 2946 as 2946, 2947 as 2947, 2948 as 2948, 2949 as 2949, 2950 as 2950, 2951 as 2951, 2952 as 2952, 2953 as 2953, 2954 as 2954, 2955 as 2955, 2956 as 2956, 2957 as 2957, 2958 as 2958, 2959 as 2959, 2960 as 2960, 2961 as 2961, 2962 as 2962, 2963 as 2963, 2964 as 2964, 2965 as 2965, 2966 as 2966, 2967 as 2967, 2968 as 2968, 2969 as 2969, 2970 as 2970, 2971 as 2971, 2972 as 2972, 2973 as 2973, 2974 as 2974, 2975 as 2975, 2976 as 2976, 2977 as 2977, 2978 as 2978, 2979 as 2979, 2980 as 2980, 2981 as 2981, 2982 as 2982, 2983 as 2983, 2984 as 2984, 2985 as 2985, 2986 as 2986, 2987 as 2987, 2988 as 2988, 2989 as 2989, 2990 as 2990, 2991 as 2991, 2992 as 2992, 2993 as 2993, 2994 as 2994, 2995 as 2995, 2996 as 2996, 2997 as 2997, 2998 as 2998, 2999 as 2999, 3000 as 3000, 3001 as 3001, 3002 as 3002, 3003 as 3003, 3004 as 3004, 3005 as 3005, 3006 as 3006, 3007 as 3007, 3008 as 3008, 3009 as 3009, 3010 as 3010, 3011 as 3011, 3012 as 3012, 3013 as 3013, 3014 as 3014, 3015 as 3015, 3016 as 3016, 3017 as 3017, 3018 as 3018, 3019 as 3019, 3020 as 3020, 3021 as 3021, 3022 as 3022, 3023 as 3023, 3024 as 3024, 3025 as 3025, 3026 as 3026, 3027 as 3027, 3028 as 3028, 3029 as 3029, 3030 as 3030, 3031 as 3031, 3032 as 3032, 3033 as 3033, 3034 as 3034, 3035 as 3035, 3036 as 3036, 3037 as 3037, 3038 as 3038, 3039 as 3039, 3040 as 3040, 3041 as 3041, 3042 as 3042, 3043 as 3043, 3044 as 3044, 3045 as 3045, 3046 as 3046, 3047 as 3047, 3048 as 3048, 3049 as 3049, 3050 as 3050, 3051 as 3051, 3052 as 3052, 3053 as 3053, 3054 as 3054, 3055 as 3055, 3056 as 3056, 3057 as 3057, 3058 as 3058, 3059 as 3059, 3060 as 3060, 3061 as 3061, 3062 as 3062, 3063 as 3063, 3064 as 3064, 3065 as 3065, 3066 as 3066, 3067 as 3067, 3068 as 3068, 3069 as 3069, 3070 as 3070, 3071 as 3071, 3072 as 3072, 3073 as 3073, 3074 as 3074, 3075 as 3075, 3076 as 3076, 3077 as 3077, 3078 as 3078, 3079 as 3079, 3080 as 3080, 3081 as 3081, 3082 as 3082, 3083 as 3083, 3084 as 3084, 3085 as 3085, 3086 as 3086, 3087 as 3087, 3088 as 3088, 3089 as 3089, 3090 as 3090, 3091 as 3091, 3092 as 3092, 3093 as 3093, 3094 as 3094, 3095 as 3095, 3096 as 3096, 3097 as 3097, 3098 as 3098, 3099 as 3099, 3100 as 3100, 3101 as 3101, 3102 as 3102, 3103 as 3103, 3104 as 3104, 3105 as 3105, 3106 as 3106, 3107 as 3107, 3108 as 3108, 3109 as 3109, 3110 as 3110, 3111 as 3111, 3112 as 3112, 3113 as 3113, 3114 as 3114, 3115 as 3115, 3116 as 3116, 3117 as 3117, 3118 as 3118, 3119 as 3119, 3120 as 3120, 3121 as 3121, 3122 as 3122, 3123 as 3123, 3124 as 3124, 3125 as 3125, 3126 as 3126, 3127 as 3127, 3128 as 3128, 3129 as 3129, 3130 as 3130, 3131 as 3131, 3132 as 3132, 3133 as 3133, 3134 as 3134, 3135 as 3135, 3136 as 3136, 3137 as 3137, 3138 as 3138, 3139 as 3139, 3140 as 3140, 3141 as 3141, 3142 as 3142, 3143 as 3143, 3144 as 3144, 3145 as 3145, 3146 as 3146, 3147 as 3147, 3148 as 3148, 3149 as 3149, 3150 as 3150, 3151 as 3151, 3152 as 3152, 3153 as 3153, 3154 as 3154, 3155 as 3155, 3156 as 3156, 3157 as 3157, 3158 as 3158, 3159 as 3159, 3160 as 3160, 3161 as 3161, 3162 as 3162, 3163 as 3163, 3164 as 3164, 3165 as 3165, 3166 as 3166, 3167 as 3167, 3168 as 3168, 3169 as 3169, 3170 as 3170, 3171 as 3171, 3172 as 3172, 3173 as 3173, 3174 as 3174, 3175 as 3175, 3176 as 3176, 3177 as 3177, 3178 as 3178, 3179 as 3179, 3180 as 3180, 3181 as 3181, 3182 as 3182, 3183 as 3183, 3184 as 3184, 3185 as 3185, 3186 as 3186, 3187 as 3187, 3188 as 3188, 3189 as 3189, 3190 as 3190, 3191 as 3191, 3192 as 3192, 3193 as 3193, 3194 as 3194, 3195 as 3195, 3196 as 3196, 3197 as 3197, 3198 as 3198, 3199 as 3199, 3200 as 3200, 3201 as 3201, 3202 as 3202, 3203 as 3203, 3204 as 3204, 3205 as 3205, 3206 as 3206, 3207 as 3207, 3208 as 3208, 3209 as 3209, 3210 as 3210, 3211 as 3211, 3212 as 3212, 3213 as 3213, 3214 as 3214, 3215 as 3215, 3216 as 3216, 3217 as 3217, 3218 as 3218, 3219 as 3219, 3220 as 3220, 3221 as 3221, 3222 as 3222, 3223 as 3223, 3224 as 3224, 3225 as 3225, 3226 as 3226, 3227 as 3227, 3228 as 3228, 3229 as 3229, 3230 as 3230, 3231 as 3231, 3232 as 3232, 3233 as 3233, 3234 as 3234, 3235 as 3235, 3236 as 3236, 3237 as 3237, 3238 as 3238, 3239 as 3239, 3240 as 3240, 3241 as 3241, 3242 as 3242, 3243 as 3243, 3244 as 3244, 3245 as 3245, 3246 as 3246, 3247 as 3247, 3248 as 3248, 3249 as 3249, 3250 as 3250, 3251 as 3251, 3252 as 3252, 3253 as 3253, 3254 as 3254, 3255 as 3255, 3256 as 3256, 3257 as 3257, 3258 as 3258, 3259 as 3259, 3260 as 3260, 3261 as 3261, 3262 as 3262, 3263 as 3263, 3264 as 3264, 3265 as 3265, 3266 as 3266, 3267 as 3267, 3268 as 3268, 3269 as 3269, 3270 as 3270, 3271 as 3271, 3272 as 3272, 3273 as 3273, 3274 as 3274, 3275 as 3275, 3276 as 3276, 3277 as 3277, 3278 as 3278, 3279 as 3279, 3280 as 3280, 3281 as 3281, 3282 as 3282, 3283 as 3283, 3284 as 3284, 3285 as 3285, 3286 as 3286, 3287 as 3287, 3288 as 3288, 3289 as 3289, 3290 as 3290, 3291 as 3291, 3292 as 3292, 3293 as 3293, 3294 as 3294, 3295 as 3295, 3296 as 3296, 3297 as 3297, 3298 as 3298, 3299 as 3299, 3300 as 3300, 3301 as 3301, 3302 as 3302, 3303 as 3303, 3304 as 3304, 3305 as 3305, 3306 as 3306, 3307 as 3307, 3308 as 3308, 3309 as 3309, 3310 as 3310, 3311 as 3311, 3312 as 3312, 3313 as 3313, 3314 as 3314, 3315 as 3315, 3316 as 3316, 3317 as 3317, 3318 as 3318, 3319 as 3319, 3320 as 3320, 3321 as 3321, 3322 as 3322, 3323 as 3323, 3324 as 3324, 3325 as 3325, 3326 as 3326, 3327 as 3327, 3328 as 3328, 3329 as 3329, 3330 as 3330, 3331 as 3331, 3332 as 3332, 3333 as 3333, 3334 as 3334, 3335 as 3335, 3336 as 3336, 3337 as 3337, 3338 as 3338, 3339 as 3339, 3340 as 3340, 3341 as 3341, 3342 as 3342, 3343 as 3343, 3344 as 3344, 3345 as 3345, 3346 as 3346, 3347 as 3347, 3348 as 3348, 3349 as 3349, 3350 as 3350, 3351 as 3351, 3352 as 3352, 3353 as 3353, 3354 as 3354, 3355 as 3355, 3356 as 3356, 3357 as 3357, 3358 as 3358, 3359 as 3359, 3360 as 3360, 3361 as 3361, 3362 as 3362, 3363 as 3363, 3364 as 3364, 3365 as 3365, 3366 as 3366, 3367 as 3367, 3368 as 3368, 3369 as 3369, 3370 as 3370, 3371 as 3371, 3372 as 3372, 3373 as 3373, 3374 as 3374, 3375 as 3375, 3376 as 3376, 3377 as 3377, 3378 as 3378, 3379 as 3379, 3380 as 3380, 3381 as 3381, 3382 as 3382, 3383 as 3383, 3384 as 3384, 3385 as 3385, 3386 as 3386, 3387 as 3387, 3388 as 3388, 3389 as 3389, 3390 as 3390, 3391 as 3391, 3392 as 3392, 3393 as 3393, 3394 as 3394, 3395 as 3395, 3396 as 3396, 3397 as 3397, 3398 as 3398, 3399 as 3399, 3400 as 3400, 3401 as 3401, 3402 as 3402, 3403 as 3403, 3404 as 3404, 3405 as 3405, 3406 as 3406, 3407 as 3407, 3408 as 3408, 3409 as 3409, 3410 as 3410, 3411 as 3411, 3412 as 3412, 3413 as 3413, 3414 as 3414, 3415 as 3415, 3416 as 3416, 3417 as 3417, 3418 as 3418, 3419 as 3419, 3420 as 3420, 3421 as 3421, 3422 as 3422, 3423 as 3423, 3424 as 3424, 3425 as 3425, 3426 as 3426, 3427 as 3427, 3428 as 3428, 3429 as 3429, 3430 as 3430, 3431 as 3431, 3432 as 3432, 3433 as 3433, 3434 as 3434, 3435 as 3435, 3436 as 3436, 3437 as 3437, 3438 as 3438, 3439 as 3439, 3440 as 3440, 3441 as 3441, 3442 as 3442, 3443 as 3443, 3444 as 3444, 3445 as 3445, 3446 as 3446, 3447 as 3447, 3448 as 3448, 3449 as 3449, 3450 as 3450, 3451 as 3451, 3452 as 3452, 3453 as 3453, 3454 as 3454, 3455 as 3455, 3456 as 3456, 3457 as 3457, 3458 as 3458, 3459 as 3459, 3460 as 3460, 3461 as 3461, 3462 as 3462, 3463 as 3463, 3464 as 3464, 3465 as 3465, 3466 as 3466, 3467 as 3467, 3468 as 3468, 3469 as 3469, 3470 as 3470, 3471 as 3471, 3472 as 3472, 3473 as 3473, 3474 as 3474, 3475 as 3475, 3476 as 3476, 3477 as 3477, 3478 as 3478, 3479 as 3479, 3480 as 3480, 3481 as 3481, 3482 as 3482, 3483 as 3483, 3484 as 3484, 3485 as 3485, 3486 as 3486, 3487 as 3487, 3488 as 3488, 3489 as 3489, 3490 as 3490, 3491 as 3491, 3492 as 3492, 3493 as 3493, 3494 as 3494, 3495 as 3495, 3496 as 3496, 3497 as 3497, 3498 as 3498, 3499 as 3499, 3500 as 3500, 3501 as 3501, 3502 as 3502, 3503 as 3503, 3504 as 3504, 3505 as 3505, 3506 as 3506, 3507 as 3507, 3508 as 3508, 3509 as 3509, 3510 as 3510, 3511 as 3511, 3512 as 3512, 3513 as 3513, 3514 as 3514, 3515 as 3515, 3516 as 3516, 3517 as 3517, 3518 as 3518, 3519 as 3519, 3520 as 3520, 3521 as 3521, 3522 as 3522, 3523 as 3523, 3524 as 3524, 3525 as 3525, 3526 as 3526, 3527 as 3527, 3528 as 3528, 3529 as 3529, 3530 as 3530, 3531 as 3531, 3532 as 3532, 3533 as 3533, 3534 as 3534, 3535 as 3535, 3536 as 3536, 3537 as 3537, 3538 as 3538, 3539 as 3539, 3540 as 3540, 3541 as 3541, 3542 as 3542, 3543 as 3543, 3544 as 3544, 3545 as 3545, 3546 as 3546, 3547 as 3547, 3548 as 3548, 3549 as 3549, 3550 as 3550, 3551 as 3551, 3552 as 3552, 3553 as 3553, 3554 as 3554, 3555 as 3555, 3556 as 3556, 3557 as 3557, 3558 as 3558, 3559 as 3559, 3560 as 3560, 3561 as 3561, 3562 as 3562, 3563 as 3563, 3564 as 3564, 3565 as 3565, 3566 as 3566, 3567 as 3567, 3568 as 3568, 3569 as 3569, 3570 as 3570, 3571 as 3571, 3572 as 3572, 3573 as 3573, 3574 as 3574, 3575 as 3575, 3576 as 3576, 3577 as 3577, 3578 as 3578, 3579 as 3579, 3580 as 3580, 3581 as 3581, 3582 as 3582, 3583 as 3583, 3584 as 3584, 3585 as 3585, 3586 as 3586, 3587 as 3587, 3588 as 3588, 3589 as 3589, 3590 as 3590, 3591 as 3591, 3592 as 3592, 3593 as 3593, 3594 as 3594, 3595 as 3595, 3596 as 3596, 3597 as 3597, 3598 as 3598, 3599 as 3599, 3600 as 3600, 3601 as 3601, 3602 as 3602, 3603 as 3603, 3604 as 3604, 3605 as 3605, 3606 as 3606, 3607 as 3607, 3608 as 3608, 3609 as 3609, 3610 as 3610, 3611 as 3611, 3612 as 3612, 3613 as 3613, 3614 as 3614, 3615 as 3615, 3616 as 3616, 3617 as 3617, 3618 as 3618, 3619 as 3619, 3620 as 3620, 3621 as 3621, 3622 as 3622, 3623 as 3623, 3624 as 3624, 3625 as 3625, 3626 as 3626, 3627 as 3627, 3628 as 3628, 3629 as 3629, 3630 as 3630, 3631 as 3631, 3632 as 3632, 3633 as 3633, 3634 as 3634, 3635 as 3635, 3636 as 3636, 3637 as 3637, 3638 as 3638, 3639 as 3639, 3640 as 3640, 3641 as 3641, 3642 as 3642, 3643 as 3643, 3644 as 3644, 3645 as 3645, 3646 as 3646, 3647 as 3647, 3648 as 3648, 3649 as 3649, 3650 as 3650, 3651 as 3651, 3652 as 3652, 3653 as 3653, 3654 as 3654, 3655 as 3655, 3656 as 3656, 3657 as 3657, 3658 as 3658, 3659 as 3659, 3660 as 3660, 3661 as 3661, 3662 as 3662, 3663 as 3663, 3664 as 3664, 3665 as 3665, 3666 as 3666, 3667 as 3667, 3668 as 3668, 3669 as 3669, 3670 as 3670, 3671 as 3671, 3672 as 3672, 3673 as 3673, 3674 as 3674, 3675 as 3675, 3676 as 3676, 3677 as 3677, 3678 as 3678, 3679 as 3679, 3680 as 3680, 3681 as 3681, 3682 as 3682, 3683 as 3683, 3684 as 3684, 3685 as 3685, 3686 as 3686, 3687 as 3687, 3688 as 3688, 3689 as 3689, 3690 as 3690, 3691 as 3691, 3692 as 3692, 3693 as 3693, 3694 as 3694, 3695 as 3695, 3696 as 3696, 3697 as 3697, 3698 as 3698, 3699 as 3699, 3700 as 3700, 3701 as 3701, 3702 as 3702, 3703 as 3703, 3704 as 3704, 3705 as 3705, 3706 as 3706, 3707 as 3707, 3708 as 3708, 3709 as 3709, 3710 as 3710, 3711 as 3711, 3712 as 3712, 3713 as 3713, 3714 as 3714, 3715 as 3715, 3716 as 3716, 3717 as 3717, 3718 as 3718, 3719 as 3719, 3720 as 3720, 3721 as 3721, 3722 as 3722, 3723 as 3723, 3724 as 3724, 3725 as 3725, 3726 as 3726, 3727 as 3727, 3728 as 3728, 3729 as 3729, 3730 as 3730, 3731 as 3731, 3732 as 3732, 3733 as 3733, 3734 as 3734, 3735 as 3735, 3736 as 3736, 3737 as 3737, 3738 as 3738, 3739 as 3739, 3740 as 3740, 3741 as 3741, 3742 as 3742, 3743 as 3743, 3744 as 3744, 3745 as 3745, 3746 as 3746, 3747 as 3747, 3748 as 3748, 3749 as 3749, 3750 as 3750, 3751 as 3751, 3752 as 3752, 3753 as 3753, 3754 as 3754, 3755 as 3755, 3756 as 3756, 3757 as 3757, 3758 as 3758, 3759 as 3759, 3760 as 3760, 3761 as 3761, 3762 as 3762, 3763 as 3763, 3764 as 3764, 3765 as 3765, 3766 as 3766, 3767 as 3767, 3768 as 3768, 3769 as 3769, 3770 as 3770, 3771 as 3771, 3772 as 3772, 3773 as 3773, 3774 as 3774, 3775 as 3775, 3776 as 3776, 3777 as 3777, 3778 as 3778, 3779 as 3779, 3780 as 3780, 3781 as 3781, 3782 as 3782, 3783 as 3783, 3784 as 3784, 3785 as 3785, 3786 as 3786, 3787 as 3787, 3788 as 3788, 3789 as 3789, 3790 as 3790, 3791 as 3791, 3792 as 3792, 3793 as 3793, 3794 as 3794, 3795 as 3795, 3796 as 3796, 3797 as 3797, 3798 as 3798, 3799 as 3799, 3800 as 3800, 3801 as 3801, 3802 as 3802, 3803 as 3803, 3804 as 3804, 3805 as 3805, 3806 as 3806, 3807 as 3807, 3808 as 3808, 3809 as 3809, 3810 as 3810, 3811 as 3811, 3812 as 3812, 3813 as 3813, 3814 as 3814, 3815 as 3815, 3816 as 3816, 3817 as 3817, 3818 as 3818, 3819 as 3819, 3820 as 3820, 3821 as 3821, 3822 as 3822, 3823 as 3823, 3824 as 3824, 3825 as 3825, 3826 as 3826, 3827 as 3827, 3828 as 3828, 3829 as 3829, 3830 as 3830, 3831 as 3831, 3832 as 3832, 3833 as 3833, 3834 as 3834, 3835 as 3835, 3836 as 3836, 3837 as 3837, 3838 as 3838, 3839 as 3839, 3840 as 3840, 3841 as 3841, 3842 as 3842, 3843 as 3843, 3844 as 3844, 3845 as 3845, 3846 as 3846, 3847 as 3847, 3848 as 3848, 3849 as 3849, 3850 as 3850, 3851 as 3851, 3852 as 3852, 3853 as 3853, 3854 as 3854, 3855 as 3855, 3856 as 3856, 3857 as 3857, 3858 as 3858, 3859 as 3859, 3860 as 3860, 3861 as 3861, 3862 as 3862, 3863 as 3863, 3864 as 3864, 3865 as 3865, 3866 as 3866, 3867 as 3867, 3868 as 3868, 3869 as 3869, 3870 as 3870, 3871 as 3871, 3872 as 3872, 3873 as 3873, 3874 as 3874, 3875 as 3875, 3876 as 3876, 3877 as 3877, 3878 as 3878, 3879 as 3879, 3880 as 3880, 3881 as 3881, 3882 as 3882, 3883 as 3883, 3884 as 3884, 3885 as 3885, 3886 as 3886, 3887 as 3887, 3888 as 3888, 3889 as 3889, 3890 as 3890, 3891 as 3891, 3892 as 3892, 3893 as 3893, 3894 as 3894, 3895 as 3895, 3896 as 3896, 3897 as 3897, 3898 as 3898, 3899 as 3899, 3900 as 3900, 3901 as 3901, 3902 as 3902, 3903 as 3903, 3904 as 3904, 3905 as 3905, 3906 as 3906, 3907 as 3907, 3908 as 3908, 3909 as 3909, 3910 as 3910, 3911 as 3911, 3912 as 3912, 3913 as 3913, 3914 as 3914, 3915 as 3915, 3916 as 3916, 3917 as 3917, 3918 as 3918, 3919 as 3919, 3920 as 3920, 3921 as 3921, 3922 as 3922, 3923 as 3923, 3924 as 3924, 3925 as 3925, 3926 as 3926, 3927 as 3927, 3928 as 3928, 3929 as 3929, 3930 as 3930, 3931 as 3931, 3932 as 3932, 3933 as 3933, 3934 as 3934, 3935 as 3935, 3936 as 3936, 3937 as 3937, 3938 as 3938, 3939 as 3939, 3940 as 3940, 3941 as 3941, 3942 as 3942, 3943 as 3943, 3944 as 3944, 3945 as 3945, 3946 as 3946, 3947 as 3947, 3948 as 3948, 3949 as 3949, 3950 as 3950, 3951 as 3951, 3952 as 3952, 3953 as 3953, 3954 as 3954, 3955 as 3955, 3956 as 3956, 3957 as 3957, 3958 as 3958, 3959 as 3959, 3960 as 3960, 3961 as 3961, 3962 as 3962, 3963 as 3963, 3964 as 3964, 3965 as 3965, 3966 as 3966, 3967 as 3967, 3968 as 3968, 3969 as 3969, 3970 as 3970, 3971 as 3971, 3972 as 3972, 3973 as 3973, 3974 as 3974, 3975 as 3975, 3976 as 3976, 3977 as 3977, 3978 as 3978, 3979 as 3979, 3980 as 3980, 3981 as 3981, 3982 as 3982, 3983 as 3983, 3984 as 3984, 3985 as 3985, 3986 as 3986, 3987 as 3987, 3988 as 3988, 3989 as 3989, 3990 as 3990, 3991 as 3991, 3992 as 3992, 3993 as 3993, 3994 as 3994, 3995 as 3995, 3996 as 3996, 3997 as 3997, 3998 as 3998, 3999 as 3999, 4000 as 4000, 4001 as 4001, 4002 as 4002, 4003 as 4003, 4004 as 4004, 4005 as 4005, 4006 as 4006, 4007 as 4007, 4008 as 4008, 4009 as 4009, 4010 as 4010, 4011 as 4011, 4012 as 4012, 4013 as 4013, 4014 as 4014, 4015 as 4015, 4016 as 4016, 4017 as 4017, 4018 as 4018, 4019 as 4019, 4020 as 4020, 4021 as 4021, 4022 as 4022, 4023 as 4023, 4024 as 4024, 4025 as 4025, 4026 as 4026, 4027 as 4027, 4028 as 4028, 4029 as 4029, 4030 as 4030, 4031 as 4031, 4032 as 4032, 4033 as 4033, 4034 as 4034, 4035 as 4035, 4036 as 4036, 4037 as 4037, 4038 as 4038, 4039 as 4039, 4040 as 4040, 4041 as 4041, 4042 as 4042, 4043 as 4043, 4044 as 4044, 4045 as 4045, 4046 as 4046, 4047 as 4047, 4048 as 4048, 4049 as 4049, 4050 as 4050, 4051 as 4051, 4052 as 4052, 4053 as 4053, 4054 as 4054, 4055 as 4055, 4056 as 4056, 4057 as 4057, 4058 as 4058, 4059 as 4059, 4060 as 4060, 4061 as 4061, 4062 as 4062, 4063 as 4063, 4064 as 4064, 4065 as 4065, 4066 as 4066, 4067 as 4067, 4068 as 4068, 4069 as 4069, 4070 as 4070, 4071 as 4071, 4072 as 4072, 4073 as 4073, 4074 as 4074, 4075 as 4075, 4076 as 4076, 4077 as 4077, 4078 as 4078, 4079 as 4079, 4080 as 4080, 4081 as 4081, 4082 as 4082, 4083 as 4083, 4084 as 4084, 4085 as 4085, 4086 as 4086, 4087 as 4087, 4088 as 4088, 4089 as 4089, 4090 as 4090, 4091 as 4091, 4092 as 4092, 4093 as 4093, 4094 as 4094, 4095 as 4095, 4096 as 4096, 4097 as 4097, 4098 as 4098, 4099 as 4099, 4100 as 4100, 4101 as 4101, 4102 as 4102, 4103 as 4103, 4104 as 4104, 4105 as 4105, 4106 as 4106, 4107 as 4107, 4108 as 4108, 4109 as 4109, 4110 as 4110, 4111 as 4111, 4112 as 4112, 4113 as 4113, 4114 as 4114, 4115 as 4115, 4116 as 4116, 4117 as 4117, 4118 as 4118, 4119 as 4119, 4120 as 4120, 4121 as 4121, 4122 as 4122, 4123 as 4123, 4124 as 4124, 4125 as 4125, 4126 as 4126, 4127 as 4127, 4128 as 4128, 4129 as 4129, 4130 as 4130, 4131 as 4131, 4132 as 4132, 4133 as 4133, 4134 as 4134, 4135 as 4135, 4136 as 4136, 4137 as 4137, 4138 as 4138, 4139 as 4139, 4140 as 4140, 4141 as 4141, 4142 as 4142, 4143 as 4143, 4144 as 4144, 4145 as 4145, 4146 as 4146, 4147 as 4147, 4148 as 4148, 4149 as 4149, 4150 as 4150, 4151 as 4151, 4152 as 4152, 4153 as 4153, 4154 as 4154, 4155 as 4155, 4156 as 4156, 4157 as 4157, 4158 as 4158, 4159 as 4159, 4160 as 4160, 4161 as 4161, 4162 as 4162, 4163 as 4163, 4164 as 4164, 4165 as 4165, 4166 as 4166, 4167 as 4167, 4168 as 4168, 4169 as 4169, 4170 as 4170, 4171 as 4171, 4172 as 4172, 4173 as 4173, 4174 as 4174, 4175 as 4175, 4176 as 4176, 4177 as 4177, 4178 as 4178, 4179 as 4179, 4180 as 4180, 4181 as 4181, 4182 as 4182, 4183 as 4183, 4184 as 4184, 4185 as 4185, 4186 as 4186, 4187 as 4187, 4188 as 4188, 4189 as 4189, 4190 as 4190, 4191 as 4191, 4192 as 4192, 4193 as 4193, 4194 as 4194, 4195 as 4195, 4196 as 4196, 4197 as 4197, 4198 as 4198, 4199 as 4199, 4200 as 4200, 4201 as 4201, 4202 as 4202, 4203 as 4203, 4204 as 4204, 4205 as 4205, 4206 as 4206, 4207 as 4207, 4208 as 4208, 4209 as 4209, 4210 as 4210, 4211 as 4211, 4212 as 4212, 4213 as 4213, 4214 as 4214, 4215 as 4215, 4216 as 4216, 4217 as 4217, 4218 as 4218, 4219 as 4219, 4220 as 4220, 4221 as 4221, 4222 as 4222, 4223 as 4223, 4224 as 4224, 4225 as 4225, 4226 as 4226, 4227 as 4227, 4228 as 4228, 4229 as 4229, 4230 as 4230, 4231 as 4231, 4232 as 4232, 4233 as 4233, 4234 as 4234, 4235 as 4235, 4236 as 4236, 4237 as 4237, 4238 as 4238, 4239 as 4239, 4240 as 4240, 4241 as 4241, 4242 as 4242, 4243 as 4243, 4244 as 4244, 4245 as 4245, 4246 as 4246, 4247 as 4247, 4248 as 4248, 4249 as 4249, 4250 as 4250, 4251 as 4251, 4252 as 4252, 4253 as 4253, 4254 as 4254, 4255 as 4255, 4256 as 4256, 4257 as 4257, 4258 as 4258, 4259 as 4259, 4260 as 4260, 4261 as 4261, 4262 as 4262, 4263 as 4263, 4264 as 4264, 4265 as 4265, 4266 as 4266, 4267 as 4267, 4268 as 4268, 4269 as 4269, 4270 as 4270, 4271 as 4271, 4272 as 4272, 4273 as 4273, 4274 as 4274, 4275 as 4275, 4276 as 4276, 4277 as 4277, 4278 as 4278, 4279 as 4279, 4280 as 4280, 4281 as 4281, 4282 as 4282, 4283 as 4283, 4284 as 4284, 4285 as 4285, 4286 as 4286, 4287 as 4287, 4288 as 4288, 4289 as 4289, 4290 as 4290, 4291 as 4291, 4292 as 4292, 4293 as 4293, 4294 as 4294, 4295 as 4295, 4296 as 4296, 4297 as 4297, 4298 as 4298, 4299 as 4299, 4300 as 4300, 4301 as 4301, 4302 as 4302, 4303 as 4303, 4304 as 4304, 4305 as 4305, 4306 as 4306, 4307 as 4307, 4308 as 4308, 4309 as 4309, 4310 as 4310, 4311 as 4311, 4312 as 4312, 4313 as 4313, 4314 as 4314, 4315 as 4315, 4316 as 4316, 4317 as 4317, 4318 as 4318, 4319 as 4319, 4320 as 4320, 4321 as 4321, 4322 as 4322, 4323 as 4323, 4324 as 4324, 4325 as 4325, 4326 as 4326, 4327 as 4327, 4328 as 4328, 4329 as 4329, 4330 as 4330, 4331 as 4331, 4332 as 4332, 4333 as 4333, 4334 as 4334, 4335 as 4335, 4336 as 4336, 4337 as 4337, 4338 as 4338, 4339 as 4339, 4340 as 4340, 4341 as 4341, 4342 as 4342, 4343 as 4343, 4344 as 4344, 4345 as 4345, 4346 as 4346, 4347 as 4347, 4348 as 4348, 4349 as 4349, 4350 as 4350, 4351 as 4351, 4352 as 4352, 4353 as 4353, 4354 as 4354, 4355 as 4355, 4356 as 4356, 4357 as 4357, 4358 as 4358, 4359 as 4359, 4360 as 4360, 4361 as 4361, 4362 as 4362, 4363 as 4363, 4364 as 4364, 4365 as 4365, 4366 as 4366, 4367 as 4367, 4368 as 4368, 4369 as 4369, 4370 as 4370, 4371 as 4371, 4372 as 4372, 4373 as 4373, 4374 as 4374, 4375 as 4375, 4376 as 4376, 4377 as 4377, 4378 as 4378, 4379 as 4379, 4380 as 4380, 4381 as 4381, 4382 as 4382, 4383 as 4383, 4384 as 4384, 4385 as 4385, 4386 as 4386, 4387 as 4387, 4388 as 4388, 4389 as 4389, 4390 as 4390, 4391 as 4391, 4392 as 4392, 4393 as 4393, 4394 as 4394, 4395 as 4395, 4396 as 4396, 4397 as 4397, 4398 as 4398, 4399 as 4399, 4400 as 4400, 4401 as 4401, 4402 as 4402, 4403 as 4403, 4404 as 4404, 4405 as 4405, 4406 as 4406, 4407 as 4407, 4408 as 4408, 4409 as 4409, 4410 as 4410, 4411 as 4411, 4412 as 4412, 4413 as 4413, 4414 as 4414, 4415 as 4415, 4416 as 4416, 4417 as 4417, 4418 as 4418, 4419 as 4419, 4420 as 4420, 4421 as 4421, 4422 as 4422, 4423 as 4423, 4424 as 4424, 4425 as 4425, 4426 as 4426, 4427 as 4427, 4428 as 4428, 4429 as 4429, 4430 as 4430, 4431 as 4431, 4432 as 4432, 4433 as 4433, 4434 as 4434, 4435 as 4435, 4436 as 4436, 4437 as 4437, 4438 as 4438, 4439 as 4439, 4440 as 4440, 4441 as 4441, 4442 as 4442, 4443 as 4443, 4444 as 4444, 4445 as 4445, 4446 as 4446, 4447 as 4447, 4448 as 4448, 4449 as 4449, 4450 as 4450, 4451 as 4451, 4452 as 4452, 4453 as 4453, 4454 as 4454, 4455 as 4455, 4456 as 4456, 4457 as 4457, 4458 as 4458, 4459 as 4459, 4460 as 4460, 4461 as 4461, 4462 as 4462, 4463 as 4463, 4464 as 4464, 4465 as 4465, 4466 as 4466, 4467 as 4467, 4468 as 4468, 4469 as 4469, 4470 as 4470, 4471 as 4471, 4472 as 4472, 4473 as 4473, 4474 as 4474, 4475 as 4475, 4476 as 4476, 4477 as 4477, 4478 as 4478, 4479 as 4479, 4480 as 4480, 4481 as 4481, 4482 as 4482, 4483 as 4483, 4484 as 4484, 4485 as 4485, 4486 as 4486, 4487 as 4487, 4488 as 4488, 4489 as 4489, 4490 as 4490, 4491 as 4491, 4492 as 4492, 4493 as 4493, 4494 as 4494, 4495 as 4495, 4496 as 4496, 4497 as 4497, 4498 as 4498, 4499 as 4499, 4500 as 4500, 4501 as 4501, 4502 as 4502, 4503 as 4503, 4504 as 4504, 4505 as 4505, 4506 as 4506, 4507 as 4507, 4508 as 4508, 4509 as 4509, 4510 as 4510, 4511 as 4511, 4512 as 4512, 4513 as 4513, 4514 as 4514, 4515 as 4515, 4516 as 4516, 4517 as 4517, 4518 as 4518, 4519 as 4519, 4520 as 4520, 4521 as 4521, 4522 as 4522, 4523 as 4523, 4524 as 4524, 4525 as 4525, 4526 as 4526, 4527 as 4527, 4528 as 4528, 4529 as 4529, 4530 as 4530, 4531 as 4531, 4532 as 4532, 4533 as 4533, 4534 as 4534, 4535 as 4535, 4536 as 4536, 4537 as 4537, 4538 as 4538, 4539 as 4539, 4540 as 4540, 4541 as 4541, 4542 as 4542, 4543 as 4543, 4544 as 4544, 4545 as 4545, 4546 as 4546, 4547 as 4547, 4548 as 4548, 4549 as 4549, 4550 as 4550, 4551 as 4551, 4552 as 4552, 4553 as 4553, 4554 as 4554, 4555 as 4555, 4556 as 4556, 4557 as 4557, 4558 as 4558, 4559 as 4559, 4560 as 4560, 4561 as 4561, 4562 as 4562, 4563 as 4563, 4564 as 4564, 4565 as 4565, 4566 as 4566, 4567 as 4567, 4568 as 4568, 4569 as 4569, 4570 as 4570, 4571 as 4571, 4572 as 4572, 4573 as 4573, 4574 as 4574, 4575 as 4575, 4576 as 4576, 4577 as 4577, 4578 as 4578, 4579 as 4579, 4580 as 4580, 4581 as 4581, 4582 as 4582, 4583 as 4583, 4584 as 4584, 4585 as 4585, 4586 as 4586, 4587 as 4587, 4588 as 4588, 4589 as 4589, 4590 as 4590, 4591 as 4591, 4592 as 4592, 4593 as 4593, 4594 as 4594, 4595 as 4595, 4596 as 4596, 4597 as 4597, 4598 as 4598, 4599 as 4599, 4600 as 4600, 4601 as 4601, 4602 as 4602, 4603 as 4603, 4604 as 4604, 4605 as 4605, 4606 as 4606, 4607 as 4607, 4608 as 4608, 4609 as 4609, 4610 as 4610, 4611 as 4611, 4612 as 4612, 4613 as 4613, 4614 as 4614, 4615 as 4615, 4616 as 4616, 4617 as 4617, 4618 as 4618, 4619 as 4619, 4620 as 4620, 4621 as 4621, 4622 as 4622, 4623 as 4623, 4624 as 4624, 4625 as 4625, 4626 as 4626, 4627 as 4627, 4628 as 4628, 4629 as 4629, 4630 as 4630, 4631 as 4631, 4632 as 4632, 4633 as 4633, 4634 as 4634, 4635 as 4635, 4636 as 4636, 4637 as 4637, 4638 as 4638, 4639 as 4639, 4640 as 4640, 4641 as 4641, 4642 as 4642, 4643 as 4643, 4644 as 4644, 4645 as 4645, 4646 as 4646, 4647 as 4647, 4648 as 4648, 4649 as 4649, 4650 as 4650, 4651 as 4651, 4652 as 4652, 4653 as 4653, 4654 as 4654, 4655 as 4655, 4656 as 4656, 4657 as 4657, 4658 as 4658, 4659 as 4659, 4660 as 4660, 4661 as 4661, 4662 as 4662, 4663 as 4663, 4664 as 4664, 4665 as 4665, 4666 as 4666, 4667 as 4667, 4668 as 4668, 4669 as 4669, 4670 as 4670, 4671 as 4671, 4672 as 4672, 4673 as 4673, 4674 as 4674, 4675 as 4675, 4676 as 4676, 4677 as 4677, 4678 as 4678, 4679 as 4679, 4680 as 4680, 4681 as 4681, 4682 as 4682, 4683 as 4683, 4684 as 4684, 4685 as 4685, 4686 as 4686, 4687 as 4687, 4688 as 4688, 4689 as 4689, 4690 as 4690, 4691 as 4691, 4692 as 4692, 4693 as 4693, 4694 as 4694, 4695 as 4695, 4696 as 4696, 4697 as 4697, 4698 as 4698, 4699 as 4699, 4700 as 4700, 4701 as 4701, 4702 as 4702, 4703 as 4703, 4704 as 4704, 4705 as 4705, 4706 as 4706, 4707 as 4707, 4708 as 4708, 4709 as 4709, 4710 as 4710, 4711 as 4711, 4712 as 4712, 4713 as 4713, 4714 as 4714, 4715 as 4715, 4716 as 4716, 4717 as 4717, 4718 as 4718, 4719 as 4719, 4720 as 4720, 4721 as 4721, 4722 as 4722, 4723 as 4723, 4724 as 4724, 4725 as 4725, 4726 as 4726, 4727 as 4727, 4728 as 4728, 4729 as 4729, 4730 as 4730, 4731 as 4731, 4732 as 4732, 4733 as 4733, 4734 as 4734, 4735 as 4735, 4736 as 4736, 4737 as 4737, 4738 as 4738, 4739 as 4739, 4740 as 4740, 4741 as 4741, 4742 as 4742, 4743 as 4743, 4744 as 4744, 4745 as 4745, 4746 as 4746, 4747 as 4747, 4748 as 4748, 4749 as 4749, 4750 as 4750, 4751 as 4751, 4752 as 4752, 4753 as 4753, 4754 as 4754, 4755 as 4755, 4756 as 4756, 4757 as 4757, 4758 as 4758, 4759 as 4759, 4760 as 4760, 4761 as 4761, 4762 as 4762, 4763 as 4763, 4764 as 4764, 4765 as 4765, 4766 as 4766, 4767 as 4767, 4768 as 4768, 4769 as 4769, 4770 as 4770, 4771 as 4771, 4772 as 4772, 4773 as 4773, 4774 as 4774, 4775 as 4775, 4776 as 4776, 4777 as 4777, 4778 as 4778, 4779 as 4779, 4780 as 4780, 4781 as 4781, 4782 as 4782, 4783 as 4783, 4784 as 4784, 4785 as 4785, 4786 as 4786, 4787 as 4787, 4788 as 4788, 4789 as 4789, 4790 as 4790, 4791 as 4791, 4792 as 4792, 4793 as 4793, 4794 as 4794, 4795 as 4795, 4796 as 4796, 4797 as 4797, 4798 as 4798, 4799 as 4799, 4800 as 4800, 4801 as 4801, 4802 as 4802, 4803 as 4803, 4804 as 4804, 4805 as 4805, 4806 as 4806, 4807 as 4807, 4808 as 4808, 4809 as 4809, 4810 as 4810, 4811 as 4811, 4812 as 4812, 4813 as 4813, 4814 as 4814, 4815 as 4815, 4816 as 4816, 4817 as 4817, 4818 as 4818, 4819 as 4819, 4820 as 4820, 4821 as 4821, 4822 as 4822, 4823 as 4823, 4824 as 4824, 4825 as 4825, 4826 as 4826, 4827 as 4827, 4828 as 4828, 4829 as 4829, 4830 as 4830, 4831 as 4831, 4832 as 4832, 4833 as 4833, 4834 as 4834, 4835 as 4835, 4836 as 4836, 4837 as 4837, 4838 as 4838, 4839 as 4839, 4840 as 4840, 4841 as 4841, 4842 as 4842, 4843 as 4843, 4844 as 4844, 4845 as 4845, 4846 as 4846, 4847 as 4847, 4848 as 4848, 4849 as 4849, 4850 as 4850, 4851 as 4851, 4852 as 4852, 4853 as 4853, 4854 as 4854, 4855 as 4855, 4856 as 4856, 4857 as 4857, 4858 as 4858, 4859 as 4859, 4860 as 4860, 4861 as 4861, 4862 as 4862, 4863 as 4863, 4864 as 4864, 4865 as 4865, 4866 as 4866, 4867 as 4867, 4868 as 4868, 4869 as 4869, 4870 as 4870, 4871 as 4871, 4872 as 4872, 4873 as 4873, 4874 as 4874, 4875 as 4875, 4876 as 4876, 4877 as 4877, 4878 as 4878, 4879 as 4879, 4880 as 4880, 4881 as 4881, 4882 as 4882, 4883 as 4883, 4884 as 4884, 4885 as 4885, 4886 as 4886, 4887 as 4887, 4888 as 4888, 4889 as 4889, 4890 as 4890, 4891 as 4891, 4892 as 4892, 4893 as 4893, 4894 as 4894, 4895 as 4895, 4896 as 4896, 4897 as 4897, 4898 as 4898, 4899 as 4899, 4900 as 4900, 4901 as 4901, 4902 as 4902, 4903 as 4903, 4904 as 4904, 4905 as 4905, 4906 as 4906, 4907 as 4907, 4908 as 4908, 4909 as 4909, 4910 as 4910, 4911 as 4911, 4912 as 4912, 4913 as 4913, 4914 as 4914, 4915 as 4915, 4916 as 4916, 4917 as 4917, 4918 as 4918, 4919 as 4919, 4920 as 4920, 4921 as 4921, 4922 as 4922, 4923 as 4923, 4924 as 4924, 4925 as 4925, 4926 as 4926, 4927 as 4927, 4928 as 4928, 4929 as 4929, 4930 as 4930, 4931 as 4931, 4932 as 4932, 4933 as 4933, 4934 as 4934, 4935 as 4935, 4936 as 4936, 4937 as 4937, 4938 as 4938, 4939 as 4939, 4940 as 4940, 4941 as 4941, 4942 as 4942, 4943 as 4943, 4944 as 4944, 4945 as 4945, 4946 as 4946, 4947 as 4947, 4948 as 4948, 4949 as 4949, 4950 as 4950, 4951 as 4951, 4952 as 4952, 4953 as 4953, 4954 as 4954, 4955 as 4955, 4956 as 4956, 4957 as 4957, 4958 as 4958, 4959 as 4959, 4960 as 4960, 4961 as 4961, 4962 as 4962, 4963 as 4963, 4964 as 4964, 4965 as 4965, 4966 as 4966, 4967 as 4967, 4968 as 4968, 4969 as 4969, 4970 as 4970, 4971 as 4971, 4972 as 4972, 4973 as 4973, 4974 as 4974, 4975 as 4975, 4976 as 4976, 4977 as 4977, 4978 as 4978, 4979 as 4979, 4980 as 4980, 4981 as 4981, 4982 as 4982, 4983 as 4983, 4984 as 4984, 4985 as 4985, 4986 as 4986, 4987 as 4987, 4988 as 4988, 4989 as 4989, 4990 as 4990, 4991 as 4991, 4992 as 4992, 4993 as 4993, 4994 as 4994, 4995 as 4995, 4996 as 4996, 4997 as 4997, 4998 as 4998, 4999 as 4999, 5000 as 5000, 5001 as 5001,] : (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1440 | 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 | 1482 | 1483 | 1484 | 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1518 | 1519 | 1520 | 1521 | 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1581 | 1582 | 1583 | 1584 | 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 | 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 1606 | 1607 | 1608 | 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 1616 | 1617 | 1618 | 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | 1625 | 1626 | 1627 | 1628 | 1629 | 1630 | 1631 | 1632 | 1633 | 1634 | 1635 | 1636 | 1637 | 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | 1652 | 1653 | 1654 | 1655 | 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 1666 | 1667 | 1668 | 1669 | 1670 | 1671 | 1672 | 1673 | 1674 | 1675 | 1676 | 1677 | 1678 | 1679 | 1680 | 1681 | 1682 | 1683 | 1684 | 1685 | 1686 | 1687 | 1688 | 1689 | 1690 | 1691 | 1692 | 1693 | 1694 | 1695 | 1696 | 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | 1720 | 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 1727 | 1728 | 1729 | 1730 | 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 1737 | 1738 | 1739 | 1740 | 1741 | 1742 | 1743 | 1744 | 1745 | 1746 | 1747 | 1748 | 1749 | 1750 | 1751 | 1752 | 1753 | 1754 | 1755 | 1756 | 1757 | 1758 | 1759 | 1760 | 1761 | 1762 | 1763 | 1764 | 1765 | 1766 | 1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1774 | 1775 | 1776 | 1777 | 1778 | 1779 | 1780 | 1781 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 1817 | 1818 | 1819 | 1820 | 1821 | 1822 | 1823 | 1824 | 1825 | 1826 | 1827 | 1828 | 1829 | 1830 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1839 | 1840 | 1841 | 1842 | 1843 | 1844 | 1845 | 1846 | 1847 | 1848 | 1849 | 1850 | 1851 | 1852 | 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | 1860 | 1861 | 1862 | 1863 | 1864 | 1865 | 1866 | 1867 | 1868 | 1869 | 1870 | 1871 | 1872 | 1873 | 1874 | 1875 | 1876 | 1877 | 1878 | 1879 | 1880 | 1881 | 1882 | 1883 | 1884 | 1885 | 1886 | 1887 | 1888 | 1889 | 1890 | 1891 | 1892 | 1893 | 1894 | 1895 | 1896 | 1897 | 1898 | 1899 | 1900 | 1901 | 1902 | 1903 | 1904 | 1905 | 1906 | 1907 | 1908 | 1909 | 1910 | 1911 | 1912 | 1913 | 1914 | 1915 | 1916 | 1917 | 1918 | 1919 | 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 1928 | 1929 | 1930 | 1931 | 1932 | 1933 | 1934 | 1935 | 1936 | 1937 | 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 1945 | 1946 | 1947 | 1948 | 1949 | 1950 | 1951 | 1952 | 1953 | 1954 | 1955 | 1956 | 1957 | 1958 | 1959 | 1960 | 1961 | 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | 2053 | 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 2068 | 2069 | 2070 | 2071 | 2072 | 2073 | 2074 | 2075 | 2076 | 2077 | 2078 | 2079 | 2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 2087 | 2088 | 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 2113 | 2114 | 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | 2121 | 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 2130 | 2131 | 2132 | 2133 | 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2146 | 2147 | 2148 | 2149 | 2150 | 2151 | 2152 | 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 2164 | 2165 | 2166 | 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | 2182 | 2183 | 2184 | 2185 | 2186 | 2187 | 2188 | 2189 | 2190 | 2191 | 2192 | 2193 | 2194 | 2195 | 2196 | 2197 | 2198 | 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 2212 | 2213 | 2214 | 2215 | 2216 | 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | 2228 | 2229 | 2230 | 2231 | 2232 | 2233 | 2234 | 2235 | 2236 | 2237 | 2238 | 2239 | 2240 | 2241 | 2242 | 2243 | 2244 | 2245 | 2246 | 2247 | 2248 | 2249 | 2250 | 2251 | 2252 | 2253 | 2254 | 2255 | 2256 | 2257 | 2258 | 2259 | 2260 | 2261 | 2262 | 2263 | 2264 | 2265 | 2266 | 2267 | 2268 | 2269 | 2270 | 2271 | 2272 | 2273 | 2274 | 2275 | 2276 | 2277 | 2278 | 2279 | 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 2286 | 2287 | 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 2295 | 2296 | 2297 | 2298 | 2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 2310 | 2311 | 2312 | 2313 | 2314 | 2315 | 2316 | 2317 | 2318 | 2319 | 2320 | 2321 | 2322 | 2323 | 2324 | 2325 | 2326 | 2327 | 2328 | 2329 | 2330 | 2331 | 2332 | 2333 | 2334 | 2335 | 2336 | 2337 | 2338 | 2339 | 2340 | 2341 | 2342 | 2343 | 2344 | 2345 | 2346 | 2347 | 2348 | 2349 | 2350 | 2351 | 2352 | 2353 | 2354 | 2355 | 2356 | 2357 | 2358 | 2359 | 2360 | 2361 | 2362 | 2363 | 2364 | 2365 | 2366 | 2367 | 2368 | 2369 | 2370 | 2371 | 2372 | 2373 | 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 2380 | 2381 | 2382 | 2383 | 2384 | 2385 | 2386 | 2387 | 2388 | 2389 | 2390 | 2391 | 2392 | 2393 | 2394 | 2395 | 2396 | 2397 | 2398 | 2399 | 2400 | 2401 | 2402 | 2403 | 2404 | 2405 | 2406 | 2407 | 2408 | 2409 | 2410 | 2411 | 2412 | 2413 | 2414 | 2415 | 2416 | 2417 | 2418 | 2419 | 2420 | 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 2427 | 2428 | 2429 | 2430 | 2431 | 2432 | 2433 | 2434 | 2435 | 2436 | 2437 | 2438 | 2439 | 2440 | 2441 | 2442 | 2443 | 2444 | 2445 | 2446 | 2447 | 2448 | 2449 | 2450 | 2451 | 2452 | 2453 | 2454 | 2455 | 2456 | 2457 | 2458 | 2459 | 2460 | 2461 | 2462 | 2463 | 2464 | 2465 | 2466 | 2467 | 2468 | 2469 | 2470 | 2471 | 2472 | 2473 | 2474 | 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 2482 | 2483 | 2484 | 2485 | 2486 | 2487 | 2488 | 2489 | 2490 | 2491 | 2492 | 2493 | 2494 | 2495 | 2496 | 2497 | 2498 | 2499 | 2500 | 2501 | 2502 | 2503 | 2504 | 2505 | 2506 | 2507 | 2508 | 2509 | 2510 | 2511 | 2512 | 2513 | 2514 | 2515 | 2516 | 2517 | 2518 | 2519 | 2520 | 2521 | 2522 | 2523 | 2524 | 2525 | 2526 | 2527 | 2528 | 2529 | 2530 | 2531 | 2532 | 2533 | 2534 | 2535 | 2536 | 2537 | 2538 | 2539 | 2540 | 2541 | 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 2548 | 2549 | 2550 | 2551 | 2552 | 2553 | 2554 | 2555 | 2556 | 2557 | 2558 | 2559 | 2560 | 2561 | 2562 | 2563 | 2564 | 2565 | 2566 | 2567 | 2568 | 2569 | 2570 | 2571 | 2572 | 2573 | 2574 | 2575 | 2576 | 2577 | 2578 | 2579 | 2580 | 2581 | 2582 | 2583 | 2584 | 2585 | 2586 | 2587 | 2588 | 2589 | 2590 | 2591 | 2592 | 2593 | 2594 | 2595 | 2596 | 2597 | 2598 | 2599 | 2600 | 2601 | 2602 | 2603 | 2604 | 2605 | 2606 | 2607 | 2608 | 2609 | 2610 | 2611 | 2612 | 2613 | 2614 | 2615 | 2616 | 2617 | 2618 | 2619 | 2620 | 2621 | 2622 | 2623 | 2624 | 2625 | 2626 | 2627 | 2628 | 2629 | 2630 | 2631 | 2632 | 2633 | 2634 | 2635 | 2636 | 2637 | 2638 | 2639 | 2640 | 2641 | 2642 | 2643 | 2644 | 2645 | 2646 | 2647 | 2648 | 2649 | 2650 | 2651 | 2652 | 2653 | 2654 | 2655 | 2656 | 2657 | 2658 | 2659 | 2660 | 2661 | 2662 | 2663 | 2664 | 2665 | 2666 | 2667 | 2668 | 2669 | 2670 | 2671 | 2672 | 2673 | 2674 | 2675 | 2676 | 2677 | 2678 | 2679 | 2680 | 2681 | 2682 | 2683 | 2684 | 2685 | 2686 | 2687 | 2688 | 2689 | 2690 | 2691 | 2692 | 2693 | 2694 | 2695 | 2696 | 2697 | 2698 | 2699 | 2700 | 2701 | 2702 | 2703 | 2704 | 2705 | 2706 | 2707 | 2708 | 2709 | 2710 | 2711 | 2712 | 2713 | 2714 | 2715 | 2716 | 2717 | 2718 | 2719 | 2720 | 2721 | 2722 | 2723 | 2724 | 2725 | 2726 | 2727 | 2728 | 2729 | 2730 | 2731 | 2732 | 2733 | 2734 | 2735 | 2736 | 2737 | 2738 | 2739 | 2740 | 2741 | 2742 | 2743 | 2744 | 2745 | 2746 | 2747 | 2748 | 2749 | 2750 | 2751 | 2752 | 2753 | 2754 | 2755 | 2756 | 2757 | 2758 | 2759 | 2760 | 2761 | 2762 | 2763 | 2764 | 2765 | 2766 | 2767 | 2768 | 2769 | 2770 | 2771 | 2772 | 2773 | 2774 | 2775 | 2776 | 2777 | 2778 | 2779 | 2780 | 2781 | 2782 | 2783 | 2784 | 2785 | 2786 | 2787 | 2788 | 2789 | 2790 | 2791 | 2792 | 2793 | 2794 | 2795 | 2796 | 2797 | 2798 | 2799 | 2800 | 2801 | 2802 | 2803 | 2804 | 2805 | 2806 | 2807 | 2808 | 2809 | 2810 | 2811 | 2812 | 2813 | 2814 | 2815 | 2816 | 2817 | 2818 | 2819 | 2820 | 2821 | 2822 | 2823 | 2824 | 2825 | 2826 | 2827 | 2828 | 2829 | 2830 | 2831 | 2832 | 2833 | 2834 | 2835 | 2836 | 2837 | 2838 | 2839 | 2840 | 2841 | 2842 | 2843 | 2844 | 2845 | 2846 | 2847 | 2848 | 2849 | 2850 | 2851 | 2852 | 2853 | 2854 | 2855 | 2856 | 2857 | 2858 | 2859 | 2860 | 2861 | 2862 | 2863 | 2864 | 2865 | 2866 | 2867 | 2868 | 2869 | 2870 | 2871 | 2872 | 2873 | 2874 | 2875 | 2876 | 2877 | 2878 | 2879 | 2880 | 2881 | 2882 | 2883 | 2884 | 2885 | 2886 | 2887 | 2888 | 2889 | 2890 | 2891 | 2892 | 2893 | 2894 | 2895 | 2896 | 2897 | 2898 | 2899 | 2900 | 2901 | 2902 | 2903 | 2904 | 2905 | 2906 | 2907 | 2908 | 2909 | 2910 | 2911 | 2912 | 2913 | 2914 | 2915 | 2916 | 2917 | 2918 | 2919 | 2920 | 2921 | 2922 | 2923 | 2924 | 2925 | 2926 | 2927 | 2928 | 2929 | 2930 | 2931 | 2932 | 2933 | 2934 | 2935 | 2936 | 2937 | 2938 | 2939 | 2940 | 2941 | 2942 | 2943 | 2944 | 2945 | 2946 | 2947 | 2948 | 2949 | 2950 | 2951 | 2952 | 2953 | 2954 | 2955 | 2956 | 2957 | 2958 | 2959 | 2960 | 2961 | 2962 | 2963 | 2964 | 2965 | 2966 | 2967 | 2968 | 2969 | 2970 | 2971 | 2972 | 2973 | 2974 | 2975 | 2976 | 2977 | 2978 | 2979 | 2980 | 2981 | 2982 | 2983 | 2984 | 2985 | 2986 | 2987 | 2988 | 2989 | 2990 | 2991 | 2992 | 2993 | 2994 | 2995 | 2996 | 2997 | 2998 | 2999 | 3000 | 3001 | 3002 | 3003 | 3004 | 3005 | 3006 | 3007 | 3008 | 3009 | 3010 | 3011 | 3012 | 3013 | 3014 | 3015 | 3016 | 3017 | 3018 | 3019 | 3020 | 3021 | 3022 | 3023 | 3024 | 3025 | 3026 | 3027 | 3028 | 3029 | 3030 | 3031 | 3032 | 3033 | 3034 | 3035 | 3036 | 3037 | 3038 | 3039 | 3040 | 3041 | 3042 | 3043 | 3044 | 3045 | 3046 | 3047 | 3048 | 3049 | 3050 | 3051 | 3052 | 3053 | 3054 | 3055 | 3056 | 3057 | 3058 | 3059 | 3060 | 3061 | 3062 | 3063 | 3064 | 3065 | 3066 | 3067 | 3068 | 3069 | 3070 | 3071 | 3072 | 3073 | 3074 | 3075 | 3076 | 3077 | 3078 | 3079 | 3080 | 3081 | 3082 | 3083 | 3084 | 3085 | 3086 | 3087 | 3088 | 3089 | 3090 | 3091 | 3092 | 3093 | 3094 | 3095 | 3096 | 3097 | 3098 | 3099 | 3100 | 3101 | 3102 | 3103 | 3104 | 3105 | 3106 | 3107 | 3108 | 3109 | 3110 | 3111 | 3112 | 3113 | 3114 | 3115 | 3116 | 3117 | 3118 | 3119 | 3120 | 3121 | 3122 | 3123 | 3124 | 3125 | 3126 | 3127 | 3128 | 3129 | 3130 | 3131 | 3132 | 3133 | 3134 | 3135 | 3136 | 3137 | 3138 | 3139 | 3140 | 3141 | 3142 | 3143 | 3144 | 3145 | 3146 | 3147 | 3148 | 3149 | 3150 | 3151 | 3152 | 3153 | 3154 | 3155 | 3156 | 3157 | 3158 | 3159 | 3160 | 3161 | 3162 | 3163 | 3164 | 3165 | 3166 | 3167 | 3168 | 3169 | 3170 | 3171 | 3172 | 3173 | 3174 | 3175 | 3176 | 3177 | 3178 | 3179 | 3180 | 3181 | 3182 | 3183 | 3184 | 3185 | 3186 | 3187 | 3188 | 3189 | 3190 | 3191 | 3192 | 3193 | 3194 | 3195 | 3196 | 3197 | 3198 | 3199 | 3200 | 3201 | 3202 | 3203 | 3204 | 3205 | 3206 | 3207 | 3208 | 3209 | 3210 | 3211 | 3212 | 3213 | 3214 | 3215 | 3216 | 3217 | 3218 | 3219 | 3220 | 3221 | 3222 | 3223 | 3224 | 3225 | 3226 | 3227 | 3228 | 3229 | 3230 | 3231 | 3232 | 3233 | 3234 | 3235 | 3236 | 3237 | 3238 | 3239 | 3240 | 3241 | 3242 | 3243 | 3244 | 3245 | 3246 | 3247 | 3248 | 3249 | 3250 | 3251 | 3252 | 3253 | 3254 | 3255 | 3256 | 3257 | 3258 | 3259 | 3260 | 3261 | 3262 | 3263 | 3264 | 3265 | 3266 | 3267 | 3268 | 3269 | 3270 | 3271 | 3272 | 3273 | 3274 | 3275 | 3276 | 3277 | 3278 | 3279 | 3280 | 3281 | 3282 | 3283 | 3284 | 3285 | 3286 | 3287 | 3288 | 3289 | 3290 | 3291 | 3292 | 3293 | 3294 | 3295 | 3296 | 3297 | 3298 | 3299 | 3300 | 3301 | 3302 | 3303 | 3304 | 3305 | 3306 | 3307 | 3308 | 3309 | 3310 | 3311 | 3312 | 3313 | 3314 | 3315 | 3316 | 3317 | 3318 | 3319 | 3320 | 3321 | 3322 | 3323 | 3324 | 3325 | 3326 | 3327 | 3328 | 3329 | 3330 | 3331 | 3332 | 3333 | 3334 | 3335 | 3336 | 3337 | 3338 | 3339 | 3340 | 3341 | 3342 | 3343 | 3344 | 3345 | 3346 | 3347 | 3348 | 3349 | 3350 | 3351 | 3352 | 3353 | 3354 | 3355 | 3356 | 3357 | 3358 | 3359 | 3360 | 3361 | 3362 | 3363 | 3364 | 3365 | 3366 | 3367 | 3368 | 3369 | 3370 | 3371 | 3372 | 3373 | 3374 | 3375 | 3376 | 3377 | 3378 | 3379 | 3380 | 3381 | 3382 | 3383 | 3384 | 3385 | 3386 | 3387 | 3388 | 3389 | 3390 | 3391 | 3392 | 3393 | 3394 | 3395 | 3396 | 3397 | 3398 | 3399 | 3400 | 3401 | 3402 | 3403 | 3404 | 3405 | 3406 | 3407 | 3408 | 3409 | 3410 | 3411 | 3412 | 3413 | 3414 | 3415 | 3416 | 3417 | 3418 | 3419 | 3420 | 3421 | 3422 | 3423 | 3424 | 3425 | 3426 | 3427 | 3428 | 3429 | 3430 | 3431 | 3432 | 3433 | 3434 | 3435 | 3436 | 3437 | 3438 | 3439 | 3440 | 3441 | 3442 | 3443 | 3444 | 3445 | 3446 | 3447 | 3448 | 3449 | 3450 | 3451 | 3452 | 3453 | 3454 | 3455 | 3456 | 3457 | 3458 | 3459 | 3460 | 3461 | 3462 | 3463 | 3464 | 3465 | 3466 | 3467 | 3468 | 3469 | 3470 | 3471 | 3472 | 3473 | 3474 | 3475 | 3476 | 3477 | 3478 | 3479 | 3480 | 3481 | 3482 | 3483 | 3484 | 3485 | 3486 | 3487 | 3488 | 3489 | 3490 | 3491 | 3492 | 3493 | 3494 | 3495 | 3496 | 3497 | 3498 | 3499 | 3500 | 3501 | 3502 | 3503 | 3504 | 3505 | 3506 | 3507 | 3508 | 3509 | 3510 | 3511 | 3512 | 3513 | 3514 | 3515 | 3516 | 3517 | 3518 | 3519 | 3520 | 3521 | 3522 | 3523 | 3524 | 3525 | 3526 | 3527 | 3528 | 3529 | 3530 | 3531 | 3532 | 3533 | 3534 | 3535 | 3536 | 3537 | 3538 | 3539 | 3540 | 3541 | 3542 | 3543 | 3544 | 3545 | 3546 | 3547 | 3548 | 3549 | 3550 | 3551 | 3552 | 3553 | 3554 | 3555 | 3556 | 3557 | 3558 | 3559 | 3560 | 3561 | 3562 | 3563 | 3564 | 3565 | 3566 | 3567 | 3568 | 3569 | 3570 | 3571 | 3572 | 3573 | 3574 | 3575 | 3576 | 3577 | 3578 | 3579 | 3580 | 3581 | 3582 | 3583 | 3584 | 3585 | 3586 | 3587 | 3588 | 3589 | 3590 | 3591 | 3592 | 3593 | 3594 | 3595 | 3596 | 3597 | 3598 | 3599 | 3600 | 3601 | 3602 | 3603 | 3604 | 3605 | 3606 | 3607 | 3608 | 3609 | 3610 | 3611 | 3612 | 3613 | 3614 | 3615 | 3616 | 3617 | 3618 | 3619 | 3620 | 3621 | 3622 | 3623 | 3624 | 3625 | 3626 | 3627 | 3628 | 3629 | 3630 | 3631 | 3632 | 3633 | 3634 | 3635 | 3636 | 3637 | 3638 | 3639 | 3640 | 3641 | 3642 | 3643 | 3644 | 3645 | 3646 | 3647 | 3648 | 3649 | 3650 | 3651 | 3652 | 3653 | 3654 | 3655 | 3656 | 3657 | 3658 | 3659 | 3660 | 3661 | 3662 | 3663 | 3664 | 3665 | 3666 | 3667 | 3668 | 3669 | 3670 | 3671 | 3672 | 3673 | 3674 | 3675 | 3676 | 3677 | 3678 | 3679 | 3680 | 3681 | 3682 | 3683 | 3684 | 3685 | 3686 | 3687 | 3688 | 3689 | 3690 | 3691 | 3692 | 3693 | 3694 | 3695 | 3696 | 3697 | 3698 | 3699 | 3700 | 3701 | 3702 | 3703 | 3704 | 3705 | 3706 | 3707 | 3708 | 3709 | 3710 | 3711 | 3712 | 3713 | 3714 | 3715 | 3716 | 3717 | 3718 | 3719 | 3720 | 3721 | 3722 | 3723 | 3724 | 3725 | 3726 | 3727 | 3728 | 3729 | 3730 | 3731 | 3732 | 3733 | 3734 | 3735 | 3736 | 3737 | 3738 | 3739 | 3740 | 3741 | 3742 | 3743 | 3744 | 3745 | 3746 | 3747 | 3748 | 3749 | 3750 | 3751 | 3752 | 3753 | 3754 | 3755 | 3756 | 3757 | 3758 | 3759 | 3760 | 3761 | 3762 | 3763 | 3764 | 3765 | 3766 | 3767 | 3768 | 3769 | 3770 | 3771 | 3772 | 3773 | 3774 | 3775 | 3776 | 3777 | 3778 | 3779 | 3780 | 3781 | 3782 | 3783 | 3784 | 3785 | 3786 | 3787 | 3788 | 3789 | 3790 | 3791 | 3792 | 3793 | 3794 | 3795 | 3796 | 3797 | 3798 | 3799 | 3800 | 3801 | 3802 | 3803 | 3804 | 3805 | 3806 | 3807 | 3808 | 3809 | 3810 | 3811 | 3812 | 3813 | 3814 | 3815 | 3816 | 3817 | 3818 | 3819 | 3820 | 3821 | 3822 | 3823 | 3824 | 3825 | 3826 | 3827 | 3828 | 3829 | 3830 | 3831 | 3832 | 3833 | 3834 | 3835 | 3836 | 3837 | 3838 | 3839 | 3840 | 3841 | 3842 | 3843 | 3844 | 3845 | 3846 | 3847 | 3848 | 3849 | 3850 | 3851 | 3852 | 3853 | 3854 | 3855 | 3856 | 3857 | 3858 | 3859 | 3860 | 3861 | 3862 | 3863 | 3864 | 3865 | 3866 | 3867 | 3868 | 3869 | 3870 | 3871 | 3872 | 3873 | 3874 | 3875 | 3876 | 3877 | 3878 | 3879 | 3880 | 3881 | 3882 | 3883 | 3884 | 3885 | 3886 | 3887 | 3888 | 3889 | 3890 | 3891 | 3892 | 3893 | 3894 | 3895 | 3896 | 3897 | 3898 | 3899 | 3900 | 3901 | 3902 | 3903 | 3904 | 3905 | 3906 | 3907 | 3908 | 3909 | 3910 | 3911 | 3912 | 3913 | 3914 | 3915 | 3916 | 3917 | 3918 | 3919 | 3920 | 3921 | 3922 | 3923 | 3924 | 3925 | 3926 | 3927 | 3928 | 3929 | 3930 | 3931 | 3932 | 3933 | 3934 | 3935 | 3936 | 3937 | 3938 | 3939 | 3940 | 3941 | 3942 | 3943 | 3944 | 3945 | 3946 | 3947 | 3948 | 3949 | 3950 | 3951 | 3952 | 3953 | 3954 | 3955 | 3956 | 3957 | 3958 | 3959 | 3960 | 3961 | 3962 | 3963 | 3964 | 3965 | 3966 | 3967 | 3968 | 3969 | 3970 | 3971 | 3972 | 3973 | 3974 | 3975 | 3976 | 3977 | 3978 | 3979 | 3980 | 3981 | 3982 | 3983 | 3984 | 3985 | 3986 | 3987 | 3988 | 3989 | 3990 | 3991 | 3992 | 3993 | 3994 | 3995 | 3996 | 3997 | 3998 | 3999 | 4000 | 4001 | 4002 | 4003 | 4004 | 4005 | 4006 | 4007 | 4008 | 4009 | 4010 | 4011 | 4012 | 4013 | 4014 | 4015 | 4016 | 4017 | 4018 | 4019 | 4020 | 4021 | 4022 | 4023 | 4024 | 4025 | 4026 | 4027 | 4028 | 4029 | 4030 | 4031 | 4032 | 4033 | 4034 | 4035 | 4036 | 4037 | 4038 | 4039 | 4040 | 4041 | 4042 | 4043 | 4044 | 4045 | 4046 | 4047 | 4048 | 4049 | 4050 | 4051 | 4052 | 4053 | 4054 | 4055 | 4056 | 4057 | 4058 | 4059 | 4060 | 4061 | 4062 | 4063 | 4064 | 4065 | 4066 | 4067 | 4068 | 4069 | 4070 | 4071 | 4072 | 4073 | 4074 | 4075 | 4076 | 4077 | 4078 | 4079 | 4080 | 4081 | 4082 | 4083 | 4084 | 4085 | 4086 | 4087 | 4088 | 4089 | 4090 | 4091 | 4092 | 4093 | 4094 | 4095 | 4096 | 4097 | 4098 | 4099 | 4100 | 4101 | 4102 | 4103 | 4104 | 4105 | 4106 | 4107 | 4108 | 4109 | 4110 | 4111 | 4112 | 4113 | 4114 | 4115 | 4116 | 4117 | 4118 | 4119 | 4120 | 4121 | 4122 | 4123 | 4124 | 4125 | 4126 | 4127 | 4128 | 4129 | 4130 | 4131 | 4132 | 4133 | 4134 | 4135 | 4136 | 4137 | 4138 | 4139 | 4140 | 4141 | 4142 | 4143 | 4144 | 4145 | 4146 | 4147 | 4148 | 4149 | 4150 | 4151 | 4152 | 4153 | 4154 | 4155 | 4156 | 4157 | 4158 | 4159 | 4160 | 4161 | 4162 | 4163 | 4164 | 4165 | 4166 | 4167 | 4168 | 4169 | 4170 | 4171 | 4172 | 4173 | 4174 | 4175 | 4176 | 4177 | 4178 | 4179 | 4180 | 4181 | 4182 | 4183 | 4184 | 4185 | 4186 | 4187 | 4188 | 4189 | 4190 | 4191 | 4192 | 4193 | 4194 | 4195 | 4196 | 4197 | 4198 | 4199 | 4200 | 4201 | 4202 | 4203 | 4204 | 4205 | 4206 | 4207 | 4208 | 4209 | 4210 | 4211 | 4212 | 4213 | 4214 | 4215 | 4216 | 4217 | 4218 | 4219 | 4220 | 4221 | 4222 | 4223 | 4224 | 4225 | 4226 | 4227 | 4228 | 4229 | 4230 | 4231 | 4232 | 4233 | 4234 | 4235 | 4236 | 4237 | 4238 | 4239 | 4240 | 4241 | 4242 | 4243 | 4244 | 4245 | 4246 | 4247 | 4248 | 4249 | 4250 | 4251 | 4252 | 4253 | 4254 | 4255 | 4256 | 4257 | 4258 | 4259 | 4260 | 4261 | 4262 | 4263 | 4264 | 4265 | 4266 | 4267 | 4268 | 4269 | 4270 | 4271 | 4272 | 4273 | 4274 | 4275 | 4276 | 4277 | 4278 | 4279 | 4280 | 4281 | 4282 | 4283 | 4284 | 4285 | 4286 | 4287 | 4288 | 4289 | 4290 | 4291 | 4292 | 4293 | 4294 | 4295 | 4296 | 4297 | 4298 | 4299 | 4300 | 4301 | 4302 | 4303 | 4304 | 4305 | 4306 | 4307 | 4308 | 4309 | 4310 | 4311 | 4312 | 4313 | 4314 | 4315 | 4316 | 4317 | 4318 | 4319 | 4320 | 4321 | 4322 | 4323 | 4324 | 4325 | 4326 | 4327 | 4328 | 4329 | 4330 | 4331 | 4332 | 4333 | 4334 | 4335 | 4336 | 4337 | 4338 | 4339 | 4340 | 4341 | 4342 | 4343 | 4344 | 4345 | 4346 | 4347 | 4348 | 4349 | 4350 | 4351 | 4352 | 4353 | 4354 | 4355 | 4356 | 4357 | 4358 | 4359 | 4360 | 4361 | 4362 | 4363 | 4364 | 4365 | 4366 | 4367 | 4368 | 4369 | 4370 | 4371 | 4372 | 4373 | 4374 | 4375 | 4376 | 4377 | 4378 | 4379 | 4380 | 4381 | 4382 | 4383 | 4384 | 4385 | 4386 | 4387 | 4388 | 4389 | 4390 | 4391 | 4392 | 4393 | 4394 | 4395 | 4396 | 4397 | 4398 | 4399 | 4400 | 4401 | 4402 | 4403 | 4404 | 4405 | 4406 | 4407 | 4408 | 4409 | 4410 | 4411 | 4412 | 4413 | 4414 | 4415 | 4416 | 4417 | 4418 | 4419 | 4420 | 4421 | 4422 | 4423 | 4424 | 4425 | 4426 | 4427 | 4428 | 4429 | 4430 | 4431 | 4432 | 4433 | 4434 | 4435 | 4436 | 4437 | 4438 | 4439 | 4440 | 4441 | 4442 | 4443 | 4444 | 4445 | 4446 | 4447 | 4448 | 4449 | 4450 | 4451 | 4452 | 4453 | 4454 | 4455 | 4456 | 4457 | 4458 | 4459 | 4460 | 4461 | 4462 | 4463 | 4464 | 4465 | 4466 | 4467 | 4468 | 4469 | 4470 | 4471 | 4472 | 4473 | 4474 | 4475 | 4476 | 4477 | 4478 | 4479 | 4480 | 4481 | 4482 | 4483 | 4484 | 4485 | 4486 | 4487 | 4488 | 4489 | 4490 | 4491 | 4492 | 4493 | 4494 | 4495 | 4496 | 4497 | 4498 | 4499 | 4500 | 4501 | 4502 | 4503 | 4504 | 4505 | 4506 | 4507 | 4508 | 4509 | 4510 | 4511 | 4512 | 4513 | 4514 | 4515 | 4516 | 4517 | 4518 | 4519 | 4520 | 4521 | 4522 | 4523 | 4524 | 4525 | 4526 | 4527 | 4528 | 4529 | 4530 | 4531 | 4532 | 4533 | 4534 | 4535 | 4536 | 4537 | 4538 | 4539 | 4540 | 4541 | 4542 | 4543 | 4544 | 4545 | 4546 | 4547 | 4548 | 4549 | 4550 | 4551 | 4552 | 4553 | 4554 | 4555 | 4556 | 4557 | 4558 | 4559 | 4560 | 4561 | 4562 | 4563 | 4564 | 4565 | 4566 | 4567 | 4568 | 4569 | 4570 | 4571 | 4572 | 4573 | 4574 | 4575 | 4576 | 4577 | 4578 | 4579 | 4580 | 4581 | 4582 | 4583 | 4584 | 4585 | 4586 | 4587 | 4588 | 4589 | 4590 | 4591 | 4592 | 4593 | 4594 | 4595 | 4596 | 4597 | 4598 | 4599 | 4600 | 4601 | 4602 | 4603 | 4604 | 4605 | 4606 | 4607 | 4608 | 4609 | 4610 | 4611 | 4612 | 4613 | 4614 | 4615 | 4616 | 4617 | 4618 | 4619 | 4620 | 4621 | 4622 | 4623 | 4624 | 4625 | 4626 | 4627 | 4628 | 4629 | 4630 | 4631 | 4632 | 4633 | 4634 | 4635 | 4636 | 4637 | 4638 | 4639 | 4640 | 4641 | 4642 | 4643 | 4644 | 4645 | 4646 | 4647 | 4648 | 4649 | 4650 | 4651 | 4652 | 4653 | 4654 | 4655 | 4656 | 4657 | 4658 | 4659 | 4660 | 4661 | 4662 | 4663 | 4664 | 4665 | 4666 | 4667 | 4668 | 4669 | 4670 | 4671 | 4672 | 4673 | 4674 | 4675 | 4676 | 4677 | 4678 | 4679 | 4680 | 4681 | 4682 | 4683 | 4684 | 4685 | 4686 | 4687 | 4688 | 4689 | 4690 | 4691 | 4692 | 4693 | 4694 | 4695 | 4696 | 4697 | 4698 | 4699 | 4700 | 4701 | 4702 | 4703 | 4704 | 4705 | 4706 | 4707 | 4708 | 4709 | 4710 | 4711 | 4712 | 4713 | 4714 | 4715 | 4716 | 4717 | 4718 | 4719 | 4720 | 4721 | 4722 | 4723 | 4724 | 4725 | 4726 | 4727 | 4728 | 4729 | 4730 | 4731 | 4732 | 4733 | 4734 | 4735 | 4736 | 4737 | 4738 | 4739 | 4740 | 4741 | 4742 | 4743 | 4744 | 4745 | 4746 | 4747 | 4748 | 4749 | 4750 | 4751 | 4752 | 4753 | 4754 | 4755 | 4756 | 4757 | 4758 | 4759 | 4760 | 4761 | 4762 | 4763 | 4764 | 4765 | 4766 | 4767 | 4768 | 4769 | 4770 | 4771 | 4772 | 4773 | 4774 | 4775 | 4776 | 4777 | 4778 | 4779 | 4780 | 4781 | 4782 | 4783 | 4784 | 4785 | 4786 | 4787 | 4788 | 4789 | 4790 | 4791 | 4792 | 4793 | 4794 | 4795 | 4796 | 4797 | 4798 | 4799 | 4800 | 4801 | 4802 | 4803 | 4804 | 4805 | 4806 | 4807 | 4808 | 4809 | 4810 | 4811 | 4812 | 4813 | 4814 | 4815 | 4816 | 4817 | 4818 | 4819 | 4820 | 4821 | 4822 | 4823 | 4824 | 4825 | 4826 | 4827 | 4828 | 4829 | 4830 | 4831 | 4832 | 4833 | 4834 | 4835 | 4836 | 4837 | 4838 | 4839 | 4840 | 4841 | 4842 | 4843 | 4844 | 4845 | 4846 | 4847 | 4848 | 4849 | 4850 | 4851 | 4852 | 4853 | 4854 | 4855 | 4856 | 4857 | 4858 | 4859 | 4860 | 4861 | 4862 | 4863 | 4864 | 4865 | 4866 | 4867 | 4868 | 4869 | 4870 | 4871 | 4872 | 4873 | 4874 | 4875 | 4876 | 4877 | 4878 | 4879 | 4880 | 4881 | 4882 | 4883 | 4884 | 4885 | 4886 | 4887 | 4888 | 4889 | 4890 | 4891 | 4892 | 4893 | 4894 | 4895 | 4896 | 4897 | 4898 | 4899 | 4900 | 4901 | 4902 | 4903 | 4904 | 4905 | 4906 | 4907 | 4908 | 4909 | 4910 | 4911 | 4912 | 4913 | 4914 | 4915 | 4916 | 4917 | 4918 | 4919 | 4920 | 4921 | 4922 | 4923 | 4924 | 4925 | 4926 | 4927 | 4928 | 4929 | 4930 | 4931 | 4932 | 4933 | 4934 | 4935 | 4936 | 4937 | 4938 | 4939 | 4940 | 4941 | 4942 | 4943 | 4944 | 4945 | 4946 | 4947 | 4948 | 4949 | 4950 | 4951 | 4952 | 4953 | 4954 | 4955 | 4956 | 4957 | 4958 | 4959 | 4960 | 4961 | 4962 | 4963 | 4964 | 4965 | 4966 | 4967 | 4968 | 4969 | 4970 | 4971 | 4972 | 4973 | 4974 | 4975 | 4976 | 4977 | 4978 | 4979 | 4980 | 4981 | 4982 | 4983 | 4984 | 4985 | 4986 | 4987 | 4988 | 4989 | 4990 | 4991 | 4992 | 4993 | 4994 | 4995 | 4996 | 4997 | 4998 | 4999 | 5000 | 5001)[] 0 as 0, >0 as 0 : 0 diff --git a/tests/baselines/reference/voidReturnIndexUnionInference.types b/tests/baselines/reference/voidReturnIndexUnionInference.types index fa7d87b8f63..14986116433 100644 --- a/tests/baselines/reference/voidReturnIndexUnionInference.types +++ b/tests/baselines/reference/voidReturnIndexUnionInference.types @@ -51,7 +51,7 @@ function bad

(props: Readonly

) { // ERROR HERE!!! // Type R in signature of safeInvoke incorrectly inferred as {} instead of void! safeInvoke(props.onBar, "blah"); ->safeInvoke(props.onBar, "blah") : void | undefined +>safeInvoke(props.onBar, "blah") : void >safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined >props.onBar : P["onBar"] | undefined >props : Readonly

From be18057792ced9a9edacf65968ee975bc33344b6 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 4 Feb 2021 13:20:38 -0800 Subject: [PATCH 09/36] Add check for no match into fs watch rename event handler (#42651) --- src/compiler/sys.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index b0f21dab80c..5dc4fbe91cc 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -1560,7 +1560,7 @@ namespace ts { return event === "rename" && (!relativeName || relativeName === lastDirectoryPart || - relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) === relativeName.length - lastDirectoryPartWithDirectorySeparator!.length) && + (relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) !== -1 && relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) === relativeName.length - lastDirectoryPartWithDirectorySeparator!.length)) && !fileSystemEntryExists(fileOrDirectory, entryKind) ? invokeCallbackAndUpdateWatcher(watchMissingFileSystemEntry) : callback(event, relativeName); From 62bc8bec4ed8e5193ac09ce2d0677fdf5fc7a4f0 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 4 Feb 2021 13:25:53 -0800 Subject: [PATCH 10/36] Replace _all_ tabs in pretty output, not just the first on each line (#42649) --- src/compiler/program.ts | 2 +- .../prettyFileWithErrorsAndTabs.errors.txt | 30 +++++++++++++++++++ .../reference/prettyFileWithErrorsAndTabs.js | 17 +++++++++++ .../prettyFileWithErrorsAndTabs.symbols | 14 +++++++++ .../prettyFileWithErrorsAndTabs.types | 17 +++++++++++ .../compiler/prettyFileWithErrorsAndTabs.ts | 8 +++++ 6 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt create mode 100644 tests/baselines/reference/prettyFileWithErrorsAndTabs.js create mode 100644 tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols create mode 100644 tests/baselines/reference/prettyFileWithErrorsAndTabs.types create mode 100644 tests/cases/compiler/prettyFileWithErrorsAndTabs.ts diff --git a/src/compiler/program.ts b/src/compiler/program.ts index d6ed0b10648..e6a53885000 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -407,7 +407,7 @@ namespace ts { const lineEnd = i < lastLineInFile ? getPositionOfLineAndCharacter(file, i + 1, 0) : file.text.length; let lineContent = file.text.slice(lineStart, lineEnd); lineContent = lineContent.replace(/\s+$/g, ""); // trim from end - lineContent = lineContent.replace("\t", " "); // convert tabs to single spaces + lineContent = lineContent.replace(/\t/g, " "); // convert tabs to single spaces // Output the gutter and the actual contents of the line. context += indent + formatColorAndReset(padLeft(i + 1 + "", gutterWidth), gutterStyleSequence) + gutterSeparator; diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt b/tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt new file mode 100644 index 00000000000..e0727c9429b --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt @@ -0,0 +1,30 @@ +tests/cases/compiler/prettyFileWithErrorsAndTabs.ts:3:9 - error TS2322: Type 'number' is not assignable to type 'string'. + +3 const x: string = 12; +   ~ +tests/cases/compiler/prettyFileWithErrorsAndTabs.ts:4:9 - error TS2322: Type 'number' is not assignable to type 'string'. + +4 const y: string = 12; +   ~ +tests/cases/compiler/prettyFileWithErrorsAndTabs.ts:5:9 - error TS2322: Type 'number' is not assignable to type 'string'. + +5 const z: string = 12; +   ~ + + +==== tests/cases/compiler/prettyFileWithErrorsAndTabs.ts (3 errors) ==== + function f() { + { + const x: string = 12; + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + const y: string = 12; + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + const z: string = 12; + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + } + } +Found 3 errors. + diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.js b/tests/baselines/reference/prettyFileWithErrorsAndTabs.js new file mode 100644 index 00000000000..ca6d2424f56 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.js @@ -0,0 +1,17 @@ +//// [prettyFileWithErrorsAndTabs.ts] +function f() { + { + const x: string = 12; + const y: string = 12; + const z: string = 12; + } +} + +//// [prettyFileWithErrorsAndTabs.js] +function f() { + { + var x = 12; + var y = 12; + var z = 12; + } +} diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols b/tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols new file mode 100644 index 00000000000..a009e897037 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/prettyFileWithErrorsAndTabs.ts === +function f() { +>f : Symbol(f, Decl(prettyFileWithErrorsAndTabs.ts, 0, 0)) + { + const x: string = 12; +>x : Symbol(x, Decl(prettyFileWithErrorsAndTabs.ts, 2, 7)) + + const y: string = 12; +>y : Symbol(y, Decl(prettyFileWithErrorsAndTabs.ts, 3, 7)) + + const z: string = 12; +>z : Symbol(z, Decl(prettyFileWithErrorsAndTabs.ts, 4, 7)) + } +} diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.types b/tests/baselines/reference/prettyFileWithErrorsAndTabs.types new file mode 100644 index 00000000000..660ce754170 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/prettyFileWithErrorsAndTabs.ts === +function f() { +>f : () => void + { + const x: string = 12; +>x : string +>12 : 12 + + const y: string = 12; +>y : string +>12 : 12 + + const z: string = 12; +>z : string +>12 : 12 + } +} diff --git a/tests/cases/compiler/prettyFileWithErrorsAndTabs.ts b/tests/cases/compiler/prettyFileWithErrorsAndTabs.ts new file mode 100644 index 00000000000..e2aacbf0af6 --- /dev/null +++ b/tests/cases/compiler/prettyFileWithErrorsAndTabs.ts @@ -0,0 +1,8 @@ +// @pretty: true +function f() { + { + const x: string = 12; + const y: string = 12; + const z: string = 12; + } +} \ No newline at end of file From f569aa38320aa7e3db83defdb4bc808fe185350f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 4 Feb 2021 13:53:05 -0800 Subject: [PATCH 11/36] Use a (hopefully) more efficient regex for matching jquery in the safelist (#42653) --- src/server/editorServices.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 78947dd88ee..1965cb20c8d 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -207,7 +207,7 @@ namespace ts.server { const defaultTypeSafeList: SafeList = { "jquery": { // jquery files can have names like "jquery-1.10.2.min.js" (or "jquery.intellisense.js") - match: /jquery(-(\.?\d+)+)?(\.intellisense)?(\.min)?\.js$/i, + match: /jquery(-[\d\.]+)?(\.intellisense)?(\.min)?\.js$/i, types: ["jquery"] }, "WinJS": { From 19db9ad6757858a117b3c1c2cc9ad75ad7537e8f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 4 Feb 2021 13:56:34 -0800 Subject: [PATCH 12/36] Swapping the quote style of a string for completions should swap _all_ quotes in the string (#42650) --- src/services/utilities.ts | 2 +- ...letionForStringLiteral_quotePreference8.ts | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 1fb8a23043e..d57f267ea97 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -2495,7 +2495,7 @@ namespace ts { // Editors can pass in undefined or empty string - we want to infer the preference in those cases. const quotePreference = getQuotePreference(sourceFile, preferences); const quoted = JSON.stringify(text); - return quotePreference === QuotePreference.Single ? `'${stripQuotes(quoted).replace("'", "\\'").replace('\\"', '"')}'` : quoted; + return quotePreference === QuotePreference.Single ? `'${stripQuotes(quoted).replace(/'/g, "\\'").replace(/\\"/g, '"')}'` : quoted; } export function isEqualityOperatorKind(kind: SyntaxKind): kind is EqualityOperator { diff --git a/tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts b/tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts new file mode 100644 index 00000000000..9e66dcb1fe9 --- /dev/null +++ b/tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts @@ -0,0 +1,22 @@ +/// + +// @filename: /a.ts +////export const a = null; + +// @filename: /b.ts +////import { a } from './a'; +//// +////const foo = { '"a name\'s all good but it\'s better with more"': null }; +////foo[|./**/|] + +goTo.file("/b.ts"); +verify.completions({ + marker: "", + exact: [ + { name: "\"a name's all good but it's better with more\"", insertText: "['\"a name\\'s all good but it\\'s better with more\"']", replacementSpan: test.ranges()[0] }, + ], + preferences: { + includeInsertTextCompletions: true, + quotePreference: "auto" + } +}); From 215ee40dc81e893a6ff54901d605ba18f11c1178 Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Fri, 5 Feb 2021 06:23:09 +0000 Subject: [PATCH 13/36] Update package-lock.json --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06c1bacd326..98f8f0f7dd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -585,9 +585,9 @@ "dev": true }, "@types/node": { - "version": "14.14.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.24.tgz", - "integrity": "sha512-6BAlkS4seVjszhrwN0W1WabqWwuJwcYF36Z1rPPyQm80LGRKsIeUPdzI51TezXenjetFNy1gRTpuDn1NBg33LA==", + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==", "dev": true }, "@types/node-fetch": { @@ -1759,9 +1759,9 @@ "dev": true }, "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.0.tgz", + "integrity": "sha512-/BFd2J30EcOwmdOgXvVsmM48l0Br0nmZPlO0uOW4XKh6kpsUumRXBgPV+IlaqFaqr9cYbeoZAM1Npx0i4A+aiA==", "dev": true, "requires": { "assertion-error": "^1.1.0", From f1583f08a08e6c327b14e647fed6d6aeca8fb996 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 5 Feb 2021 09:37:28 -0800 Subject: [PATCH 14/36] Signature help turns off current-parameter display for non-trailing rest parameters (#42592) * Signature help: support non-trailing rest parameters In signature help, the first rest parameter will always be the *last* 'current' parameter (disregarding types). Previously, the signature help current-parameter highlight was only correct for trailing rest parameters. However, with tuple types, you can now create non-trailing rest parameters. This PR now correctly highlights non-trailing rest parameters as the last 'current' parameter. For example, `names` should be the current parameter in all the calls below: ```ts declare function loading(...args: [...names: string[], allCaps: boolean, extra: boolean]): void; leading(/**/ leading('one', /**/ leading('one', 'two', /**/ ``` And, because signature help doesn't do real overload resolution, `names` is also the current parameter for other calls: ```ts leading(1, 2, 3, 'ill-typed', /**/ leading('fine', true, /**/ ``` * Change 'variadic' to 'rest' * fix missed rename * use single, original tuple instead * Revert "use single, original tuple instead" This reverts commit f0896f32ea3d523f1186e9bea2446f75f3a182de. * Improve sig help of trailing rest too 1. Trailing rest keeps highlight at end instead of going off the end. 2. Non-trailing rest disable highlight entirely (by putting the index one past the end). * update API baselines --- src/services/signatureHelp.ts | 23 ++++++++--- src/services/types.ts | 1 + .../reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + .../signatureHelpLeadingRestTuple.ts | 32 ++++++++++++++++ .../signatureHelpTrailingRestTuple.ts | 38 +++++++++++++++++++ 6 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 tests/cases/fourslash/signatureHelpLeadingRestTuple.ts create mode 100644 tests/cases/fourslash/signatureHelpTrailingRestTuple.ts diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index c8b333d0356..9eb93800605 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -517,7 +517,6 @@ namespace ts.SignatureHelp { if (argumentIndex !== 0) { Debug.assertLessThan(argumentIndex, argumentCount); } - let selectedItemIndex = 0; let itemsSeen = 0; for (let i = 0; i < items.length; i++) { @@ -541,8 +540,19 @@ namespace ts.SignatureHelp { } Debug.assert(selectedItemIndex !== -1); // If candidates is non-empty it should always include bestSignature. We check for an empty candidates before calling this function. - - return { items: flatMapToMutable(items, identity), applicableSpan, selectedItemIndex, argumentIndex, argumentCount }; + const help = { items: flatMapToMutable(items, identity), applicableSpan, selectedItemIndex, argumentIndex, argumentCount }; + const selected = help.items[selectedItemIndex]; + if (selected.isVariadic) { + const firstRest = findIndex(selected.parameters, p => !!p.isRest); + if (-1 < firstRest && firstRest < selected.parameters.length - 1) { + // We don't have any code to get this correct; instead, don't highlight a current parameter AT ALL + help.argumentIndex = selected.parameters.length; + } + else { + help.argumentIndex = Math.min(help.argumentIndex, selected.parameters.length - 1); + } + } + return help; } function createTypeHelpItems( @@ -638,8 +648,9 @@ namespace ts.SignatureHelp { const param = checker.symbolToParameterDeclaration(parameter, enclosingDeclaration, signatureHelpNodeBuilderFlags)!; printer.writeNode(EmitHint.Unspecified, param, sourceFile, writer); }); - const isOptional = checker.isOptionalParameter(parameter.valueDeclaration); - return { name: parameter.name, documentation: parameter.getDocumentationComment(checker), displayParts, isOptional }; + const isOptional = checker.isOptionalParameter(parameter.valueDeclaration as ParameterDeclaration); + const isRest = !!((parameter as TransientSymbol).checkFlags & CheckFlags.RestParameter); + return { name: parameter.name, documentation: parameter.getDocumentationComment(checker), displayParts, isOptional, isRest }; } function createSignatureHelpParameterForTypeParameter(typeParameter: TypeParameter, checker: TypeChecker, enclosingDeclaration: Node, sourceFile: SourceFile, printer: Printer): SignatureHelpParameter { @@ -647,6 +658,6 @@ namespace ts.SignatureHelp { const param = checker.typeParameterToDeclaration(typeParameter, enclosingDeclaration, signatureHelpNodeBuilderFlags)!; printer.writeNode(EmitHint.Unspecified, param, sourceFile, writer); }); - return { name: typeParameter.symbol.name, documentation: typeParameter.symbol.getDocumentationComment(checker), displayParts, isOptional: false }; + return { name: typeParameter.symbol.name, documentation: typeParameter.symbol.getDocumentationComment(checker), displayParts, isOptional: false, isRest: false }; } } diff --git a/src/services/types.ts b/src/services/types.ts index dd97197a924..f1ca5f73727 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -1078,6 +1078,7 @@ namespace ts { documentation: SymbolDisplayPart[]; displayParts: SymbolDisplayPart[]; isOptional: boolean; + isRest?: boolean; } export interface SelectionRange { diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index e8227710675..4419cf5a9cc 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -6025,6 +6025,7 @@ declare namespace ts { documentation: SymbolDisplayPart[]; displayParts: SymbolDisplayPart[]; isOptional: boolean; + isRest?: boolean; } interface SelectionRange { textSpan: TextSpan; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index b8525b18064..f603ef46bac 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -6025,6 +6025,7 @@ declare namespace ts { documentation: SymbolDisplayPart[]; displayParts: SymbolDisplayPart[]; isOptional: boolean; + isRest?: boolean; } interface SelectionRange { textSpan: TextSpan; diff --git a/tests/cases/fourslash/signatureHelpLeadingRestTuple.ts b/tests/cases/fourslash/signatureHelpLeadingRestTuple.ts new file mode 100644 index 00000000000..45c3382d32f --- /dev/null +++ b/tests/cases/fourslash/signatureHelpLeadingRestTuple.ts @@ -0,0 +1,32 @@ +/// + +////export function leading(...args: [...names: string[], allCaps: boolean]): void { +////} +//// +////leading(/*1*/); +////leading("ok", /*2*/); +////leading("ok", "ok", /*3*/); + +verify.signatureHelp( + { + marker: "1", + text: "leading(...names: string[], allCaps: boolean): void", + overloadsCount: 1, + parameterCount: 2, + isVariadic: true, + }, + { + marker: "2", + text: "leading(...names: string[], allCaps: boolean): void", + overloadsCount: 1, + parameterCount: 2, + isVariadic: true, + }, + { + marker: "3", + text: "leading(...names: string[], allCaps: boolean): void", + overloadsCount: 1, + parameterCount: 2, + isVariadic: true, + }, +); diff --git a/tests/cases/fourslash/signatureHelpTrailingRestTuple.ts b/tests/cases/fourslash/signatureHelpTrailingRestTuple.ts new file mode 100644 index 00000000000..86dde9b3982 --- /dev/null +++ b/tests/cases/fourslash/signatureHelpTrailingRestTuple.ts @@ -0,0 +1,38 @@ +/// + +////export function leading(allCaps: boolean, ...names: string[]): void { +////} +//// +////leading(/*1*/); +////leading(false, /*2*/); +////leading(false, "ok", /*3*/); + +verify.signatureHelp( + { + marker: "1", + text: "leading(allCaps: boolean, ...names: string[]): void", + overloadsCount: 1, + parameterCount: 2, + parameterName: "allCaps", + parameterSpan: "allCaps: boolean", + isVariadic: true, + }, + { + marker: "2", + text: "leading(allCaps: boolean, ...names: string[]): void", + overloadsCount: 1, + parameterCount: 2, + parameterName: "names", + parameterSpan: "...names: string[]", + isVariadic: true, + }, + { + marker: "3", + text: "leading(allCaps: boolean, ...names: string[]): void", + overloadsCount: 1, + parameterCount: 2, + parameterName: "names", + parameterSpan: "...names: string[]", + isVariadic: true, + }, +); From 79ed041b6ae2dfe4ba2875483d0cf871e84f965e Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 5 Feb 2021 10:37:47 -0800 Subject: [PATCH 15/36] Fix Format Selection on JSDoc comments (#42411) --- src/services/formatting/formatting.ts | 15 ++++--- .../formatSelectionDocCommentInBlock.ts | 44 +++++++++++++++++++ 2 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 tests/cases/fourslash/formatSelectionDocCommentInBlock.ts diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index f1caec5d564..5415158422c 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -390,7 +390,8 @@ namespace ts.formatting { sourceFile)); } - function formatSpanWorker(originalRange: TextRange, + function formatSpanWorker( + originalRange: TextRange, enclosingNode: Node, initialIndentation: number, delta: number, @@ -424,16 +425,20 @@ namespace ts.formatting { } if (!formattingScanner.isOnToken()) { + const indentation = SmartIndenter.nodeWillIndentChild(options, enclosingNode, /*child*/ undefined, sourceFile, /*indentByDefault*/ false) + ? initialIndentation + options.indentSize! + : initialIndentation; const leadingTrivia = formattingScanner.getCurrentLeadingTrivia(); if (leadingTrivia) { - indentTriviaItems(leadingTrivia, initialIndentation, /*indentNextTokenOrTrivia*/ false, + indentTriviaItems(leadingTrivia, indentation, /*indentNextTokenOrTrivia*/ false, item => processRange(item, sourceFile.getLineAndCharacterOfPosition(item.pos), enclosingNode, enclosingNode, /*dynamicIndentation*/ undefined!)); - if (options.trimTrailingWhitespace !== false) { - trimTrailingWhitespacesForRemainingRange(); - } } } + if (options.trimTrailingWhitespace !== false) { + trimTrailingWhitespacesForRemainingRange(); + } + return edits; // local functions diff --git a/tests/cases/fourslash/formatSelectionDocCommentInBlock.ts b/tests/cases/fourslash/formatSelectionDocCommentInBlock.ts new file mode 100644 index 00000000000..e1710018631 --- /dev/null +++ b/tests/cases/fourslash/formatSelectionDocCommentInBlock.ts @@ -0,0 +1,44 @@ +/// + +//// { +//// /*1*//** +//// * Some doc comment +//// *//*2*/ +//// const a = 1; +//// } +//// +//// while (true) { +//// /*3*//** +//// * Some doc comment +//// *//*4*/ +//// } + +format.selection("1", "2"); +verify.currentFileContentIs( +`{ + /** + * Some doc comment + */ + const a = 1; +} + +while (true) { +/** + * Some doc comment + */ +}`); + +format.selection("3", "4"); +verify.currentFileContentIs( +`{ + /** + * Some doc comment + */ + const a = 1; +} + +while (true) { + /** + * Some doc comment + */ +}`); From aba932aefaf7657699ba0f9af1af43574f1be64c Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 5 Feb 2021 10:56:03 -0800 Subject: [PATCH 16/36] Create synthetic `exports` symbol for commonjs `module` (#42655) * Commonjs module:create synthetic exports symbol Previously, the `module` identifier in commonjs modules got a synthetic type with a single property `exports`. The exports property reused the file's symbol, which, for a module file, gives the correct exported properties. However, the name of this symbol was still the filename of the file, not `exports`. This PR creates a synthetic symbol for `exports` by copying in a similar way to esModuleInterop's `default` symbol in `resolveESModuleSymbol` (although the intent there is to strip off signatures from the symbol). * correct parent of synthetic symbol --- src/compiler/checker.ts | 9 +- ...initializedModuleExportsAssignment.symbols | 2 +- ...UninitializedModuleExportsAssignment.types | 2 +- .../reference/callbackCrossModule.symbols | 2 +- .../reference/callbackCrossModule.types | 2 +- .../checkExportsObjectAssignProperty.symbols | 20 +-- .../checkExportsObjectAssignProperty.types | 30 ++-- ...portsObjectAssignPrototypeProperty.symbols | 2 +- ...ExportsObjectAssignPrototypeProperty.types | 2 +- .../checkJsTypeDefNoUnusedLocalMarked.symbols | 2 +- .../checkJsTypeDefNoUnusedLocalMarked.types | 2 +- .../checkObjectDefineProperty.symbols | 2 +- .../reference/checkObjectDefineProperty.types | 2 +- .../reference/commonJSReexport.symbols | 6 +- .../reference/commonJSReexport.types | 10 +- .../reference/commonJsIsolatedModules.symbols | 4 +- .../reference/commonJsIsolatedModules.types | 8 +- .../reference/constructorFunctions2.symbols | 2 +- .../reference/constructorFunctions2.types | 2 +- .../contextualTypedSpecialAssignment.symbols | 8 +- .../contextualTypedSpecialAssignment.types | 14 +- ...nmentDefineProperrtyPotentialMerge.symbols | 6 +- ...ignmentDefineProperrtyPotentialMerge.types | 4 +- .../reference/enumTagOnExports.symbols | 2 +- .../reference/enumTagOnExports.types | 6 +- .../reference/enumTagOnExports2.symbols | 4 +- .../reference/enumTagOnExports2.types | 8 +- .../expandoFunctionContextualTypesJs.symbols | 6 +- .../expandoFunctionContextualTypesJs.types | 4 +- ...rtPropertyAssignmentNameResolution.symbols | 2 +- ...portPropertyAssignmentNameResolution.types | 6 +- .../reference/exportedAliasedEnumTag.symbols | 4 +- .../reference/exportedAliasedEnumTag.types | 12 +- ...findAllRefs_importType_js.3.baseline.jsonc | 20 ++- ...eWithCommonJSAssignmentDeclaration.symbols | 2 +- ...rgeWithCommonJSAssignmentDeclaration.types | 2 +- .../importAliasModuleExports.symbols | 2 +- .../reference/importAliasModuleExports.types | 2 +- .../javascriptCommonjsModule.symbols | 2 +- .../reference/javascriptCommonjsModule.types | 2 +- .../javascriptImportDefaultBadExport.symbols | 2 +- .../javascriptImportDefaultBadExport.types | 2 +- ...DeclarationsClassExtendsVisibility.symbols | 6 +- ...jsDeclarationsClassExtendsVisibility.types | 6 +- .../jsDeclarationsClassStatic.symbols | 4 +- .../reference/jsDeclarationsClassStatic.types | 4 +- ...jsDeclarationsCommonjsRelativePath.symbols | 8 +- .../jsDeclarationsCommonjsRelativePath.types | 16 +- .../jsDeclarationsComputedNames.symbols | 2 +- .../jsDeclarationsComputedNames.types | 2 +- .../jsDeclarationsCrossfileMerge.symbols | 4 +- .../jsDeclarationsCrossfileMerge.types | 4 +- .../jsDeclarationsDocCommentsOnConsts.symbols | 4 +- .../jsDeclarationsDocCommentsOnConsts.types | 8 +- ...tionsExportAssignedClassExpression.symbols | 2 +- ...rationsExportAssignedClassExpression.types | 2 +- ...rtAssignedClassExpressionAnonymous.symbols | 2 +- ...portAssignedClassExpressionAnonymous.types | 2 +- ...nedClassExpressionAnonymousWithSub.symbols | 8 +- ...ignedClassExpressionAnonymousWithSub.types | 6 +- ...rtAssignedClassExpressionShadowing.symbols | 4 +- ...portAssignedClassExpressionShadowing.types | 4 +- ...ationsExportAssignedClassInstance1.symbols | 2 +- ...arationsExportAssignedClassInstance1.types | 2 +- ...ationsExportAssignedClassInstance2.symbols | 2 +- ...arationsExportAssignedClassInstance2.types | 2 +- ...ationsExportAssignedClassInstance3.symbols | 4 +- ...arationsExportAssignedClassInstance3.types | 4 +- ...sExportAssignedConstructorFunction.symbols | 6 +- ...onsExportAssignedConstructorFunction.types | 12 +- ...AssignedConstructorFunctionWithSub.symbols | 12 +- ...rtAssignedConstructorFunctionWithSub.types | 8 +- ...clarationsExportAssignedVisibility.symbols | 4 +- ...DeclarationsExportAssignedVisibility.types | 4 +- ...tAssignmentExpressionPlusSecondary.symbols | 4 +- ...ortAssignmentExpressionPlusSecondary.types | 4 +- ...onsExportAssignmentWithKeywordName.symbols | 2 +- ...tionsExportAssignmentWithKeywordName.types | 2 +- ...clarationsExportDefinePropertyEmit.symbols | 64 +++---- ...DeclarationsExportDefinePropertyEmit.types | 96 +++++----- ...onsExportDoubleAssignmentInClosure.symbols | 2 +- ...tionsExportDoubleAssignmentInClosure.types | 8 +- .../jsDeclarationsExportForms.symbols | 10 +- .../reference/jsDeclarationsExportForms.types | 22 +-- ...jsDeclarationsExportSubAssignments.symbols | 4 +- .../jsDeclarationsExportSubAssignments.types | 4 +- ...jsDeclarationsExportedClassAliases.symbols | 8 +- .../jsDeclarationsExportedClassAliases.types | 16 +- ...FunctionClassesCjsExportAssignment.symbols | 6 +- ...nsFunctionClassesCjsExportAssignment.types | 6 +- ...eclarationsFunctionPrototypeStatic.symbols | 2 +- ...sDeclarationsFunctionPrototypeStatic.types | 2 +- ...sFunctionWithDefaultAssignedMember.symbols | 2 +- ...onsFunctionWithDefaultAssignedMember.types | 2 +- .../jsDeclarationsFunctionsCjs.symbols | 48 ++--- .../jsDeclarationsFunctionsCjs.types | 108 +++++------ ...portAliasExposedWithinNamespaceCjs.symbols | 4 +- ...ImportAliasExposedWithinNamespaceCjs.types | 8 +- .../jsDeclarationsImportTypeBundled.symbols | 4 +- .../jsDeclarationsImportTypeBundled.types | 4 +- .../reference/jsDeclarationsJson.symbols | 2 +- .../reference/jsDeclarationsJson.types | 2 +- .../jsDeclarationsPackageJson.symbols | 2 +- .../reference/jsDeclarationsPackageJson.types | 2 +- ...ParameterTagReusesInputNodeInEmit1.symbols | 2 +- ...nsParameterTagReusesInputNodeInEmit1.types | 2 +- ...ParameterTagReusesInputNodeInEmit2.symbols | 2 +- ...nsParameterTagReusesInputNodeInEmit2.types | 2 +- ...ionsReexportAliasesEsModuleInterop.symbols | 2 +- ...ationsReexportAliasesEsModuleInterop.types | 2 +- .../jsDeclarationsReexportedCjsAlias.symbols | 8 +- .../jsDeclarationsReexportedCjsAlias.types | 16 +- ...sReferenceToClassInstanceCrossFile.symbols | 8 +- ...onsReferenceToClassInstanceCrossFile.types | 16 +- .../jsDeclarationsTypeAliases.symbols | 4 +- .../reference/jsDeclarationsTypeAliases.types | 8 +- ...onsTypeReassignmentFromDeclaration.symbols | 2 +- ...tionsTypeReassignmentFromDeclaration.types | 2 +- ...nsTypeReassignmentFromDeclaration2.symbols | 2 +- ...ionsTypeReassignmentFromDeclaration2.types | 2 +- .../jsDeclarationsTypeReferences.symbols | 4 +- .../jsDeclarationsTypeReferences.types | 8 +- .../jsDeclarationsTypeReferences2.symbols | 4 +- .../jsDeclarationsTypeReferences2.types | 8 +- .../jsDeclarationsTypeReferences3.symbols | 6 +- .../jsDeclarationsTypeReferences3.types | 12 +- ...sDeclarationsTypedefAndImportTypes.symbols | 6 +- .../jsDeclarationsTypedefAndImportTypes.types | 10 +- ...TypedefPropertyAndExportAssignment.symbols | 6 +- ...nsTypedefPropertyAndExportAssignment.types | 10 +- ...MemberMergedWithModuleAugmentation.symbols | 4 +- ...rtMemberMergedWithModuleAugmentation.types | 8 +- ...emberMergedWithModuleAugmentation2.symbols | 2 +- ...tMemberMergedWithModuleAugmentation2.types | 2 +- ...emberMergedWithModuleAugmentation3.symbols | 4 +- ...tMemberMergedWithModuleAugmentation3.types | 4 +- ...opertyInitalizationInObjectLiteral.symbols | 2 +- ...PropertyInitalizationInObjectLiteral.types | 2 +- .../reference/jsdocImportType.symbols | 2 +- .../baselines/reference/jsdocImportType.types | 2 +- .../reference/jsdocImportType2.symbols | 2 +- .../reference/jsdocImportType2.types | 2 +- ...docImportTypeReferenceToClassAlias.symbols | 2 +- ...jsdocImportTypeReferenceToClassAlias.types | 6 +- .../jsdocTypeFromChainedAssignment2.symbols | 4 +- .../jsdocTypeFromChainedAssignment2.types | 12 +- .../jsdocTypeReferenceExports.symbols | 4 +- .../reference/jsdocTypeReferenceExports.types | 8 +- ...ReferenceToImportOfClassExpression.symbols | 4 +- ...peReferenceToImportOfClassExpression.types | 4 +- ...erenceToImportOfFunctionExpression.symbols | 4 +- ...eferenceToImportOfFunctionExpression.types | 4 +- ...ndAssignmentDeclarationSupport2.errors.txt | 16 +- ...BoundAssignmentDeclarationSupport2.symbols | 10 +- ...teBoundAssignmentDeclarationSupport2.types | 18 +- ...BoundAssignmentDeclarationSupport3.symbols | 10 +- ...teBoundAssignmentDeclarationSupport3.types | 18 +- ...BoundAssignmentDeclarationSupport4.symbols | 4 +- ...teBoundAssignmentDeclarationSupport4.types | 12 +- ...BoundAssignmentDeclarationSupport5.symbols | 4 +- ...teBoundAssignmentDeclarationSupport5.types | 12 +- ...BoundAssignmentDeclarationSupport6.symbols | 4 +- ...teBoundAssignmentDeclarationSupport6.types | 12 +- ...BoundAssignmentDeclarationSupport7.symbols | 4 +- ...teBoundAssignmentDeclarationSupport7.types | 12 +- .../reference/moduleExportAlias.symbols | 62 +++---- .../reference/moduleExportAlias.types | 170 +++++++++--------- .../reference/moduleExportAlias2.symbols | 2 +- .../reference/moduleExportAlias2.types | 2 +- .../reference/moduleExportAlias3.symbols | 4 +- .../reference/moduleExportAlias3.types | 8 +- .../reference/moduleExportAlias4.symbols | 4 +- .../reference/moduleExportAlias4.types | 4 +- .../reference/moduleExportAlias5.symbols | 2 +- .../reference/moduleExportAlias5.types | 2 +- .../moduleExportAliasExports.symbols | 2 +- .../reference/moduleExportAliasExports.types | 2 +- .../moduleExportAliasImported.symbols | 2 +- .../reference/moduleExportAliasImported.types | 2 +- .../moduleExportAliasUnknown.symbols | 2 +- .../reference/moduleExportAliasUnknown.types | 2 +- .../reference/moduleExportAssignment.symbols | 12 +- .../reference/moduleExportAssignment.types | 8 +- .../reference/moduleExportAssignment2.symbols | 8 +- .../reference/moduleExportAssignment2.types | 6 +- .../reference/moduleExportAssignment3.symbols | 6 +- .../reference/moduleExportAssignment3.types | 4 +- .../reference/moduleExportAssignment4.symbols | 2 +- .../reference/moduleExportAssignment4.types | 6 +- .../reference/moduleExportAssignment5.symbols | 4 +- .../reference/moduleExportAssignment5.types | 4 +- .../moduleExportNestedNamespaces.symbols | 8 +- .../moduleExportNestedNamespaces.types | 18 +- ...uleExportPropertyAssignmentDefault.symbols | 4 +- ...oduleExportPropertyAssignmentDefault.types | 4 +- ...ExportWithExportPropertyAssignment.symbols | 4 +- ...leExportWithExportPropertyAssignment.types | 4 +- ...xportWithExportPropertyAssignment2.symbols | 4 +- ...eExportWithExportPropertyAssignment2.types | 4 +- ...xportWithExportPropertyAssignment3.symbols | 8 +- ...eExportWithExportPropertyAssignment3.types | 8 +- ...xportWithExportPropertyAssignment4.symbols | 8 +- ...eExportWithExportPropertyAssignment4.types | 8 +- ...duleExportsElementAccessAssignment.symbols | 8 +- ...moduleExportsElementAccessAssignment.types | 14 +- .../nestedDestructuringOfRequire.symbols | 2 +- .../nestedDestructuringOfRequire.types | 6 +- .../reference/paramTagTypeResolution.symbols | 2 +- .../reference/paramTagTypeResolution.types | 2 +- .../requireOfJsonFileInJsFile.symbols | 2 +- .../reference/requireOfJsonFileInJsFile.types | 2 +- .../requireTwoPropertyAccesses.symbols | 2 +- .../requireTwoPropertyAccesses.types | 2 +- .../typeFromPropertyAssignment17.symbols | 2 +- .../typeFromPropertyAssignment17.types | 2 +- .../typeFromPropertyAssignment19.symbols | 2 +- .../typeFromPropertyAssignment19.types | 2 +- .../typeFromPropertyAssignment37.symbols | 4 +- .../typeFromPropertyAssignment37.types | 14 +- .../reference/typeTagModuleExports.symbols | 2 +- .../reference/typeTagModuleExports.types | 2 +- .../reference/typedefCrossModule.symbols | 2 +- .../reference/typedefCrossModule.types | 2 +- .../reference/typedefCrossModule2.symbols | 4 +- .../reference/typedefCrossModule2.types | 4 +- .../reference/typedefCrossModule3.symbols | 2 +- .../reference/typedefCrossModule3.types | 2 +- .../reference/typedefCrossModule4.symbols | 2 +- .../reference/typedefCrossModule4.types | 2 +- 229 files changed, 875 insertions(+), 852 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index aeb90104f5c..2edf4ada5a1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8768,8 +8768,15 @@ namespace ts { } if (symbol.flags & SymbolFlags.ModuleExports) { const fileSymbol = getSymbolOfNode(getSourceFileOfNode(symbol.valueDeclaration)); + const result = createSymbol(fileSymbol.flags, "exports" as __String); + result.declarations = fileSymbol.declarations ? fileSymbol.declarations.slice() : []; + result.parent = symbol; + result.target = fileSymbol; + if (fileSymbol.valueDeclaration) result.valueDeclaration = fileSymbol.valueDeclaration; + if (fileSymbol.members) result.members = new Map(fileSymbol.members); + if (fileSymbol.exports) result.exports = new Map(fileSymbol.exports); const members = createSymbolTable(); - members.set("exports" as __String, fileSymbol); + members.set("exports" as __String, result); return createAnonymousType(symbol, members, emptyArray, emptyArray, undefined, undefined); } // Handle catch clause variables diff --git a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols index 73777fb2299..0e501f14c85 100644 --- a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols +++ b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols @@ -8,7 +8,7 @@ var loop2 = loop1; >loop1 : Symbol(loop1, Decl(loop.js, 0, 3)) module.exports = loop2; ->module.exports : Symbol("tests/cases/conformance/salsa/loop", Decl(loop.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(loop.js, 0, 0)) >module : Symbol(export=, Decl(loop.js, 1, 18)) >exports : Symbol(export=, Decl(loop.js, 1, 18)) >loop2 : Symbol(loop2, Decl(loop.js, 1, 3)) diff --git a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types index d1576b85886..7a6fee6cddf 100644 --- a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types +++ b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types @@ -10,7 +10,7 @@ var loop2 = loop1; module.exports = loop2; >module.exports = loop2 : any >module.exports : any ->module : { "\"tests/cases/conformance/salsa/loop\"": any; } +>module : { exports: any; } >exports : any >loop2 : any diff --git a/tests/baselines/reference/callbackCrossModule.symbols b/tests/baselines/reference/callbackCrossModule.symbols index 9de5c8ffbf3..80a5a9451b0 100644 --- a/tests/baselines/reference/callbackCrossModule.symbols +++ b/tests/baselines/reference/callbackCrossModule.symbols @@ -4,7 +4,7 @@ * @return {any} I don't even know what this should return */ module.exports = C ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/tests/baselines/reference/callbackCrossModule.types b/tests/baselines/reference/callbackCrossModule.types index 5138fca3471..c3d88c890ac 100644 --- a/tests/baselines/reference/callbackCrossModule.types +++ b/tests/baselines/reference/callbackCrossModule.types @@ -6,7 +6,7 @@ module.exports = C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/checkExportsObjectAssignProperty.symbols b/tests/baselines/reference/checkExportsObjectAssignProperty.symbols index e1dcacbfe2c..df426ed4efc 100644 --- a/tests/baselines/reference/checkExportsObjectAssignProperty.symbols +++ b/tests/baselines/reference/checkExportsObjectAssignProperty.symbols @@ -202,9 +202,9 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"thing" : Symbol(thing, Decl(mod2.js, 0, 0)) >value : Symbol(value, Decl(mod2.js, 0, 48)) >writable : Symbol(writable, Decl(mod2.js, 0, 62)) @@ -213,9 +213,9 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"readonlyProp" : Symbol(readonlyProp, Decl(mod2.js, 0, 81)) >value : Symbol(value, Decl(mod2.js, 1, 55)) >writable : Symbol(writable, Decl(mod2.js, 1, 71)) @@ -224,9 +224,9 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"rwAccessors" : Symbol(rwAccessors, Decl(mod2.js, 1, 91)) >get : Symbol(get, Decl(mod2.js, 2, 54)) >set : Symbol(set, Decl(mod2.js, 2, 78)) @@ -236,9 +236,9 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"readonlyAccessor" : Symbol(readonlyAccessor, Decl(mod2.js, 2, 104)) >get : Symbol(get, Decl(mod2.js, 3, 59)) @@ -246,9 +246,9 @@ Object.defineProperty(module.exports, "setonlyAccessor", { >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"setonlyAccessor" : Symbol(setonlyAccessor, Decl(mod2.js, 3, 86)) /** @param {string} str */ diff --git a/tests/baselines/reference/checkExportsObjectAssignProperty.types b/tests/baselines/reference/checkExportsObjectAssignProperty.types index 78bbbc8f355..a029a2aef6d 100644 --- a/tests/baselines/reference/checkExportsObjectAssignProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignProperty.types @@ -255,9 +255,9 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"thing" : "thing" >{ value: "yes", writable: true } : { value: string; writable: true; } >value : string @@ -270,9 +270,9 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"readonlyProp" : "readonlyProp" >{ value: "Smith", writable: false } : { value: string; writable: false; } >value : string @@ -285,9 +285,9 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"rwAccessors" : "rwAccessors" >{ get() { return 98122 }, set(_) { /*ignore*/ } } : { get(): number; set(_: any): void; } >get : () => number @@ -300,9 +300,9 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"readonlyAccessor" : "readonlyAccessor" >{ get() { return 21.75 } } : { get(): number; } >get : () => number @@ -313,9 +313,9 @@ Object.defineProperty(module.exports, "setonlyAccessor", { >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"setonlyAccessor" : "setonlyAccessor" >{ /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }} : { set(str: string): void; } diff --git a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols index 051a342a2b5..c06d66518ec 100644 --- a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols +++ b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols @@ -170,7 +170,7 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { } }); module.exports = Person; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 19, 3)) >exports : Symbol(export=, Decl(mod1.js, 19, 3)) >Person : Symbol(Person, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types index 77875ad8c63..085f6cf008e 100644 --- a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types @@ -214,7 +214,7 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { module.exports = Person; >module.exports = Person : typeof Person >module.exports : typeof Person ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof Person; } +>module : { exports: typeof Person; } >exports : typeof Person >Person : typeof Person diff --git a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols index 3385a5bb58c..34b50108d30 100644 --- a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols +++ b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols @@ -22,7 +22,7 @@ export = Foo; /** @typedef {(foo: Foo) => string} FooFun */ module.exports = /** @type {FooFun} */(void 0); ->module.exports : Symbol("tests/cases/compiler/something", Decl(something.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(something.js, 0, 0)) >module : Symbol(export=, Decl(something.js, 0, 0)) >exports : Symbol(export=, Decl(something.js, 0, 0)) diff --git a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types index c9ddb407381..d3c62c6f0ab 100644 --- a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types +++ b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types @@ -24,7 +24,7 @@ export = Foo; module.exports = /** @type {FooFun} */(void 0); >module.exports = /** @type {FooFun} */(void 0) : (foo: Foo) => string >module.exports : (foo: typeof import("tests/cases/compiler/file")) => string ->module : { "\"tests/cases/compiler/something\"": (foo: typeof import("tests/cases/compiler/file")) => string; } +>module : { exports: (foo: typeof import("tests/cases/compiler/file")) => string; } >exports : (foo: typeof import("tests/cases/compiler/file")) => string >(void 0) : FooFun >void 0 : undefined diff --git a/tests/baselines/reference/checkObjectDefineProperty.symbols b/tests/baselines/reference/checkObjectDefineProperty.symbols index 6b746640af8..0552f8fcf49 100644 --- a/tests/baselines/reference/checkObjectDefineProperty.symbols +++ b/tests/baselines/reference/checkObjectDefineProperty.symbols @@ -196,7 +196,7 @@ match(() => expected, (x = expected) => void 0); >expected : Symbol(expected, Decl(index.js, 32, 5)) module.exports = x; ->module.exports : Symbol("tests/cases/conformance/jsdoc/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 41, 48)) >exports : Symbol(export=, Decl(index.js, 41, 48)) >x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) diff --git a/tests/baselines/reference/checkObjectDefineProperty.types b/tests/baselines/reference/checkObjectDefineProperty.types index 05359b68bb1..79467e4dc2e 100644 --- a/tests/baselines/reference/checkObjectDefineProperty.types +++ b/tests/baselines/reference/checkObjectDefineProperty.types @@ -249,7 +249,7 @@ match(() => expected, (x = expected) => void 0); module.exports = x; >module.exports = x : typeof x >module.exports : typeof x ->module : { "\"tests/cases/conformance/jsdoc/index\"": typeof x; } +>module : { exports: typeof x; } >exports : typeof x >x : typeof x diff --git a/tests/baselines/reference/commonJSReexport.symbols b/tests/baselines/reference/commonJSReexport.symbols index 7b31548415f..73225e001c8 100644 --- a/tests/baselines/reference/commonJSReexport.symbols +++ b/tests/baselines/reference/commonJSReexport.symbols @@ -17,9 +17,9 @@ const hardline = { type: "hard" } >type : Symbol(type, Decl(first.js, 2, 18)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/first", Decl(first.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(first.js, 0, 0)) >module : Symbol(module, Decl(first.js, 2, 33)) ->exports : Symbol("tests/cases/conformance/salsa/first", Decl(first.js, 0, 0)) +>exports : Symbol(module.exports, Decl(first.js, 0, 0)) hardline >hardline : Symbol(hardline, Decl(first.js, 3, 18)) @@ -28,7 +28,7 @@ module.exports = { === tests/cases/conformance/salsa/second.js === module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/second", Decl(second.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(second.js, 0, 0)) >module : Symbol(export=, Decl(second.js, 0, 0)) >exports : Symbol(export=, Decl(second.js, 0, 0)) diff --git a/tests/baselines/reference/commonJSReexport.types b/tests/baselines/reference/commonJSReexport.types index 84e98c4fea0..1b8ec20f349 100644 --- a/tests/baselines/reference/commonJSReexport.types +++ b/tests/baselines/reference/commonJSReexport.types @@ -20,10 +20,10 @@ const hardline = { type: "hard" } >"hard" : "hard" module.exports = { ->module.exports = { hardline} : typeof import("tests/cases/conformance/salsa/first") ->module.exports : typeof import("tests/cases/conformance/salsa/first") ->module : { "\"tests/cases/conformance/salsa/first\"": typeof import("tests/cases/conformance/salsa/first"); } ->exports : typeof import("tests/cases/conformance/salsa/first") +>module.exports = { hardline} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ hardline} : { hardline: { type: string; }; } hardline @@ -35,7 +35,7 @@ module.exports = { module.exports = { >module.exports = { nested: require('./first')} : { nested: typeof import("tests/cases/conformance/salsa/first"); } >module.exports : { nested: typeof import("tests/cases/conformance/salsa/first"); } ->module : { "\"tests/cases/conformance/salsa/second\"": { nested: typeof import("tests/cases/conformance/salsa/first"); }; } +>module : { exports: { nested: typeof import("tests/cases/conformance/salsa/first"); }; } >exports : { nested: typeof import("tests/cases/conformance/salsa/first"); } >{ nested: require('./first')} : { nested: typeof import("tests/cases/conformance/salsa/first"); } diff --git a/tests/baselines/reference/commonJsIsolatedModules.symbols b/tests/baselines/reference/commonJsIsolatedModules.symbols index f0f9d0d7855..af28f884f0e 100644 --- a/tests/baselines/reference/commonJsIsolatedModules.symbols +++ b/tests/baselines/reference/commonJsIsolatedModules.symbols @@ -1,8 +1,8 @@ === tests/cases/compiler/index.js === module.exports = {} ->module.exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) var x = 1 >x : Symbol(x, Decl(index.js, 1, 3)) diff --git a/tests/baselines/reference/commonJsIsolatedModules.types b/tests/baselines/reference/commonJsIsolatedModules.types index 12da6a2e0a7..986988648c9 100644 --- a/tests/baselines/reference/commonJsIsolatedModules.types +++ b/tests/baselines/reference/commonJsIsolatedModules.types @@ -1,9 +1,9 @@ === tests/cases/compiler/index.js === module.exports = {} ->module.exports = {} : typeof import("tests/cases/compiler/index") ->module.exports : typeof import("tests/cases/compiler/index") ->module : { "\"tests/cases/compiler/index\"": typeof import("tests/cases/compiler/index"); } ->exports : typeof import("tests/cases/compiler/index") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} var x = 1 diff --git a/tests/baselines/reference/constructorFunctions2.symbols b/tests/baselines/reference/constructorFunctions2.symbols index d0b5b991cce..35a24c915f3 100644 --- a/tests/baselines/reference/constructorFunctions2.symbols +++ b/tests/baselines/reference/constructorFunctions2.symbols @@ -56,7 +56,7 @@ function A() { this.id = 1; } >id : Symbol(A.id, Decl(other.js, 0, 14)) module.exports = A; ->module.exports : Symbol("tests/cases/conformance/salsa/other", Decl(other.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(other.js, 0, 0)) >module : Symbol(export=, Decl(other.js, 0, 29)) >exports : Symbol(export=, Decl(other.js, 0, 29)) >A : Symbol(A, Decl(other.js, 0, 0)) diff --git a/tests/baselines/reference/constructorFunctions2.types b/tests/baselines/reference/constructorFunctions2.types index 8b1f3711770..ad5b7b69a38 100644 --- a/tests/baselines/reference/constructorFunctions2.types +++ b/tests/baselines/reference/constructorFunctions2.types @@ -71,7 +71,7 @@ function A() { this.id = 1; } module.exports = A; >module.exports = A : typeof A >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/other\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >A : typeof A diff --git a/tests/baselines/reference/contextualTypedSpecialAssignment.symbols b/tests/baselines/reference/contextualTypedSpecialAssignment.symbols index c185640d897..01047ffb7f5 100644 --- a/tests/baselines/reference/contextualTypedSpecialAssignment.symbols +++ b/tests/baselines/reference/contextualTypedSpecialAssignment.symbols @@ -103,7 +103,7 @@ module.exports.y = { >module.exports.y : Symbol(y, Decl(test.js, 45, 9)) >module.exports : Symbol(y, Decl(test.js, 45, 9)) >module : Symbol(module, Decl(test.js, 45, 9)) ->exports : Symbol("tests/cases/conformance/salsa/test", Decl(test.js, 0, 0)) +>exports : Symbol(module.exports, Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) status: "done", @@ -115,9 +115,9 @@ module.exports.y = { } module.exports.y >module.exports.y : Symbol(y, Decl(test.js, 45, 9)) ->module.exports : Symbol("tests/cases/conformance/salsa/test", Decl(test.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(test.js, 0, 0)) >module : Symbol(module, Decl(test.js, 45, 9)) ->exports : Symbol("tests/cases/conformance/salsa/test", Decl(test.js, 0, 0)) +>exports : Symbol(module.exports, Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) // prototype-property assignment @@ -165,7 +165,7 @@ F.prototype = { // module.exports assignment /** @type {{ status: 'done', m(n: number): void }} */ module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(export=, Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) diff --git a/tests/baselines/reference/contextualTypedSpecialAssignment.types b/tests/baselines/reference/contextualTypedSpecialAssignment.types index fe6711a3307..494532a5eae 100644 --- a/tests/baselines/reference/contextualTypedSpecialAssignment.types +++ b/tests/baselines/reference/contextualTypedSpecialAssignment.types @@ -118,9 +118,9 @@ exports.x module.exports.y = { >module.exports.y = { status: "done", m(n) { }} : { status: "done"; m(n: number): void; } >module.exports.y : DoneStatus ->module.exports : typeof import("tests/cases/conformance/salsa/test") ->module : { "\"tests/cases/conformance/salsa/test\"": typeof import("tests/cases/conformance/salsa/test"); } ->exports : typeof import("tests/cases/conformance/salsa/test") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >y : DoneStatus >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } @@ -134,9 +134,9 @@ module.exports.y = { } module.exports.y >module.exports.y : DoneStatus ->module.exports : typeof import("tests/cases/conformance/salsa/test") ->module : { "\"tests/cases/conformance/salsa/test\"": typeof import("tests/cases/conformance/salsa/test"); } ->exports : typeof import("tests/cases/conformance/salsa/test") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >y : DoneStatus // prototype-property assignment @@ -192,7 +192,7 @@ F.prototype = { module.exports = { >module.exports = { status: "done", m(n) { }} : { status: 'done'; m(n: number): void; } >module.exports : { status: "done"; m(n: number): void; } ->module : { "\"tests/cases/conformance/salsa/mod\"": { status: "done"; m(n: number): void; }; } +>module : { exports: { status: "done"; m(n: number): void; }; } >exports : { status: "done"; m(n: number): void; } >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } diff --git a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols index 41ba9b444c7..4b0737b3fc0 100644 --- a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols +++ b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols @@ -5,7 +5,7 @@ const _item = require("./namespacer"); >"./namespacer" : Symbol("tests/cases/compiler/namespacer", Decl(namespacer.js, 0, 0)) module.exports = 12; ->module.exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 38)) >exports : Symbol(export=, Decl(index.js, 0, 38)) @@ -28,7 +28,7 @@ A.bar = class Q {} >Q : Symbol(Q, Decl(namespacey.js, 1, 7)) module.exports = A; ->module.exports : Symbol("tests/cases/compiler/namespacey", Decl(namespacey.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(namespacey.js, 0, 0)) >module : Symbol(export=, Decl(namespacey.js, 1, 18)) >exports : Symbol(export=, Decl(namespacey.js, 1, 18)) >A : Symbol(A, Decl(namespacey.js, 0, 5), Decl(namespacey.js, 0, 12)) @@ -54,7 +54,7 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); >writable : Symbol(writable, Decl(namespacer.js, 2, 53)) module.exports = B; ->module.exports : Symbol("tests/cases/compiler/namespacer", Decl(namespacer.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(namespacer.js, 0, 0)) >module : Symbol(export=, Decl(namespacer.js, 2, 72)) >exports : Symbol(export=, Decl(namespacer.js, 2, 72)) >B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) diff --git a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types index f9bd4704f28..eb25a6fbbef 100644 --- a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types +++ b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types @@ -39,7 +39,7 @@ A.bar = class Q {} module.exports = A; >module.exports = A : typeof A >module.exports : typeof A ->module : { "\"tests/cases/compiler/namespacey\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >A : typeof A @@ -73,7 +73,7 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); module.exports = B; >module.exports = B : typeof B >module.exports : typeof B ->module : { "\"tests/cases/compiler/namespacer\"": typeof B; } +>module : { exports: typeof B; } >exports : typeof B >B : typeof B diff --git a/tests/baselines/reference/enumTagOnExports.symbols b/tests/baselines/reference/enumTagOnExports.symbols index 89257c00d49..e829b009cc3 100644 --- a/tests/baselines/reference/enumTagOnExports.symbols +++ b/tests/baselines/reference/enumTagOnExports.symbols @@ -10,6 +10,6 @@ module.exports.b = {}; >module.exports.b : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) >module.exports : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) >module : Symbol(module, Decl(enumTagOnExports.js, 1, 15)) ->exports : Symbol("tests/cases/conformance/jsdoc/enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) >b : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) diff --git a/tests/baselines/reference/enumTagOnExports.types b/tests/baselines/reference/enumTagOnExports.types index ff4333e69e6..7cfcb257c97 100644 --- a/tests/baselines/reference/enumTagOnExports.types +++ b/tests/baselines/reference/enumTagOnExports.types @@ -11,9 +11,9 @@ exports.a = {}; module.exports.b = {}; >module.exports.b = {} : {} >module.exports.b : typeof b ->module.exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") ->module : { "\"tests/cases/conformance/jsdoc/enumTagOnExports\"": typeof import("tests/cases/conformance/jsdoc/enumTagOnExports"); } ->exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : typeof b >{} : {} diff --git a/tests/baselines/reference/enumTagOnExports2.symbols b/tests/baselines/reference/enumTagOnExports2.symbols index 9bca24fe024..4aae5916873 100644 --- a/tests/baselines/reference/enumTagOnExports2.symbols +++ b/tests/baselines/reference/enumTagOnExports2.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/jsdoc/enumTagOnExports.js === /** @enum {string} */ module.exports = {}; ->module.exports : Symbol("tests/cases/conformance/jsdoc/enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) >module : Symbol(module, Decl(enumTagOnExports.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) diff --git a/tests/baselines/reference/enumTagOnExports2.types b/tests/baselines/reference/enumTagOnExports2.types index 4694f1f14b2..5e638473be8 100644 --- a/tests/baselines/reference/enumTagOnExports2.types +++ b/tests/baselines/reference/enumTagOnExports2.types @@ -1,9 +1,9 @@ === tests/cases/conformance/jsdoc/enumTagOnExports.js === /** @enum {string} */ module.exports = {}; ->module.exports = {} : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") ->module.exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") ->module : { "\"tests/cases/conformance/jsdoc/enumTagOnExports\"": typeof import("tests/cases/conformance/jsdoc/enumTagOnExports"); } ->exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} diff --git a/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols b/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols index bf0ef14f438..5d5696d84bd 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols +++ b/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols @@ -72,7 +72,7 @@ function foo() { * @type {MyComponentProps} */ module.exports = { ->module.exports : Symbol("tests/cases/compiler/input", Decl(input.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(input.js, 0, 0)) >module : Symbol(export=, Decl(input.js, 42, 1)) >exports : Symbol(export=, Decl(input.js, 42, 1)) @@ -83,7 +83,7 @@ module.exports = { expectLiteral({ props: module.exports }); >expectLiteral : Symbol(expectLiteral, Decl(input.js, 27, 27)) >props : Symbol(props, Decl(input.js, 51, 15)) ->module.exports : Symbol("tests/cases/compiler/input", Decl(input.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(input.js, 0, 0)) >module : Symbol(module, Decl(input.js, 42, 1), Decl(input.js, 51, 22)) ->exports : Symbol("tests/cases/compiler/input", Decl(input.js, 0, 0)) +>exports : Symbol(module.exports, Decl(input.js, 0, 0)) diff --git a/tests/baselines/reference/expandoFunctionContextualTypesJs.types b/tests/baselines/reference/expandoFunctionContextualTypesJs.types index 9ef980d47bf..c2a32db4249 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesJs.types +++ b/tests/baselines/reference/expandoFunctionContextualTypesJs.types @@ -89,7 +89,7 @@ function foo() { module.exports = { >module.exports = { color: "red"} : MyComponentProps >module.exports : MyComponentProps ->module : { "\"tests/cases/compiler/input\"": MyComponentProps; } +>module : { exports: MyComponentProps; } >exports : MyComponentProps >{ color: "red"} : { color: "red"; } @@ -104,6 +104,6 @@ expectLiteral({ props: module.exports }); >{ props: module.exports } : { props: MyComponentProps; } >props : MyComponentProps >module.exports : MyComponentProps ->module : { "\"tests/cases/compiler/input\"": MyComponentProps; } +>module : { exports: MyComponentProps; } >exports : MyComponentProps diff --git a/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols b/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols index df6d56766bc..eaa7581dec0 100644 --- a/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols +++ b/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols @@ -3,7 +3,7 @@ module.exports.D = class { } >module.exports.D : Symbol(D, Decl(bug24492.js, 0, 0)) >module.exports : Symbol(D, Decl(bug24492.js, 0, 0)) >module : Symbol(module, Decl(bug24492.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/bug24492", Decl(bug24492.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug24492.js, 0, 0)) >D : Symbol(D, Decl(bug24492.js, 0, 0)) new D() diff --git a/tests/baselines/reference/exportPropertyAssignmentNameResolution.types b/tests/baselines/reference/exportPropertyAssignmentNameResolution.types index cf9d2e85917..9ce801eb04d 100644 --- a/tests/baselines/reference/exportPropertyAssignmentNameResolution.types +++ b/tests/baselines/reference/exportPropertyAssignmentNameResolution.types @@ -2,9 +2,9 @@ module.exports.D = class { } >module.exports.D = class { } : typeof D >module.exports.D : typeof D ->module.exports : typeof import("tests/cases/conformance/salsa/bug24492") ->module : { "\"tests/cases/conformance/salsa/bug24492\"": typeof import("tests/cases/conformance/salsa/bug24492"); } ->exports : typeof import("tests/cases/conformance/salsa/bug24492") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >D : typeof D >class { } : typeof D diff --git a/tests/baselines/reference/exportedAliasedEnumTag.symbols b/tests/baselines/reference/exportedAliasedEnumTag.symbols index 81cc69aa7e0..e3642158a0a 100644 --- a/tests/baselines/reference/exportedAliasedEnumTag.symbols +++ b/tests/baselines/reference/exportedAliasedEnumTag.symbols @@ -1,9 +1,9 @@ === tests/cases/conformance/jsdoc/exportedAliasedEnumTag.js === var middlewarify = module.exports = {}; >middlewarify : Symbol(middlewarify, Decl(exportedAliasedEnumTag.js, 0, 3)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/exportedAliasedEnumTag", Decl(exportedAliasedEnumTag.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(exportedAliasedEnumTag.js, 0, 0)) >module : Symbol(module, Decl(exportedAliasedEnumTag.js, 0, 18)) ->exports : Symbol("tests/cases/conformance/jsdoc/exportedAliasedEnumTag", Decl(exportedAliasedEnumTag.js, 0, 0)) +>exports : Symbol(module.exports, Decl(exportedAliasedEnumTag.js, 0, 0)) /** @enum */ middlewarify.Type = { diff --git a/tests/baselines/reference/exportedAliasedEnumTag.types b/tests/baselines/reference/exportedAliasedEnumTag.types index b4c14bc52b2..19c94e99ad8 100644 --- a/tests/baselines/reference/exportedAliasedEnumTag.types +++ b/tests/baselines/reference/exportedAliasedEnumTag.types @@ -1,17 +1,17 @@ === tests/cases/conformance/jsdoc/exportedAliasedEnumTag.js === var middlewarify = module.exports = {}; ->middlewarify : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") ->module.exports = {} : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") ->module.exports : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") ->module : { "\"tests/cases/conformance/jsdoc/exportedAliasedEnumTag\"": typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag"); } ->exports : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") +>middlewarify : typeof module.exports +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} /** @enum */ middlewarify.Type = { >middlewarify.Type = { BEFORE: 'before'} : { BEFORE: string; } >middlewarify.Type : { BEFORE: string; } ->middlewarify : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") +>middlewarify : typeof module.exports >Type : { BEFORE: string; } >{ BEFORE: 'before'} : { BEFORE: string; } diff --git a/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc b/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc index b7ca959132a..26e86ead593 100644 --- a/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc +++ b/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc @@ -15,7 +15,7 @@ "containerName": "", "fileName": "/a.js", "kind": "local class", - "name": "(local class) D", + "name": "(local class) module.exports.D", "textSpan": { "start": 54, "length": 1 @@ -37,9 +37,25 @@ "text": " ", "kind": "space" }, + { + "text": "module", + "kind": "localName" + }, + { + "text": ".", + "kind": "punctuation" + }, + { + "text": "exports", + "kind": "moduleName" + }, + { + "text": ".", + "kind": "punctuation" + }, { "text": "D", - "kind": "className" + "kind": "aliasName" } ], "contextSpan": { diff --git a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols index 8fafef268e0..2adf5afc2e0 100644 --- a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols +++ b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols @@ -10,7 +10,7 @@ window.console; // should not have error: Property 'console' does not exist on t >console : Symbol(console, Decl(lib.dom.d.ts, --, --)) module.exports = 'anything'; ->module.exports : Symbol("tests/cases/conformance/salsa/bug27099", Decl(bug27099.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27099.js, 0, 0)) >module : Symbol(export=, Decl(bug27099.js, 1, 15)) >exports : Symbol(export=, Decl(bug27099.js, 1, 15)) diff --git a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types index 2da3041af44..74a1d649bd8 100644 --- a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types +++ b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types @@ -14,7 +14,7 @@ window.console; // should not have error: Property 'console' does not exist on t module.exports = 'anything'; >module.exports = 'anything' : string >module.exports : string ->module : { "\"tests/cases/conformance/salsa/bug27099\"": string; } +>module : { exports: string; } >exports : string >'anything' : "anything" diff --git a/tests/baselines/reference/importAliasModuleExports.symbols b/tests/baselines/reference/importAliasModuleExports.symbols index 59bb97dcccd..d9729f669da 100644 --- a/tests/baselines/reference/importAliasModuleExports.symbols +++ b/tests/baselines/reference/importAliasModuleExports.symbols @@ -6,7 +6,7 @@ class Alias { >bar : Symbol(Alias.bar, Decl(mod1.js, 0, 13)) } module.exports = Alias; ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 2, 1)) >exports : Symbol(export=, Decl(mod1.js, 2, 1)) >Alias : Symbol(Alias, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/importAliasModuleExports.types b/tests/baselines/reference/importAliasModuleExports.types index eff243dee47..795b161a348 100644 --- a/tests/baselines/reference/importAliasModuleExports.types +++ b/tests/baselines/reference/importAliasModuleExports.types @@ -9,7 +9,7 @@ class Alias { module.exports = Alias; >module.exports = Alias : typeof Alias >module.exports : typeof Alias ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof Alias; } +>module : { exports: typeof Alias; } >exports : typeof Alias >Alias : typeof Alias diff --git a/tests/baselines/reference/javascriptCommonjsModule.symbols b/tests/baselines/reference/javascriptCommonjsModule.symbols index da5d60593f4..30fbf94cb0a 100644 --- a/tests/baselines/reference/javascriptCommonjsModule.symbols +++ b/tests/baselines/reference/javascriptCommonjsModule.symbols @@ -7,7 +7,7 @@ class Bar extends Foo {} >Foo : Symbol(Foo, Decl(index.js, 0, 0)) module.exports = Bar; ->module.exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 2, 24)) >exports : Symbol(export=, Decl(index.js, 2, 24)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/tests/baselines/reference/javascriptCommonjsModule.types b/tests/baselines/reference/javascriptCommonjsModule.types index 2850541b953..d68912be926 100644 --- a/tests/baselines/reference/javascriptCommonjsModule.types +++ b/tests/baselines/reference/javascriptCommonjsModule.types @@ -9,7 +9,7 @@ class Bar extends Foo {} module.exports = Bar; >module.exports = Bar : typeof Bar >module.exports : typeof Bar ->module : { "\"tests/cases/compiler/index\"": typeof Bar; } +>module : { exports: typeof Bar; } >exports : typeof Bar >Bar : typeof Bar diff --git a/tests/baselines/reference/javascriptImportDefaultBadExport.symbols b/tests/baselines/reference/javascriptImportDefaultBadExport.symbols index b5506996aff..8e728a46522 100644 --- a/tests/baselines/reference/javascriptImportDefaultBadExport.symbols +++ b/tests/baselines/reference/javascriptImportDefaultBadExport.symbols @@ -6,7 +6,7 @@ const alias = {}; >alias : Symbol(alias, Decl(a.js, 3, 5)) module.exports = alias; ->module.exports : Symbol("/a", Decl(a.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(a.js, 0, 0)) >module : Symbol(export=, Decl(a.js, 3, 17)) >exports : Symbol(export=, Decl(a.js, 3, 17)) >alias : Symbol(alias, Decl(a.js, 3, 5)) diff --git a/tests/baselines/reference/javascriptImportDefaultBadExport.types b/tests/baselines/reference/javascriptImportDefaultBadExport.types index c01e329340e..e8ff12bd3e9 100644 --- a/tests/baselines/reference/javascriptImportDefaultBadExport.types +++ b/tests/baselines/reference/javascriptImportDefaultBadExport.types @@ -9,7 +9,7 @@ const alias = {}; module.exports = alias; >module.exports = alias : {} >module.exports : {} ->module : { "\"/a\"": {}; } +>module : { exports: {}; } >exports : {} >alias : {} diff --git a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols index a59d302e7f0..d76e8b90387 100644 --- a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols +++ b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols @@ -19,7 +19,7 @@ class Foo extends Bar {} >Bar : Symbol(Bar, Decl(cls.js, 0, 5)) module.exports = Foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >module : Symbol(export=, Decl(cls.js, 5, 24)) >exports : Symbol(export=, Decl(cls.js, 5, 24)) >Foo : Symbol(Foo, Decl(cls.js, 4, 2)) @@ -28,7 +28,7 @@ module.exports.Strings = Strings; >module.exports.Strings : Symbol(Strings, Decl(cls.js, 6, 21)) >module.exports : Symbol(Strings, Decl(cls.js, 6, 21)) >module : Symbol(module, Decl(cls.js, 5, 24)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >Strings : Symbol(Strings, Decl(cls.js, 6, 21)) >Strings : Symbol(Strings, Decl(cls.js, 1, 5)) @@ -37,7 +37,7 @@ class Bar {} >Bar : Symbol(Bar, Decl(bar.js, 0, 0)) module.exports = Bar; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/bar", Decl(bar.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bar.js, 0, 0)) >module : Symbol(export=, Decl(bar.js, 0, 12)) >exports : Symbol(export=, Decl(bar.js, 0, 12)) >Bar : Symbol(Bar, Decl(bar.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types index b73577a1133..cf4cf2cf8f1 100644 --- a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types +++ b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types @@ -25,7 +25,7 @@ class Foo extends Bar {} module.exports = Foo; >module.exports = Foo : typeof Foo >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Foo : typeof Foo @@ -33,7 +33,7 @@ module.exports.Strings = Strings; >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } @@ -45,7 +45,7 @@ class Bar {} module.exports = Bar; >module.exports = Bar : typeof Bar >module.exports : typeof Bar ->module : { "\"tests/cases/conformance/jsdoc/declarations/bar\"": typeof Bar; } +>module : { exports: typeof Bar; } >exports : typeof Bar >Bar : typeof Bar diff --git a/tests/baselines/reference/jsDeclarationsClassStatic.symbols b/tests/baselines/reference/jsDeclarationsClassStatic.symbols index 8687099bbe3..635174ee036 100644 --- a/tests/baselines/reference/jsDeclarationsClassStatic.symbols +++ b/tests/baselines/reference/jsDeclarationsClassStatic.symbols @@ -28,7 +28,7 @@ const Strings = { } module.exports = Handler; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/source", Decl(source.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(source.js, 0, 0)) >module : Symbol(export=, Decl(source.js, 12, 1)) >exports : Symbol(export=, Decl(source.js, 12, 1)) >Handler : Symbol(Handler, Decl(source.js, 0, 0), Decl(source.js, 7, 1)) @@ -37,7 +37,7 @@ module.exports.Strings = Strings >module.exports.Strings : Symbol(Strings, Decl(source.js, 14, 25)) >module.exports : Symbol(Strings, Decl(source.js, 14, 25)) >module : Symbol(module, Decl(source.js, 12, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/source", Decl(source.js, 0, 0)) +>exports : Symbol(module.exports, Decl(source.js, 0, 0)) >Strings : Symbol(Strings, Decl(source.js, 14, 25)) >Strings : Symbol(Strings, Decl(source.js, 9, 5)) diff --git a/tests/baselines/reference/jsDeclarationsClassStatic.types b/tests/baselines/reference/jsDeclarationsClassStatic.types index 50783314fac..02473d7523f 100644 --- a/tests/baselines/reference/jsDeclarationsClassStatic.types +++ b/tests/baselines/reference/jsDeclarationsClassStatic.types @@ -36,7 +36,7 @@ const Strings = { module.exports = Handler; >module.exports = Handler : typeof Handler >module.exports : typeof Handler ->module : { "\"tests/cases/conformance/jsdoc/declarations/source\"": typeof Handler; } +>module : { exports: typeof Handler; } >exports : typeof Handler >Handler : typeof Handler @@ -44,7 +44,7 @@ module.exports.Strings = Strings >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : typeof Handler ->module : { "\"tests/cases/conformance/jsdoc/declarations/source\"": typeof Handler; } +>module : { exports: typeof Handler; } >exports : typeof Handler >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } diff --git a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols index f30136c90b8..c5f75ca89cb 100644 --- a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols +++ b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols @@ -8,9 +8,9 @@ const Thing = require('./thing').Thing >Thing : Symbol(Thing, Decl(thing.js, 2, 18)) module.exports = { Thing } ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/reexport", Decl(reexport.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(reexport.js, 0, 0)) >module : Symbol(module, Decl(reexport.js, 1, 38)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/reexport", Decl(reexport.js, 0, 0)) +>exports : Symbol(module.exports, Decl(reexport.js, 0, 0)) >Thing : Symbol(Thing, Decl(reexport.js, 2, 18)) === tests/cases/conformance/jsdoc/declarations/thing.js === @@ -19,8 +19,8 @@ class Thing {} >Thing : Symbol(Thing, Decl(thing.js, 0, 13)) module.exports = { Thing } ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/thing", Decl(thing.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(thing.js, 0, 0)) >module : Symbol(module, Decl(thing.js, 1, 14)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/thing", Decl(thing.js, 0, 0)) +>exports : Symbol(module.exports, Decl(thing.js, 0, 0)) >Thing : Symbol(Thing, Decl(thing.js, 2, 18)) diff --git a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types index 58c31461799..79a0313df8b 100644 --- a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types +++ b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types @@ -11,10 +11,10 @@ const Thing = require('./thing').Thing >Thing : typeof Thing module.exports = { Thing } ->module.exports = { Thing } : typeof import("tests/cases/conformance/jsdoc/declarations/reexport") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/reexport") ->module : { "\"tests/cases/conformance/jsdoc/declarations/reexport\"": typeof import("tests/cases/conformance/jsdoc/declarations/reexport"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/reexport") +>module.exports = { Thing } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Thing } : { Thing: typeof Thing; } >Thing : typeof Thing @@ -26,10 +26,10 @@ class Thing {} >Thing : Thing module.exports = { Thing } ->module.exports = { Thing } : typeof import("tests/cases/conformance/jsdoc/declarations/thing") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/thing") ->module : { "\"tests/cases/conformance/jsdoc/declarations/thing\"": typeof import("tests/cases/conformance/jsdoc/declarations/thing"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/thing") +>module.exports = { Thing } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Thing } : { Thing: typeof Thing; } >Thing : typeof Thing diff --git a/tests/baselines/reference/jsDeclarationsComputedNames.symbols b/tests/baselines/reference/jsDeclarationsComputedNames.symbols index 2abc98e4edf..ae30cbffc1c 100644 --- a/tests/baselines/reference/jsDeclarationsComputedNames.symbols +++ b/tests/baselines/reference/jsDeclarationsComputedNames.symbols @@ -8,7 +8,7 @@ const InnerSym = Symbol(); >Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 26)) >exports : Symbol(export=, Decl(index.js, 1, 26)) diff --git a/tests/baselines/reference/jsDeclarationsComputedNames.types b/tests/baselines/reference/jsDeclarationsComputedNames.types index 02e1788a3ea..557d32c54ac 100644 --- a/tests/baselines/reference/jsDeclarationsComputedNames.types +++ b/tests/baselines/reference/jsDeclarationsComputedNames.types @@ -12,7 +12,7 @@ const InnerSym = Symbol(); module.exports = { >module.exports = { [TopLevelSym](x = 12) { return x; }, items: { [InnerSym]: (arg = {x: 12}) => arg.x }} : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } >module.exports : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; }; } +>module : { exports: { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; }; } >exports : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } >{ [TopLevelSym](x = 12) { return x; }, items: { [InnerSym]: (arg = {x: 12}) => arg.x }} : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } diff --git a/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols b/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols index 859c94328a4..5abae5d2f6a 100644 --- a/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols +++ b/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols @@ -5,7 +5,7 @@ const m = require("./exporter"); >"./exporter" : Symbol(m, Decl(exporter.js, 0, 0)) module.exports = m.default; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 32)) >exports : Symbol(export=, Decl(index.js, 0, 32)) >m.default : Symbol(m.default, Decl(exporter.js, 0, 22)) @@ -16,7 +16,7 @@ module.exports.memberName = "thing"; >module.exports.memberName : Symbol(memberName, Decl(index.js, 2, 27)) >module.exports : Symbol(memberName, Decl(index.js, 2, 27)) >module : Symbol(module, Decl(index.js, 0, 32)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >memberName : Symbol(memberName, Decl(index.js, 2, 27)) === tests/cases/conformance/jsdoc/declarations/exporter.js === diff --git a/tests/baselines/reference/jsDeclarationsCrossfileMerge.types b/tests/baselines/reference/jsDeclarationsCrossfileMerge.types index 83e978857ee..77735e52df0 100644 --- a/tests/baselines/reference/jsDeclarationsCrossfileMerge.types +++ b/tests/baselines/reference/jsDeclarationsCrossfileMerge.types @@ -8,7 +8,7 @@ const m = require("./exporter"); module.exports = m.default; >module.exports = m.default : typeof m.default >module.exports : typeof m.default ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof m.default; } +>module : { exports: typeof m.default; } >exports : typeof m.default >m.default : { (): void; memberName: string; } >m : typeof m @@ -18,7 +18,7 @@ module.exports.memberName = "thing"; >module.exports.memberName = "thing" : "thing" >module.exports.memberName : string >module.exports : typeof m.default ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof m.default; } +>module : { exports: typeof m.default; } >exports : typeof m.default >memberName : string >"thing" : "thing" diff --git a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols index f5977077257..626e62530cc 100644 --- a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols +++ b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols @@ -19,9 +19,9 @@ function b() { } module.exports = {x, b} ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index1", Decl(index1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index1.js, 0, 0)) >module : Symbol(module, Decl(index1.js, 12, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index1", Decl(index1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index1.js, 0, 0)) >x : Symbol(x, Decl(index1.js, 14, 18)) >b : Symbol(b, Decl(index1.js, 14, 20)) diff --git a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types index 295015d90f3..77b15177e6e 100644 --- a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types +++ b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types @@ -23,10 +23,10 @@ function b() { } module.exports = {x, b} ->module.exports = {x, b} : typeof import("tests/cases/conformance/jsdoc/declarations/index1") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index1") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index1\"": typeof import("tests/cases/conformance/jsdoc/declarations/index1"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index1") +>module.exports = {x, b} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{x, b} : { x: (a: any) => string; b: () => number; } >x : (a: any) => string >b : () => number diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols index 3552f73f4a5..dad52ee5af6 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/index.js === module.exports = class Thing { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) >Thing : Symbol(Thing, Decl(index.js, 0, 16)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types index 301d4f4adc5..6eceea32fd2 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types @@ -2,7 +2,7 @@ module.exports = class Thing { >module.exports = class Thing { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class Thing { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Thing : typeof import("tests/cases/conformance/jsdoc/declarations/index") diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols index b4d32907ff6..35d8ed6240f 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/index.js === module.exports = class { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types index dc75cbed876..1712ef5170c 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types @@ -2,7 +2,7 @@ module.exports = class { >module.exports = class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols index aa5df49712f..2af24b70c59 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/index.js === module.exports = class { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) @@ -21,7 +21,7 @@ module.exports.Sub = class { >module.exports.Sub : Symbol(Sub, Decl(index.js, 7, 1)) >module.exports : Symbol(Sub, Decl(index.js, 7, 1)) >module : Symbol(module, Decl(index.js, 0, 0), Decl(index.js, 10, 27)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Sub : Symbol(Sub, Decl(index.js, 7, 1)) constructor() { @@ -29,9 +29,9 @@ module.exports.Sub = class { >this.instance : Symbol(Sub.instance, Decl(index.js, 9, 19)) >this : Symbol(Sub, Decl(index.js, 8, 20)) >instance : Symbol(Sub.instance, Decl(index.js, 9, 19)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0), Decl(index.js, 10, 27)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) } } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types index 904bbe06944..d5a96c5d90a 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types @@ -2,7 +2,7 @@ module.exports = class { >module.exports = class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") @@ -26,7 +26,7 @@ module.exports.Sub = class { >module.exports.Sub = class { constructor() { this.instance = new module.exports(10); }} : typeof Sub >module.exports.Sub : typeof Sub >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Sub : typeof Sub >class { constructor() { this.instance = new module.exports(10); }} : typeof Sub @@ -39,7 +39,7 @@ module.exports.Sub = class { >instance : any >new module.exports(10) : import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >10 : 10 } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols index a911c06ee2e..9ca39685537 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols @@ -13,7 +13,7 @@ class Q { >x : Symbol(Q.x, Decl(index.js, 3, 9)) } module.exports = class Q { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 5, 1)) >exports : Symbol(export=, Decl(index.js, 5, 1)) >Q : Symbol(Q, Decl(index.js, 6, 16)) @@ -30,7 +30,7 @@ module.exports.Another = Q; >module.exports.Another : Symbol(Another, Decl(index.js, 10, 1)) >module.exports : Symbol(Another, Decl(index.js, 10, 1)) >module : Symbol(module, Decl(index.js, 5, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Another : Symbol(Another, Decl(index.js, 10, 1)) >Q : Symbol(Q, Decl(index.js, 2, 1)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types index 36fdb5bfdc4..b2f0063ed4f 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types @@ -17,7 +17,7 @@ class Q { module.exports = class Q { >module.exports = class Q { constructor() { this.x = new A(); }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class Q { constructor() { this.x = new A(); }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Q : typeof import("tests/cases/conformance/jsdoc/declarations/index") @@ -36,7 +36,7 @@ module.exports.Another = Q; >module.exports.Another = Q : typeof Q >module.exports.Another : typeof Q >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Another : typeof Q >Q : typeof Q diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols index b2812517acf..548c12ef22f 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols @@ -3,7 +3,7 @@ class Foo {} >Foo : Symbol(Foo, Decl(index.js, 0, 0)) module.exports = new Foo(); ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 12)) >exports : Symbol(export=, Decl(index.js, 0, 12)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types index 868d6e684c6..9a14b3a44d9 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types @@ -5,7 +5,7 @@ class Foo {} module.exports = new Foo(); >module.exports = new Foo() : Foo >module.exports : Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": Foo; } +>module : { exports: Foo; } >exports : Foo >new Foo() : Foo >Foo : typeof Foo diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols index bf9e5186a9b..adc1711a2a0 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols @@ -10,7 +10,7 @@ class Foo { } module.exports = new Foo(); ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 1)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types index dda0c2e18a9..9f2d7f05726 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types @@ -14,7 +14,7 @@ class Foo { module.exports = new Foo(); >module.exports = new Foo() : Foo >module.exports : Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": Foo; } +>module : { exports: Foo; } >exports : Foo >new Foo() : Foo >Foo : typeof Foo diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols index 1da8f49afe8..fd3de426f08 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols @@ -10,7 +10,7 @@ class Foo { } module.exports = new Foo(); ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 1)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) @@ -19,6 +19,6 @@ module.exports.additional = 20; >module.exports.additional : Symbol(additional, Decl(index.js, 5, 27)) >module.exports : Symbol(additional, Decl(index.js, 5, 27)) >module : Symbol(module, Decl(index.js, 3, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >additional : Symbol(additional, Decl(index.js, 5, 27)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types index ee1de06b04e..ec7ab8a9a3a 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types @@ -14,7 +14,7 @@ class Foo { module.exports = new Foo(); >module.exports = new Foo() : { member: number; additional: number; } >module.exports : { member: number; additional: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { member: number; additional: number; }; } +>module : { exports: { member: number; additional: number; }; } >exports : { member: number; additional: number; } >new Foo() : Foo >Foo : typeof Foo @@ -23,7 +23,7 @@ module.exports.additional = 20; >module.exports.additional = 20 : 20 >module.exports.additional : number >module.exports : { member: number; additional: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { member: number; additional: number; }; } +>module : { exports: { member: number; additional: number; }; } >exports : { member: number; additional: number; } >additional : number >20 : 20 diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols index 77c74ae16ec..faca3eb2c96 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols @@ -4,7 +4,7 @@ module.exports.MyClass = function() { >module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) >module.exports : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) this.x = 1 @@ -15,9 +15,9 @@ module.exports.MyClass = function() { module.exports.MyClass.prototype = { >module.exports.MyClass.prototype : Symbol(MyClass.prototype, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 3, 1)) >module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) >prototype : Symbol(MyClass.prototype, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 3, 1)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types index d7f0ad52721..b79b7229109 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types @@ -3,9 +3,9 @@ module.exports.MyClass = function() { >module.exports.MyClass = function() { this.x = 1} : typeof MyClass >module.exports.MyClass : typeof MyClass ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction\"": typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >MyClass : typeof MyClass >function() { this.x = 1} : typeof MyClass @@ -20,9 +20,9 @@ module.exports.MyClass.prototype = { >module.exports.MyClass.prototype = { a: function() { }} : { a: () => void; } >module.exports.MyClass.prototype : { a: () => void; } >module.exports.MyClass : typeof MyClass ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction\"": typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >MyClass : typeof MyClass >prototype : { a: () => void; } >{ a: function() { }} : { a: () => void; } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols index 44f53888094..ffbf6b104ca 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols @@ -3,7 +3,7 @@ * @param {number} p */ module.exports = function (p) { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >module : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >p : Symbol(p, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 3, 27)) @@ -18,23 +18,23 @@ module.exports.Sub = function() { >module.exports.Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) >module.exports : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) this.instance = new module.exports(10); >this.instance : Symbol(Sub.instance, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 6, 33)) >this : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 6, 20)) >instance : Symbol(Sub.instance, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 6, 33)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) } module.exports.Sub.prototype = { } >module.exports.Sub.prototype : Symbol(Sub.prototype, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 8, 1)) >module.exports.Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) >prototype : Symbol(Sub.prototype, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 8, 1)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types index ce8f71cd81c..86bafadc908 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types @@ -5,7 +5,7 @@ module.exports = function (p) { >module.exports = function (p) { this.t = 12 + p;} : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >function (p) { this.t = 12 + p;} : typeof exports >p : number @@ -23,7 +23,7 @@ module.exports.Sub = function() { >module.exports.Sub = function() { this.instance = new module.exports(10);} : typeof Sub >module.exports.Sub : typeof Sub >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >Sub : typeof Sub >function() { this.instance = new module.exports(10);} : typeof Sub @@ -35,7 +35,7 @@ module.exports.Sub = function() { >instance : any >new module.exports(10) : exports >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >10 : 10 } @@ -44,7 +44,7 @@ module.exports.Sub.prototype = { } >module.exports.Sub.prototype : {} >module.exports.Sub : typeof Sub >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >Sub : typeof Sub >prototype : {} diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols index e939df536ff..6fb12e0a9eb 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols @@ -17,14 +17,14 @@ class Container { } module.exports = Container; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 6, 1)) >exports : Symbol(export=, Decl(index.js, 6, 1)) >Container : Symbol(Container, Decl(index.js, 0, 29)) === tests/cases/conformance/jsdoc/declarations/obj.js === module.exports = class Obj { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/obj", Decl(obj.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(obj.js, 0, 0)) >module : Symbol(export=, Decl(obj.js, 0, 0)) >exports : Symbol(export=, Decl(obj.js, 0, 0)) >Obj : Symbol(Obj, Decl(obj.js, 0, 16)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types index 179947956be..82d2ea30b94 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types @@ -22,7 +22,7 @@ class Container { module.exports = Container; >module.exports = Container : typeof Container >module.exports : typeof Container ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof Container; } +>module : { exports: typeof Container; } >exports : typeof Container >Container : typeof Container @@ -30,7 +30,7 @@ module.exports = Container; module.exports = class Obj { >module.exports = class Obj { constructor() { this.x = 12; }} : typeof import("tests/cases/conformance/jsdoc/declarations/obj") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/obj") ->module : { "\"tests/cases/conformance/jsdoc/declarations/obj\"": typeof import("tests/cases/conformance/jsdoc/declarations/obj"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/obj"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/obj") >class Obj { constructor() { this.x = 12; }} : typeof import("tests/cases/conformance/jsdoc/declarations/obj") >Obj : typeof import("tests/cases/conformance/jsdoc/declarations/obj") diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols index 4d799134331..b17ccca925b 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols @@ -10,7 +10,7 @@ const Strings = { }; module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 2)) >exports : Symbol(export=, Decl(index.js, 3, 2)) @@ -31,7 +31,7 @@ module.exports.Strings = Strings; >module.exports.Strings : Symbol(Strings, Decl(index.js, 10, 2)) >module.exports : Symbol(Strings, Decl(index.js, 10, 2)) >module : Symbol(module, Decl(index.js, 3, 2)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Strings : Symbol(Strings, Decl(index.js, 10, 2)) >Strings : Symbol(Strings, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types index 62c5a6dbe0e..746706d761f 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types @@ -15,7 +15,7 @@ const Strings = { module.exports = { >module.exports = { thing: "ok", also: "ok", desc: { item: "ok" }} : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } >module.exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } +>module : { exports: { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } >exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } >{ thing: "ok", also: "ok", desc: { item: "ok" }} : { thing: string; also: string; desc: { item: string; }; } @@ -40,7 +40,7 @@ module.exports.Strings = Strings; >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } +>module : { exports: { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } >exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols index 182a64ba32f..663302c925b 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols @@ -3,7 +3,7 @@ var x = 12; >x : Symbol(x, Decl(index.js, 0, 3)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 11)) >exports : Symbol(export=, Decl(index.js, 0, 11)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types index f482fa6f2eb..58970a4491b 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types @@ -6,7 +6,7 @@ var x = 12; module.exports = { >module.exports = { extends: 'base', more: { others: ['strs'] }, x} : { extends: string; more: { others: string[]; }; x: number; } >module.exports : { extends: string; more: { others: string[]; }; x: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { extends: string; more: { others: string[]; }; x: number; }; } +>module : { exports: { extends: string; more: { others: string[]; }; x: number; }; } >exports : { extends: string; more: { others: string[]; }; x: number; } >{ extends: 'base', more: { others: ['strs'] }, x} : { extends: string; more: { others: string[]; }; x: number; } diff --git a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols index 03cf1ce41b5..e61546206e1 100644 --- a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols +++ b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols @@ -3,9 +3,9 @@ Object.defineProperty(module.exports, "a", { value: function a() {} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"a" : Symbol(a, Decl(index.js, 0, 0)) >value : Symbol(value, Decl(index.js, 0, 44)) >a : Symbol(a, Decl(index.js, 0, 51)) @@ -14,9 +14,9 @@ Object.defineProperty(module.exports, "b", { value: function b() {} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"b" : Symbol(b, Decl(index.js, 0, 71), Decl(index.js, 3, 37)) >value : Symbol(value, Decl(index.js, 2, 44)) >b : Symbol(b, Decl(index.js, 2, 51)) @@ -26,9 +26,9 @@ Object.defineProperty(module.exports.b, "cat", { value: "cat" }); >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >module.exports.b : Symbol(b, Decl(index.js, 0, 71), Decl(index.js, 3, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 71), Decl(index.js, 3, 37)) >"cat" : Symbol(b.cat, Decl(index.js, 2, 71)) >value : Symbol(value, Decl(index.js, 3, 48)) @@ -47,9 +47,9 @@ Object.defineProperty(module.exports, "d", { value: d }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"d" : Symbol(d, Decl(index.js, 10, 51)) >value : Symbol(value, Decl(index.js, 11, 44)) >d : Symbol(d, Decl(index.js, 3, 65)) @@ -70,9 +70,9 @@ Object.defineProperty(module.exports, "e", { value: e }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"e" : Symbol(e, Decl(index.js, 20, 51)) >value : Symbol(value, Decl(index.js, 21, 44)) >e : Symbol(e, Decl(index.js, 11, 57)) @@ -92,9 +92,9 @@ Object.defineProperty(module.exports, "f", { value: f }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"f" : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) >value : Symbol(value, Decl(index.js, 30, 44)) >f : Symbol(f, Decl(index.js, 21, 57)) @@ -104,16 +104,16 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >module.exports.f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) >"self" : Symbol(f.self, Decl(index.js, 30, 57)) >value : Symbol(value, Decl(index.js, 31, 49)) >module.exports.f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) /** @@ -137,9 +137,9 @@ Object.defineProperty(module.exports, "g", { value: g }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"g" : Symbol(g, Decl(index.js, 39, 1)) >value : Symbol(value, Decl(index.js, 40, 44)) >g : Symbol(g, Decl(index.js, 31, 77)) @@ -166,9 +166,9 @@ Object.defineProperty(module.exports, "h", { value: hh }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"h" : Symbol(h, Decl(index.js, 49, 1)) >value : Symbol(value, Decl(index.js, 50, 44)) >hh : Symbol(hh, Decl(index.js, 40, 57)) @@ -177,9 +177,9 @@ Object.defineProperty(module.exports, "i", { value: function i(){} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"i" : Symbol(i, Decl(index.js, 50, 58)) >value : Symbol(value, Decl(index.js, 52, 44)) >i : Symbol(i, Decl(index.js, 52, 51)) @@ -188,15 +188,15 @@ Object.defineProperty(module.exports, "ii", { value: module.exports.i }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"ii" : Symbol(ii, Decl(index.js, 52, 70)) >value : Symbol(value, Decl(index.js, 53, 45)) >module.exports.i : Symbol(i, Decl(index.js, 50, 58)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 58)) // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings @@ -204,24 +204,24 @@ Object.defineProperty(module.exports, "jj", { value: module.exports.j }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"jj" : Symbol(jj, Decl(index.js, 53, 73)) >value : Symbol(value, Decl(index.js, 56, 45)) >module.exports.j : Symbol(j, Decl(index.js, 56, 73)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 73)) Object.defineProperty(module.exports, "j", { value: function j() {} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"j" : Symbol(j, Decl(index.js, 56, 73)) >value : Symbol(value, Decl(index.js, 57, 44)) >j : Symbol(j, Decl(index.js, 57, 51)) diff --git a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types index 9328ad0feec..ca0f272f55a 100644 --- a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types +++ b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types @@ -4,9 +4,9 @@ Object.defineProperty(module.exports, "a", { value: function a() {} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"a" : "a" >{ value: function a() {} } : { value: () => void; } >value : () => void @@ -18,9 +18,9 @@ Object.defineProperty(module.exports, "b", { value: function b() {} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"b" : "b" >{ value: function b() {} } : { value: () => void; } >value : () => void @@ -33,9 +33,9 @@ Object.defineProperty(module.exports.b, "cat", { value: "cat" }); >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >module.exports.b : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : () => void >"cat" : "cat" >{ value: "cat" } : { value: string; } @@ -59,9 +59,9 @@ Object.defineProperty(module.exports, "d", { value: d }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"d" : "d" >{ value: d } : { value: (a: number, b: number) => string; } >value : (a: number, b: number) => string @@ -86,9 +86,9 @@ Object.defineProperty(module.exports, "e", { value: e }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"e" : "e" >{ value: e } : { value: (a: T, b: U) => T & U; } >value : (a: T, b: U) => T & U @@ -110,9 +110,9 @@ Object.defineProperty(module.exports, "f", { value: f }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"f" : "f" >{ value: f } : { value: (a: T) => T; } >value : (a: T) => T @@ -124,17 +124,17 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >module.exports.f : (a: T) => T ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : (a: T) => T >"self" : "self" >{ value: module.exports.f } : { value: (a: T) => T; } >value : (a: T) => T >module.exports.f : (a: T) => T ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : (a: T) => T /** @@ -161,9 +161,9 @@ Object.defineProperty(module.exports, "g", { value: g }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"g" : "g" >{ value: g } : { value: (a: { x: string; }, b: { y: () => void; }) => void; } >value : (a: { x: string; }, b: { y: () => void; }) => void @@ -194,9 +194,9 @@ Object.defineProperty(module.exports, "h", { value: hh }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"h" : "h" >{ value: hh } : { value: (a: { x: string; }, b: { y: () => void; }) => void; } >value : (a: { x: string; }, b: { y: () => void; }) => void @@ -207,9 +207,9 @@ Object.defineProperty(module.exports, "i", { value: function i(){} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"i" : "i" >{ value: function i(){} } : { value: () => void; } >value : () => void @@ -221,16 +221,16 @@ Object.defineProperty(module.exports, "ii", { value: module.exports.i }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"ii" : "ii" >{ value: module.exports.i } : { value: () => void; } >value : () => void >module.exports.i : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : () => void // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings @@ -239,16 +239,16 @@ Object.defineProperty(module.exports, "jj", { value: module.exports.j }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"jj" : "jj" >{ value: module.exports.j } : { value: () => void; } >value : () => void >module.exports.j : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >j : () => void Object.defineProperty(module.exports, "j", { value: function j() {} }); @@ -256,9 +256,9 @@ Object.defineProperty(module.exports, "j", { value: function j() {} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"j" : "j" >{ value: function j() {} } : { value: () => void; } >value : () => void diff --git a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols index 27d5ca6f16f..ff53604acc8 100644 --- a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols +++ b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols @@ -4,7 +4,7 @@ function foo() { >foo : Symbol(foo, Decl(index.js, 0, 0)) module.exports = exports = function (o) { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 16)) >exports : Symbol(export=, Decl(index.js, 1, 16)) >exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types index dab4aaf35fc..10a3aa89276 100644 --- a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types +++ b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types @@ -4,10 +4,10 @@ function foo() { >foo : () => void module.exports = exports = function (o) { ->module.exports = exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : any ->module.exports : any ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": any; } ->exports : any +>module.exports = exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : { (o: any): any; methods: () => void; } +>module.exports : { (o: any): any; methods: () => void; } +>module : { exports: { (o: any): any; methods: () => void; }; } +>exports : { (o: any): any; methods: () => void; } >exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : (o: any) => any >exports : any >function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : (o: any) => any diff --git a/tests/baselines/reference/jsDeclarationsExportForms.symbols b/tests/baselines/reference/jsDeclarationsExportForms.symbols index 9196d1c8a29..4232aa53158 100644 --- a/tests/baselines/reference/jsDeclarationsExportForms.symbols +++ b/tests/baselines/reference/jsDeclarationsExportForms.symbols @@ -49,9 +49,9 @@ const ns = require("./cls"); >"./cls" : Symbol(ns, Decl(cls.js, 0, 0)) module.exports = { ns }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs", Decl(cjs.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cjs.js, 0, 0)) >module : Symbol(module, Decl(cjs.js, 0, 28)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs", Decl(cjs.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cjs.js, 0, 0)) >ns : Symbol(ns, Decl(cjs.js, 1, 18)) === tests/cases/conformance/jsdoc/declarations/cjs2.js === @@ -61,7 +61,7 @@ const ns = require("./cls"); >"./cls" : Symbol(ns, Decl(cls.js, 0, 0)) module.exports = ns; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs2", Decl(cjs2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cjs2.js, 0, 0)) >module : Symbol(export=, Decl(cjs2.js, 0, 28)) >exports : Symbol(export=, Decl(cjs2.js, 0, 28)) >ns : Symbol(ns, Decl(cjs2.js, 0, 5)) @@ -76,7 +76,7 @@ module.exports.ns = ns; >module.exports.ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >module.exports : Symbol(ns, Decl(cjs3.js, 0, 28)) >module : Symbol(module, Decl(cjs3.js, 0, 28)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs3", Decl(cjs3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cjs3.js, 0, 0)) >ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >ns : Symbol(ns, Decl(cjs3.js, 0, 5)) @@ -90,7 +90,7 @@ module.exports.names = ns; >module.exports.names : Symbol(names, Decl(cjs4.js, 0, 28)) >module.exports : Symbol(names, Decl(cjs4.js, 0, 28)) >module : Symbol(module, Decl(cjs4.js, 0, 28)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs4", Decl(cjs4.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cjs4.js, 0, 0)) >names : Symbol(names, Decl(cjs4.js, 0, 28)) >ns : Symbol(ns, Decl(cjs4.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsExportForms.types b/tests/baselines/reference/jsDeclarationsExportForms.types index 301ebc77331..910f991ef40 100644 --- a/tests/baselines/reference/jsDeclarationsExportForms.types +++ b/tests/baselines/reference/jsDeclarationsExportForms.types @@ -50,10 +50,10 @@ const ns = require("./cls"); >"./cls" : "./cls" module.exports = { ns }; ->module.exports = { ns } : typeof import("tests/cases/conformance/jsdoc/declarations/cjs") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs") ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs\"": typeof import("tests/cases/conformance/jsdoc/declarations/cjs"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs") +>module.exports = { ns } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ ns } : { ns: typeof ns; } >ns : typeof ns @@ -67,7 +67,7 @@ const ns = require("./cls"); module.exports = ns; >module.exports = ns : typeof ns >module.exports : typeof ns ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs2\"": typeof ns; } +>module : { exports: typeof ns; } >exports : typeof ns >ns : typeof ns @@ -81,9 +81,9 @@ const ns = require("./cls"); module.exports.ns = ns; >module.exports.ns = ns : typeof ns >module.exports.ns : typeof ns ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs3") ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs3\"": typeof import("tests/cases/conformance/jsdoc/declarations/cjs3"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >ns : typeof ns >ns : typeof ns @@ -97,9 +97,9 @@ const ns = require("./cls"); module.exports.names = ns; >module.exports.names = ns : typeof ns >module.exports.names : typeof ns ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs4") ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs4\"": typeof import("tests/cases/conformance/jsdoc/declarations/cjs4"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs4") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >names : typeof ns >ns : typeof ns diff --git a/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols b/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols index 5939221ce90..ab78b88d4c6 100644 --- a/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols +++ b/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols @@ -13,7 +13,7 @@ class Foo {} >Foo : Symbol(Foo, Decl(cls.js, 3, 2)) module.exports = Foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >module : Symbol(export=, Decl(cls.js, 4, 12)) >exports : Symbol(export=, Decl(cls.js, 4, 12)) >Foo : Symbol(Foo, Decl(cls.js, 3, 2)) @@ -22,7 +22,7 @@ module.exports.Strings = Strings; >module.exports.Strings : Symbol(Strings, Decl(cls.js, 5, 21)) >module.exports : Symbol(Strings, Decl(cls.js, 5, 21)) >module : Symbol(module, Decl(cls.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >Strings : Symbol(Strings, Decl(cls.js, 5, 21)) >Strings : Symbol(Strings, Decl(cls.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsExportSubAssignments.types b/tests/baselines/reference/jsDeclarationsExportSubAssignments.types index 7e00db8d97b..21fdde314e8 100644 --- a/tests/baselines/reference/jsDeclarationsExportSubAssignments.types +++ b/tests/baselines/reference/jsDeclarationsExportSubAssignments.types @@ -18,7 +18,7 @@ class Foo {} module.exports = Foo; >module.exports = Foo : typeof Foo >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Foo : typeof Foo @@ -26,7 +26,7 @@ module.exports.Strings = Strings; >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } diff --git a/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols b/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols index c6275c8b5af..3c3eb7bd4af 100644 --- a/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols +++ b/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols @@ -6,9 +6,9 @@ const errors = require("./errors"); >"./errors" : Symbol(errors, Decl(errors.js, 0, 0)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 1, 35)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) errors >errors : Symbol(errors, Decl(index.js, 3, 18)) @@ -29,9 +29,9 @@ class FancyError extends Error { } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/errors", Decl(errors.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(errors.js, 0, 0)) >module : Symbol(module, Decl(errors.js, 4, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/errors", Decl(errors.js, 0, 0)) +>exports : Symbol(module.exports, Decl(errors.js, 0, 0)) FancyError >FancyError : Symbol(FancyError, Decl(errors.js, 6, 18)) diff --git a/tests/baselines/reference/jsDeclarationsExportedClassAliases.types b/tests/baselines/reference/jsDeclarationsExportedClassAliases.types index c9be4e46037..d30166f32f5 100644 --- a/tests/baselines/reference/jsDeclarationsExportedClassAliases.types +++ b/tests/baselines/reference/jsDeclarationsExportedClassAliases.types @@ -7,10 +7,10 @@ const errors = require("./errors"); >"./errors" : "./errors" module.exports = { ->module.exports = { errors} : typeof import("tests/cases/conformance/jsdoc/declarations/utils/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/utils/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/utils/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/index") +>module.exports = { errors} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ errors} : { errors: typeof errors; } errors @@ -34,10 +34,10 @@ class FancyError extends Error { } module.exports = { ->module.exports = { FancyError} : typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors") ->module : { "\"tests/cases/conformance/jsdoc/declarations/utils/errors\"": typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors") +>module.exports = { FancyError} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ FancyError} : { FancyError: typeof FancyError; } FancyError diff --git a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols index d667f9d0cc2..8ec88e75f40 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols @@ -13,7 +13,7 @@ function Timer(timeout) { >timeout : Symbol(timeout, Decl(timer.js, 3, 15)) } module.exports = Timer; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/timer", Decl(timer.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(timer.js, 0, 0)) >module : Symbol(export=, Decl(timer.js, 5, 1)) >exports : Symbol(export=, Decl(timer.js, 5, 1)) >Timer : Symbol(Timer, Decl(timer.js, 0, 0)) @@ -36,7 +36,7 @@ function Hook(handle) { >handle : Symbol(handle, Decl(hook.js, 6, 14)) } module.exports = Hook; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/hook", Decl(hook.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(hook.js, 0, 0)) >module : Symbol(export=, Decl(hook.js, 8, 1)) >exports : Symbol(export=, Decl(hook.js, 8, 1)) >Hook : Symbol(Hook, Decl(hook.js, 0, 0)) @@ -112,7 +112,7 @@ Context.prototype = { } } module.exports = Context; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/context", Decl(context.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(context.js, 0, 0)) >module : Symbol(export=, Decl(context.js, 46, 1)) >exports : Symbol(export=, Decl(context.js, 46, 1)) >Context : Symbol(Context, Decl(context.js, 0, 0), Decl(context.js, 36, 1)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types index 3beb66f5ba9..c854b1514aa 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types +++ b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types @@ -16,7 +16,7 @@ function Timer(timeout) { module.exports = Timer; >module.exports = Timer : typeof Timer >module.exports : typeof Timer ->module : { "\"tests/cases/conformance/jsdoc/declarations/timer\"": typeof Timer; } +>module : { exports: typeof Timer; } >exports : typeof Timer >Timer : typeof Timer @@ -41,7 +41,7 @@ function Hook(handle) { module.exports = Hook; >module.exports = Hook : typeof Hook >module.exports : typeof Hook ->module : { "\"tests/cases/conformance/jsdoc/declarations/hook\"": typeof Hook; } +>module : { exports: typeof Hook; } >exports : typeof Hook >Hook : typeof Hook @@ -131,7 +131,7 @@ Context.prototype = { module.exports = Context; >module.exports = Context : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; } >module.exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/context\"": { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; }; } +>module : { exports: { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; }; } >exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; } >Context : typeof Context diff --git a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols index 7618a933e7d..8ceb0aeeebd 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/source.js === module.exports = MyClass; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/source", Decl(source.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(source.js, 0, 0)) >module : Symbol(export=, Decl(source.js, 0, 0)) >exports : Symbol(export=, Decl(source.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(source.js, 0, 25), Decl(source.js, 2, 21), Decl(source.js, 4, 40)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types index 318cf0b2dca..c068755f083 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types +++ b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types @@ -2,7 +2,7 @@ module.exports = MyClass; >module.exports = MyClass : typeof MyClass >module.exports : typeof MyClass ->module : { "\"tests/cases/conformance/jsdoc/declarations/source\"": typeof MyClass; } +>module : { exports: typeof MyClass; } >exports : typeof MyClass >MyClass : typeof MyClass diff --git a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols index fa5211a26e1..e3398661b14 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols @@ -15,7 +15,7 @@ foo.default = foo; >foo : Symbol(foo, Decl(index.js, 0, 0), Decl(index.js, 0, 17), Decl(index.js, 2, 14)) module.exports = foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 18)) >exports : Symbol(export=, Decl(index.js, 3, 18)) >foo : Symbol(foo, Decl(index.js, 0, 0), Decl(index.js, 0, 17), Decl(index.js, 2, 14)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types index 00203c61f0e..231acbaf887 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types +++ b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types @@ -19,7 +19,7 @@ foo.default = foo; module.exports = foo; >module.exports = foo : typeof foo >module.exports : typeof foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof foo; } +>module : { exports: typeof foo; } >exports : typeof foo >foo : typeof foo diff --git a/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols b/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols index b900de3c1f0..237e2f981ca 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols @@ -3,7 +3,7 @@ module.exports.a = function a() {} >module.exports.a : Symbol(a, Decl(index.js, 0, 0)) >module.exports : Symbol(a, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 18)) @@ -11,16 +11,16 @@ module.exports.b = function b() {} >module.exports.b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >module.exports : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >b : Symbol(b, Decl(index.js, 2, 18)) module.exports.b.cat = "cat"; >module.exports.b.cat : Symbol(b.cat, Decl(index.js, 2, 34)) >module.exports.b : Symbol(b.cat, Decl(index.js, 2, 34)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >cat : Symbol(b.cat, Decl(index.js, 2, 34)) @@ -28,16 +28,16 @@ module.exports.c = function c() {} >module.exports.c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >module.exports : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >c : Symbol(c, Decl(index.js, 5, 18)) module.exports.c.Cls = class {} >module.exports.c.Cls : Symbol(c.Cls, Decl(index.js, 5, 34)) >module.exports.c : Symbol(c.Cls, Decl(index.js, 5, 34)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >Cls : Symbol(c.Cls, Decl(index.js, 5, 34)) @@ -50,7 +50,7 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } >module.exports.d : Symbol(d, Decl(index.js, 6, 31)) >module.exports : Symbol(d, Decl(index.js, 6, 31)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >d : Symbol(d, Decl(index.js, 6, 31)) >d : Symbol(d, Decl(index.js, 13, 18)) >a : Symbol(a, Decl(index.js, 13, 30)) @@ -66,7 +66,7 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } >module.exports.e : Symbol(e, Decl(index.js, 13, 70)) >module.exports : Symbol(e, Decl(index.js, 13, 70)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >e : Symbol(e, Decl(index.js, 13, 70)) >e : Symbol(e, Decl(index.js, 21, 18)) >a : Symbol(a, Decl(index.js, 21, 30)) @@ -80,7 +80,7 @@ module.exports.f = function f(a) { >module.exports.f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >module.exports : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >f : Symbol(f, Decl(index.js, 27, 18)) >a : Symbol(a, Decl(index.js, 27, 30)) @@ -91,15 +91,15 @@ module.exports.f = function f(a) { module.exports.f.self = module.exports.f; >module.exports.f.self : Symbol(f.self, Decl(index.js, 29, 1)) >module.exports.f : Symbol(f.self, Decl(index.js, 29, 1)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >self : Symbol(f.self, Decl(index.js, 29, 1)) >module.exports.f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) /** @@ -124,7 +124,7 @@ module.exports.g = g; >module.exports.g : Symbol(g, Decl(index.js, 38, 1)) >module.exports : Symbol(g, Decl(index.js, 38, 1)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >g : Symbol(g, Decl(index.js, 38, 1)) >g : Symbol(g, Decl(index.js, 30, 41)) @@ -150,7 +150,7 @@ module.exports.h = hh; >module.exports.h : Symbol(h, Decl(index.js, 48, 1)) >module.exports : Symbol(h, Decl(index.js, 48, 1)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >h : Symbol(h, Decl(index.js, 48, 1)) >hh : Symbol(hh, Decl(index.js, 40, 21)) @@ -158,7 +158,7 @@ module.exports.i = function i() {} >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) >module.exports : Symbol(i, Decl(index.js, 50, 22)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) >i : Symbol(i, Decl(index.js, 52, 18)) @@ -166,12 +166,12 @@ module.exports.ii = module.exports.i; >module.exports.ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports : Symbol(ii, Decl(index.js, 52, 34)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings @@ -179,19 +179,19 @@ module.exports.jj = module.exports.j; >module.exports.jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports : Symbol(jj, Decl(index.js, 53, 37)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) module.exports.j = function j() {} >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) >module.exports : Symbol(j, Decl(index.js, 56, 37)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) >j : Symbol(j, Decl(index.js, 57, 18)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionsCjs.types b/tests/baselines/reference/jsDeclarationsFunctionsCjs.types index 15bba1a331d..e08e5e1ba87 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionsCjs.types +++ b/tests/baselines/reference/jsDeclarationsFunctionsCjs.types @@ -2,9 +2,9 @@ module.exports.a = function a() {} >module.exports.a = function a() {} : () => void >module.exports.a : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >a : () => void >function a() {} : () => void >a : () => void @@ -12,9 +12,9 @@ module.exports.a = function a() {} module.exports.b = function b() {} >module.exports.b = function b() {} : { (): void; cat: string; } >module.exports.b : { (): void; cat: string; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : { (): void; cat: string; } >function b() {} : { (): void; cat: string; } >b : { (): void; cat: string; } @@ -23,9 +23,9 @@ module.exports.b.cat = "cat"; >module.exports.b.cat = "cat" : "cat" >module.exports.b.cat : string >module.exports.b : { (): void; cat: string; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : { (): void; cat: string; } >cat : string >"cat" : "cat" @@ -33,9 +33,9 @@ module.exports.b.cat = "cat"; module.exports.c = function c() {} >module.exports.c = function c() {} : { (): void; Cls: typeof Cls; } >module.exports.c : { (): void; Cls: typeof Cls; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >c : { (): void; Cls: typeof Cls; } >function c() {} : { (): void; Cls: typeof Cls; } >c : { (): void; Cls: typeof Cls; } @@ -44,9 +44,9 @@ module.exports.c.Cls = class {} >module.exports.c.Cls = class {} : typeof Cls >module.exports.c.Cls : typeof Cls >module.exports.c : { (): void; Cls: typeof Cls; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >c : { (): void; Cls: typeof Cls; } >Cls : typeof Cls >class {} : typeof Cls @@ -59,9 +59,9 @@ module.exports.c.Cls = class {} module.exports.d = function d(a, b) { return /** @type {*} */(null); } >module.exports.d = function d(a, b) { return /** @type {*} */(null); } : (a: number, b: number) => string >module.exports.d : (a: number, b: number) => string ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >d : (a: number, b: number) => string >function d(a, b) { return /** @type {*} */(null); } : (a: number, b: number) => string >d : (a: number, b: number) => string @@ -79,9 +79,9 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } module.exports.e = function e(a, b) { return /** @type {*} */(null); } >module.exports.e = function e(a, b) { return /** @type {*} */(null); } : (a: T, b: U) => T & U >module.exports.e : (a: T, b: U) => T & U ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >e : (a: T, b: U) => T & U >function e(a, b) { return /** @type {*} */(null); } : (a: T, b: U) => T & U >e : (a: T, b: U) => T & U @@ -97,9 +97,9 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } module.exports.f = function f(a) { >module.exports.f = function f(a) { return a;} : { (a: T): T; self: any; } >module.exports.f : { (a: T): T; self: any; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : { (a: T): T; self: any; } >function f(a) { return a;} : { (a: T): T; self: any; } >f : { (a: T): T; self: any; } @@ -112,15 +112,15 @@ module.exports.f.self = module.exports.f; >module.exports.f.self = module.exports.f : { (a: T): T; self: any; } >module.exports.f.self : { (a: T): T; self: any; } >module.exports.f : { (a: T): T; self: any; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : { (a: T): T; self: any; } >self : { (a: T): T; self: any; } >module.exports.f : { (a: T): T; self: any; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : { (a: T): T; self: any; } /** @@ -146,9 +146,9 @@ function g(a, b) { module.exports.g = g; >module.exports.g = g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >module.exports.g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void @@ -175,18 +175,18 @@ function hh(a, b) { module.exports.h = hh; >module.exports.h = hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >module.exports.h : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >h : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void module.exports.i = function i() {} >module.exports.i = function i() {} : () => void >module.exports.i : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : () => void >function i() {} : () => void >i : () => void @@ -194,36 +194,36 @@ module.exports.i = function i() {} module.exports.ii = module.exports.i; >module.exports.ii = module.exports.i : () => void >module.exports.ii : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >ii : () => void >module.exports.i : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : () => void // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings module.exports.jj = module.exports.j; >module.exports.jj = module.exports.j : () => void >module.exports.jj : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >jj : () => void >module.exports.j : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >j : () => void module.exports.j = function j() {} >module.exports.j = function j() {} : () => void >module.exports.j : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >j : () => void >function j() {} : () => void >j : () => void diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols index 6127c7d6af7..aad4371015d 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols @@ -39,9 +39,9 @@ function testFn(input) { } module.exports = {testFn, testFnTypes}; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/file2", Decl(file2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(file2.js, 0, 0)) >module : Symbol(module, Decl(file2.js, 25, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/file2", Decl(file2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(file2.js, 0, 0)) >testFn : Symbol(testFn, Decl(file2.js, 27, 18)) >testFnTypes : Symbol(testFnTypes, Decl(file2.js, 27, 25)) diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types index df5d014acfd..3434daf8b62 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types @@ -47,10 +47,10 @@ function testFn(input) { } module.exports = {testFn, testFnTypes}; ->module.exports = {testFn, testFnTypes} : typeof import("tests/cases/conformance/jsdoc/declarations/file2") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/file2") ->module : { "\"tests/cases/conformance/jsdoc/declarations/file2\"": typeof import("tests/cases/conformance/jsdoc/declarations/file2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/file2") +>module.exports = {testFn, testFnTypes} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{testFn, testFnTypes} : { testFn: (input: testFnTypes.input) => number; testFnTypes: { [x: string]: any; }; } >testFn : (input: testFnTypes.input) => number >testFnTypes : { [x: string]: any; } diff --git a/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols b/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols index 7cf1f7a1b23..3d5ffe6c367 100644 --- a/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols +++ b/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols @@ -10,7 +10,7 @@ const x = {x: 12}; >x : Symbol(x, Decl(mod1.js, 6, 11)) module.exports = x; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/folder/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 6, 18)) >exports : Symbol(export=, Decl(mod1.js, 6, 18)) >x : Symbol(x, Decl(mod1.js, 6, 5)) @@ -22,7 +22,7 @@ const items = [{x: 12}]; >x : Symbol(x, Decl(index.js, 1, 16)) module.exports = items; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 24)) >exports : Symbol(export=, Decl(index.js, 1, 24)) >items : Symbol(items, Decl(index.js, 1, 5)) diff --git a/tests/baselines/reference/jsDeclarationsImportTypeBundled.types b/tests/baselines/reference/jsDeclarationsImportTypeBundled.types index 66eca757812..c11b49b1c27 100644 --- a/tests/baselines/reference/jsDeclarationsImportTypeBundled.types +++ b/tests/baselines/reference/jsDeclarationsImportTypeBundled.types @@ -14,7 +14,7 @@ const x = {x: 12}; module.exports = x; >module.exports = x : { x: number; } >module.exports : { x: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/folder/mod1\"": { x: number; }; } +>module : { exports: { x: number; }; } >exports : { x: number; } >x : Item @@ -30,7 +30,7 @@ const items = [{x: 12}]; module.exports = items; >module.exports = items : { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; } >module.exports : { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; }; } +>module : { exports: { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; }; } >exports : { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; } >items : import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[] diff --git a/tests/baselines/reference/jsDeclarationsJson.symbols b/tests/baselines/reference/jsDeclarationsJson.symbols index 9e276decbc6..1ce0e71b188 100644 --- a/tests/baselines/reference/jsDeclarationsJson.symbols +++ b/tests/baselines/reference/jsDeclarationsJson.symbols @@ -5,7 +5,7 @@ const j = require("./obj.json"); >"./obj.json" : Symbol("tests/cases/conformance/jsdoc/declarations/obj", Decl(obj.json, 0, 0)) module.exports = j; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 32)) >exports : Symbol(export=, Decl(index.js, 0, 32)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsJson.types b/tests/baselines/reference/jsDeclarationsJson.types index 3294656ba33..a7c977ccb45 100644 --- a/tests/baselines/reference/jsDeclarationsJson.types +++ b/tests/baselines/reference/jsDeclarationsJson.types @@ -8,7 +8,7 @@ const j = require("./obj.json"); module.exports = j; >module.exports = j : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } >module.exports : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; }; } +>module : { exports: { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; }; } >exports : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } >j : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } diff --git a/tests/baselines/reference/jsDeclarationsPackageJson.symbols b/tests/baselines/reference/jsDeclarationsPackageJson.symbols index 7f09a886bab..d64a82ca85c 100644 --- a/tests/baselines/reference/jsDeclarationsPackageJson.symbols +++ b/tests/baselines/reference/jsDeclarationsPackageJson.symbols @@ -5,7 +5,7 @@ const j = require("./package.json"); >"./package.json" : Symbol("tests/cases/conformance/jsdoc/declarations/package", Decl(package.json, 0, 0)) module.exports = j; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 36)) >exports : Symbol(export=, Decl(index.js, 0, 36)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsPackageJson.types b/tests/baselines/reference/jsDeclarationsPackageJson.types index 46faaf89c8e..ce8b3808845 100644 --- a/tests/baselines/reference/jsDeclarationsPackageJson.types +++ b/tests/baselines/reference/jsDeclarationsPackageJson.types @@ -8,7 +8,7 @@ const j = require("./package.json"); module.exports = j; >module.exports = j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } >module.exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } +>module : { exports: { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } >exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } >j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols index 0d20e28fa52..a02e7415afa 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols @@ -20,7 +20,7 @@ BaseFactory.Base = Base; >Base : Symbol(Base, Decl(base.js, 0, 0)) module.exports = BaseFactory; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/base", Decl(base.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(base.js, 0, 0)) >module : Symbol(export=, Decl(base.js, 8, 24)) >exports : Symbol(export=, Decl(base.js, 8, 24)) >BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5), Decl(base.js, 6, 2)) diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types index 17f9522ca5c..154977f9a06 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types @@ -25,7 +25,7 @@ BaseFactory.Base = Base; module.exports = BaseFactory; >module.exports = BaseFactory : { (): Base; Base: typeof Base; } >module.exports : { (): Base; Base: typeof Base; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/base\"": { (): Base; Base: typeof Base; }; } +>module : { exports: { (): Base; Base: typeof Base; }; } >exports : { (): Base; Base: typeof Base; } >BaseFactory : { (): Base; Base: typeof Base; } diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols index f23f9f84f2d..01b7c3f4c51 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols @@ -20,7 +20,7 @@ BaseFactory.Base = Base; >Base : Symbol(Base, Decl(base.js, 0, 0)) module.exports = BaseFactory; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/base", Decl(base.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(base.js, 0, 0)) >module : Symbol(export=, Decl(base.js, 8, 24)) >exports : Symbol(export=, Decl(base.js, 8, 24)) >BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5), Decl(base.js, 6, 2)) diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types index 196e7c7dff0..49d8472667c 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types @@ -25,7 +25,7 @@ BaseFactory.Base = Base; module.exports = BaseFactory; >module.exports = BaseFactory : { (): Base; Base: typeof Base; } >module.exports : { (): Base; Base: typeof Base; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/base\"": { (): Base; Base: typeof Base; }; } +>module : { exports: { (): Base; Base: typeof Base; }; } >exports : { (): Base; Base: typeof Base; } >BaseFactory : { (): Base; Base: typeof Base; } diff --git a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols index 221e0bd0d03..8fcefa34007 100644 --- a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols +++ b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols @@ -3,7 +3,7 @@ class Foo {} >Foo : Symbol(Foo, Decl(cls.js, 0, 0)) module.exports = Foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >module : Symbol(export=, Decl(cls.js, 0, 12)) >exports : Symbol(export=, Decl(cls.js, 0, 12)) >Foo : Symbol(Foo, Decl(cls.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types index 8597d00c34a..60d4c23c517 100644 --- a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types +++ b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types @@ -5,7 +5,7 @@ class Foo {} module.exports = Foo; >module.exports = Foo : typeof Foo >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Foo : typeof Foo diff --git a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols index 2fbefda6a0b..1b6a5d0fea4 100644 --- a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols +++ b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols @@ -7,9 +7,9 @@ const { SomeClass, SomeClass: Another } = require('./lib'); >'./lib' : Symbol("tests/cases/conformance/jsdoc/declarations/lib", Decl(lib.js, 0, 0)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/main", Decl(main.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(main.js, 0, 0)) >module : Symbol(module, Decl(main.js, 0, 59)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/main", Decl(main.js, 0, 0)) +>exports : Symbol(module.exports, Decl(main.js, 0, 0)) SomeClass, >SomeClass : Symbol(SomeClass, Decl(main.js, 2, 18)) @@ -41,9 +41,9 @@ class SomeClass { } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/lib", Decl(lib.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lib.js, 0, 0)) >module : Symbol(module, Decl(lib.js, 11, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/lib", Decl(lib.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lib.js, 0, 0)) bar, >bar : Symbol(bar, Decl(lib.js, 13, 18)) diff --git a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types index 55e56a9d2e5..ec3f3f47f3f 100644 --- a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types +++ b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types @@ -8,10 +8,10 @@ const { SomeClass, SomeClass: Another } = require('./lib'); >'./lib' : "./lib" module.exports = { ->module.exports = { SomeClass, Another} : typeof import("tests/cases/conformance/jsdoc/declarations/main") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/main") ->module : { "\"tests/cases/conformance/jsdoc/declarations/main\"": typeof import("tests/cases/conformance/jsdoc/declarations/main"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/main") +>module.exports = { SomeClass, Another} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ SomeClass, Another} : { SomeClass: typeof SomeClass; Another: typeof SomeClass; } SomeClass, @@ -46,10 +46,10 @@ class SomeClass { } module.exports = { ->module.exports = { bar, SomeClass} : typeof import("tests/cases/conformance/jsdoc/declarations/lib") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/lib") ->module : { "\"tests/cases/conformance/jsdoc/declarations/lib\"": typeof import("tests/cases/conformance/jsdoc/declarations/lib"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/lib") +>module.exports = { bar, SomeClass} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ bar, SomeClass} : { bar: (a: string) => string; SomeClass: typeof SomeClass; } bar, diff --git a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols index 570f2dc9e25..a645f55f6f6 100644 --- a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols +++ b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols @@ -34,9 +34,9 @@ class Rectangle { } module.exports = { Rectangle }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/rectangle", Decl(rectangle.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(rectangle.js, 0, 0)) >module : Symbol(module, Decl(rectangle.js, 4, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/rectangle", Decl(rectangle.js, 0, 0)) +>exports : Symbol(module.exports, Decl(rectangle.js, 0, 0)) >Rectangle : Symbol(Rectangle, Decl(rectangle.js, 6, 18)) === tests/cases/conformance/jsdoc/declarations/index.js === @@ -84,8 +84,8 @@ class Render { } module.exports = { Render }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 20, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Render : Symbol(Render, Decl(index.js, 22, 18)) diff --git a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types index 9ec6c7e94f6..5b90275da04 100644 --- a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types +++ b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types @@ -41,10 +41,10 @@ class Rectangle { } module.exports = { Rectangle }; ->module.exports = { Rectangle } : typeof import("tests/cases/conformance/jsdoc/declarations/rectangle") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/rectangle") ->module : { "\"tests/cases/conformance/jsdoc/declarations/rectangle\"": typeof import("tests/cases/conformance/jsdoc/declarations/rectangle"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/rectangle") +>module.exports = { Rectangle } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Rectangle } : { Rectangle: typeof Rectangle; } >Rectangle : typeof Rectangle @@ -98,10 +98,10 @@ class Render { } module.exports = { Render }; ->module.exports = { Render } : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports = { Render } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Render } : { Render: typeof Render; } >Render : typeof Render diff --git a/tests/baselines/reference/jsDeclarationsTypeAliases.symbols b/tests/baselines/reference/jsDeclarationsTypeAliases.symbols index 55e7851cc03..eb0d5dd3173 100644 --- a/tests/baselines/reference/jsDeclarationsTypeAliases.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeAliases.symbols @@ -49,9 +49,9 @@ class ExportedThing { >z : Symbol(ExportedThing.z, Decl(mixed.js, 10, 21)) } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/mixed", Decl(mixed.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mixed.js, 0, 0)) >module : Symbol(module, Decl(mixed.js, 12, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/mixed", Decl(mixed.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mixed.js, 0, 0)) doTheThing, >doTheThing : Symbol(doTheThing, Decl(mixed.js, 13, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypeAliases.types b/tests/baselines/reference/jsDeclarationsTypeAliases.types index 4684b9e6b69..a9e5e74f004 100644 --- a/tests/baselines/reference/jsDeclarationsTypeAliases.types +++ b/tests/baselines/reference/jsDeclarationsTypeAliases.types @@ -53,10 +53,10 @@ class ExportedThing { >"ok" : "ok" } module.exports = { ->module.exports = { doTheThing, ExportedThing,} : typeof import("tests/cases/conformance/jsdoc/declarations/mixed") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/mixed") ->module : { "\"tests/cases/conformance/jsdoc/declarations/mixed\"": typeof import("tests/cases/conformance/jsdoc/declarations/mixed"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/mixed") +>module.exports = { doTheThing, ExportedThing,} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ doTheThing, ExportedThing,} : { doTheThing: (x: number) => SomeType; ExportedThing: typeof ExportedThing; } doTheThing, diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols index 96a988e2e11..b09982ed211 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols @@ -18,7 +18,7 @@ const items = []; >items : Symbol(items, Decl(index.js, 1, 5)) module.exports = items; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 17)) >exports : Symbol(export=, Decl(index.js, 1, 17)) >items : Symbol(items, Decl(index.js, 1, 5)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types index 9ff78e86ea8..47b41068bce 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types @@ -18,7 +18,7 @@ const items = []; module.exports = items; >module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } +>module : { exports: { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } >exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >items : Item[] diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols index 283b16b647a..079eff57aa6 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols @@ -5,7 +5,7 @@ const items = require("./some-mod")(); >"./some-mod" : Symbol("tests/cases/conformance/jsdoc/declarations/some-mod", Decl(some-mod.d.ts, 0, 0)) module.exports = items; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 38)) >exports : Symbol(export=, Decl(index.js, 0, 38)) >items : Symbol(items, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types index 3675a48b2d9..1f003fc726c 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types @@ -9,7 +9,7 @@ const items = require("./some-mod")(); module.exports = items; >module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } +>module : { exports: { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } >exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >items : Item[] diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences.symbols b/tests/baselines/reference/jsDeclarationsTypeReferences.symbols index 8c71d987023..0975f66f470 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReferences.symbols @@ -13,9 +13,9 @@ const thing = new Something(); >Something : Symbol(Something, Decl(index.js, 2, 5)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 4, 30)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) thing >thing : Symbol(thing, Decl(index.js, 6, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences.types b/tests/baselines/reference/jsDeclarationsTypeReferences.types index 3f78aaa5274..6696dfdbeaf 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences.types +++ b/tests/baselines/reference/jsDeclarationsTypeReferences.types @@ -15,10 +15,10 @@ const thing = new Something(); >Something : typeof Something module.exports = { ->module.exports = { thing} : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports = { thing} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ thing} : { thing: Something; } thing diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols b/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols index 6134c32050e..04db53fcb70 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols @@ -13,9 +13,9 @@ const thing = a + m >m : Symbol(m, Decl(index.js, 0, 9)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 2, 19)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) thing >thing : Symbol(thing, Decl(index.js, 4, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences2.types b/tests/baselines/reference/jsDeclarationsTypeReferences2.types index aaa5c5618b8..01ee23c5553 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences2.types +++ b/tests/baselines/reference/jsDeclarationsTypeReferences2.types @@ -15,10 +15,10 @@ const thing = a + m >m : number module.exports = { ->module.exports = { thing} : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports = { thing} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ thing} : { thing: number; } thing diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols b/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols index 018debbe227..079178bd492 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols @@ -12,15 +12,15 @@ module.exports.A = {} >module.exports.A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) >module.exports : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) >module : Symbol(module, Decl(index.js, 2, 42)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) module.exports.A.B = { >module.exports.A.B : Symbol(A.B, Decl(index.js, 3, 21)) >module.exports.A : Symbol(A.B, Decl(index.js, 3, 21)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 2, 42)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) >B : Symbol(A.B, Decl(index.js, 3, 21)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences3.types b/tests/baselines/reference/jsDeclarationsTypeReferences3.types index bb41517417b..8e19fc9fbf3 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences3.types +++ b/tests/baselines/reference/jsDeclarationsTypeReferences3.types @@ -12,9 +12,9 @@ const Something = require("fs").Something; module.exports.A = {} >module.exports.A = {} : typeof A >module.exports.A : typeof A ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >A : typeof A >{} : {} @@ -22,9 +22,9 @@ module.exports.A.B = { >module.exports.A.B = { thing: new Something()} : { thing: Something; } >module.exports.A.B : { thing: Something; } >module.exports.A : typeof A ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >A : typeof A >B : { thing: Something; } >{ thing: new Something()} : { thing: Something; } diff --git a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols index 4a4fb51c1d3..f54c73d5354 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols +++ b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols @@ -15,7 +15,7 @@ class Conn { } module.exports = Conn; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/conn", Decl(conn.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(conn.js, 0, 0)) >module : Symbol(export=, Decl(conn.js, 8, 1)) >exports : Symbol(export=, Decl(conn.js, 8, 1)) >Conn : Symbol(Conn, Decl(conn.js, 0, 0)) @@ -51,9 +51,9 @@ class Wrap { } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/usage", Decl(usage.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(usage.js, 0, 0)) >module : Symbol(module, Decl(usage.js, 13, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/usage", Decl(usage.js, 0, 0)) +>exports : Symbol(module.exports, Decl(usage.js, 0, 0)) Wrap >Wrap : Symbol(Wrap, Decl(usage.js, 15, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types index 906bdf516b2..39c4eec9d19 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types +++ b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types @@ -18,7 +18,7 @@ class Conn { module.exports = Conn; >module.exports = Conn : typeof Conn >module.exports : typeof Conn ->module : { "\"tests/cases/conformance/jsdoc/declarations/conn\"": typeof Conn; } +>module : { exports: typeof Conn; } >exports : typeof Conn >Conn : typeof Conn @@ -56,10 +56,10 @@ class Wrap { } module.exports = { ->module.exports = { Wrap} : typeof import("tests/cases/conformance/jsdoc/declarations/usage") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/usage") ->module : { "\"tests/cases/conformance/jsdoc/declarations/usage\"": typeof import("tests/cases/conformance/jsdoc/declarations/usage"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/usage") +>module.exports = { Wrap} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Wrap} : { Wrap: typeof Wrap; } Wrap diff --git a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols index 8ff60344990..c41b8b567f1 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols +++ b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols @@ -28,7 +28,7 @@ class MainThreadTasks { } module.exports = MainThreadTasks; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 18, 1)) >exports : Symbol(export=, Decl(index.js, 18, 1)) >MainThreadTasks : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) @@ -76,9 +76,9 @@ const taskNameToGroup = {}; >taskNameToGroup : Symbol(taskNameToGroup, Decl(module.js, 24, 5)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/module", Decl(module.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(module.js, 0, 0)) >module : Symbol(module, Decl(module.js, 24, 27)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/module", Decl(module.js, 0, 0)) +>exports : Symbol(module.exports, Decl(module.js, 0, 0)) taskGroups, >taskGroups : Symbol(taskGroups, Decl(module.js, 26, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types index f3556aae0a4..f79cf2ecd15 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types +++ b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types @@ -31,7 +31,7 @@ class MainThreadTasks { module.exports = MainThreadTasks; >module.exports = MainThreadTasks : typeof MainThreadTasks >module.exports : typeof MainThreadTasks ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof MainThreadTasks; } +>module : { exports: typeof MainThreadTasks; } >exports : typeof MainThreadTasks >MainThreadTasks : typeof MainThreadTasks @@ -86,10 +86,10 @@ const taskNameToGroup = {}; >{} : {} module.exports = { ->module.exports = { taskGroups, taskNameToGroup,} : typeof import("tests/cases/conformance/jsdoc/declarations/module") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/module") ->module : { "\"tests/cases/conformance/jsdoc/declarations/module\"": typeof import("tests/cases/conformance/jsdoc/declarations/module"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/module") +>module.exports = { taskGroups, taskNameToGroup,} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ taskGroups, taskNameToGroup,} : { taskGroups: { parseHTML: { id: "parseHTML"; label: string; }; styleLayout: { id: "styleLayout"; label: string; }; }; taskNameToGroup: { [x: string]: TaskGroup; }; } taskGroups, diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols index fbdb5079a30..faf6568b3b1 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols @@ -8,9 +8,9 @@ class Abcde { } module.exports = { ->module.exports : Symbol("/test", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) +>module.exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) >module : Symbol(module, Decl(test.js, 3, 1)) ->exports : Symbol("/test", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) +>exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) Abcde >Abcde : Symbol(Abcde, Decl(test.js, 5, 18)) diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types index 3fad5767c48..7bf746fe865 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types @@ -8,10 +8,10 @@ class Abcde { } module.exports = { ->module.exports = { Abcde} : typeof import("/test") ->module.exports : typeof import("/test") ->module : { "\"/test\"": typeof import("/test"); } ->exports : typeof import("/test") +>module.exports = { Abcde} : typeof module."./test" +>module.exports : typeof module."./test" +>module : { exports: typeof module."./test"; } +>exports : typeof module."./test" >{ Abcde} : { Abcde: typeof Abcde; } Abcde diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols index 02da41d876c..6acf6ed8095 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols @@ -1,6 +1,6 @@ === /test.js === module.exports = { ->module.exports : Symbol("/test", Decl(test.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(test.js, 0, 0)) >module : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 27)) >exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 27)) diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types index fa6e940f60b..dac05b430c3 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types @@ -2,7 +2,7 @@ module.exports = { >module.exports = { a: "ok"} : { a: string | number; } >module.exports : { a: string | number; } ->module : { "\"/test\"": { a: string | number; }; } +>module : { exports: { a: string | number; }; } >exports : { a: string | number; } >{ a: "ok"} : { a: string; } diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols index c56d3898510..bf6d3fd676e 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols @@ -3,11 +3,11 @@ module.exports.x = 1; >module.exports.x : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) >module.exports : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) >module : Symbol(module, Decl(x.js, 0, 0)) ->exports : Symbol("/x", Decl(x.js, 0, 0)) +>exports : Symbol(module.exports, Decl(x.js, 0, 0)) >x : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) module.exports = require("./y.js"); ->module.exports : Symbol("/x", Decl(x.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(x.js, 0, 0)) >module : Symbol(export=, Decl(x.js, 0, 21)) >exports : Symbol(export=, Decl(x.js, 0, 21)) >require : Symbol(require) diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types index 6c66c601ffc..d940bfd3689 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types @@ -3,7 +3,7 @@ module.exports.x = 1; >module.exports.x = 1 : 1 >module.exports.x : number >module.exports : typeof import("/y") ->module : { "\"/x\"": typeof import("/y"); } +>module : { exports: typeof import("/y"); } >exports : typeof import("/y") >x : number >1 : 1 @@ -11,7 +11,7 @@ module.exports.x = 1; module.exports = require("./y.js"); >module.exports = require("./y.js") : typeof import("/y") >module.exports : typeof import("/y") ->module : { "\"/x\"": typeof import("/y"); } +>module : { exports: typeof import("/y"); } >exports : typeof import("/y") >require("./y.js") : typeof import("/y") >require : any diff --git a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols index 3b1f9b780f9..9585ec717a4 100644 --- a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols +++ b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/foo.js === module.exports = function () { ->module.exports : Symbol("tests/cases/compiler/foo", Decl(foo.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(foo.js, 0, 0)) >module : Symbol(export=, Decl(foo.js, 0, 0)) >exports : Symbol(export=, Decl(foo.js, 0, 0)) diff --git a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types index c480a6e2556..52922bcefb6 100644 --- a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types +++ b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types @@ -2,7 +2,7 @@ module.exports = function () { >module.exports = function () { class A { } return { c: A.b = 1, }} : () => { c: number; } >module.exports : () => { c: number; } ->module : { "\"tests/cases/compiler/foo\"": () => { c: number; }; } +>module : { exports: () => { c: number; }; } >exports : () => { c: number; } >function () { class A { } return { c: A.b = 1, }} : () => { c: number; } diff --git a/tests/baselines/reference/jsdocImportType.symbols b/tests/baselines/reference/jsdocImportType.symbols index aeb548cd84f..51860f3f941 100644 --- a/tests/baselines/reference/jsdocImportType.symbols +++ b/tests/baselines/reference/jsdocImportType.symbols @@ -49,7 +49,7 @@ class Chunk { } } module.exports = Chunk; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 5, 1)) >exports : Symbol(export=, Decl(mod1.js, 5, 1)) >Chunk : Symbol(Chunk, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocImportType.types b/tests/baselines/reference/jsdocImportType.types index b5703459955..51387f6c09a 100644 --- a/tests/baselines/reference/jsdocImportType.types +++ b/tests/baselines/reference/jsdocImportType.types @@ -54,7 +54,7 @@ class Chunk { module.exports = Chunk; >module.exports = Chunk : typeof Chunk >module.exports : typeof Chunk ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof Chunk; } +>module : { exports: typeof Chunk; } >exports : typeof Chunk >Chunk : typeof Chunk diff --git a/tests/baselines/reference/jsdocImportType2.symbols b/tests/baselines/reference/jsdocImportType2.symbols index cecfd006ea8..1db0262b4d9 100644 --- a/tests/baselines/reference/jsdocImportType2.symbols +++ b/tests/baselines/reference/jsdocImportType2.symbols @@ -39,7 +39,7 @@ declare var module: { exports: any }; === tests/cases/conformance/jsdoc/mod1.js === /// module.exports = class Chunk { ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >Chunk : Symbol(Chunk, Decl(mod1.js, 1, 16)) diff --git a/tests/baselines/reference/jsdocImportType2.types b/tests/baselines/reference/jsdocImportType2.types index b966871b9ef..76fe7c688ff 100644 --- a/tests/baselines/reference/jsdocImportType2.types +++ b/tests/baselines/reference/jsdocImportType2.types @@ -42,7 +42,7 @@ declare var module: { exports: any }; module.exports = class Chunk { >module.exports = class Chunk { constructor() { this.chunk = 1; }} : typeof import("tests/cases/conformance/jsdoc/mod1") >module.exports : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/mod1"); } >exports : typeof import("tests/cases/conformance/jsdoc/mod1") >class Chunk { constructor() { this.chunk = 1; }} : typeof import("tests/cases/conformance/jsdoc/mod1") >Chunk : typeof import("tests/cases/conformance/jsdoc/mod1") diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols index c62d8e0676f..443724ba825 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols +++ b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols @@ -9,7 +9,7 @@ module.exports.C = C >module.exports.C : Symbol(C, Decl(mod1.js, 2, 1)) >module.exports : Symbol(C, Decl(mod1.js, 2, 1)) >module : Symbol(module, Decl(mod1.js, 2, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 2, 1)) >C : Symbol(C, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types index 0c6d7515d30..d848122724d 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types +++ b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types @@ -8,9 +8,9 @@ class C { module.exports.C = C >module.exports.C = C : typeof C >module.exports.C : typeof C ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod1") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >C : typeof C >C : typeof C diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols index 646159ed419..36dc09ed454 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols @@ -44,12 +44,12 @@ module.exports.h = module.exports.i = function hi(mom) { >module.exports.h : Symbol(h, Decl(mod.js, 3, 1)) >module.exports : Symbol(h, Decl(mod.js, 3, 1)) >module : Symbol(module, Decl(mod.js, 3, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >h : Symbol(h, Decl(mod.js, 3, 1)) >module.exports.i : Symbol(i, Decl(mod.js, 5, 18)) >module.exports : Symbol(i, Decl(mod.js, 5, 18)) >module : Symbol(module, Decl(mod.js, 3, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >i : Symbol(i, Decl(mod.js, 5, 18)) >hi : Symbol(hi, Decl(mod.js, 5, 37)) >mom : Symbol(mom, Decl(mod.js, 5, 50)) diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types index 7bbcb5becab..aa98e4d224b 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types @@ -57,15 +57,15 @@ exports.f = exports.g = function fg(n) { module.exports.h = module.exports.i = function hi(mom) { >module.exports.h = module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string >module.exports.h : (mom: string) => string ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod") ->module : { "\"tests/cases/conformance/jsdoc/mod\"": typeof import("tests/cases/conformance/jsdoc/mod"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >h : (mom: string) => string >module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string >module.exports.i : (mom: string) => string ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod") ->module : { "\"tests/cases/conformance/jsdoc/mod\"": typeof import("tests/cases/conformance/jsdoc/mod"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : (mom: string) => string >function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string >hi : (mom: string) => string diff --git a/tests/baselines/reference/jsdocTypeReferenceExports.symbols b/tests/baselines/reference/jsdocTypeReferenceExports.symbols index 0ae0a5e73a7..2e008b9a62f 100644 --- a/tests/baselines/reference/jsdocTypeReferenceExports.symbols +++ b/tests/baselines/reference/jsdocTypeReferenceExports.symbols @@ -1,8 +1,8 @@ === tests/cases/conformance/jsdoc/bug27342.js === module.exports = {} ->module.exports : Symbol("tests/cases/conformance/jsdoc/bug27342", Decl(bug27342.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27342.js, 0, 0)) >module : Symbol(module, Decl(bug27342.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/bug27342", Decl(bug27342.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug27342.js, 0, 0)) /** * @type {exports} diff --git a/tests/baselines/reference/jsdocTypeReferenceExports.types b/tests/baselines/reference/jsdocTypeReferenceExports.types index cc0fd402cdb..c141fec60db 100644 --- a/tests/baselines/reference/jsdocTypeReferenceExports.types +++ b/tests/baselines/reference/jsdocTypeReferenceExports.types @@ -1,9 +1,9 @@ === tests/cases/conformance/jsdoc/bug27342.js === module.exports = {} ->module.exports = {} : typeof import("tests/cases/conformance/jsdoc/bug27342") ->module.exports : typeof import("tests/cases/conformance/jsdoc/bug27342") ->module : { "\"tests/cases/conformance/jsdoc/bug27342\"": typeof import("tests/cases/conformance/jsdoc/bug27342"); } ->exports : typeof import("tests/cases/conformance/jsdoc/bug27342") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} /** diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols index e077215aedd..26d216ce83a 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols @@ -7,7 +7,7 @@ const MW = require("./MW"); /** @typedef {number} Cictema */ module.exports = class MC { ->module.exports : Symbol("tests/cases/conformance/jsdoc/MC", Decl(MC.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MC.js, 0, 0)) >module : Symbol(export=, Decl(MC.js, 0, 27)) >exports : Symbol(export=, Decl(MC.js, 0, 27)) >MC : Symbol(MC, Decl(MC.js, 4, 16)) @@ -42,7 +42,7 @@ class MW { } module.exports = MW; ->module.exports : Symbol("tests/cases/conformance/jsdoc/MW", Decl(MW.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MW.js, 0, 0)) >module : Symbol(export=, Decl(MW.js, 9, 1)) >exports : Symbol(export=, Decl(MW.js, 9, 1)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types index 144cd81db37..b42dcf9bc58 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types @@ -10,7 +10,7 @@ const MW = require("./MW"); module.exports = class MC { >module.exports = class MC { watch() { return new MW(this); }} : typeof import("tests/cases/conformance/jsdoc/MC") >module.exports : typeof import("tests/cases/conformance/jsdoc/MC") ->module : { "\"tests/cases/conformance/jsdoc/MC\"": typeof import("tests/cases/conformance/jsdoc/MC"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/MC"); } >exports : typeof import("tests/cases/conformance/jsdoc/MC") >class MC { watch() { return new MW(this); }} : typeof import("tests/cases/conformance/jsdoc/MC") >MC : typeof import("tests/cases/conformance/jsdoc/MC") @@ -49,7 +49,7 @@ class MW { module.exports = MW; >module.exports = MW : typeof MW >module.exports : typeof MW ->module : { "\"tests/cases/conformance/jsdoc/MW\"": typeof MW; } +>module : { exports: typeof MW; } >exports : typeof MW >MW : typeof MW diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols index d34dcbdaf10..c903517abac 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols @@ -8,7 +8,7 @@ const MW = require("./MW"); /** @class */ module.exports = function MC() { ->module.exports : Symbol("tests/cases/conformance/jsdoc/MC", Decl(MC.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MC.js, 0, 0)) >module : Symbol(export=, Decl(MC.js, 0, 27)) >exports : Symbol(export=, Decl(MC.js, 0, 27)) >MC : Symbol(MC, Decl(MC.js, 5, 16)) @@ -44,7 +44,7 @@ class MW { } module.exports = MW; ->module.exports : Symbol("tests/cases/conformance/jsdoc/MW", Decl(MW.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MW.js, 0, 0)) >module : Symbol(export=, Decl(MW.js, 9, 1)) >exports : Symbol(export=, Decl(MW.js, 9, 1)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types index 5f88193871f..f28d7e5e87e 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types @@ -11,7 +11,7 @@ const MW = require("./MW"); module.exports = function MC() { >module.exports = function MC() { /** @type {any} */ var x = {} return new MW(x);} : { (): MW; new (): MC; } >module.exports : { (): MW; new (): MC; } ->module : { "\"tests/cases/conformance/jsdoc/MC\"": { (): MW; new (): MC; }; } +>module : { exports: { (): MW; new (): MC; }; } >exports : { (): MW; new (): MC; } >function MC() { /** @type {any} */ var x = {} return new MW(x);} : typeof MC >MC : typeof MC @@ -52,7 +52,7 @@ class MW { module.exports = MW; >module.exports = MW : typeof MW >module.exports : typeof MW ->module : { "\"tests/cases/conformance/jsdoc/MW\"": typeof MW; } +>module : { exports: typeof MW; } >exports : typeof MW >MW : typeof MW diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt index b02b8989d49..1d5eef72deb 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(5,1): error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. - Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. -tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(6,1): error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. - Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. +tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(5,1): error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. + Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. +tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(6,1): error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. + Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. tests/cases/conformance/salsa/usage.js(2,11): error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. tests/cases/conformance/salsa/usage.js(3,11): error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. @@ -26,10 +26,10 @@ tests/cases/conformance/salsa/usage.js(3,11): error TS7053: Element implicitly h module.exports[_sym] = "ok"; ~~~~~~~~~~~~~~~~~~~~ -!!! error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. -!!! error TS7053: Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. +!!! error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. +!!! error TS7053: Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. module.exports[_str] = "ok"; ~~~~~~~~~~~~~~~~~~~~ -!!! error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. -!!! error TS7053: Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. +!!! error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. +!!! error TS7053: Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. module.exports.S = _sym; \ No newline at end of file diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols index 5c252fe3db6..f529eb75d03 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols @@ -25,22 +25,22 @@ const _str = "my-fake-sym"; >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport2.js, 2, 5)) module.exports[_sym] = "ok"; ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) module.exports[_str] = "ok"; ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport2.js, 2, 5)) module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types index 818a0ab212e..264a0dcc174 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types @@ -33,27 +33,27 @@ const _str = "my-fake-sym"; module.exports[_sym] = "ok"; >module.exports[_sym] = "ok" : "ok" >module.exports[_sym] : any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_sym : unique symbol >"ok" : "ok" module.exports[_str] = "ok"; >module.exports[_str] = "ok" : "ok" >module.exports[_str] : any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_str : "my-fake-sym" >"ok" : "ok" module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols index 3a9c558d360..956fbaf9728 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols @@ -28,9 +28,9 @@ Object.defineProperty(module.exports, _sym, { value: "ok" }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 4, 45)) @@ -38,9 +38,9 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport3.js, 2, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 45)) @@ -48,7 +48,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types index 8fc76045c48..5909bdbaa63 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types @@ -35,9 +35,9 @@ Object.defineProperty(module.exports, _sym, { value: "ok" }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_sym : unique symbol >{ value: "ok" } : { value: string; } >value : string @@ -48,9 +48,9 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_str : "my-fake-sym" >{ value: "ok" } : { value: string; } >value : string @@ -59,9 +59,9 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols index fd52892f5a5..818026bbf40 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols @@ -63,7 +63,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 2, 27)) @@ -71,7 +71,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport4.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types index ab76826b9a4..d35ba15c485 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types @@ -78,18 +78,18 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols index 90a1f464648..3eacc09891c 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols @@ -64,7 +64,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 2, 27), Decl(lateBoundAssignmentDeclarationSupport5.js, 5, 1)) @@ -72,7 +72,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport5.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types index ec6fbfadb2a..3335150d8a6 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types @@ -77,18 +77,18 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols index f4feb41d11d..d36c2500c4a 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols @@ -77,7 +77,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 2, 27)) @@ -85,7 +85,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport6.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types index 8de2b0c0555..31b00f9cd77 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types @@ -95,18 +95,18 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols index 12281050f58..8fa7c82187b 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols @@ -43,7 +43,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 1, 27), Decl(lateBoundAssignmentDeclarationSupport7.js, 4, 1), Decl(lateBoundAssignmentDeclarationSupport7.js, 5, 15)) @@ -51,7 +51,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types index 8b0266457b6..865a576ee3a 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types @@ -53,18 +53,18 @@ F[_str] = "ok"; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/moduleExportAlias.symbols b/tests/baselines/reference/moduleExportAlias.symbols index 67720f1cde3..4fd98f2a0b7 100644 --- a/tests/baselines/reference/moduleExportAlias.symbols +++ b/tests/baselines/reference/moduleExportAlias.symbols @@ -120,9 +120,9 @@ exports.func2 = function () { }; var moduleExportsAlias = module.exports; >moduleExportsAlias : Symbol(moduleExportsAlias, Decl(b.js, 4, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) moduleExportsAlias.func3 = function () { }; >moduleExportsAlias.func3 : Symbol(func3, Decl(b.js, 4, 40)) @@ -133,15 +133,15 @@ module.exports.func4 = function () { }; >module.exports.func4 : Symbol(func4, Decl(b.js, 5, 43)) >module.exports : Symbol(func4, Decl(b.js, 5, 43)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func4 : Symbol(func4, Decl(b.js, 5, 43)) var multipleDeclarationAlias1 = exports = module.exports; >multipleDeclarationAlias1 : Symbol(multipleDeclarationAlias1, Decl(b.js, 8, 3)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) multipleDeclarationAlias1.func5 = function () { }; >multipleDeclarationAlias1.func5 : Symbol(func5, Decl(b.js, 8, 57)) @@ -150,9 +150,9 @@ multipleDeclarationAlias1.func5 = function () { }; var multipleDeclarationAlias2 = module.exports = exports; >multipleDeclarationAlias2 : Symbol(multipleDeclarationAlias2, Decl(b.js, 11, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) multipleDeclarationAlias2.func6 = function () { }; @@ -176,9 +176,9 @@ multipleDeclarationAlias3.func7 = function () { }; var multipleDeclarationAlias4 = someOtherVariable = module.exports; >multipleDeclarationAlias4 : Symbol(multipleDeclarationAlias4, Decl(b.js, 18, 3)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) multipleDeclarationAlias4.func8 = function () { }; >multipleDeclarationAlias4.func8 : Symbol(func8, Decl(b.js, 18, 67)) @@ -187,9 +187,9 @@ multipleDeclarationAlias4.func8 = function () { }; var multipleDeclarationAlias5 = module.exports = exports = {}; >multipleDeclarationAlias5 : Symbol(multipleDeclarationAlias5, Decl(b.js, 21, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) multipleDeclarationAlias5.func9 = function () { }; @@ -200,9 +200,9 @@ multipleDeclarationAlias5.func9 = function () { }; var multipleDeclarationAlias6 = exports = module.exports = {}; >multipleDeclarationAlias6 : Symbol(multipleDeclarationAlias6, Decl(b.js, 24, 3)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) multipleDeclarationAlias6.func10 = function () { }; >multipleDeclarationAlias6.func10 : Symbol(func10, Decl(b.js, 24, 62)) @@ -211,9 +211,9 @@ multipleDeclarationAlias6.func10 = function () { }; exports = module.exports = someOtherVariable = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) exports.func11 = function () { }; @@ -225,14 +225,14 @@ module.exports.func12 = function () { }; >module.exports.func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module.exports : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) exports = module.exports = someOtherVariable = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) exports.func11 = function () { }; @@ -244,14 +244,14 @@ module.exports.func12 = function () { }; >module.exports.func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module.exports : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) exports = module.exports = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) exports.func13 = function () { }; >exports.func13 : Symbol(func13, Decl(b.js, 35, 30)) @@ -262,14 +262,14 @@ module.exports.func14 = function () { }; >module.exports.func14 : Symbol(func14, Decl(b.js, 36, 33)) >module.exports : Symbol(func14, Decl(b.js, 36, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func14 : Symbol(func14, Decl(b.js, 36, 33)) exports = module.exports = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) exports.func15 = function () { }; >exports.func15 : Symbol(func15, Decl(b.js, 39, 30)) @@ -280,13 +280,13 @@ module.exports.func16 = function () { }; >module.exports.func16 : Symbol(func16, Decl(b.js, 40, 33)) >module.exports : Symbol(func16, Decl(b.js, 40, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func16 : Symbol(func16, Decl(b.js, 40, 33)) module.exports = exports = {}; ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) exports.func17 = function () { }; @@ -298,13 +298,13 @@ module.exports.func18 = function () { }; >module.exports.func18 : Symbol(func18, Decl(b.js, 44, 33)) >module.exports : Symbol(func18, Decl(b.js, 44, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func18 : Symbol(func18, Decl(b.js, 44, 33)) module.exports = {}; ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) exports.func19 = function () { }; >exports.func19 : Symbol(func19, Decl(b.js, 47, 20)) @@ -315,7 +315,7 @@ module.exports.func20 = function () { }; >module.exports.func20 : Symbol(func20, Decl(b.js, 48, 33)) >module.exports : Symbol(func20, Decl(b.js, 48, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func20 : Symbol(func20, Decl(b.js, 48, 33)) diff --git a/tests/baselines/reference/moduleExportAlias.types b/tests/baselines/reference/moduleExportAlias.types index 14acd06f75e..899aadd2c86 100644 --- a/tests/baselines/reference/moduleExportAlias.types +++ b/tests/baselines/reference/moduleExportAlias.types @@ -123,54 +123,54 @@ exports.func2 = function () { }; >function () { } : () => void var moduleExportsAlias = module.exports; ->moduleExportsAlias : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>moduleExportsAlias : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports moduleExportsAlias.func3 = function () { }; >moduleExportsAlias.func3 = function () { } : () => void >moduleExportsAlias.func3 : () => void ->moduleExportsAlias : typeof import("tests/cases/conformance/salsa/b") +>moduleExportsAlias : typeof module.exports >func3 : () => void >function () { } : () => void module.exports.func4 = function () { }; >module.exports.func4 = function () { } : () => void >module.exports.func4 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func4 : () => void >function () { } : () => void var multipleDeclarationAlias1 = exports = module.exports; ->multipleDeclarationAlias1 : typeof import("tests/cases/conformance/salsa/b") ->exports = module.exports : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>multipleDeclarationAlias1 : typeof module.exports +>exports = module.exports : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports multipleDeclarationAlias1.func5 = function () { }; >multipleDeclarationAlias1.func5 = function () { } : () => void >multipleDeclarationAlias1.func5 : () => void ->multipleDeclarationAlias1 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias1 : typeof module.exports >func5 : () => void >function () { } : () => void var multipleDeclarationAlias2 = module.exports = exports; ->multipleDeclarationAlias2 : typeof import("tests/cases/conformance/salsa/b") ->module.exports = exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias2 : typeof module.exports +>module.exports = exports : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") multipleDeclarationAlias2.func6 = function () { }; >multipleDeclarationAlias2.func6 = function () { } : () => void >multipleDeclarationAlias2.func6 : () => void ->multipleDeclarationAlias2 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias2 : typeof module.exports >func6 : () => void >function () { } : () => void @@ -191,26 +191,26 @@ multipleDeclarationAlias3.func7 = function () { }; >function () { } : () => void var multipleDeclarationAlias4 = someOtherVariable = module.exports; ->multipleDeclarationAlias4 : typeof import("tests/cases/conformance/salsa/b") ->someOtherVariable = module.exports : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias4 : typeof module.exports +>someOtherVariable = module.exports : typeof module.exports >someOtherVariable : any ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports multipleDeclarationAlias4.func8 = function () { }; >multipleDeclarationAlias4.func8 = function () { } : () => void >multipleDeclarationAlias4.func8 : () => void ->multipleDeclarationAlias4 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias4 : typeof module.exports >func8 : () => void >function () { } : () => void var multipleDeclarationAlias5 = module.exports = exports = {}; ->multipleDeclarationAlias5 : typeof import("tests/cases/conformance/salsa/b") ->module.exports = exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias5 : typeof module.exports +>module.exports = exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >exports = {} : {} >exports : typeof import("tests/cases/conformance/salsa/b") >{} : {} @@ -218,34 +218,34 @@ var multipleDeclarationAlias5 = module.exports = exports = {}; multipleDeclarationAlias5.func9 = function () { }; >multipleDeclarationAlias5.func9 = function () { } : () => void >multipleDeclarationAlias5.func9 : () => void ->multipleDeclarationAlias5 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias5 : typeof module.exports >func9 : () => void >function () { } : () => void var multipleDeclarationAlias6 = exports = module.exports = {}; ->multipleDeclarationAlias6 : typeof import("tests/cases/conformance/salsa/b") ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>multipleDeclarationAlias6 : typeof module.exports +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} multipleDeclarationAlias6.func10 = function () { }; >multipleDeclarationAlias6.func10 = function () { } : () => void >multipleDeclarationAlias6.func10 : () => void ->multipleDeclarationAlias6 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias6 : typeof module.exports >func10 : () => void >function () { } : () => void exports = module.exports = someOtherVariable = {}; ->exports = module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = someOtherVariable = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = someOtherVariable = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >someOtherVariable = {} : {} >someOtherVariable : any >{} : {} @@ -260,19 +260,19 @@ exports.func11 = function () { }; module.exports.func12 = function () { }; >module.exports.func12 = function () { } : () => void >module.exports.func12 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func12 : () => void >function () { } : () => void exports = module.exports = someOtherVariable = {}; ->exports = module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = someOtherVariable = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = someOtherVariable = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >someOtherVariable = {} : {} >someOtherVariable : any >{} : {} @@ -287,19 +287,19 @@ exports.func11 = function () { }; module.exports.func12 = function () { }; >module.exports.func12 = function () { } : () => void >module.exports.func12 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func12 : () => void >function () { } : () => void exports = module.exports = {}; ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} exports.func13 = function () { }; @@ -312,19 +312,19 @@ exports.func13 = function () { }; module.exports.func14 = function () { }; >module.exports.func14 = function () { } : () => void >module.exports.func14 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func14 : () => void >function () { } : () => void exports = module.exports = {}; ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} exports.func15 = function () { }; @@ -337,17 +337,17 @@ exports.func15 = function () { }; module.exports.func16 = function () { }; >module.exports.func16 = function () { } : () => void >module.exports.func16 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func16 : () => void >function () { } : () => void module.exports = exports = {}; ->module.exports = exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >exports = {} : {} >exports : typeof import("tests/cases/conformance/salsa/b") >{} : {} @@ -362,17 +362,17 @@ exports.func17 = function () { }; module.exports.func18 = function () { }; >module.exports.func18 = function () { } : () => void >module.exports.func18 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func18 : () => void >function () { } : () => void module.exports = {}; ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} exports.func19 = function () { }; @@ -385,9 +385,9 @@ exports.func19 = function () { }; module.exports.func20 = function () { }; >module.exports.func20 = function () { } : () => void >module.exports.func20 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func20 : () => void >function () { } : () => void diff --git a/tests/baselines/reference/moduleExportAlias2.symbols b/tests/baselines/reference/moduleExportAlias2.symbols index 2e33643aa90..1b8b80f42ad 100644 --- a/tests/baselines/reference/moduleExportAlias2.symbols +++ b/tests/baselines/reference/moduleExportAlias2.symbols @@ -31,7 +31,7 @@ declare var module: { exports: any }; /// exports = module.exports = C >exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(semver.js, 0, 0)) >module : Symbol(export=, Decl(semver.js, 1, 9)) >exports : Symbol(export=, Decl(semver.js, 1, 9)) >C : Symbol(C, Decl(semver.js, 2, 22)) diff --git a/tests/baselines/reference/moduleExportAlias2.types b/tests/baselines/reference/moduleExportAlias2.types index 6f8ba54ad61..85d0ed5c569 100644 --- a/tests/baselines/reference/moduleExportAlias2.types +++ b/tests/baselines/reference/moduleExportAlias2.types @@ -38,7 +38,7 @@ exports = module.exports = C >exports : typeof C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/salsa/semver\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/moduleExportAlias3.symbols b/tests/baselines/reference/moduleExportAlias3.symbols index 0132c04ea53..617d05ff52e 100644 --- a/tests/baselines/reference/moduleExportAlias3.symbols +++ b/tests/baselines/reference/moduleExportAlias3.symbols @@ -4,9 +4,9 @@ class C { >C : Symbol(C, Decl(bug24062.js, 0, 0)) } module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/bug24062", Decl(bug24062.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug24062.js, 0, 0)) >module : Symbol(module, Decl(bug24062.js, 2, 1)) ->exports : Symbol("tests/cases/conformance/salsa/bug24062", Decl(bug24062.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug24062.js, 0, 0)) C >C : Symbol(C, Decl(bug24062.js, 3, 18)) diff --git a/tests/baselines/reference/moduleExportAlias3.types b/tests/baselines/reference/moduleExportAlias3.types index e5ff22316d1..20ab118c002 100644 --- a/tests/baselines/reference/moduleExportAlias3.types +++ b/tests/baselines/reference/moduleExportAlias3.types @@ -4,10 +4,10 @@ class C { >C : C } module.exports = { ->module.exports = { C} : typeof import("tests/cases/conformance/salsa/bug24062") ->module.exports : typeof import("tests/cases/conformance/salsa/bug24062") ->module : { "\"tests/cases/conformance/salsa/bug24062\"": typeof import("tests/cases/conformance/salsa/bug24062"); } ->exports : typeof import("tests/cases/conformance/salsa/bug24062") +>module.exports = { C} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ C} : { C: typeof C; } C diff --git a/tests/baselines/reference/moduleExportAlias4.symbols b/tests/baselines/reference/moduleExportAlias4.symbols index e7b83f18927..561d668343b 100644 --- a/tests/baselines/reference/moduleExportAlias4.symbols +++ b/tests/baselines/reference/moduleExportAlias4.symbols @@ -6,7 +6,7 @@ var wat = require('./bug24024') >'./bug24024' : Symbol("tests/cases/conformance/salsa/bug24024", Decl(bug24024.js, 0, 0)) module.exports = class C {} ->module.exports : Symbol("tests/cases/conformance/salsa/bug24024", Decl(bug24024.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug24024.js, 0, 0)) >module : Symbol(export=, Decl(bug24024.js, 1, 31)) >exports : Symbol(export=, Decl(bug24024.js, 1, 31)) >C : Symbol(wat, Decl(bug24024.js, 2, 16)) @@ -15,7 +15,7 @@ module.exports.D = class D { } >module.exports.D : Symbol(wat.D, Decl(bug24024.js, 2, 27)) >module.exports : Symbol(wat.D, Decl(bug24024.js, 2, 27)) >module : Symbol(module, Decl(bug24024.js, 1, 31)) ->exports : Symbol("tests/cases/conformance/salsa/bug24024", Decl(bug24024.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug24024.js, 0, 0)) >D : Symbol(wat.D, Decl(bug24024.js, 2, 27)) >D : Symbol(wat.D, Decl(bug24024.js, 3, 18)) diff --git a/tests/baselines/reference/moduleExportAlias4.types b/tests/baselines/reference/moduleExportAlias4.types index 3f434998d6e..293080a80bb 100644 --- a/tests/baselines/reference/moduleExportAlias4.types +++ b/tests/baselines/reference/moduleExportAlias4.types @@ -9,7 +9,7 @@ var wat = require('./bug24024') module.exports = class C {} >module.exports = class C {} : typeof wat >module.exports : typeof wat ->module : { "\"tests/cases/conformance/salsa/bug24024\"": typeof wat; } +>module : { exports: typeof wat; } >exports : typeof wat >class C {} : typeof wat >C : typeof wat @@ -18,7 +18,7 @@ module.exports.D = class D { } >module.exports.D = class D { } : typeof wat.D >module.exports.D : typeof wat.D >module.exports : typeof wat ->module : { "\"tests/cases/conformance/salsa/bug24024\"": typeof wat; } +>module : { exports: typeof wat; } >exports : typeof wat >D : typeof wat.D >class D { } : typeof wat.D diff --git a/tests/baselines/reference/moduleExportAlias5.symbols b/tests/baselines/reference/moduleExportAlias5.symbols index 35e27b4a642..2f5467f0666 100644 --- a/tests/baselines/reference/moduleExportAlias5.symbols +++ b/tests/baselines/reference/moduleExportAlias5.symbols @@ -5,7 +5,7 @@ const webpack = function (){ } exports = module.exports = webpack; >exports : Symbol("tests/cases/conformance/salsa/bug24754", Decl(bug24754.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/bug24754", Decl(bug24754.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug24754.js, 0, 0)) >module : Symbol(export=, Decl(bug24754.js, 3, 9)) >exports : Symbol(export=, Decl(bug24754.js, 3, 9)) >webpack : Symbol(webpack, Decl(bug24754.js, 1, 5), Decl(bug24754.js, 4, 23)) diff --git a/tests/baselines/reference/moduleExportAlias5.types b/tests/baselines/reference/moduleExportAlias5.types index e4e0b8b74b3..3a1c1a6839b 100644 --- a/tests/baselines/reference/moduleExportAlias5.types +++ b/tests/baselines/reference/moduleExportAlias5.types @@ -9,7 +9,7 @@ exports = module.exports = webpack; >exports : { (): void; WebpackOptionsDefaulter: number; version: number; } >module.exports = webpack : { (): void; WebpackOptionsDefaulter: number; version: number; } >module.exports : { (): void; WebpackOptionsDefaulter: number; version: number; } ->module : { "\"tests/cases/conformance/salsa/bug24754\"": { (): void; WebpackOptionsDefaulter: number; version: number; }; } +>module : { exports: { (): void; WebpackOptionsDefaulter: number; version: number; }; } >exports : { (): void; WebpackOptionsDefaulter: number; version: number; } >webpack : { (): void; WebpackOptionsDefaulter: number; } diff --git a/tests/baselines/reference/moduleExportAliasExports.symbols b/tests/baselines/reference/moduleExportAliasExports.symbols index 7253e7ed5f3..07f6755d1ca 100644 --- a/tests/baselines/reference/moduleExportAliasExports.symbols +++ b/tests/baselines/reference/moduleExportAliasExports.symbols @@ -12,7 +12,7 @@ exports.everywhere = 2 >everywhere : Symbol(everywhere, Decl(Eloquent.js, 2, 18)) module.exports = exports ->module.exports : Symbol("tests/cases/conformance/salsa/Eloquent", Decl(Eloquent.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(Eloquent.js, 0, 0)) >module : Symbol(export=, Decl(Eloquent.js, 3, 22)) >exports : Symbol(export=, Decl(Eloquent.js, 3, 22)) >exports : Symbol("tests/cases/conformance/salsa/Eloquent", Decl(Eloquent.js, 0, 0)) diff --git a/tests/baselines/reference/moduleExportAliasExports.types b/tests/baselines/reference/moduleExportAliasExports.types index d6c015f7f22..f9d38bfdc28 100644 --- a/tests/baselines/reference/moduleExportAliasExports.types +++ b/tests/baselines/reference/moduleExportAliasExports.types @@ -22,7 +22,7 @@ exports.everywhere = 2 module.exports = exports >module.exports = exports : typeof import("tests/cases/conformance/salsa/Eloquent") >module.exports : typeof import("tests/cases/conformance/salsa/Eloquent") ->module : { "\"tests/cases/conformance/salsa/Eloquent\"": typeof import("tests/cases/conformance/salsa/Eloquent"); } +>module : { exports: typeof import("tests/cases/conformance/salsa/Eloquent"); } >exports : typeof import("tests/cases/conformance/salsa/Eloquent") >exports : typeof import("tests/cases/conformance/salsa/Eloquent") diff --git a/tests/baselines/reference/moduleExportAliasImported.symbols b/tests/baselines/reference/moduleExportAliasImported.symbols index 298e439a0d7..dbf1ca02af3 100644 --- a/tests/baselines/reference/moduleExportAliasImported.symbols +++ b/tests/baselines/reference/moduleExportAliasImported.symbols @@ -8,7 +8,7 @@ function alias() { } >alias : Symbol(alias, Decl(bug28014.js, 0, 19)) module.exports = alias ->module.exports : Symbol("tests/cases/conformance/salsa/bug28014", Decl(bug28014.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug28014.js, 0, 0)) >module : Symbol(export=, Decl(bug28014.js, 1, 20)) >exports : Symbol(export=, Decl(bug28014.js, 1, 20)) >alias : Symbol(alias, Decl(bug28014.js, 0, 19)) diff --git a/tests/baselines/reference/moduleExportAliasImported.types b/tests/baselines/reference/moduleExportAliasImported.types index 9fa087f1533..f1de74c531f 100644 --- a/tests/baselines/reference/moduleExportAliasImported.types +++ b/tests/baselines/reference/moduleExportAliasImported.types @@ -12,7 +12,7 @@ function alias() { } module.exports = alias >module.exports = alias : typeof alias >module.exports : typeof alias ->module : { "\"tests/cases/conformance/salsa/bug28014\"": typeof alias; } +>module : { exports: typeof alias; } >exports : typeof alias >alias : typeof alias diff --git a/tests/baselines/reference/moduleExportAliasUnknown.symbols b/tests/baselines/reference/moduleExportAliasUnknown.symbols index 2913a704e10..a20f90a24a8 100644 --- a/tests/baselines/reference/moduleExportAliasUnknown.symbols +++ b/tests/baselines/reference/moduleExportAliasUnknown.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/bug27025.js === module.exports = window.nonprop; ->module.exports : Symbol("tests/cases/conformance/salsa/bug27025", Decl(bug27025.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27025.js, 0, 0)) >module : Symbol(export=, Decl(bug27025.js, 0, 0)) >exports : Symbol(export=, Decl(bug27025.js, 0, 0)) >window : Symbol(window, Decl(lib.dom.d.ts, --, --)) diff --git a/tests/baselines/reference/moduleExportAliasUnknown.types b/tests/baselines/reference/moduleExportAliasUnknown.types index 66f7635d2f0..5fe930905de 100644 --- a/tests/baselines/reference/moduleExportAliasUnknown.types +++ b/tests/baselines/reference/moduleExportAliasUnknown.types @@ -2,7 +2,7 @@ module.exports = window.nonprop; >module.exports = window.nonprop : any >module.exports : any ->module : { "\"tests/cases/conformance/salsa/bug27025\"": any; } +>module : { exports: any; } >exports : any >window.nonprop : any >window : Window & typeof globalThis diff --git a/tests/baselines/reference/moduleExportAssignment.symbols b/tests/baselines/reference/moduleExportAssignment.symbols index e89dabfd946..7f863792731 100644 --- a/tests/baselines/reference/moduleExportAssignment.symbols +++ b/tests/baselines/reference/moduleExportAssignment.symbols @@ -25,7 +25,7 @@ class EE { } var npmlog = module.exports = new EE() >npmlog : Symbol(npmlog, Decl(npmlog.js, 4, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >module : Symbol(npmlog, Decl(npmlog.js, 4, 12)) >exports : Symbol(npmlog, Decl(npmlog.js, 4, 12)) >EE : Symbol(EE, Decl(npmlog.js, 0, 0)) @@ -37,9 +37,9 @@ npmlog.on('hi') // both references should see EE.on module.exports.on('hi') // here too >module.exports.on : Symbol(EE.on, Decl(npmlog.js, 0, 10)) ->module.exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >on : Symbol(EE.on, Decl(npmlog.js, 0, 10)) npmlog.x = 1 @@ -51,7 +51,7 @@ module.exports.y = 2 >module.exports.y : Symbol(y, Decl(npmlog.js, 9, 12)) >module.exports : Symbol(y, Decl(npmlog.js, 9, 12)) >module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >y : Symbol(y, Decl(npmlog.js, 9, 12)) npmlog.y @@ -61,8 +61,8 @@ npmlog.y module.exports.x >module.exports.x : Symbol(x, Decl(npmlog.js, 7, 23)) ->module.exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >x : Symbol(x, Decl(npmlog.js, 7, 23)) diff --git a/tests/baselines/reference/moduleExportAssignment.types b/tests/baselines/reference/moduleExportAssignment.types index 86edcb8f149..86d7fc553b4 100644 --- a/tests/baselines/reference/moduleExportAssignment.types +++ b/tests/baselines/reference/moduleExportAssignment.types @@ -28,7 +28,7 @@ var npmlog = module.exports = new EE() >npmlog : { on(s: string): void; x: number; y: number; } >module.exports = new EE() : { on(s: string): void; x: number; y: number; } >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >new EE() : EE >EE : typeof EE @@ -44,7 +44,7 @@ module.exports.on('hi') // here too >module.exports.on('hi') : void >module.exports.on : (s: string) => void >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >on : (s: string) => void >'hi' : "hi" @@ -60,7 +60,7 @@ module.exports.y = 2 >module.exports.y = 2 : 2 >module.exports.y : number >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >y : number >2 : 2 @@ -73,7 +73,7 @@ npmlog.y module.exports.x >module.exports.x : number >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >x : number diff --git a/tests/baselines/reference/moduleExportAssignment2.symbols b/tests/baselines/reference/moduleExportAssignment2.symbols index eaafdbefb1f..69a09dcf426 100644 --- a/tests/baselines/reference/moduleExportAssignment2.symbols +++ b/tests/baselines/reference/moduleExportAssignment2.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/salsa/npm.js === var npm = module.exports = function (tree) { >npm : Symbol(npm, Decl(npm.js, 0, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >module : Symbol(npm, Decl(npm.js, 0, 9)) >exports : Symbol(npm, Decl(npm.js, 0, 9)) >tree : Symbol(tree, Decl(npm.js, 0, 37)) @@ -10,7 +10,7 @@ module.exports.asReadInstalled = function (tree) { >module.exports.asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >module.exports : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >module : Symbol(module, Decl(npm.js, 0, 9), Decl(npm.js, 3, 13)) ->exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) @@ -19,9 +19,9 @@ module.exports.asReadInstalled = function (tree) { >tree : Symbol(tree, Decl(npm.js, 2, 43)) module.exports(tree) ->module.exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >module : Symbol(module, Decl(npm.js, 0, 9), Decl(npm.js, 3, 13)) ->exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) } diff --git a/tests/baselines/reference/moduleExportAssignment2.types b/tests/baselines/reference/moduleExportAssignment2.types index bee712fc2b0..817c1578fb8 100644 --- a/tests/baselines/reference/moduleExportAssignment2.types +++ b/tests/baselines/reference/moduleExportAssignment2.types @@ -3,7 +3,7 @@ var npm = module.exports = function (tree) { >npm : { (tree: any): void; asReadInstalled: (tree: any) => void; } >module.exports = function (tree) {} : { (tree: any): void; asReadInstalled: (tree: any) => void; } >module.exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } ->module : { "\"tests/cases/conformance/salsa/npm\"": { (tree: any): void; asReadInstalled: (tree: any) => void; }; } +>module : { exports: { (tree: any): void; asReadInstalled: (tree: any) => void; }; } >exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } >function (tree) {} : (tree: any) => void >tree : any @@ -12,7 +12,7 @@ module.exports.asReadInstalled = function (tree) { >module.exports.asReadInstalled = function (tree) { npm(tree) // both references should be callable module.exports(tree)} : (tree: any) => void >module.exports.asReadInstalled : (tree: any) => void >module.exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } ->module : { "\"tests/cases/conformance/salsa/npm\"": { (tree: any): void; asReadInstalled: (tree: any) => void; }; } +>module : { exports: { (tree: any): void; asReadInstalled: (tree: any) => void; }; } >exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } >asReadInstalled : (tree: any) => void >function (tree) { npm(tree) // both references should be callable module.exports(tree)} : (tree: any) => void @@ -26,7 +26,7 @@ module.exports.asReadInstalled = function (tree) { module.exports(tree) >module.exports(tree) : void >module.exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } ->module : { "\"tests/cases/conformance/salsa/npm\"": { (tree: any): void; asReadInstalled: (tree: any) => void; }; } +>module : { exports: { (tree: any): void; asReadInstalled: (tree: any) => void; }; } >exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } >tree : any } diff --git a/tests/baselines/reference/moduleExportAssignment3.symbols b/tests/baselines/reference/moduleExportAssignment3.symbols index 8fe824814ba..80aceb88c0e 100644 --- a/tests/baselines/reference/moduleExportAssignment3.symbols +++ b/tests/baselines/reference/moduleExportAssignment3.symbols @@ -9,13 +9,13 @@ mod() // should be callable from here too === tests/cases/conformance/salsa/mod.js === module.exports = function x() { } ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(export=, Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) >x : Symbol(x, Decl(mod.js, 0, 16)) module.exports() // should be callable ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) diff --git a/tests/baselines/reference/moduleExportAssignment3.types b/tests/baselines/reference/moduleExportAssignment3.types index 80c99d0a377..d652ac47c29 100644 --- a/tests/baselines/reference/moduleExportAssignment3.types +++ b/tests/baselines/reference/moduleExportAssignment3.types @@ -13,7 +13,7 @@ mod() // should be callable from here too module.exports = function x() { } >module.exports = function x() { } : () => void >module.exports : () => void ->module : { "\"tests/cases/conformance/salsa/mod\"": () => void; } +>module : { exports: () => void; } >exports : () => void >function x() { } : () => void >x : () => void @@ -21,6 +21,6 @@ module.exports = function x() { } module.exports() // should be callable >module.exports() : void >module.exports : () => void ->module : { "\"tests/cases/conformance/salsa/mod\"": () => void; } +>module : { exports: () => void; } >exports : () => void diff --git a/tests/baselines/reference/moduleExportAssignment4.symbols b/tests/baselines/reference/moduleExportAssignment4.symbols index 530b452c200..d387cc3deeb 100644 --- a/tests/baselines/reference/moduleExportAssignment4.symbols +++ b/tests/baselines/reference/moduleExportAssignment4.symbols @@ -6,7 +6,7 @@ exports.default = { m: 1, a: 1 } >a : Symbol(a, Decl(async.js, 0, 25)) module.exports = exports['default']; ->module.exports : Symbol("tests/cases/conformance/salsa/async", Decl(async.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(async.js, 0, 0)) >module : Symbol(export=, Decl(async.js, 0, 32)) >exports : Symbol(export=, Decl(async.js, 0, 32)) >exports : Symbol("tests/cases/conformance/salsa/async", Decl(async.js, 0, 0)) diff --git a/tests/baselines/reference/moduleExportAssignment4.types b/tests/baselines/reference/moduleExportAssignment4.types index 16053f1cc41..465aaa78e27 100644 --- a/tests/baselines/reference/moduleExportAssignment4.types +++ b/tests/baselines/reference/moduleExportAssignment4.types @@ -11,9 +11,9 @@ exports.default = { m: 1, a: 1 } >1 : 1 module.exports = exports['default']; ->module.exports = exports['default'] : any ->module.exports : any ->module : { "\"tests/cases/conformance/salsa/async\"": any; } +>module.exports = exports['default'] : error +>module.exports : error +>module : { exports: any; } >exports : any >exports['default'] : any >exports : any diff --git a/tests/baselines/reference/moduleExportAssignment5.symbols b/tests/baselines/reference/moduleExportAssignment5.symbols index 318b02b9185..73c06b8fcc1 100644 --- a/tests/baselines/reference/moduleExportAssignment5.symbols +++ b/tests/baselines/reference/moduleExportAssignment5.symbols @@ -18,7 +18,7 @@ axios.m() >m : Symbol(Axios.m, Decl(axios.js, 2, 5)) module.exports = axios; ->module.exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >module : Symbol(export=, Decl(axios.js, 7, 9)) >exports : Symbol(export=, Decl(axios.js, 7, 9)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) @@ -27,7 +27,7 @@ module.exports.default = axios; >module.exports.default : Symbol(default, Decl(axios.js, 8, 23)) >module.exports : Symbol(default, Decl(axios.js, 8, 23)) >module : Symbol(module, Decl(axios.js, 7, 9)) ->exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >default : Symbol(default, Decl(axios.js, 8, 23)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) diff --git a/tests/baselines/reference/moduleExportAssignment5.types b/tests/baselines/reference/moduleExportAssignment5.types index 07f36a230b2..eeaf014ec17 100644 --- a/tests/baselines/reference/moduleExportAssignment5.types +++ b/tests/baselines/reference/moduleExportAssignment5.types @@ -22,7 +22,7 @@ axios.m() module.exports = axios; >module.exports = axios : { m(): void; default: Axios; } >module.exports : { m(): void; default: Axios; } ->module : { "\"tests/cases/conformance/salsa/axios\"": { m(): void; default: Axios; }; } +>module : { exports: { m(): void; default: Axios; }; } >exports : { m(): void; default: Axios; } >axios : Axios @@ -30,7 +30,7 @@ module.exports.default = axios; >module.exports.default = axios : Axios >module.exports.default : Axios >module.exports : { m(): void; default: Axios; } ->module : { "\"tests/cases/conformance/salsa/axios\"": { m(): void; default: Axios; }; } +>module : { exports: { m(): void; default: Axios; }; } >exports : { m(): void; default: Axios; } >default : Axios >axios : Axios diff --git a/tests/baselines/reference/moduleExportNestedNamespaces.symbols b/tests/baselines/reference/moduleExportNestedNamespaces.symbols index f2719df9487..af7c29bde1a 100644 --- a/tests/baselines/reference/moduleExportNestedNamespaces.symbols +++ b/tests/baselines/reference/moduleExportNestedNamespaces.symbols @@ -3,15 +3,15 @@ module.exports.n = {}; >module.exports.n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) >module.exports : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) module.exports.n.K = function C() { >module.exports.n.K : Symbol(n.K, Decl(mod.js, 0, 22)) >module.exports.n : Symbol(n.K, Decl(mod.js, 0, 22)) ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) >K : Symbol(n.K, Decl(mod.js, 0, 22)) >C : Symbol(C, Decl(mod.js, 1, 20)) @@ -25,7 +25,7 @@ module.exports.Classic = class { >module.exports.Classic : Symbol(Classic, Decl(mod.js, 3, 1)) >module.exports : Symbol(Classic, Decl(mod.js, 3, 1)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >Classic : Symbol(Classic, Decl(mod.js, 3, 1)) constructor() { diff --git a/tests/baselines/reference/moduleExportNestedNamespaces.types b/tests/baselines/reference/moduleExportNestedNamespaces.types index 17f6bf86e90..7e402963154 100644 --- a/tests/baselines/reference/moduleExportNestedNamespaces.types +++ b/tests/baselines/reference/moduleExportNestedNamespaces.types @@ -2,9 +2,9 @@ module.exports.n = {}; >module.exports.n = {} : typeof n >module.exports.n : typeof n ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } ->exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >n : typeof n >{} : {} @@ -12,9 +12,9 @@ module.exports.n.K = function C() { >module.exports.n.K = function C() { this.x = 10;} : typeof C >module.exports.n.K : typeof C >module.exports.n : typeof n ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } ->exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >n : typeof n >K : typeof C >function C() { this.x = 10;} : typeof C @@ -30,9 +30,9 @@ module.exports.n.K = function C() { module.exports.Classic = class { >module.exports.Classic = class { constructor() { this.p = 1 }} : typeof Classic >module.exports.Classic : typeof Classic ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } ->exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >Classic : typeof Classic >class { constructor() { this.p = 1 }} : typeof Classic diff --git a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols index 0645e00f000..03c01f48237 100644 --- a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols +++ b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols @@ -3,7 +3,7 @@ var axios = {} >axios : Symbol(axios, Decl(axios.js, 0, 3)) module.exports = axios // both assignments should be ok ->module.exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >module : Symbol(export=, Decl(axios.js, 0, 14)) >exports : Symbol(export=, Decl(axios.js, 0, 14)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) @@ -12,7 +12,7 @@ module.exports.default = axios >module.exports.default : Symbol(default, Decl(axios.js, 1, 22)) >module.exports : Symbol(default, Decl(axios.js, 1, 22)) >module : Symbol(module, Decl(axios.js, 0, 14)) ->exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >default : Symbol(default, Decl(axios.js, 1, 22)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) diff --git a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types index ee1f2dfeb2b..b13aca86124 100644 --- a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types +++ b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types @@ -6,7 +6,7 @@ var axios = {} module.exports = axios // both assignments should be ok >module.exports = axios : typeof axios >module.exports : typeof axios ->module : { "\"tests/cases/conformance/salsa/axios\"": typeof axios; } +>module : { exports: typeof axios; } >exports : typeof axios >axios : typeof axios @@ -14,7 +14,7 @@ module.exports.default = axios >module.exports.default = axios : typeof axios >module.exports.default : typeof axios >module.exports : typeof axios ->module : { "\"tests/cases/conformance/salsa/axios\"": typeof axios; } +>module : { exports: typeof axios; } >exports : typeof axios >default : typeof axios >axios : typeof axios diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols index c65205747a6..5560e727afc 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols @@ -25,7 +25,7 @@ declare function require(name: string): any; === tests/cases/conformance/salsa/mod1.js === /// module.exports = function () { } ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) @@ -34,7 +34,7 @@ module.exports.f = function (a) { } >module.exports.f : Symbol(f, Decl(mod1.js, 1, 32)) >module.exports : Symbol(f, Decl(mod1.js, 1, 32)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >f : Symbol(f, Decl(mod1.js, 1, 32)) >a : Symbol(a, Decl(mod1.js, 3, 29)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types index 21dc567a685..c58c815fb04 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types @@ -30,7 +30,7 @@ declare function require(name: string): any; module.exports = function () { } >module.exports = function () { } : { (): void; f: (a: number) => void; } >module.exports : { (): void; f: (a: number) => void; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { (): void; f: (a: number) => void; }; } +>module : { exports: { (): void; f: (a: number) => void; }; } >exports : { (): void; f: (a: number) => void; } >function () { } : () => void @@ -39,7 +39,7 @@ module.exports.f = function (a) { } >module.exports.f = function (a) { } : (a: number) => void >module.exports.f : (a: number) => void >module.exports : { (): void; f: (a: number) => void; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { (): void; f: (a: number) => void; }; } +>module : { exports: { (): void; f: (a: number) => void; }; } >exports : { (): void; f: (a: number) => void; } >f : (a: number) => void >function (a) { } : (a: number) => void diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols index 584bf77b334..782725aa7fa 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols @@ -25,13 +25,13 @@ declare function require(name: string): any; === tests/cases/conformance/salsa/mod1.js === /// module.exports = 1 ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) module.exports.f = function () { } >module.exports : Symbol(f, Decl(mod1.js, 1, 18)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >f : Symbol(f, Decl(mod1.js, 1, 18)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types index 58ef2440b47..49a9a88c378 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types @@ -33,7 +33,7 @@ declare function require(name: string): any; module.exports = 1 >module.exports = 1 : number >module.exports : number ->module : { "\"tests/cases/conformance/salsa/mod1\"": number; } +>module : { exports: number; } >exports : number >1 : 1 @@ -41,7 +41,7 @@ module.exports.f = function () { } >module.exports.f = function () { } : () => void >module.exports.f : any >module.exports : number ->module : { "\"tests/cases/conformance/salsa/mod1\"": number; } +>module : { exports: number; } >exports : number >f : any >function () { } : () => void diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols index 6006339a0b4..2ee7a9ecdd6 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols @@ -44,11 +44,11 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore : Symbol(bothBefore, Decl(mod1.js, 3, 18), Decl(mod1.js, 0, 0)) >module.exports : Symbol(bothBefore, Decl(mod1.js, 0, 0)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothBefore : Symbol(bothBefore, Decl(mod1.js, 0, 0)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 1, 36)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) @@ -65,13 +65,13 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter : Symbol(bothAfter, Decl(mod1.js, 4, 18), Decl(mod1.js, 6, 1)) >module.exports : Symbol(bothAfter, Decl(mod1.js, 6, 1)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothAfter : Symbol(bothAfter, Decl(mod1.js, 6, 1)) module.exports.justProperty = 'string' >module.exports.justProperty : Symbol(justProperty, Decl(mod1.js, 7, 35)) >module.exports : Symbol(justProperty, Decl(mod1.js, 7, 35)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >justProperty : Symbol(justProperty, Decl(mod1.js, 7, 35)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types index d627b9f6de1..ff2457f3ef6 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types @@ -52,7 +52,7 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore = 'string' : "string" >module.exports.bothBefore : string | number >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >bothBefore : string | number >'string' : "string" @@ -60,7 +60,7 @@ module.exports.bothBefore = 'string' module.exports = { >module.exports = { justExport: 1, bothBefore: 2, bothAfter: 3,} : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >{ justExport: 1, bothBefore: 2, bothAfter: 3,} : { justExport: number; bothBefore: number; bothAfter: number; } @@ -80,7 +80,7 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter = 'string' : "string" >module.exports.bothAfter : string | number >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >bothAfter : string | number >'string' : "string" @@ -89,7 +89,7 @@ module.exports.justProperty = 'string' >module.exports.justProperty = 'string' : "string" >module.exports.justProperty : string >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >justProperty : string >'string' : "string" diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols index 5f7dbc398dc..672489268d0 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols @@ -44,7 +44,7 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) >module.exports : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothBefore : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) A.justExport = 4 @@ -63,7 +63,7 @@ A.bothAfter = 3 >bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) module.exports = A ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 4, 15)) >exports : Symbol(export=, Decl(mod1.js, 4, 15)) >A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) @@ -80,13 +80,13 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) >module.exports : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) module.exports.justProperty = 'string' >module.exports.justProperty : Symbol(justProperty, Decl(mod1.js, 9, 35)) >module.exports : Symbol(justProperty, Decl(mod1.js, 9, 35)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >justProperty : Symbol(justProperty, Decl(mod1.js, 9, 35)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types index d74a430cc15..de971c31243 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types @@ -52,7 +52,7 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore = 'string' : "string" >module.exports.bothBefore : string | number >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >bothBefore : string | number >'string' : "string" @@ -81,7 +81,7 @@ A.bothAfter = 3 module.exports = A >module.exports = A : typeof A >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >A : typeof A @@ -99,7 +99,7 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter = 'string' : "string" >module.exports.bothAfter : string | number >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >bothAfter : string | number >'string' : "string" @@ -108,7 +108,7 @@ module.exports.justProperty = 'string' >module.exports.justProperty = 'string' : "string" >module.exports.justProperty : string >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >justProperty : string >'string' : "string" diff --git a/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols b/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols index a13575852f0..f7721f6366a 100644 --- a/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols +++ b/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols @@ -54,21 +54,21 @@ exports["default"] = { x: "x" }; >x : Symbol(x, Decl(mod1.js, 2, 22)) module.exports["c"] = { x: "x" }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(module, Decl(mod1.js, 2, 32)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >"c" : Symbol("c", Decl(mod1.js, 2, 32)) >x : Symbol(x, Decl(mod1.js, 3, 23)) module["exports"]["d"] = {}; >module : Symbol(module, Decl(mod1.js, 2, 32)) ->"exports" : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>"exports" : Symbol(module.exports, Decl(mod1.js, 0, 0)) >"d" : Symbol("d", Decl(mod1.js, 3, 33), Decl(mod1.js, 5, 18)) module["exports"]["d"].e = 0; >module["exports"]["d"].e : Symbol("d".e, Decl(mod1.js, 4, 28)) >module : Symbol(module, Decl(mod1.js, 2, 32)) ->"exports" : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>"exports" : Symbol(module.exports, Decl(mod1.js, 0, 0)) >"d" : Symbol("d", Decl(mod1.js, 3, 33), Decl(mod1.js, 5, 18)) >e : Symbol("d".e, Decl(mod1.js, 4, 28)) diff --git a/tests/baselines/reference/moduleExportsElementAccessAssignment.types b/tests/baselines/reference/moduleExportsElementAccessAssignment.types index b5f4c3e0e5a..030a05cdbc7 100644 --- a/tests/baselines/reference/moduleExportsElementAccessAssignment.types +++ b/tests/baselines/reference/moduleExportsElementAccessAssignment.types @@ -68,9 +68,9 @@ exports["default"] = { x: "x" }; module.exports["c"] = { x: "x" }; >module.exports["c"] = { x: "x" } : { x: string; } >module.exports["c"] : { x: string; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod1") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"c" : "c" >{ x: "x" } : { x: string; } >x : string @@ -79,8 +79,8 @@ module.exports["c"] = { x: "x" }; module["exports"]["d"] = {}; >module["exports"]["d"] = {} : typeof "d" >module["exports"]["d"] : typeof "d" ->module["exports"] : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } +>module["exports"] : typeof module.exports +>module : { exports: typeof module.exports; } >"exports" : "exports" >"d" : "d" >{} : {} @@ -89,8 +89,8 @@ module["exports"]["d"].e = 0; >module["exports"]["d"].e = 0 : 0 >module["exports"]["d"].e : number >module["exports"]["d"] : typeof "d" ->module["exports"] : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } +>module["exports"] : typeof module.exports +>module : { exports: typeof module.exports; } >"exports" : "exports" >"d" : "d" >e : number diff --git a/tests/baselines/reference/nestedDestructuringOfRequire.symbols b/tests/baselines/reference/nestedDestructuringOfRequire.symbols index 88261e51d1e..920b3fa5bae 100644 --- a/tests/baselines/reference/nestedDestructuringOfRequire.symbols +++ b/tests/baselines/reference/nestedDestructuringOfRequire.symbols @@ -25,7 +25,7 @@ module.exports.chalk = chalk >module.exports.chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >module.exports : Symbol(chalk, Decl(mod1.js, 2, 2)) >module : Symbol(module, Decl(mod1.js, 2, 2)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >chalk : Symbol(chalk, Decl(mod1.js, 0, 5)) diff --git a/tests/baselines/reference/nestedDestructuringOfRequire.types b/tests/baselines/reference/nestedDestructuringOfRequire.types index fd97ba75a65..5e906928fb3 100644 --- a/tests/baselines/reference/nestedDestructuringOfRequire.types +++ b/tests/baselines/reference/nestedDestructuringOfRequire.types @@ -28,9 +28,9 @@ const chalk = { module.exports.chalk = chalk >module.exports.chalk = chalk : { grey: {}; } >module.exports.chalk : { grey: {}; } ->module.exports : typeof import("tests/cases/conformance/salsa/mod1") ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof import("tests/cases/conformance/salsa/mod1"); } ->exports : typeof import("tests/cases/conformance/salsa/mod1") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >chalk : { grey: {}; } >chalk : { grey: {}; } diff --git a/tests/baselines/reference/paramTagTypeResolution.symbols b/tests/baselines/reference/paramTagTypeResolution.symbols index 0622abf2c41..8e0c7a28035 100644 --- a/tests/baselines/reference/paramTagTypeResolution.symbols +++ b/tests/baselines/reference/paramTagTypeResolution.symbols @@ -14,7 +14,7 @@ f(1, n => { }) * @param {(t: T) => void} k */ module.exports = function (x, k) { return k(x) } ->module.exports : Symbol("tests/cases/conformance/jsdoc/first", Decl(first.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(first.js, 0, 0)) >module : Symbol(export=, Decl(first.js, 0, 0)) >exports : Symbol(export=, Decl(first.js, 0, 0)) >x : Symbol(x, Decl(first.js, 4, 27)) diff --git a/tests/baselines/reference/paramTagTypeResolution.types b/tests/baselines/reference/paramTagTypeResolution.types index 5a0bbd321aa..6cd76e46c59 100644 --- a/tests/baselines/reference/paramTagTypeResolution.types +++ b/tests/baselines/reference/paramTagTypeResolution.types @@ -20,7 +20,7 @@ f(1, n => { }) module.exports = function (x, k) { return k(x) } >module.exports = function (x, k) { return k(x) } : (x: T, k: (t: T) => void) => void >module.exports : (x: T, k: (t: T) => void) => void ->module : { "\"tests/cases/conformance/jsdoc/first\"": (x: T, k: (t: T) => void) => void; } +>module : { exports: (x: T, k: (t: T) => void) => void; } >exports : (x: T, k: (t: T) => void) => void >function (x, k) { return k(x) } : (x: T, k: (t: T) => void) => void >x : T diff --git a/tests/baselines/reference/requireOfJsonFileInJsFile.symbols b/tests/baselines/reference/requireOfJsonFileInJsFile.symbols index 2a1e9b6ebd3..481a055197e 100644 --- a/tests/baselines/reference/requireOfJsonFileInJsFile.symbols +++ b/tests/baselines/reference/requireOfJsonFileInJsFile.symbols @@ -43,7 +43,7 @@ js1.b; === /js.js === module.exports = { a: 0 }; ->module.exports : Symbol("/js", Decl(js.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(js.js, 0, 0)) >module : Symbol(export=, Decl(js.js, 0, 0)) >exports : Symbol(export=, Decl(js.js, 0, 0)) >a : Symbol(a, Decl(js.js, 0, 18)) diff --git a/tests/baselines/reference/requireOfJsonFileInJsFile.types b/tests/baselines/reference/requireOfJsonFileInJsFile.types index 0e8e9b847ab..92199139c05 100644 --- a/tests/baselines/reference/requireOfJsonFileInJsFile.types +++ b/tests/baselines/reference/requireOfJsonFileInJsFile.types @@ -55,7 +55,7 @@ js1.b; module.exports = { a: 0 }; >module.exports = { a: 0 } : { a: number; } >module.exports : { a: number; } ->module : { "\"/js\"": { a: number; }; } +>module : { exports: { a: number; }; } >exports : { a: number; } >{ a: 0 } : { a: number; } >a : number diff --git a/tests/baselines/reference/requireTwoPropertyAccesses.symbols b/tests/baselines/reference/requireTwoPropertyAccesses.symbols index 9102201a101..870a2f97eec 100644 --- a/tests/baselines/reference/requireTwoPropertyAccesses.symbols +++ b/tests/baselines/reference/requireTwoPropertyAccesses.symbols @@ -17,7 +17,7 @@ console.log(value) === tests/cases/conformance/salsa/mod.js === // @declaration module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(export=, Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) diff --git a/tests/baselines/reference/requireTwoPropertyAccesses.types b/tests/baselines/reference/requireTwoPropertyAccesses.types index c16098568ba..15609c96db7 100644 --- a/tests/baselines/reference/requireTwoPropertyAccesses.types +++ b/tests/baselines/reference/requireTwoPropertyAccesses.types @@ -21,7 +21,7 @@ console.log(value) module.exports = { >module.exports = { x: { y: "value" }} : { x: { y: string; }; } >module.exports : { x: { y: string; }; } ->module : { "\"tests/cases/conformance/salsa/mod\"": { x: { y: string; }; }; } +>module : { exports: { x: { y: string; }; }; } >exports : { x: { y: string; }; } >{ x: { y: "value" }} : { x: { y: string; }; } diff --git a/tests/baselines/reference/typeFromPropertyAssignment17.symbols b/tests/baselines/reference/typeFromPropertyAssignment17.symbols index b6121ee2507..007ddf6d277 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment17.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment17.symbols @@ -38,7 +38,7 @@ declare var module: any; === tests/cases/conformance/salsa/minimatch.js === /// module.exports = minimatch ->module.exports : Symbol("tests/cases/conformance/salsa/minimatch", Decl(minimatch.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(minimatch.js, 0, 0)) >module : Symbol(export=, Decl(minimatch.js, 0, 0)) >exports : Symbol(export=, Decl(minimatch.js, 0, 0)) >minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment17.types b/tests/baselines/reference/typeFromPropertyAssignment17.types index 86f6b6346f1..a6a907f7c77 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment17.types +++ b/tests/baselines/reference/typeFromPropertyAssignment17.types @@ -45,7 +45,7 @@ declare var module: any; module.exports = minimatch >module.exports = minimatch : typeof minimatch >module.exports : typeof minimatch ->module : { "\"tests/cases/conformance/salsa/minimatch\"": typeof minimatch; } +>module : { exports: typeof minimatch; } >exports : typeof minimatch >minimatch : typeof minimatch diff --git a/tests/baselines/reference/typeFromPropertyAssignment19.symbols b/tests/baselines/reference/typeFromPropertyAssignment19.symbols index 4b89af4a62e..f8f40e0dbc5 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment19.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment19.symbols @@ -22,7 +22,7 @@ declare var module: any; /// exports = module.exports = C >exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(semver.js, 0, 0)) >module : Symbol(export=, Decl(semver.js, 1, 9)) >exports : Symbol(export=, Decl(semver.js, 1, 9)) >C : Symbol(C, Decl(semver.js, 2, 16), Decl(semver.js, 1, 28)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment19.types b/tests/baselines/reference/typeFromPropertyAssignment19.types index a82897616e3..57c15b658a0 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment19.types +++ b/tests/baselines/reference/typeFromPropertyAssignment19.types @@ -28,7 +28,7 @@ exports = module.exports = C >exports : typeof C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/salsa/semver\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/typeFromPropertyAssignment37.symbols b/tests/baselines/reference/typeFromPropertyAssignment37.symbols index 909ded56c27..dd5667fc4f5 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment37.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment37.symbols @@ -21,9 +21,9 @@ util.existy // no error const util = exports = module.exports = {} >util : Symbol(util, Decl(mod.js, 0, 5)) >exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(module, Decl(mod.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) if (!!false) { util.existy = function () { } diff --git a/tests/baselines/reference/typeFromPropertyAssignment37.types b/tests/baselines/reference/typeFromPropertyAssignment37.types index 2813969da82..df245806612 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment37.types +++ b/tests/baselines/reference/typeFromPropertyAssignment37.types @@ -20,13 +20,13 @@ util.existy // no error === tests/cases/conformance/salsa/mod.js === const util = exports = module.exports = {} ->util : typeof import("tests/cases/conformance/salsa/mod") ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/mod") ->exports : typeof import("tests/cases/conformance/salsa/mod") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/mod") ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } +>util : typeof module.exports +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} if (!!false) { @@ -37,7 +37,7 @@ if (!!false) { util.existy = function () { } >util.existy = function () { } : () => void >util.existy : () => void ->util : typeof import("tests/cases/conformance/salsa/mod") +>util : typeof module.exports >existy : () => void >function () { } : () => void } diff --git a/tests/baselines/reference/typeTagModuleExports.symbols b/tests/baselines/reference/typeTagModuleExports.symbols index a625e8dd77b..9b660c0554b 100644 --- a/tests/baselines/reference/typeTagModuleExports.symbols +++ b/tests/baselines/reference/typeTagModuleExports.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/jsdoc/bug27327.js === /** @type {string} */ module.exports = 0; ->module.exports : Symbol("tests/cases/conformance/jsdoc/bug27327", Decl(bug27327.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27327.js, 0, 0)) >module : Symbol(export=, Decl(bug27327.js, 0, 0)) >exports : Symbol(export=, Decl(bug27327.js, 0, 0)) diff --git a/tests/baselines/reference/typeTagModuleExports.types b/tests/baselines/reference/typeTagModuleExports.types index 20da526f474..bf7206042cb 100644 --- a/tests/baselines/reference/typeTagModuleExports.types +++ b/tests/baselines/reference/typeTagModuleExports.types @@ -3,7 +3,7 @@ module.exports = 0; >module.exports = 0 : string >module.exports : string ->module : { "\"tests/cases/conformance/jsdoc/bug27327\"": string; } +>module : { exports: string; } >exports : string >0 : 0 diff --git a/tests/baselines/reference/typedefCrossModule.symbols b/tests/baselines/reference/typedefCrossModule.symbols index aa3c9d5784a..73bb067e52b 100644 --- a/tests/baselines/reference/typedefCrossModule.symbols +++ b/tests/baselines/reference/typedefCrossModule.symbols @@ -9,7 +9,7 @@ declare var module: { exports: any}; /** @typedef {{ type: "b", y: 1 }} B */ /** @typedef {A | B} Both */ module.exports = C ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/tests/baselines/reference/typedefCrossModule.types b/tests/baselines/reference/typedefCrossModule.types index fdc8314c064..31dabc4acfd 100644 --- a/tests/baselines/reference/typedefCrossModule.types +++ b/tests/baselines/reference/typedefCrossModule.types @@ -11,7 +11,7 @@ declare var module: { exports: any}; module.exports = C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/typedefCrossModule2.symbols b/tests/baselines/reference/typedefCrossModule2.symbols index a473991f8c4..adea03ca980 100644 --- a/tests/baselines/reference/typedefCrossModule2.symbols +++ b/tests/baselines/reference/typedefCrossModule2.symbols @@ -31,7 +31,7 @@ exports.Bar = class { } /** @typedef {number} Baz */ module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) >exports : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) @@ -53,7 +53,7 @@ exports.Quid = 2; /** @typedef {number} Quack */ module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) >exports : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) diff --git a/tests/baselines/reference/typedefCrossModule2.types b/tests/baselines/reference/typedefCrossModule2.types index 02aa91c0798..d38cc33a6d7 100644 --- a/tests/baselines/reference/typedefCrossModule2.types +++ b/tests/baselines/reference/typedefCrossModule2.types @@ -39,7 +39,7 @@ exports.Bar = class { } module.exports = { >module.exports = { Baz: class { }} : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >module.exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } +>module : { exports: { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } >exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >{ Baz: class { }} : { Baz: typeof Baz; } @@ -67,7 +67,7 @@ exports.Quid = 2; module.exports = { >module.exports = { Quack: 2} : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >module.exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } +>module : { exports: { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } >exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >{ Quack: 2} : { Quack: number; } diff --git a/tests/baselines/reference/typedefCrossModule3.symbols b/tests/baselines/reference/typedefCrossModule3.symbols index e4085c79bf1..1cb42970940 100644 --- a/tests/baselines/reference/typedefCrossModule3.symbols +++ b/tests/baselines/reference/typedefCrossModule3.symbols @@ -9,7 +9,7 @@ ns.Foo = class {} >Foo : Symbol(Foo, Decl(mod2.js, 1, 14), Decl(mod2.js, 0, 4)) module.exports = ns; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(export=, Decl(mod2.js, 2, 17)) >exports : Symbol(export=, Decl(mod2.js, 2, 17)) >ns : Symbol(ns, Decl(mod2.js, 1, 5), Decl(mod2.js, 1, 14)) diff --git a/tests/baselines/reference/typedefCrossModule3.types b/tests/baselines/reference/typedefCrossModule3.types index bca3cb15698..8b3b349f277 100644 --- a/tests/baselines/reference/typedefCrossModule3.types +++ b/tests/baselines/reference/typedefCrossModule3.types @@ -14,7 +14,7 @@ ns.Foo = class {} module.exports = ns; >module.exports = ns : typeof ns >module.exports : typeof ns ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof ns; } +>module : { exports: typeof ns; } >exports : typeof ns >ns : typeof ns diff --git a/tests/baselines/reference/typedefCrossModule4.symbols b/tests/baselines/reference/typedefCrossModule4.symbols index bc68e509d77..a4762172f17 100644 --- a/tests/baselines/reference/typedefCrossModule4.symbols +++ b/tests/baselines/reference/typedefCrossModule4.symbols @@ -4,7 +4,7 @@ class Bar { } >Bar : Symbol(Bar, Decl(mod3.js, 0, 0)) module.exports = { Foo: Bar }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod3", Decl(mod3.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod3.js, 0, 0)) >module : Symbol(export=, Decl(mod3.js, 1, 13)) >exports : Symbol(export=, Decl(mod3.js, 1, 13)) >Foo : Symbol(Foo, Decl(mod3.js, 2, 18)) diff --git a/tests/baselines/reference/typedefCrossModule4.types b/tests/baselines/reference/typedefCrossModule4.types index eb01fe95625..b107c80e624 100644 --- a/tests/baselines/reference/typedefCrossModule4.types +++ b/tests/baselines/reference/typedefCrossModule4.types @@ -6,7 +6,7 @@ class Bar { } module.exports = { Foo: Bar }; >module.exports = { Foo: Bar } : { Foo: typeof Bar; } >module.exports : { Foo: typeof Bar; } ->module : { "\"tests/cases/conformance/jsdoc/mod3\"": { Foo: typeof Bar; }; } +>module : { exports: { Foo: typeof Bar; }; } >exports : { Foo: typeof Bar; } >{ Foo: Bar } : { Foo: typeof Bar; } >Foo : typeof Bar From 4c43e09c9e8e6ba5d44749c241612818d160c453 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 5 Feb 2021 12:07:14 -0800 Subject: [PATCH 17/36] Add fallback error locations for nameless declarations, better class error locations (#42585) --- src/compiler/transformers/declarations.ts | 15 ++- ...rationEmitMixinPrivateProtected.errors.txt | 53 ++++++++ .../declarationEmitMixinPrivateProtected.js | 115 ++++++++++++++++++ ...clarationEmitMixinPrivateProtected.symbols | 71 +++++++++++ ...declarationEmitMixinPrivateProtected.types | 72 +++++++++++ ...assExpressionInDeclarationFile2.errors.txt | 5 +- .../declarationEmitMixinPrivateProtected.ts | 34 ++++++ 7 files changed, 360 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt create mode 100644 tests/baselines/reference/declarationEmitMixinPrivateProtected.js create mode 100644 tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols create mode 100644 tests/baselines/reference/declarationEmitMixinPrivateProtected.types create mode 100644 tests/cases/compiler/declarationEmitMixinPrivateProtected.ts diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index a6dab51d9c8..69add2945f4 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -80,6 +80,7 @@ namespace ts { reportNonlocalAugmentation }; let errorNameNode: DeclarationName | undefined; + let errorFallbackNode: Declaration | undefined; let currentSourceFile: SourceFile; let refs: ESMap; @@ -161,9 +162,9 @@ namespace ts { } function reportPrivateInBaseOfClassExpression(propertyName: string) { - if (errorNameNode) { + if (errorNameNode || errorFallbackNode) { context.addDiagnostic( - createDiagnosticForNode(errorNameNode, Diagnostics.Property_0_of_exported_class_expression_may_not_be_private_or_protected, propertyName)); + createDiagnosticForNode((errorNameNode || errorFallbackNode)!, Diagnostics.Property_0_of_exported_class_expression_may_not_be_private_or_protected, propertyName)); } } @@ -199,8 +200,8 @@ namespace ts { } function reportTruncationError() { - if (errorNameNode) { - context.addDiagnostic(createDiagnosticForNode(errorNameNode, Diagnostics.The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed)); + if (errorNameNode || errorFallbackNode) { + context.addDiagnostic(createDiagnosticForNode((errorNameNode || errorFallbackNode)!, Diagnostics.The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed)); } } @@ -1102,7 +1103,9 @@ namespace ts { diagnosticMessage: Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, errorNode: input }); + errorFallbackNode = input; const varDecl = factory.createVariableDeclaration(newId, /*exclamationToken*/ undefined, resolver.createTypeOfExpression(input.expression, input, declarationEmitNodeBuilderFlags, symbolTracker), /*initializer*/ undefined); + errorFallbackNode = undefined; const statement = factory.createVariableStatement(needsDeclare ? [factory.createModifier(SyntaxKind.DeclareKeyword)] : [], factory.createVariableDeclarationList([varDecl], NodeFlags.Const)); return [statement, factory.updateExportAssignment(input, input.decorators, input.modifiers, newId)]; } @@ -1326,6 +1329,8 @@ namespace ts { } } case SyntaxKind.ClassDeclaration: { + errorNameNode = input.name; + errorFallbackNode = input; const modifiers = factory.createNodeArray(ensureModifiers(input)); const typeParameters = ensureTypeParams(input, input.typeParameters); const ctor = getFirstConstructorWithBody(input); @@ -1462,6 +1467,8 @@ namespace ts { if (node as Node === input) { return node; } + errorFallbackNode = undefined; + errorNameNode = undefined; return node && setOriginalNode(preserveJsDoc(node, input), input); } } diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt b/tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt new file mode 100644 index 00000000000..bb737d0c15c --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt @@ -0,0 +1,53 @@ +tests/cases/compiler/another.ts(11,1): error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. +tests/cases/compiler/another.ts(11,1): error TS4094: Property '_onDispose' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(12,1): error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(12,1): error TS4094: Property '_onDispose' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(13,14): error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(13,14): error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + + +==== tests/cases/compiler/first.ts (4 errors) ==== + declare function mix(mixin: TMix): TMix; + + const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } + }; + + // No error, but definition is wrong. + export default mix(DisposableMixin); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + export class Monitor extends mix(DisposableMixin) { + ~~~~~~~ +!!! error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. + ~~~~~~~ +!!! error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + protected _onDispose() { + } + } + +==== tests/cases/compiler/another.ts (2 errors) ==== + declare function mix(mixin: TMix): TMix; + + const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } + }; + + export default class extends mix(DisposableMixin) { + ~~~~~~ +!!! error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. + ~~~~~~ +!!! error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + protected _onDispose() { + } + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.js b/tests/baselines/reference/declarationEmitMixinPrivateProtected.js new file mode 100644 index 00000000000..8c578e62e7c --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.js @@ -0,0 +1,115 @@ +//// [tests/cases/compiler/declarationEmitMixinPrivateProtected.ts] //// + +//// [first.ts] +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +export class Monitor extends mix(DisposableMixin) { + protected _onDispose() { + } +} + +//// [another.ts] +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +export default class extends mix(DisposableMixin) { + protected _onDispose() { + } +} + +//// [first.js] +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; +exports.Monitor = void 0; +var DisposableMixin = /** @class */ (function () { + function class_1() { + } + class_1.prototype._onDispose = function () { + this._assertIsStripped(); + }; + class_1.prototype._assertIsStripped = function () { + }; + return class_1; +}()); +// No error, but definition is wrong. +exports["default"] = mix(DisposableMixin); +var Monitor = /** @class */ (function (_super) { + __extends(Monitor, _super); + function Monitor() { + return _super !== null && _super.apply(this, arguments) || this; + } + Monitor.prototype._onDispose = function () { + }; + return Monitor; +}(mix(DisposableMixin))); +exports.Monitor = Monitor; +//// [another.js] +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; +var DisposableMixin = /** @class */ (function () { + function class_1() { + } + class_1.prototype._onDispose = function () { + this._assertIsStripped(); + }; + class_1.prototype._assertIsStripped = function () { + }; + return class_1; +}()); +var default_1 = /** @class */ (function (_super) { + __extends(default_1, _super); + function default_1() { + return _super !== null && _super.apply(this, arguments) || this; + } + default_1.prototype._onDispose = function () { + }; + return default_1; +}(mix(DisposableMixin))); +exports["default"] = default_1; diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols b/tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols new file mode 100644 index 00000000000..8f543a285d7 --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols @@ -0,0 +1,71 @@ +=== tests/cases/compiler/first.ts === +declare function mix(mixin: TMix): TMix; +>mix : Symbol(mix, Decl(first.ts, 0, 0)) +>TMix : Symbol(TMix, Decl(first.ts, 0, 21)) +>mixin : Symbol(mixin, Decl(first.ts, 0, 27)) +>TMix : Symbol(TMix, Decl(first.ts, 0, 21)) +>TMix : Symbol(TMix, Decl(first.ts, 0, 21)) + +const DisposableMixin = class { +>DisposableMixin : Symbol(DisposableMixin, Decl(first.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(DisposableMixin._onDispose, Decl(first.ts, 2, 31)) + + this._assertIsStripped() +>this._assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(first.ts, 5, 5)) +>this : Symbol(DisposableMixin, Decl(first.ts, 2, 23)) +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(first.ts, 5, 5)) + } + private _assertIsStripped() { +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(first.ts, 5, 5)) + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +>mix : Symbol(mix, Decl(first.ts, 0, 0)) +>DisposableMixin : Symbol(DisposableMixin, Decl(first.ts, 2, 5)) + +export class Monitor extends mix(DisposableMixin) { +>Monitor : Symbol(Monitor, Decl(first.ts, 11, 36)) +>mix : Symbol(mix, Decl(first.ts, 0, 0)) +>DisposableMixin : Symbol(DisposableMixin, Decl(first.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(Monitor._onDispose, Decl(first.ts, 12, 51)) + } +} + +=== tests/cases/compiler/another.ts === +declare function mix(mixin: TMix): TMix; +>mix : Symbol(mix, Decl(another.ts, 0, 0)) +>TMix : Symbol(TMix, Decl(another.ts, 0, 21)) +>mixin : Symbol(mixin, Decl(another.ts, 0, 27)) +>TMix : Symbol(TMix, Decl(another.ts, 0, 21)) +>TMix : Symbol(TMix, Decl(another.ts, 0, 21)) + +const DisposableMixin = class { +>DisposableMixin : Symbol(DisposableMixin, Decl(another.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(DisposableMixin._onDispose, Decl(another.ts, 2, 31)) + + this._assertIsStripped() +>this._assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(another.ts, 5, 5)) +>this : Symbol(DisposableMixin, Decl(another.ts, 2, 23)) +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(another.ts, 5, 5)) + } + private _assertIsStripped() { +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(another.ts, 5, 5)) + } +}; + +export default class extends mix(DisposableMixin) { +>mix : Symbol(mix, Decl(another.ts, 0, 0)) +>DisposableMixin : Symbol(DisposableMixin, Decl(another.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(default._onDispose, Decl(another.ts, 10, 51)) + } +} diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.types b/tests/baselines/reference/declarationEmitMixinPrivateProtected.types new file mode 100644 index 00000000000..77dcaba30eb --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.types @@ -0,0 +1,72 @@ +=== tests/cases/compiler/first.ts === +declare function mix(mixin: TMix): TMix; +>mix : (mixin: TMix) => TMix +>mixin : TMix + +const DisposableMixin = class { +>DisposableMixin : typeof DisposableMixin +>class { protected _onDispose() { this._assertIsStripped() } private _assertIsStripped() { }} : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + + this._assertIsStripped() +>this._assertIsStripped() : void +>this._assertIsStripped : () => void +>this : this +>_assertIsStripped : () => void + } + private _assertIsStripped() { +>_assertIsStripped : () => void + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +>mix(DisposableMixin) : typeof DisposableMixin +>mix : (mixin: TMix) => TMix +>DisposableMixin : typeof DisposableMixin + +export class Monitor extends mix(DisposableMixin) { +>Monitor : Monitor +>mix(DisposableMixin) : DisposableMixin +>mix : (mixin: TMix) => TMix +>DisposableMixin : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + } +} + +=== tests/cases/compiler/another.ts === +declare function mix(mixin: TMix): TMix; +>mix : (mixin: TMix) => TMix +>mixin : TMix + +const DisposableMixin = class { +>DisposableMixin : typeof DisposableMixin +>class { protected _onDispose() { this._assertIsStripped() } private _assertIsStripped() { }} : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + + this._assertIsStripped() +>this._assertIsStripped() : void +>this._assertIsStripped : () => void +>this : this +>_assertIsStripped : () => void + } + private _assertIsStripped() { +>_assertIsStripped : () => void + } +}; + +export default class extends mix(DisposableMixin) { +>mix(DisposableMixin) : DisposableMixin +>mix : (mixin: TMix) => TMix +>DisposableMixin : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + } +} diff --git a/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt b/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt index 4541cf2a58a..25c0bc8c50b 100644 --- a/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt +++ b/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt @@ -1,9 +1,10 @@ tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(1,12): error TS4094: Property 'p' of exported class expression may not be private or protected. tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(1,12): error TS4094: Property 'ps' of exported class expression may not be private or protected. tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(16,17): error TS4094: Property 'property' of exported class expression may not be private or protected. +tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(23,14): error TS4094: Property 'property' of exported class expression may not be private or protected. -==== tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts (3 errors) ==== +==== tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts (4 errors) ==== export var noPrivates = class { ~~~~~~~~~~ !!! error TS4094: Property 'p' of exported class expression may not be private or protected. @@ -33,6 +34,8 @@ tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(16,17): error TS40 } export class Test extends WithTags(FooItem) {} + ~~~~ +!!! error TS4094: Property 'property' of exported class expression may not be private or protected. const test = new Test(); diff --git a/tests/cases/compiler/declarationEmitMixinPrivateProtected.ts b/tests/cases/compiler/declarationEmitMixinPrivateProtected.ts new file mode 100644 index 00000000000..65a2fa0d25a --- /dev/null +++ b/tests/cases/compiler/declarationEmitMixinPrivateProtected.ts @@ -0,0 +1,34 @@ +// @declaration: true +// @filename: first.ts +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +export class Monitor extends mix(DisposableMixin) { + protected _onDispose() { + } +} + +// @filename: another.ts +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +export default class extends mix(DisposableMixin) { + protected _onDispose() { + } +} \ No newline at end of file From 60a62402107f1708c4c66477256090b6731c48d8 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Sat, 6 Feb 2021 01:24:48 +0200 Subject: [PATCH 18/36] feat(42637): add generateReturn option to UserPreferences (#42642) --- src/harness/client.ts | 2 +- src/harness/fourslashImpl.ts | 4 +-- src/harness/fourslashInterfaceImpl.ts | 4 +-- src/harness/harnessLanguageService.ts | 4 +-- src/server/protocol.ts | 2 ++ src/server/session.ts | 2 +- src/services/jsDoc.ts | 29 ++++++++++--------- src/services/services.ts | 4 +-- src/services/shims.ts | 6 ++-- src/services/types.ts | 6 +++- .../reference/api/tsserverlibrary.d.ts | 6 +++- tests/baselines/reference/api/typescript.d.ts | 5 +++- ...ag.ts => docCommentTemplateReturnsTag1.ts} | 0 .../docCommentTemplateReturnsTag2.ts | 21 ++++++++++++++ tests/cases/fourslash/fourslash.ts | 6 +++- 15 files changed, 70 insertions(+), 31 deletions(-) rename tests/cases/fourslash/{docCommentTemplateReturnsTag.ts => docCommentTemplateReturnsTag1.ts} (100%) create mode 100644 tests/cases/fourslash/docCommentTemplateReturnsTag2.ts diff --git a/src/harness/client.ts b/src/harness/client.ts index 4bdb316b6b4..f4f703d9164 100644 --- a/src/harness/client.ts +++ b/src/harness/client.ts @@ -605,7 +605,7 @@ namespace ts.server { return notImplemented(); } - getDocCommentTemplateAtPosition(_fileName: string, _position: number): TextInsertion { + getDocCommentTemplateAtPosition(_fileName: string, _position: number, _options?: DocCommentTemplateOptions): TextInsertion { return notImplemented(); } diff --git a/src/harness/fourslashImpl.ts b/src/harness/fourslashImpl.ts index 8fd2f7f2447..d86f2e904fe 100644 --- a/src/harness/fourslashImpl.ts +++ b/src/harness/fourslashImpl.ts @@ -3048,9 +3048,9 @@ namespace FourSlash { assert.deepEqual(actualModuleSpecifiers, moduleSpecifiers); } - public verifyDocCommentTemplate(expected: ts.TextInsertion | undefined) { + public verifyDocCommentTemplate(expected: ts.TextInsertion | undefined, options?: ts.DocCommentTemplateOptions) { const name = "verifyDocCommentTemplate"; - const actual = this.languageService.getDocCommentTemplateAtPosition(this.activeFile.fileName, this.currentCaretPosition)!; + const actual = this.languageService.getDocCommentTemplateAtPosition(this.activeFile.fileName, this.currentCaretPosition, options || { generateReturnInDocTemplate: true })!; if (expected === undefined) { if (actual) { diff --git a/src/harness/fourslashInterfaceImpl.ts b/src/harness/fourslashInterfaceImpl.ts index 2e64b2921e8..09b52997b12 100644 --- a/src/harness/fourslashInterfaceImpl.ts +++ b/src/harness/fourslashInterfaceImpl.ts @@ -432,9 +432,9 @@ namespace FourSlashInterface { this.state.verifyNoMatchingBracePosition(bracePosition); } - public docCommentTemplateAt(marker: string | FourSlash.Marker, expectedOffset: number, expectedText: string) { + public docCommentTemplateAt(marker: string | FourSlash.Marker, expectedOffset: number, expectedText: string, options?: ts.DocCommentTemplateOptions) { this.state.goToMarker(marker); - this.state.verifyDocCommentTemplate({ newText: expectedText.replace(/\r?\n/g, "\r\n"), caretOffset: expectedOffset }); + this.state.verifyDocCommentTemplate({ newText: expectedText.replace(/\r?\n/g, "\r\n"), caretOffset: expectedOffset }, options); } public noDocCommentTemplateAt(marker: string | FourSlash.Marker) { diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 85164d58bb1..1a056683f91 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -558,8 +558,8 @@ namespace Harness.LanguageService { getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: ts.FormatCodeOptions): ts.TextChange[] { return unwrapJSONCallResult(this.shim.getFormattingEditsAfterKeystroke(fileName, position, key, JSON.stringify(options))); } - getDocCommentTemplateAtPosition(fileName: string, position: number): ts.TextInsertion { - return unwrapJSONCallResult(this.shim.getDocCommentTemplateAtPosition(fileName, position)); + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: ts.DocCommentTemplateOptions): ts.TextInsertion { + return unwrapJSONCallResult(this.shim.getDocCommentTemplateAtPosition(fileName, position, options)); } isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean { return unwrapJSONCallResult(this.shim.isValidBraceCompletionAtPosition(fileName, position, openingBrace)); diff --git a/src/server/protocol.ts b/src/server/protocol.ts index 237ce1fd5a0..1ce0c66019f 100644 --- a/src/server/protocol.ts +++ b/src/server/protocol.ts @@ -3273,6 +3273,8 @@ namespace ts.server.protocol { readonly provideRefactorNotApplicableReason?: boolean; readonly allowRenameOfImportPath?: boolean; readonly includePackageJsonAutoImports?: "auto" | "on" | "off"; + + readonly generateReturnInDocTemplate?: boolean; } export interface CompilerOptions { diff --git a/src/server/session.ts b/src/server/session.ts index 99133fbbff8..2ee15bd1b8a 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -1641,7 +1641,7 @@ namespace ts.server { private getDocCommentTemplate(args: protocol.FileLocationRequestArgs) { const { file, languageService } = this.getFileAndLanguageServiceForSyntacticOperation(args); const position = this.getPositionInFile(args, file); - return languageService.getDocCommentTemplateAtPosition(file, position); + return languageService.getDocCommentTemplateAtPosition(file, position, this.getPreferences(file)); } private getSpanOfEnclosingComment(args: protocol.SpanOfEnclosingCommentRequestArgs) { diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 7874ddfcb3a..b0e133521cd 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -251,7 +251,7 @@ namespace ts.JsDoc { * @param position The (character-indexed) position in the file where the check should * be performed. */ - export function getDocCommentTemplateAtPosition(newLine: string, sourceFile: SourceFile, position: number): TextInsertion | undefined { + export function getDocCommentTemplateAtPosition(newLine: string, sourceFile: SourceFile, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined { const tokenAtPos = getTokenAtPosition(sourceFile, position); const existingDocComment = findAncestor(tokenAtPos, isJSDoc); if (existingDocComment && (existingDocComment.comment !== undefined || length(existingDocComment.tags))) { @@ -265,7 +265,7 @@ namespace ts.JsDoc { return undefined; } - const commentOwnerInfo = getCommentOwnerInfo(tokenAtPos); + const commentOwnerInfo = getCommentOwnerInfo(tokenAtPos, options); if (!commentOwnerInfo) { return undefined; } @@ -325,10 +325,10 @@ namespace ts.JsDoc { readonly parameters?: readonly ParameterDeclaration[]; readonly hasReturn?: boolean; } - function getCommentOwnerInfo(tokenAtPos: Node): CommentOwnerInfo | undefined { - return forEachAncestor(tokenAtPos, getCommentOwnerInfoWorker); + function getCommentOwnerInfo(tokenAtPos: Node, options: DocCommentTemplateOptions | undefined): CommentOwnerInfo | undefined { + return forEachAncestor(tokenAtPos, n => getCommentOwnerInfoWorker(n, options)); } - function getCommentOwnerInfoWorker(commentOwner: Node): CommentOwnerInfo | undefined | "quit" { + function getCommentOwnerInfoWorker(commentOwner: Node, options: DocCommentTemplateOptions | undefined): CommentOwnerInfo | undefined | "quit" { switch (commentOwner.kind) { case SyntaxKind.FunctionDeclaration: case SyntaxKind.FunctionExpression: @@ -337,10 +337,10 @@ namespace ts.JsDoc { case SyntaxKind.MethodSignature: case SyntaxKind.ArrowFunction: const host = commentOwner as ArrowFunction | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | MethodSignature; - return { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host) }; + return { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host, options) }; case SyntaxKind.PropertyAssignment: - return getCommentOwnerInfoWorker((commentOwner as PropertyAssignment).initializer); + return getCommentOwnerInfoWorker((commentOwner as PropertyAssignment).initializer, options); case SyntaxKind.ClassDeclaration: case SyntaxKind.InterfaceDeclaration: @@ -357,7 +357,7 @@ namespace ts.JsDoc { ? getRightHandSideOfAssignment(varDeclarations[0].initializer) : undefined; return host - ? { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host) } + ? { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host, options) } : { commentOwner }; } @@ -371,27 +371,28 @@ namespace ts.JsDoc { return commentOwner.parent.kind === SyntaxKind.ModuleDeclaration ? undefined : { commentOwner }; case SyntaxKind.ExpressionStatement: - return getCommentOwnerInfoWorker((commentOwner as ExpressionStatement).expression); + return getCommentOwnerInfoWorker((commentOwner as ExpressionStatement).expression, options); case SyntaxKind.BinaryExpression: { const be = commentOwner as BinaryExpression; if (getAssignmentDeclarationKind(be) === AssignmentDeclarationKind.None) { return "quit"; } return isFunctionLike(be.right) - ? { commentOwner, parameters: be.right.parameters, hasReturn: hasReturn(be.right) } + ? { commentOwner, parameters: be.right.parameters, hasReturn: hasReturn(be.right, options) } : { commentOwner }; } case SyntaxKind.PropertyDeclaration: const init = (commentOwner as PropertyDeclaration).initializer; if (init && (isFunctionExpression(init) || isArrowFunction(init))) { - return { commentOwner, parameters: init.parameters, hasReturn: hasReturn(init) }; + return { commentOwner, parameters: init.parameters, hasReturn: hasReturn(init, options) }; } } } - function hasReturn(node: Node) { - return isArrowFunction(node) && isExpression(node.body) - || isFunctionLikeDeclaration(node) && node.body && isBlock(node.body) && !!forEachReturnStatement(node.body, n => n); + function hasReturn(node: Node, options: DocCommentTemplateOptions | undefined) { + return !!options?.generateReturnInDocTemplate && + (isArrowFunction(node) && isExpression(node.body) + || isFunctionLikeDeclaration(node) && node.body && isBlock(node.body) && !!forEachReturnStatement(node.body, n => n)); } function getRightHandSideOfAssignment(rightHandSide: Expression): FunctionExpression | ArrowFunction | ConstructorDeclaration | undefined { diff --git a/src/services/services.ts b/src/services/services.ts index 3b4ce096834..e1b60bdef80 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2004,8 +2004,8 @@ namespace ts { : Promise.reject("Host does not implement `installPackage`"); } - function getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined { - return JsDoc.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position); + function getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined { + return JsDoc.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); } function isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean { diff --git a/src/services/shims.ts b/src/services/shims.ts index 30144210271..e986820765a 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -263,7 +263,7 @@ namespace ts { /** * Returns JSON-encoded value of the type TextInsertion. */ - getDocCommentTemplateAtPosition(fileName: string, position: number): string; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): string; /** * Returns JSON-encoded boolean to indicate whether we should support brace location @@ -999,10 +999,10 @@ namespace ts { }); } - public getDocCommentTemplateAtPosition(fileName: string, position: number): string { + public getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): string { return this.forwardJSONCall( `getDocCommentTemplateAtPosition('${fileName}', ${position})`, - () => this.languageService.getDocCommentTemplateAtPosition(fileName, position) + () => this.languageService.getDocCommentTemplateAtPosition(fileName, position, options) ); } diff --git a/src/services/types.ts b/src/services/types.ts index f1ca5f73727..82563150ecb 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -490,7 +490,7 @@ namespace ts { getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; - getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; /** @@ -1073,6 +1073,10 @@ namespace ts { readonly allowRenameOfImportPath?: boolean; } + export interface DocCommentTemplateOptions { + readonly generateReturnInDocTemplate?: boolean; + } + export interface SignatureHelpParameter { name: string; documentation: SymbolDisplayPart[]; diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 4419cf5a9cc..be1c47fd86a 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -5555,7 +5555,7 @@ declare namespace ts { getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; - getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; /** * This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag. @@ -6020,6 +6020,9 @@ declare namespace ts { interface RenameInfoOptions { readonly allowRenameOfImportPath?: boolean; } + interface DocCommentTemplateOptions { + readonly generateReturnInDocTemplate?: boolean; + } interface SignatureHelpParameter { name: string; documentation: SymbolDisplayPart[]; @@ -9046,6 +9049,7 @@ declare namespace ts.server.protocol { readonly provideRefactorNotApplicableReason?: boolean; readonly allowRenameOfImportPath?: boolean; readonly includePackageJsonAutoImports?: "auto" | "on" | "off"; + readonly generateReturnInDocTemplate?: boolean; } interface CompilerOptions { allowJs?: boolean; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index f603ef46bac..bba168d37e7 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -5555,7 +5555,7 @@ declare namespace ts { getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; - getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; /** * This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag. @@ -6020,6 +6020,9 @@ declare namespace ts { interface RenameInfoOptions { readonly allowRenameOfImportPath?: boolean; } + interface DocCommentTemplateOptions { + readonly generateReturnInDocTemplate?: boolean; + } interface SignatureHelpParameter { name: string; documentation: SymbolDisplayPart[]; diff --git a/tests/cases/fourslash/docCommentTemplateReturnsTag.ts b/tests/cases/fourslash/docCommentTemplateReturnsTag1.ts similarity index 100% rename from tests/cases/fourslash/docCommentTemplateReturnsTag.ts rename to tests/cases/fourslash/docCommentTemplateReturnsTag1.ts diff --git a/tests/cases/fourslash/docCommentTemplateReturnsTag2.ts b/tests/cases/fourslash/docCommentTemplateReturnsTag2.ts new file mode 100644 index 00000000000..18767a42280 --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateReturnsTag2.ts @@ -0,0 +1,21 @@ +/// + +/////*0*/ +////function f1(x: number, y: number) { +//// return 1; +////} + +verify.docCommentTemplateAt("0", 8, + `/** + * + * @param x + * @param y + * @returns + */`, { generateReturnInDocTemplate: true }); + +verify.docCommentTemplateAt("0", 8, + `/** + * + * @param x + * @param y + */`, { generateReturnInDocTemplate: false }); diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 7228fee24b1..387d8431904 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -328,7 +328,7 @@ declare namespace FourSlashInterface { todoCommentsInCurrentFile(descriptors: string[]): void; matchingBracePositionInCurrentFile(bracePosition: number, expectedMatchPosition: number): void; noMatchingBracePositionInCurrentFile(bracePosition: number): void; - docCommentTemplateAt(markerName: string | FourSlashInterface.Marker, expectedOffset: number, expectedText: string): void; + docCommentTemplateAt(markerName: string | FourSlashInterface.Marker, expectedOffset: number, expectedText: string, options?: VerifyDocCommentTemplateOptions): void; noDocCommentTemplateAt(markerName: string | FourSlashInterface.Marker): void; rangeAfterCodeFix(expectedText: string, includeWhiteSpace?: boolean, errorCode?: number, index?: number): void; codeFixAll(options: { fixId: string, fixAllDescription: string, newFileContent: NewFileContent, commands?: {}[] }): void; @@ -664,6 +664,10 @@ declare namespace FourSlashInterface { overrideSelectedItemIndex?: number; } + interface VerifyDocCommentTemplateOptions { + generateReturnInDocTemplate?: boolean; + } + export type SignatureHelpTriggerReason = | SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason From 7de5d0b83a2100e3729470b76846a4bb36e1b30e Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Sun, 7 Feb 2021 06:22:44 +0000 Subject: [PATCH 19/36] Update package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98f8f0f7dd3..32c759fbc44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7942,9 +7942,9 @@ "dev": true }, "uglify-js": { - "version": "3.12.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.6.tgz", - "integrity": "sha512-aqWHe3DfQmZUDGWBbabZ2eQnJlQd1fKlMUu7gV+MiTuDzdgDw31bI3wA2jLLsV/hNcDP26IfyEgSVoft5+0SVw==", + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.7.tgz", + "integrity": "sha512-SIZhkoh+U/wjW+BHGhVwE9nt8tWJspncloBcFapkpGRwNPqcH8pzX36BXe3TPBjzHWPMUZotpCigak/udWNr1Q==", "dev": true, "optional": true }, From f462576ac2cf32af0571819c528c0ff239cb65ee Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Wed, 13 Jan 2021 16:01:53 -0500 Subject: [PATCH 20/36] Re-do tracing initialization and tests around calls Make `tracing` either `undefined` or the same namespace as before. Switching all calls to `tracing?.___` means that there is no cost for a call or the arguments when tracing is not used. Comparing two runs without tracing (27 runs, drop 5+5, avg rest) I get: master: 42.59s user 1.00s system 165% cpu 26.372 total changed: 42.01s user 0.982 system 165% cpu 26.039 total (Makes it all private, so no api changes.) --- src/compiler/binder.ts | 4 +- src/compiler/checker.ts | 40 ++++++------ src/compiler/emitter.ts | 12 ++-- src/compiler/parser.ts | 4 +- src/compiler/program.ts | 44 ++++++------- src/compiler/tracing.ts | 66 +++++++++----------- src/compiler/transformer.ts | 4 +- src/compiler/utilities.ts | 2 +- src/executeCommandLine/executeCommandLine.ts | 7 ++- src/server/session.ts | 28 ++++----- src/services/services.ts | 4 +- src/tsserver/nodeServer.ts | 6 +- 12 files changed, 107 insertions(+), 114 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 365a3d36515..bea34807d86 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -174,14 +174,14 @@ namespace ts { const binder = createBinder(); export function bindSourceFile(file: SourceFile, options: CompilerOptions) { - tracing.push(tracing.Phase.Bind, "bindSourceFile", { path: file.path }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Bind, "bindSourceFile", { path: file.path }, /*separateBeginAndEnd*/ true); performance.mark("beforeBind"); perfLogger.logStartBindFile("" + file.fileName); binder(file, options); perfLogger.logStopBindFile(); performance.mark("afterBind"); performance.measure("Bind", "beforeBind", "afterBind"); - tracing.pop(); + tracing?.pop(); } function createBinder(): (file: SourceFile, options: CompilerOptions) => void { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2edf4ada5a1..bf7d17a951f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13338,7 +13338,7 @@ namespace ts { // caps union types at 1000 unique object types. const estimatedCount = (count / (len - i)) * len; if (estimatedCount > 1000000) { - tracing.instant(tracing.Phase.CheckTypes, "removeSubtypes_DepthLimit", { typeIds: types.map(t => t.id) }); + tracing?.instant(tracing.Phase.CheckTypes, "removeSubtypes_DepthLimit", { typeIds: types.map(t => t.id) }); error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); return false; } @@ -13817,7 +13817,7 @@ namespace ts { function checkCrossProductUnion(types: readonly Type[]) { const size = getCrossProductUnionSize(types); if (size >= 100000) { - tracing.instant(tracing.Phase.CheckTypes, "checkCrossProductUnion_DepthLimit", { typeIds: types.map(t => t.id), size }); + tracing?.instant(tracing.Phase.CheckTypes, "checkCrossProductUnion_DepthLimit", { typeIds: types.map(t => t.id), size }); error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); return false; } @@ -15751,7 +15751,7 @@ namespace ts { // We have reached 50 recursive type instantiations and there is a very high likelyhood we're dealing // with a combination of infinite generic types that perpetually generate new type identities. We stop // the recursion here by yielding the error type. - tracing.instant(tracing.Phase.CheckTypes, "instantiateType_DepthLimit", { typeId: type.id, instantiationDepth, instantiationCount }); + tracing?.instant(tracing.Phase.CheckTypes, "instantiateType_DepthLimit", { typeId: type.id, instantiationDepth, instantiationCount }); error(currentNode, Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite); return errorType; } @@ -16881,7 +16881,7 @@ namespace ts { reportIncompatibleStack(); } if (overflow) { - tracing.instant(tracing.Phase.CheckTypes, "checkTypeRelatedTo_DepthLimit", { sourceId: source.id, targetId: target.id, depth }); + tracing?.instant(tracing.Phase.CheckTypes, "checkTypeRelatedTo_DepthLimit", { sourceId: source.id, targetId: target.id, depth }); const diag = error(errorNode || currentNode, Diagnostics.Excessive_stack_depth_comparing_types_0_and_1, typeToString(source), typeToString(target)); if (errorOutputContainer) { (errorOutputContainer.errors || (errorOutputContainer.errors = [])).push(diag); @@ -17368,7 +17368,7 @@ namespace ts { } function traceUnionsOrIntersectionsTooLarge(source: Type, target: Type): void { - if (!tracing.isTracing()) { + if (!tracing) { return; } @@ -17730,7 +17730,7 @@ namespace ts { } if (expandingFlags === ExpandingFlags.Both) { - tracing.instant(tracing.Phase.CheckTypes, "recursiveTypeRelatedTo_DepthLimit", { + tracing?.instant(tracing.Phase.CheckTypes, "recursiveTypeRelatedTo_DepthLimit", { sourceId: source.id, sourceIdStack: sourceStack.map(t => t.id), targetId: target.id, @@ -17767,9 +17767,9 @@ namespace ts { } function structuredTypeRelatedTo(source: Type, target: Type, reportErrors: boolean, intersectionState: IntersectionState): Ternary { - tracing.push(tracing.Phase.CheckTypes, "structuredTypeRelatedTo", { sourceId: source.id, targetId: target.id }); + tracing?.push(tracing.Phase.CheckTypes, "structuredTypeRelatedTo", { sourceId: source.id, targetId: target.id }); const result = structuredTypeRelatedToWorker(source, target, reportErrors, intersectionState); - tracing.pop(); + tracing?.pop(); return result; } @@ -18294,7 +18294,7 @@ namespace ts { numCombinations *= countTypes(getTypeOfSymbol(sourceProperty)); if (numCombinations > 25) { // We've reached the complexity limit. - tracing.instant(tracing.Phase.CheckTypes, "typeRelatedToDiscriminatedType_DepthLimit", { sourceId: source.id, targetId: target.id, numCombinations }); + tracing?.instant(tracing.Phase.CheckTypes, "typeRelatedToDiscriminatedType_DepthLimit", { sourceId: source.id, targetId: target.id, numCombinations }); return Ternary.False; } } @@ -19073,7 +19073,7 @@ namespace ts { function getVariancesWorker(typeParameters: readonly TypeParameter[] = emptyArray, cache: TCache, createMarkerType: (input: TCache, param: TypeParameter, marker: Type) => Type): VarianceFlags[] { let variances = cache.variances; if (!variances) { - tracing.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: (cache as any).id ?? (cache as any).declaredType?.id ?? -1 }); + tracing?.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: (cache as any).id ?? (cache as any).declaredType?.id ?? -1 }); // The emptyArray singleton is used to signal a recursive invocation. cache.variances = emptyArray; variances = []; @@ -19108,7 +19108,7 @@ namespace ts { variances.push(variance); } cache.variances = variances; - tracing.pop(); + tracing?.pop(); } return variances; } @@ -22199,7 +22199,7 @@ namespace ts { if (flowDepth === 2000) { // We have made 2000 recursive invocations. To avoid overflowing the call stack we report an error // and disable further control flow analysis in the containing function or module body. - tracing.instant(tracing.Phase.CheckTypes, "getTypeAtFlowNode_DepthLimit", { flowId: flow.id }); + tracing?.instant(tracing.Phase.CheckTypes, "getTypeAtFlowNode_DepthLimit", { flowId: flow.id }); flowAnalysisDisabled = true; reportFlowControlError(reference); return errorType; @@ -31673,7 +31673,7 @@ namespace ts { } function checkExpression(node: Expression | QualifiedName, checkMode?: CheckMode, forceTuple?: boolean): Type { - tracing.push(tracing.Phase.Check, "checkExpression", { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Check, "checkExpression", { kind: node.kind, pos: node.pos, end: node.end }); const saveCurrentNode = currentNode; currentNode = node; instantiationCount = 0; @@ -31683,7 +31683,7 @@ namespace ts { checkConstEnumAccess(node, type); } currentNode = saveCurrentNode; - tracing.pop(); + tracing?.pop(); return type; } @@ -34489,10 +34489,10 @@ namespace ts { } function checkVariableDeclaration(node: VariableDeclaration) { - tracing.push(tracing.Phase.Check, "checkVariableDeclaration", { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Check, "checkVariableDeclaration", { kind: node.kind, pos: node.pos, end: node.end }); checkGrammarVariableDeclaration(node); checkVariableLikeDeclaration(node); - tracing.pop(); + tracing?.pop(); } function checkBindingElement(node: BindingElement) { @@ -37570,7 +37570,7 @@ namespace ts { } function checkDeferredNode(node: Node) { - tracing.push(tracing.Phase.Check, "checkDeferredNode", { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Check, "checkDeferredNode", { kind: node.kind, pos: node.pos, end: node.end }); const saveCurrentNode = currentNode; currentNode = node; instantiationCount = 0; @@ -37606,16 +37606,16 @@ namespace ts { break; } currentNode = saveCurrentNode; - tracing.pop(); + tracing?.pop(); } function checkSourceFile(node: SourceFile) { - tracing.push(tracing.Phase.Check, "checkSourceFile", { path: node.path }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Check, "checkSourceFile", { path: node.path }, /*separateBeginAndEnd*/ true); performance.mark("beforeCheck"); checkSourceFileWorker(node); performance.mark("afterCheck"); performance.measure("Check", "beforeCheck", "afterCheck"); - tracing.pop(); + tracing?.pop(); } function unusedIsError(kind: UnusedKind, isAmbient: boolean): boolean { diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 24174483fdc..a2bba125ca8 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -340,17 +340,17 @@ namespace ts { sourceFiles: sourceFileOrBundle.sourceFiles.map(file => relativeToBuildInfo(getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()))) }; } - tracing.push(tracing.Phase.Emit, "emitJsFileOrBundle", { jsFilePath }); + tracing?.push(tracing.Phase.Emit, "emitJsFileOrBundle", { jsFilePath }); emitJsFileOrBundle(sourceFileOrBundle, jsFilePath, sourceMapFilePath, relativeToBuildInfo); - tracing.pop(); + tracing?.pop(); - tracing.push(tracing.Phase.Emit, "emitDeclarationFileOrBundle", { declarationFilePath }); + tracing?.push(tracing.Phase.Emit, "emitDeclarationFileOrBundle", { declarationFilePath }); emitDeclarationFileOrBundle(sourceFileOrBundle, declarationFilePath, declarationMapPath, relativeToBuildInfo); - tracing.pop(); + tracing?.pop(); - tracing.push(tracing.Phase.Emit, "emitBuildInfo", { buildInfoPath }); + tracing?.push(tracing.Phase.Emit, "emitBuildInfo", { buildInfoPath }); emitBuildInfo(bundleBuildInfo, buildInfoPath); - tracing.pop(); + tracing?.pop(); if (!emitSkipped && emittedFilesList) { if (!emitOnlyDtsFiles) { diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 5d1735afedf..e27215e7a87 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -607,7 +607,7 @@ namespace ts { } export function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes = false, scriptKind?: ScriptKind): SourceFile { - tracing.push(tracing.Phase.Parse, "createSourceFile", { path: fileName }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Parse, "createSourceFile", { path: fileName }, /*separateBeginAndEnd*/ true); performance.mark("beforeParse"); let result: SourceFile; @@ -622,7 +622,7 @@ namespace ts { performance.mark("afterParse"); performance.measure("Parse", "beforeParse", "afterParse"); - tracing.pop(); + tracing?.pop(); return result; } diff --git a/src/compiler/program.ts b/src/compiler/program.ts index e6a53885000..8cf16a806ec 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -833,7 +833,7 @@ namespace ts { // Track source files that are source files found by searching under node_modules, as these shouldn't be compiled. const sourceFilesFoundSearchingNodeModules = new Map(); - tracing.push(tracing.Phase.Program, "createProgram", { configFilePath: options.configFilePath, rootDir: options.rootDir }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Program, "createProgram", { configFilePath: options.configFilePath, rootDir: options.rootDir }, /*separateBeginAndEnd*/ true); performance.mark("beforeProgram"); const host = createProgramOptions.host || createCompilerHost(options); @@ -919,15 +919,15 @@ namespace ts { forEachResolvedProjectReference }); - tracing.push(tracing.Phase.Program, "shouldProgramCreateNewSourceFiles", { hasOldProgram: !!oldProgram }); + tracing?.push(tracing.Phase.Program, "shouldProgramCreateNewSourceFiles", { hasOldProgram: !!oldProgram }); const shouldCreateNewSourceFile = shouldProgramCreateNewSourceFiles(oldProgram, options); - tracing.pop(); + tracing?.pop(); // We set `structuralIsReused` to `undefined` because `tryReuseStructureFromOldProgram` calls `tryReuseStructureFromOldProgram` which checks // `structuralIsReused`, which would be a TDZ violation if it was not set in advance to `undefined`. let structureIsReused: StructureIsReused; - tracing.push(tracing.Phase.Program, "tryReuseStructureFromOldProgram", {}); + tracing?.push(tracing.Phase.Program, "tryReuseStructureFromOldProgram", {}); structureIsReused = tryReuseStructureFromOldProgram(); // eslint-disable-line prefer-const - tracing.pop(); + tracing?.pop(); if (structureIsReused !== StructureIsReused.Completely) { processingDefaultLibFiles = []; processingOtherFiles = []; @@ -964,15 +964,15 @@ namespace ts { } } - tracing.push(tracing.Phase.Program, "processRootFiles", { count: rootNames.length }); + tracing?.push(tracing.Phase.Program, "processRootFiles", { count: rootNames.length }); forEach(rootNames, (name, index) => processRootFile(name, /*isDefaultLib*/ false, /*ignoreNoDefaultLib*/ false, { kind: FileIncludeKind.RootFile, index })); - tracing.pop(); + tracing?.pop(); // load type declarations specified via 'types' argument or implicitly from types/ and node_modules/@types folders const typeReferences: string[] = rootNames.length ? getAutomaticTypeDirectiveNames(options, host) : emptyArray; if (typeReferences.length) { - tracing.push(tracing.Phase.Program, "processTypeReferences", { count: typeReferences.length }); + tracing?.push(tracing.Phase.Program, "processTypeReferences", { count: typeReferences.length }); // This containingFilename needs to match with the one used in managed-side const containingDirectory = options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(); const containingFilename = combinePaths(containingDirectory, inferredTypesContainingFile); @@ -980,7 +980,7 @@ namespace ts { for (let i = 0; i < typeReferences.length; i++) { processTypeReferenceDirective(typeReferences[i], resolutions[i], { kind: FileIncludeKind.AutomaticTypeDirectiveFile, typeReference: typeReferences[i], packageId: resolutions[i]?.packageId }); } - tracing.pop(); + tracing?.pop(); } // Do not process the default library if: @@ -1108,7 +1108,7 @@ namespace ts { verifyCompilerOptions(); performance.mark("afterProgram"); performance.measure("Program", "beforeProgram", "afterProgram"); - tracing.pop(); + tracing?.pop(); return program; @@ -1116,12 +1116,12 @@ namespace ts { if (!moduleNames.length) return emptyArray; const containingFileName = getNormalizedAbsolutePath(containingFile.originalFileName, currentDirectory); const redirectedReference = getRedirectReferenceForResolution(containingFile); - tracing.push(tracing.Phase.Program, "resolveModuleNamesWorker", { containingFileName }); + tracing?.push(tracing.Phase.Program, "resolveModuleNamesWorker", { containingFileName }); performance.mark("beforeResolveModule"); const result = actualResolveModuleNamesWorker(moduleNames, containingFileName, reusedNames, redirectedReference); performance.mark("afterResolveModule"); performance.measure("ResolveModule", "beforeResolveModule", "afterResolveModule"); - tracing.pop(); + tracing?.pop(); return result; } @@ -1129,12 +1129,12 @@ namespace ts { if (!typeDirectiveNames.length) return []; const containingFileName = !isString(containingFile) ? getNormalizedAbsolutePath(containingFile.originalFileName, currentDirectory) : containingFile; const redirectedReference = !isString(containingFile) ? getRedirectReferenceForResolution(containingFile) : undefined; - tracing.push(tracing.Phase.Program, "resolveTypeReferenceDirectiveNamesWorker", { containingFileName }); + tracing?.push(tracing.Phase.Program, "resolveTypeReferenceDirectiveNamesWorker", { containingFileName }); performance.mark("beforeResolveTypeReference"); const result = actualResolveTypeReferenceDirectiveNamesWorker(typeDirectiveNames, containingFileName, redirectedReference); performance.mark("afterResolveTypeReference"); performance.measure("ResolveTypeReference", "beforeResolveTypeReference", "afterResolveTypeReference"); - tracing.pop(); + tracing?.pop(); return result; } @@ -1655,7 +1655,7 @@ namespace ts { function emitBuildInfo(writeFileCallback?: WriteFileCallback): EmitResult { Debug.assert(!outFile(options)); - tracing.push(tracing.Phase.Emit, "emitBuildInfo", {}, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Emit, "emitBuildInfo", {}, /*separateBeginAndEnd*/ true); performance.mark("beforeEmit"); const emitResult = emitFiles( notImplementedResolver, @@ -1668,7 +1668,7 @@ namespace ts { performance.mark("afterEmit"); performance.measure("Emit", "beforeEmit", "afterEmit"); - tracing.pop(); + tracing?.pop(); return emitResult; } @@ -1729,9 +1729,9 @@ namespace ts { } function emit(sourceFile?: SourceFile, writeFileCallback?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, transformers?: CustomTransformers, forceDtsEmit?: boolean): EmitResult { - tracing.push(tracing.Phase.Emit, "emit", { path: sourceFile?.path }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Emit, "emit", { path: sourceFile?.path }, /*separateBeginAndEnd*/ true); const result = runWithCancellationToken(() => emitWorker(program, sourceFile, writeFileCallback, cancellationToken, emitOnlyDtsFiles, transformers, forceDtsEmit)); - tracing.pop(); + tracing?.pop(); return result; } @@ -2485,13 +2485,13 @@ namespace ts { // Get source file from normalized fileName function findSourceFile(fileName: string, path: Path, isDefaultLib: boolean, ignoreNoDefaultLib: boolean, reason: FileIncludeReason, packageId: PackageId | undefined): SourceFile | undefined { - tracing.push(tracing.Phase.Program, "findSourceFile", { + tracing?.push(tracing.Phase.Program, "findSourceFile", { fileName, isDefaultLib: isDefaultLib || undefined, fileIncludeKind: (FileIncludeKind as any)[reason.kind], }); const result = findSourceFileWorker(fileName, path, isDefaultLib, ignoreNoDefaultLib, reason, packageId); - tracing.pop(); + tracing?.pop(); return result; } @@ -2792,9 +2792,9 @@ namespace ts { resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective | undefined, reason: FileIncludeReason ): void { - tracing.push(tracing.Phase.Program, "processTypeReferenceDirective", { directive: typeReferenceDirective, hasResolved: !!resolveModuleNamesReusingOldState, refKind: reason.kind, refPath: isReferencedFile(reason) ? reason.file : undefined }); + tracing?.push(tracing.Phase.Program, "processTypeReferenceDirective", { directive: typeReferenceDirective, hasResolved: !!resolveModuleNamesReusingOldState, refKind: reason.kind, refPath: isReferencedFile(reason) ? reason.file : undefined }); processTypeReferenceDirectiveWorker(typeReferenceDirective, resolvedTypeReferenceDirective, reason); - tracing.pop(); + tracing?.pop(); } function processTypeReferenceDirectiveWorker( diff --git a/src/compiler/tracing.ts b/src/compiler/tracing.ts index e6e63ebf79a..41d7c8508e3 100644 --- a/src/compiler/tracing.ts +++ b/src/compiler/tracing.ts @@ -1,16 +1,25 @@ +/* Tracing events for the compiler. */ + /*@internal*/ -/** Tracing events for the compiler. */ -namespace ts.tracing { +namespace ts { // eslint-disable-line one-namespace-per-file + // should be used as tracing?.___ + export let tracing: typeof tracingEnabled | undefined; + // enable the above using startTracing() +} + +// `tracingEnabled` should never be used directly, only through the above +/* @internal */ +namespace ts.tracingEnabled { // eslint-disable-line one-namespace-per-file export const enum Mode { Project, Build, Server, } - let fs: typeof import("fs") | false | undefined; + let fs: typeof import("fs"); let traceCount = 0; - let traceFd: number | undefined; + let traceFd = 0; let mode: Mode; @@ -22,23 +31,19 @@ namespace ts.tracing { [key: string]: string | number | boolean | null | undefined | Args | readonly (string | number | boolean | null | undefined | Args)[]; }; - /** Starts tracing for the given project (unless the `fs` module is unavailable). */ + /** Starts tracing for the given project. */ export function startTracing(tracingMode: Mode, traceDir: string, configFilePath?: string) { - Debug.assert(!traceFd, "Tracing already started"); + Debug.assert(!tracing, "Tracing already started"); if (fs === undefined) { try { fs = require("fs"); } - catch { - fs = false; + catch (e) { + throw new Error(`tracing requires having fs\n(original error: ${e.message || e})`); } } - if (!fs) { - return; - } - mode = tracingMode; if (legendPath === undefined) { @@ -51,9 +56,9 @@ namespace ts.tracing { } const countPart = - mode === Mode.Build ? `.${process.pid}-${++traceCount}` : - mode === Mode.Server ? `.${process.pid}` : - ``; + mode === Mode.Build ? `.${process.pid}-${++traceCount}` + : mode === Mode.Server ? `.${process.pid}` + : ``; const tracePath = combinePaths(traceDir, `trace${countPart}.json`); const typesPath = combinePaths(traceDir, `types${countPart}.json`); @@ -64,6 +69,7 @@ namespace ts.tracing { }); traceFd = fs.openSync(tracePath, "w"); + tracing = tracingEnabled; // only when traceFd is properly set // Start with a prefix that contains some metadata that the devtools profiler expects (also avoids a warning on import) const meta = { cat: "__metadata", ph: "M", ts: 1000 * timestamp(), pid: 1, tid: 1 }; @@ -75,19 +81,14 @@ namespace ts.tracing { .map(v => JSON.stringify(v)).join(",\n")); } - /** Stops tracing for the in-progress project and dumps the type catalog (unless the `fs` module is unavailable). */ + /** Stops tracing for the in-progress project and dumps the type catalog. */ export function stopTracing(typeCatalog?: readonly Type[]) { - if (!traceFd) { - Debug.assert(!fs, "Tracing is not in progress"); - return; - } - - Debug.assert(fs); + Debug.assert(tracing, "Tracing is not in progress"); Debug.assert(!!typeCatalog === (mode !== Mode.Server)); // Have a type catalog iff not in server mode fs.writeSync(traceFd, `\n]\n`); fs.closeSync(traceFd); - traceFd = undefined; + tracing = undefined; if (typeCatalog) { dumpTypes(typeCatalog); @@ -99,10 +100,6 @@ namespace ts.tracing { } } - export function isTracing() { - return !!traceFd; - } - export const enum Phase { Parse = "parse", Program = "program", @@ -114,7 +111,6 @@ namespace ts.tracing { } export function instant(phase: Phase, name: string, args?: Args) { - if (!traceFd) return; writeEvent("I", phase, name, args, `"s":"g"`); } @@ -127,20 +123,17 @@ namespace ts.tracing { * these operations. */ export function push(phase: Phase, name: string, args?: Args, separateBeginAndEnd = false) { - if (!traceFd) return; if (separateBeginAndEnd) { writeEvent("B", phase, name, args); } eventStack.push({ phase, name, args, time: 1000 * timestamp(), separateBeginAndEnd }); } export function pop() { - if (!traceFd) return; Debug.assert(eventStack.length > 0); writeStackEvent(eventStack.length - 1, 1000 * timestamp()); eventStack.length--; } export function popAll() { - if (!traceFd) return; const endTime = 1000 * timestamp(); for (let i = eventStack.length - 1; i >= 0; i--) { writeStackEvent(i, endTime); @@ -159,8 +152,6 @@ namespace ts.tracing { function writeEvent(eventType: string, phase: Phase, name: string, args: Args | undefined, extras?: string, time: number = 1000 * timestamp()) { - Debug.assert(traceFd); - Debug.assert(fs); // In server mode, there's no easy way to dump type information, so we drop events that would require it. if (mode === Mode.Server && phase === Phase.CheckTypes) return; @@ -182,8 +173,6 @@ namespace ts.tracing { } function dumpTypes(types: readonly Type[]) { - Debug.assert(fs); - performance.mark("beginDumpTypes"); const typesPath = legend[legend.length - 1].typesPath!; @@ -293,7 +282,6 @@ namespace ts.tracing { if (!legendPath) { return; } - Debug.assert(fs); fs.writeFileSync(legendPath, JSON.stringify(legend)); } @@ -304,3 +292,9 @@ namespace ts.tracing { typesPath?: string; } } + +/*@internal*/ +namespace ts { // eslint-disable-line one-namespace-per-file + // define after tracingEnabled is initialized + export const startTracing = tracingEnabled.startTracing; +} diff --git a/src/compiler/transformer.ts b/src/compiler/transformer.ts index efca6f7f187..4de469afc57 100644 --- a/src/compiler/transformer.ts +++ b/src/compiler/transformer.ts @@ -223,9 +223,9 @@ namespace ts { // Transform each node. const transformed: T[] = []; for (const node of nodes) { - tracing.push(tracing.Phase.Emit, "transformNodes", node.kind === SyntaxKind.SourceFile ? { path: (node as any as SourceFile).path } : { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Emit, "transformNodes", node.kind === SyntaxKind.SourceFile ? { path: (node as any as SourceFile).path } : { kind: node.kind, pos: node.pos, end: node.end }); transformed.push((allowDtsFiles ? transformation : transformRoot)(node)); - tracing.pop(); + tracing?.pop(); } // prevent modification of the lexical environment. diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 8c3ff87cbbf..d91bbac3b74 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -5643,7 +5643,7 @@ namespace ts { function Type(this: Type, checker: TypeChecker, flags: TypeFlags) { this.flags = flags; - if (Debug.isDebugging || tracing.isTracing()) { + if (Debug.isDebugging || tracing) { this.checker = checker; } } diff --git a/src/executeCommandLine/executeCommandLine.ts b/src/executeCommandLine/executeCommandLine.ts index 593653a7717..09f5230ab8a 100644 --- a/src/executeCommandLine/executeCommandLine.ts +++ b/src/executeCommandLine/executeCommandLine.ts @@ -501,7 +501,7 @@ namespace ts { updateSolutionBuilderHost(sys, cb, buildHost); const builder = createSolutionBuilder(buildHost, projects, buildOptions); const exitStatus = buildOptions.clean ? builder.clean() : builder.build(); - tracing.dumpLegend(); + tracing?.dumpLegend(); return sys.exit(exitStatus); } @@ -666,7 +666,8 @@ namespace ts { } if (canTrace(system, compilerOptions)) { - tracing.startTracing(isBuildMode ? tracing.Mode.Build : tracing.Mode.Project, compilerOptions.generateTrace!, compilerOptions.configFilePath); + startTracing(isBuildMode ? tracingEnabled.Mode.Build : tracingEnabled.Mode.Project, + compilerOptions.generateTrace!, compilerOptions.configFilePath); } } @@ -674,7 +675,7 @@ namespace ts { const compilerOptions = program.getCompilerOptions(); if (canTrace(sys, compilerOptions)) { - tracing.stopTracing(program.getTypeCatalog()); + tracing?.stopTracing(program.getTypeCatalog()); } let statistics: Statistic[]; diff --git a/src/server/session.ts b/src/server/session.ts index 2ee15bd1b8a..dc0d4f42f5c 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -208,25 +208,25 @@ namespace ts.server { try { if (this.operationHost.isCancellationRequested()) { stop = true; - tracing.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId, early: true }); + tracing?.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId, early: true }); } else { - tracing.push(tracing.Phase.Session, "stepAction", { seq: this.requestId }); + tracing?.push(tracing.Phase.Session, "stepAction", { seq: this.requestId }); action(this); - tracing.pop(); + tracing?.pop(); } } catch (e) { // Cancellation or an error may have left incomplete events on the tracing stack. - tracing.popAll(); + tracing?.popAll(); stop = true; // ignore cancellation request if (e instanceof OperationCanceledException) { - tracing.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId }); + tracing?.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId }); } else { - tracing.instant(tracing.Phase.Session, "stepError", { seq: this.requestId, message: (e).message }); + tracing?.instant(tracing.Phase.Session, "stepError", { seq: this.requestId, message: (e).message }); this.operationHost.logError(e, `delayed processing of request ${this.requestId}`); } } @@ -947,7 +947,7 @@ namespace ts.server { } public event(body: T, eventName: string): void { - tracing.instant(tracing.Phase.Session, "event", { eventName }); + tracing?.instant(tracing.Phase.Session, "event", { eventName }); this.send(toEvent(eventName, body)); } @@ -2962,12 +2962,12 @@ namespace ts.server { request = this.parseMessage(message); relevantFile = request.arguments && (request as protocol.FileRequest).arguments.file ? (request as protocol.FileRequest).arguments : undefined; - tracing.instant(tracing.Phase.Session, "request", { seq: request.seq, command: request.command }); + tracing?.instant(tracing.Phase.Session, "request", { seq: request.seq, command: request.command }); perfLogger.logStartCommand("" + request.command, this.toStringMessage(message).substring(0, 100)); - tracing.push(tracing.Phase.Session, "executeCommand", { seq: request.seq, command: request.command }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Session, "executeCommand", { seq: request.seq, command: request.command }, /*separateBeginAndEnd*/ true); const { response, responseRequired } = this.executeCommand(request); - tracing.pop(); + tracing?.pop(); if (this.logger.hasLevel(LogLevel.requestTime)) { const elapsedTime = hrTimeToMilliseconds(this.hrtime(start)).toFixed(4); @@ -2981,7 +2981,7 @@ namespace ts.server { // Note: Log before writing the response, else the editor can complete its activity before the server does perfLogger.logStopCommand("" + request.command, "Success"); - tracing.instant(tracing.Phase.Session, "response", { seq: request.seq, command: request.command, success: !!response }); + tracing?.instant(tracing.Phase.Session, "response", { seq: request.seq, command: request.command, success: !!response }); if (response) { this.doOutput(response, request.command, request.seq, /*success*/ true); } @@ -2991,19 +2991,19 @@ namespace ts.server { } catch (err) { // Cancellation or an error may have left incomplete events on the tracing stack. - tracing.popAll(); + tracing?.popAll(); if (err instanceof OperationCanceledException) { // Handle cancellation exceptions perfLogger.logStopCommand("" + (request && request.command), "Canceled: " + err); - tracing.instant(tracing.Phase.Session, "commandCanceled", { seq: request?.seq, command: request?.command }); + tracing?.instant(tracing.Phase.Session, "commandCanceled", { seq: request?.seq, command: request?.command }); this.doOutput({ canceled: true }, request!.command, request!.seq, /*success*/ true); return; } this.logErrorWorker(err, this.toStringMessage(message), relevantFile); perfLogger.logStopCommand("" + (request && request.command), "Error: " + err); - tracing.instant(tracing.Phase.Session, "commandError", { seq: request?.seq, command: request?.command, message: (err).message }); + tracing?.instant(tracing.Phase.Session, "commandError", { seq: request?.seq, command: request?.command, message: (err).message }); this.doOutput( /*info*/ undefined, diff --git a/src/services/services.ts b/src/services/services.ts index e1b60bdef80..1463d81dfde 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1143,7 +1143,7 @@ namespace ts { public throwIfCancellationRequested(): void { if (this.isCancellationRequested()) { - tracing.instant(tracing.Phase.Session, "cancellationThrown", { kind: "CancellationTokenObject" }); + tracing?.instant(tracing.Phase.Session, "cancellationThrown", { kind: "CancellationTokenObject" }); throw new OperationCanceledException(); } } @@ -1174,7 +1174,7 @@ namespace ts { public throwIfCancellationRequested(): void { if (this.isCancellationRequested()) { - tracing.instant(tracing.Phase.Session, "cancellationThrown", { kind: "ThrottledCancellationToken" }); + tracing?.instant(tracing.Phase.Session, "cancellationThrown", { kind: "ThrottledCancellationToken" }); throw new OperationCanceledException(); } } diff --git a/src/tsserver/nodeServer.ts b/src/tsserver/nodeServer.ts index f4b7061881b..97aa0a198e8 100644 --- a/src/tsserver/nodeServer.ts +++ b/src/tsserver/nodeServer.ts @@ -833,9 +833,7 @@ namespace ts.server { exit() { this.logger.info("Exiting..."); this.projectService.closeLog(); - if (traceDir) { - tracing.stopTracing(ts.emptyArray); - } + tracing?.stopTracing(ts.emptyArray); process.exit(0); } @@ -863,7 +861,7 @@ namespace ts.server { ? stripQuotes(commandLineTraceDir) : process.env.TSS_TRACE; if (traceDir) { - tracing.startTracing(tracing.Mode.Server, traceDir); + startTracing(tracingEnabled.Mode.Server, traceDir); } const ioSession = new IOSession(); From fe2899c2acabd2262f8b9c6230e821192ea369e3 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Mon, 8 Feb 2021 15:54:35 -0500 Subject: [PATCH 21/36] Use a 10ms sampling frequency to filter tracing dumps Currently hard-wired to 10ms, can be made configurable if needed later. --- src/compiler/tracing.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/tracing.ts b/src/compiler/tracing.ts index 41d7c8508e3..87c2abf4f48 100644 --- a/src/compiler/tracing.ts +++ b/src/compiler/tracing.ts @@ -140,12 +140,15 @@ namespace ts.tracingEnabled { // eslint-disable-line one-namespace-per-file } eventStack.length = 0; } + // sample every 10ms + const sampleInterval = 1000 * 10; function writeStackEvent(index: number, endTime: number) { const { phase, name, args, time, separateBeginAndEnd } = eventStack[index]; if (separateBeginAndEnd) { writeEvent("E", phase, name, args, /*extras*/ undefined, endTime); } - else { + // test if [time,endTime) straddles a sampling point + else if (sampleInterval - (time % sampleInterval) <= endTime - time) { writeEvent("X", phase, name, args, `"dur":${endTime - time}`, time); } } From 664ed17ebd8fa581ee36b8464aa4a6455b6241c9 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 9 Feb 2021 11:30:09 -0800 Subject: [PATCH 22/36] Allow only package names as plugin names (#42713) * Allow only package names as plugin names * Remove extra argument following merge from master branch. * kipped -> Skipped Co-authored-by: Sheetal Nandi --- src/server/project.ts | 4 ++ src/testRunner/tsconfig.json | 1 + src/testRunner/unittests/tsserver/plugins.ts | 50 ++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 src/testRunner/unittests/tsserver/plugins.ts diff --git a/src/server/project.ts b/src/server/project.ts index 5d80bcf3931..8a8c804ee18 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -1581,6 +1581,10 @@ namespace ts.server { protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[], pluginConfigOverrides: Map | undefined) { this.projectService.logger.info(`Enabling plugin ${pluginConfigEntry.name} from candidate paths: ${searchPaths.join(",")}`); + if (parsePackageName(pluginConfigEntry.name).rest) { + this.projectService.logger.info(`Skipped loading plugin ${pluginConfigEntry.name} because only package name is allowed plugin name`); + return; + } const log = (message: string) => this.projectService.logger.info(message); let errorLogs: string[] | undefined; diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index d18df87b6cd..cfd4dc6f9c4 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -184,6 +184,7 @@ "unittests/tsserver/openFile.ts", "unittests/tsserver/packageJsonInfo.ts", "unittests/tsserver/partialSemanticServer.ts", + "unittests/tsserver/plugins.ts", "unittests/tsserver/projectErrors.ts", "unittests/tsserver/projectReferenceCompileOnSave.ts", "unittests/tsserver/projectReferenceErrors.ts", diff --git a/src/testRunner/unittests/tsserver/plugins.ts b/src/testRunner/unittests/tsserver/plugins.ts new file mode 100644 index 00000000000..4b45b24f9a5 --- /dev/null +++ b/src/testRunner/unittests/tsserver/plugins.ts @@ -0,0 +1,50 @@ +namespace ts.projectSystem { + describe("unittests:: tsserver:: plugins loading", () => { + function createHostWithPlugin(files: readonly File[]) { + const host = createServerHost(files); + const pluginsLoaded: string[] = []; + host.require = (_initialPath, moduleName) => { + pluginsLoaded.push(moduleName); + return { + module: () => ({ + create(info: server.PluginCreateInfo) { + return Harness.LanguageService.makeDefaultProxy(info); + } + }), + error: undefined + }; + }; + return { host, pluginsLoaded }; + } + + it("With local plugins", () => { + const expectedToLoad = ["@myscoped/plugin", "unscopedPlugin"]; + const notToLoad = ["../myPlugin", "myPlugin/../malicious"]; + const aTs: File = { path: "/a.ts", content: `class c { prop = "hello"; foo() { return this.prop; } }` }; + const tsconfig: File = { + path: "/tsconfig.json", + content: JSON.stringify({ + compilerOptions: { plugins: [...expectedToLoad, ...notToLoad].map(name => ({ name })) } + }) + }; + const { host, pluginsLoaded } = createHostWithPlugin([aTs, tsconfig, libFile]); + const service = createProjectService(host); + service.openClientFile(aTs.path); + assert.deepEqual(pluginsLoaded, expectedToLoad); + }); + + it("With global plugins", () => { + const expectedToLoad = ["@myscoped/plugin", "unscopedPlugin"]; + const notToLoad = ["../myPlugin", "myPlugin/../malicious"]; + const aTs: File = { path: "/a.ts", content: `class c { prop = "hello"; foo() { return this.prop; } }` }; + const tsconfig: File = { + path: "/tsconfig.json", + content: "{}" + }; + const { host, pluginsLoaded } = createHostWithPlugin([aTs, tsconfig, libFile]); + const service = createProjectService(host, { globalPlugins: [...expectedToLoad, ...notToLoad] }); + service.openClientFile(aTs.path); + assert.deepEqual(pluginsLoaded, expectedToLoad); + }); + }); +} \ No newline at end of file From 1b19af0f14b0b3c3eb7d1a4eee75402f689cb369 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Tue, 9 Feb 2021 13:30:31 -0800 Subject: [PATCH 23/36] Refactor params for interface (#42652) * apply refactor to interface methods * handle calls * no available refactors for union type * add tests * Update src/services/refactors/convertParamsToDestructuredObject.ts Co-authored-by: Daniel Rosenwasser * address comments * Update src/services/refactors/convertParamsToDestructuredObject.ts Co-authored-by: Daniel Rosenwasser * Update src/services/refactors/convertParamsToDestructuredObject.ts Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Co-authored-by: Daniel Rosenwasser Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> --- .../convertParamsToDestructuredObject.ts | 95 ++++++++++++++++--- ...ertParamsToDestructuredObject_interface.ts | 21 ++++ ...structuredObject_interfaceAssignability.ts | 21 ++++ ...ucturedObject_interfaceContextualParams.ts | 28 ++++++ ...turedObject_interfaceMultipleSignatures.ts | 14 +++ ...tructuredObject_interfaceNoIntersection.ts | 14 +++ ...msToDestructuredObject_interfaceNoUnion.ts | 14 +++ ...tParamsToDestructuredObject_typeLiteral.ts | 21 ++++ 8 files changed, 214 insertions(+), 14 deletions(-) create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts create mode 100644 tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts diff --git a/src/services/refactors/convertParamsToDestructuredObject.ts b/src/services/refactors/convertParamsToDestructuredObject.ts index feef5606b11..c9e587837dd 100644 --- a/src/services/refactors/convertParamsToDestructuredObject.ts +++ b/src/services/refactors/convertParamsToDestructuredObject.ts @@ -51,18 +51,14 @@ namespace ts.refactor.convertParamsToDestructuredObject { changes: textChanges.ChangeTracker, functionDeclaration: ValidFunctionDeclaration, groupedReferences: GroupedReferences): void { - const newParamDeclaration = map(createNewParameters(functionDeclaration, program, host), param => getSynthesizedDeepClone(param)); - changes.replaceNodeRangeWithNodes( - sourceFile, - first(functionDeclaration.parameters), - last(functionDeclaration.parameters), - newParamDeclaration, - { joiner: ", ", - // indentation is set to 0 because otherwise the object parameter will be indented if there is a `this` parameter - indentation: 0, - leadingTriviaOption: textChanges.LeadingTriviaOption.IncludeAll, - trailingTriviaOption: textChanges.TrailingTriviaOption.Include - }); + const signature = groupedReferences.signature; + const newFunctionDeclarationParams = map(createNewParameters(functionDeclaration, program, host), param => getSynthesizedDeepClone(param)); + + if (signature) { + const newSignatureParams = map(createNewParameters(signature, program, host), param => getSynthesizedDeepClone(param)); + replaceParameters(signature, newSignatureParams); + } + replaceParameters(functionDeclaration, newFunctionDeclarationParams); const functionCalls = sortAndDeduplicate(groupedReferences.functionCalls, /*comparer*/ (a, b) => compareValues(a.pos, b.pos)); for (const call of functionCalls) { @@ -76,6 +72,21 @@ namespace ts.refactor.convertParamsToDestructuredObject { { leadingTriviaOption: textChanges.LeadingTriviaOption.IncludeAll, trailingTriviaOption: textChanges.TrailingTriviaOption.Include }); } } + + function replaceParameters(declarationOrSignature: ValidFunctionDeclaration | ValidMethodSignature, parameterDeclarations: ParameterDeclaration[]) { + changes.replaceNodeRangeWithNodes( + sourceFile, + first(declarationOrSignature.parameters), + last(declarationOrSignature.parameters), + parameterDeclarations, + { + joiner: ", ", + // indentation is set to 0 because otherwise the object parameter will be indented if there is a `this` parameter + indentation: 0, + leadingTriviaOption: textChanges.LeadingTriviaOption.IncludeAll, + trailingTriviaOption: textChanges.TrailingTriviaOption.Include + }); + } } function getGroupedReferences(functionDeclaration: ValidFunctionDeclaration, program: Program, cancellationToken: CancellationToken): GroupedReferences { @@ -99,13 +110,41 @@ namespace ts.refactor.convertParamsToDestructuredObject { const functionSymbols = map(functionNames, getSymbolTargetAtLocation); const classSymbols = map(classNames, getSymbolTargetAtLocation); const isConstructor = isConstructorDeclaration(functionDeclaration); + const contextualSymbols = map(functionNames, name => getSymbolForContextualType(name, checker)); for (const entry of referenceEntries) { - if (entry.kind !== FindAllReferences.EntryKind.Node) { + if (entry.kind === FindAllReferences.EntryKind.Span) { groupedReferences.valid = false; continue; } + /* Declarations in object literals may be implementations of method signatures which have a different symbol from the declaration + For example: + interface IFoo { m(a: number): void } + const foo: IFoo = { m(a: number): void {} } + In these cases we get the symbol for the signature from the contextual type. + */ + if (contains(contextualSymbols, getSymbolTargetAtLocation(entry.node))) { + if (isValidMethodSignature(entry.node.parent)) { + groupedReferences.signature = entry.node.parent; + continue; + } + const call = entryToFunctionCall(entry); + if (call) { + groupedReferences.functionCalls.push(call); + continue; + } + } + + const contextualSymbol = getSymbolForContextualType(entry.node, checker); + if (contextualSymbol && contains(contextualSymbols, contextualSymbol)) { + const decl = entryToDeclaration(entry); + if (decl) { + groupedReferences.declarations.push(decl); + continue; + } + } + /* We compare symbols because in some cases find all references wil return a reference that may or may not be to the refactored function. Example from the refactorConvertParamsToDestructuredObject_methodCallUnion.ts test: class A { foo(a: number, b: number) { return a + b; } } @@ -175,6 +214,20 @@ namespace ts.refactor.convertParamsToDestructuredObject { } } + /** + * Gets the symbol for the contextual type of the node if it is not a union or intersection. + */ + function getSymbolForContextualType(node: Node, checker: TypeChecker): Symbol | undefined { + const element = getContainingObjectLiteralElement(node); + if (element) { + const contextualType = checker.getContextualTypeForObjectLiteralElement(element); + const symbol = contextualType?.getSymbol(); + if (symbol && !(getCheckFlags(symbol) & CheckFlags.Synthetic)) { + return symbol; + } + } + } + function entryToImportOrExport(entry: FindAllReferences.NodeEntry): Node | undefined { const node = entry.node; @@ -292,6 +345,10 @@ namespace ts.refactor.convertParamsToDestructuredObject { return false; } + function isValidMethodSignature(node: Node): node is ValidMethodSignature { + return isMethodSignature(node) && (isInterfaceDeclaration(node.parent) || isTypeLiteralNode(node.parent)); + } + function isValidFunctionDeclaration( functionDeclaration: FunctionLikeDeclaration, checker: TypeChecker): functionDeclaration is ValidFunctionDeclaration { @@ -300,6 +357,11 @@ namespace ts.refactor.convertParamsToDestructuredObject { case SyntaxKind.FunctionDeclaration: return hasNameOrDefault(functionDeclaration) && isSingleImplementation(functionDeclaration, checker); case SyntaxKind.MethodDeclaration: + if (isObjectLiteralExpression(functionDeclaration.parent)) { + const contextualSymbol = getSymbolForContextualType(functionDeclaration.name, checker); + // don't offer the refactor when there are multiple signatures since we won't know which ones the user wants to change + return contextualSymbol?.declarations.length === 1 && isSingleImplementation(functionDeclaration, checker); + } return isSingleImplementation(functionDeclaration, checker); case SyntaxKind.Constructor: if (isClassDeclaration(functionDeclaration.parent)) { @@ -398,7 +460,7 @@ namespace ts.refactor.convertParamsToDestructuredObject { return objectLiteral; } - function createNewParameters(functionDeclaration: ValidFunctionDeclaration, program: Program, host: LanguageServiceHost): NodeArray { + function createNewParameters(functionDeclaration: ValidFunctionDeclaration | ValidMethodSignature, program: Program, host: LanguageServiceHost): NodeArray { const checker = program.getTypeChecker(); const refactorableParameters = getRefactorableParameters(functionDeclaration.parameters); const bindingElements = map(refactorableParameters, createBindingElementFromParameterDeclaration); @@ -584,6 +646,10 @@ namespace ts.refactor.convertParamsToDestructuredObject { parameters: NodeArray; } + interface ValidMethodSignature extends MethodSignature { + parameters: NodeArray; + } + type ValidFunctionDeclaration = ValidConstructor | ValidFunction | ValidMethod | ValidArrowFunction | ValidFunctionExpression; interface ValidParameterDeclaration extends ParameterDeclaration { @@ -595,6 +661,7 @@ namespace ts.refactor.convertParamsToDestructuredObject { interface GroupedReferences { functionCalls: (CallExpression | NewExpression)[]; declarations: Node[]; + signature?: ValidMethodSignature; classReferences?: ClassReferences; valid: boolean; } diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts new file mode 100644 index 00000000000..105c6ac56c9 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts @@ -0,0 +1,21 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `interface IFoo { + method({ x, y }: { x: string; y: string; }): void; +} +const x: IFoo = { + method({ x, y }: { x: string; y: string; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts new file mode 100644 index 00000000000..d5ab8cab641 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts @@ -0,0 +1,21 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x: string, y: string, z?: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `interface IFoo { + method({ x, y }: { x: string; y: string; }): void; +} +const x: IFoo = { + method({ x, y, z }: { x: string; y: string; z?: string; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts new file mode 100644 index 00000000000..af00cbc82a9 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts @@ -0,0 +1,28 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x, y/*b*/): void {}, +////}; + +/* +When there are no type annotations on the params in the implementation, we ultimately +would like to handle them like we do for calls resulting in `method({x, y}) {}`. + +Note that simply adding the annotations from the signature can fail as the implementation +can take more paramters than the signatures. +*/ +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `interface IFoo { + method({ x, y }: { x: string; y: string; }): void; +} +const x: IFoo = { + method({ x, y }: { x; y; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts new file mode 100644 index 00000000000..b21fb473bcd --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts @@ -0,0 +1,14 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +//// method(x: number, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x: string | number, y: string/*b*/): void {}, +////}; + +// For multiple signatures, we don't have a reliable way to determine +// which signature to match to or if all signatures should be changed. +goTo.select("a", "b"); +verify.not.refactorAvailable("Convert parameters to destructured object"); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts new file mode 100644 index 00000000000..0a7230f3419 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts @@ -0,0 +1,14 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////interface IBar { +//// method(x: number): void; +////} +////const x: IFoo & IBar = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +verify.not.refactorAvailable("Convert parameters to destructured object"); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts new file mode 100644 index 00000000000..ceafa7282e0 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts @@ -0,0 +1,14 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////interface IBar { +//// method(x: number): void; +////} +////const x: IFoo | IBar = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +verify.not.refactorAvailable("Convert parameters to destructured object"); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts new file mode 100644 index 00000000000..79f6951562d --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts @@ -0,0 +1,21 @@ +/// + +////type Foo = { +//// method(x: string, y: string): void; +////} +////const x: Foo = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `type Foo = { + method({ x, y }: { x: string; y: string; }): void; +} +const x: Foo = { + method({ x, y }: { x: string; y: string; }): void {}, +};` +}); From 8c5fa5cc91d1ae5daa629b924268d3e72bd02374 Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Tue, 9 Feb 2021 23:03:11 +0000 Subject: [PATCH 24/36] Revert assignability cases in getNarrowedType (#42231) * Revert subtype narrowing changes from readonly array PRs * Adds a test for the change * More baselines --- src/compiler/checker.ts | 13 +- .../reference/instanceOfAssignability.types | 8 +- ...wingAssignmentReadonlyRespectsAssertion.js | 71 +++++++++ ...ssignmentReadonlyRespectsAssertion.symbols | 123 +++++++++++++++ ...gAssignmentReadonlyRespectsAssertion.types | 147 ++++++++++++++++++ .../typeGuardIntersectionTypes.symbols | 16 +- .../typeGuardIntersectionTypes.types | 10 +- .../typeGuardsWithInstanceOf.errors.txt | 17 +- .../reference/typeGuardsWithInstanceOf.js | 9 ++ .../typeGuardsWithInstanceOf.symbols | 8 +- .../reference/typeGuardsWithInstanceOf.types | 22 +-- ...wingAssignmentReadonlyRespectsAssertion.ts | 39 +++++ .../typeGuards/typeGuardsWithInstanceOf.ts | 5 + 13 files changed, 453 insertions(+), 35 deletions(-) create mode 100644 tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js create mode 100644 tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols create mode 100644 tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types create mode 100644 tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index bf7d17a951f..3de21bebf76 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -23094,10 +23094,15 @@ namespace ts { } } - // If the candidate type is a subtype of the target type, narrow to the candidate type, - // if the target type is a subtype of the candidate type, narrow to the target type, - // otherwise, narrow to an intersection of the two types. - return isTypeSubtypeOf(candidate, type) ? candidate : isTypeSubtypeOf(type, candidate) ? type : getIntersectionType([type, candidate]); + // If the candidate type is a subtype of the target type, narrow to the candidate type. + // Otherwise, if the target type is assignable to the candidate type, keep the target type. + // Otherwise, if the candidate type is assignable to the target type, narrow to the candidate + // type. Otherwise, the types are completely unrelated, so narrow to an intersection of the + // two types. + return isTypeSubtypeOf(candidate, type) ? candidate : + isTypeAssignableTo(type, candidate) ? type : + isTypeAssignableTo(candidate, type) ? candidate : + getIntersectionType([type, candidate]); } function narrowTypeByCallExpression(type: Type, callExpression: CallExpression, assumeTrue: boolean): Type { diff --git a/tests/baselines/reference/instanceOfAssignability.types b/tests/baselines/reference/instanceOfAssignability.types index 9c29abbe894..4e65e644a3b 100644 --- a/tests/baselines/reference/instanceOfAssignability.types +++ b/tests/baselines/reference/instanceOfAssignability.types @@ -70,8 +70,8 @@ function fn2(x: Base) { // 1.5: y: Base // Want: y: Derived1 let y = x; ->y : Base & Derived1 ->x : Base & Derived1 +>y : Derived1 +>x : Derived1 } } @@ -104,8 +104,8 @@ function fn4(x: Base|Derived2) { // 1.5: y: {} // Want: Derived1 let y = x; ->y : (Base | Derived2) & Derived1 ->x : (Base | Derived2) & Derived1 +>y : Derived1 +>x : Derived1 } } diff --git a/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js new file mode 100644 index 00000000000..5db0ab74ca7 --- /dev/null +++ b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js @@ -0,0 +1,71 @@ +//// [narrowingAssignmentReadonlyRespectsAssertion.ts] +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { + readonly val1: T | ReadonlyArray; + readonly val2: ReadonlyArray; +} + +interface MultiCaseFixture { + cases: T[]; +} + +function subDataFunc(): TestCase[] { + return [ + { val1: "a", val2: ["a", "b", "c"] }, + { val1: 2, val2: [1, 2, 3] }, + { val1: ["a", "z"], val2: ["x", "y", "z"] }, + { val1: [5, 10], val2: [10, 100, 1000] }, + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { + return { cases: subFunc() }; +} + +function testFunc() { + const fixture = dataFunc>(subDataFunc); + fixture.cases.forEach(({ val1, val2 }) => { + if (Array.isArray(val1)) { + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); + console.log(reversedVal1); + } else { + console.log(val1); + } + console.log(val2); + }); +} + +testFunc(); + + +//// [narrowingAssignmentReadonlyRespectsAssertion.js] +// https://github.com/microsoft/TypeScript/issues/41984 +function subDataFunc() { + return [ + { val1: "a", val2: ["a", "b", "c"] }, + { val1: 2, val2: [1, 2, 3] }, + { val1: ["a", "z"], val2: ["x", "y", "z"] }, + { val1: [5, 10], val2: [10, 100, 1000] }, + ]; +} +function dataFunc(subFunc) { + return { cases: subFunc() }; +} +function testFunc() { + var fixture = dataFunc(subDataFunc); + fixture.cases.forEach(function (_a) { + var val1 = _a.val1, val2 = _a.val2; + if (Array.isArray(val1)) { + // This should retain val1 as being an array + var reversedVal1 = val1.slice().reverse(); + console.log(reversedVal1); + } + else { + console.log(val1); + } + console.log(val2); + }); +} +testFunc(); diff --git a/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols new file mode 100644 index 00000000000..8b7fcfebae4 --- /dev/null +++ b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols @@ -0,0 +1,123 @@ +=== tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts === +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { +>TestCase : Symbol(TestCase, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 0, 0)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) + + readonly val1: T | ReadonlyArray; +>val1 : Symbol(TestCase.val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 47)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) + + readonly val2: ReadonlyArray; +>val2 : Symbol(TestCase.val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 3, 38)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) +} + +interface MultiCaseFixture { +>MultiCaseFixture : Symbol(MultiCaseFixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 5, 1)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 27)) + + cases: T[]; +>cases : Symbol(MultiCaseFixture.cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 31)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 27)) +} + +function subDataFunc(): TestCase[] { +>subDataFunc : Symbol(subDataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 9, 1)) +>TestCase : Symbol(TestCase, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 0, 0)) + + return [ + { val1: "a", val2: ["a", "b", "c"] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 13, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 13, 18)) + + { val1: 2, val2: [1, 2, 3] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 14, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 14, 16)) + + { val1: ["a", "z"], val2: ["x", "y", "z"] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 15, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 15, 25)) + + { val1: [5, 10], val2: [10, 100, 1000] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 16, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 16, 22)) + + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { +>dataFunc : Symbol(dataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 18, 1)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 18)) +>subFunc : Symbol(subFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 21)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 18)) +>MultiCaseFixture : Symbol(MultiCaseFixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 5, 1)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 18)) + + return { cases: subFunc() }; +>cases : Symbol(cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 21, 10)) +>subFunc : Symbol(subFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 21)) +} + +function testFunc() { +>testFunc : Symbol(testFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 22, 1)) + + const fixture = dataFunc>(subDataFunc); +>fixture : Symbol(fixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 25, 7)) +>dataFunc : Symbol(dataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 18, 1)) +>TestCase : Symbol(TestCase, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 0, 0)) +>subDataFunc : Symbol(subDataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 9, 1)) + + fixture.cases.forEach(({ val1, val2 }) => { +>fixture.cases.forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --)) +>fixture.cases : Symbol(MultiCaseFixture.cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 31)) +>fixture : Symbol(fixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 25, 7)) +>cases : Symbol(MultiCaseFixture.cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 31)) +>forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 32)) + + if (Array.isArray(val1)) { +>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) + + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); +>reversedVal1 : Symbol(reversedVal1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 29, 15)) +>val1.slice().reverse : Symbol(Array.reverse, Decl(lib.es5.d.ts, --, --)) +>val1.slice : Symbol(Array.slice, Decl(lib.es5.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) +>slice : Symbol(Array.slice, Decl(lib.es5.d.ts, --, --)) +>reverse : Symbol(Array.reverse, Decl(lib.es5.d.ts, --, --)) + + console.log(reversedVal1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>reversedVal1 : Symbol(reversedVal1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 29, 15)) + + } else { + console.log(val1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) + } + console.log(val2); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 32)) + + }); +} + +testFunc(); +>testFunc : Symbol(testFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 22, 1)) + diff --git a/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types new file mode 100644 index 00000000000..9fd13d66102 --- /dev/null +++ b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types @@ -0,0 +1,147 @@ +=== tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts === +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { + readonly val1: T | ReadonlyArray; +>val1 : T | readonly T[] + + readonly val2: ReadonlyArray; +>val2 : readonly T[] +} + +interface MultiCaseFixture { + cases: T[]; +>cases : T[] +} + +function subDataFunc(): TestCase[] { +>subDataFunc : () => TestCase[] + + return [ +>[ { val1: "a", val2: ["a", "b", "c"] }, { val1: 2, val2: [1, 2, 3] }, { val1: ["a", "z"], val2: ["x", "y", "z"] }, { val1: [5, 10], val2: [10, 100, 1000] }, ] : ({ val1: string; val2: string[]; } | { val1: number; val2: number[]; } | { val1: string[]; val2: string[]; } | { val1: number[]; val2: number[]; })[] + + { val1: "a", val2: ["a", "b", "c"] }, +>{ val1: "a", val2: ["a", "b", "c"] } : { val1: string; val2: string[]; } +>val1 : string +>"a" : "a" +>val2 : string[] +>["a", "b", "c"] : string[] +>"a" : "a" +>"b" : "b" +>"c" : "c" + + { val1: 2, val2: [1, 2, 3] }, +>{ val1: 2, val2: [1, 2, 3] } : { val1: number; val2: number[]; } +>val1 : number +>2 : 2 +>val2 : number[] +>[1, 2, 3] : number[] +>1 : 1 +>2 : 2 +>3 : 3 + + { val1: ["a", "z"], val2: ["x", "y", "z"] }, +>{ val1: ["a", "z"], val2: ["x", "y", "z"] } : { val1: string[]; val2: string[]; } +>val1 : string[] +>["a", "z"] : string[] +>"a" : "a" +>"z" : "z" +>val2 : string[] +>["x", "y", "z"] : string[] +>"x" : "x" +>"y" : "y" +>"z" : "z" + + { val1: [5, 10], val2: [10, 100, 1000] }, +>{ val1: [5, 10], val2: [10, 100, 1000] } : { val1: number[]; val2: number[]; } +>val1 : number[] +>[5, 10] : number[] +>5 : 5 +>10 : 10 +>val2 : number[] +>[10, 100, 1000] : number[] +>10 : 10 +>100 : 100 +>1000 : 1000 + + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { +>dataFunc : (subFunc: () => T[]) => MultiCaseFixture +>subFunc : () => T[] + + return { cases: subFunc() }; +>{ cases: subFunc() } : { cases: T[]; } +>cases : T[] +>subFunc() : T[] +>subFunc : () => T[] +} + +function testFunc() { +>testFunc : () => void + + const fixture = dataFunc>(subDataFunc); +>fixture : MultiCaseFixture> +>dataFunc>(subDataFunc) : MultiCaseFixture> +>dataFunc : (subFunc: () => T[]) => MultiCaseFixture +>subDataFunc : () => TestCase[] + + fixture.cases.forEach(({ val1, val2 }) => { +>fixture.cases.forEach(({ val1, val2 }) => { if (Array.isArray(val1)) { // This should retain val1 as being an array const reversedVal1 = val1.slice().reverse(); console.log(reversedVal1); } else { console.log(val1); } console.log(val2); }) : void +>fixture.cases.forEach : (callbackfn: (value: TestCase, index: number, array: TestCase[]) => void, thisArg?: any) => void +>fixture.cases : TestCase[] +>fixture : MultiCaseFixture> +>cases : TestCase[] +>forEach : (callbackfn: (value: TestCase, index: number, array: TestCase[]) => void, thisArg?: any) => void +>({ val1, val2 }) => { if (Array.isArray(val1)) { // This should retain val1 as being an array const reversedVal1 = val1.slice().reverse(); console.log(reversedVal1); } else { console.log(val1); } console.log(val2); } : ({ val1, val2 }: TestCase) => void +>val1 : string | number | readonly (string | number)[] +>val2 : readonly (string | number)[] + + if (Array.isArray(val1)) { +>Array.isArray(val1) : boolean +>Array.isArray : (arg: any) => arg is any[] +>Array : ArrayConstructor +>isArray : (arg: any) => arg is any[] +>val1 : string | number | readonly (string | number)[] + + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); +>reversedVal1 : any[] +>val1.slice().reverse() : any[] +>val1.slice().reverse : () => any[] +>val1.slice() : any[] +>val1.slice : (start?: number, end?: number) => any[] +>val1 : any[] +>slice : (start?: number, end?: number) => any[] +>reverse : () => any[] + + console.log(reversedVal1); +>console.log(reversedVal1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>reversedVal1 : any[] + + } else { + console.log(val1); +>console.log(val1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>val1 : string | number | readonly (string | number)[] + } + console.log(val2); +>console.log(val2) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>val2 : readonly (string | number)[] + + }); +} + +testFunc(); +>testFunc() : void +>testFunc : () => void + diff --git a/tests/baselines/reference/typeGuardIntersectionTypes.symbols b/tests/baselines/reference/typeGuardIntersectionTypes.symbols index f99148a9f05..21da29e434f 100644 --- a/tests/baselines/reference/typeGuardIntersectionTypes.symbols +++ b/tests/baselines/reference/typeGuardIntersectionTypes.symbols @@ -176,17 +176,17 @@ function identifyBeast(beast: Beast) { >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) if (beast.legs === 4) { ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) log(`pegasus - 4 legs, wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) } else if (beast.legs === 2) { ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) log(`bird - 2 legs, wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) @@ -194,9 +194,9 @@ function identifyBeast(beast: Beast) { else { log(`unknown - ${beast.legs} legs, wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) } } @@ -204,9 +204,9 @@ function identifyBeast(beast: Beast) { else { log(`manbearpig - ${beast.legs} legs, no wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) } } diff --git a/tests/baselines/reference/typeGuardIntersectionTypes.types b/tests/baselines/reference/typeGuardIntersectionTypes.types index bf119d5743c..a9f43b49179 100644 --- a/tests/baselines/reference/typeGuardIntersectionTypes.types +++ b/tests/baselines/reference/typeGuardIntersectionTypes.types @@ -166,12 +166,12 @@ function identifyBeast(beast: Beast) { if (hasWings(beast)) { >hasWings(beast) : boolean >hasWings : (x: Beast) => x is Winged ->beast : Beast & Legged +>beast : Legged if (beast.legs === 4) { >beast.legs === 4 : boolean >beast.legs : number ->beast : Beast & Legged & Winged +>beast : Legged & Winged >legs : number >4 : 4 @@ -183,7 +183,7 @@ function identifyBeast(beast: Beast) { else if (beast.legs === 2) { >beast.legs === 2 : boolean >beast.legs : number ->beast : Beast & Legged & Winged +>beast : Legged & Winged >legs : number >2 : 2 @@ -198,7 +198,7 @@ function identifyBeast(beast: Beast) { >log : (s: string) => void >`unknown - ${beast.legs} legs, wings` : string >beast.legs : number ->beast : Beast & Legged & Winged +>beast : Legged & Winged >legs : number } } @@ -210,7 +210,7 @@ function identifyBeast(beast: Beast) { >log : (s: string) => void >`manbearpig - ${beast.legs} legs, no wings` : string >beast.legs : number ->beast : Beast & Legged +>beast : Legged >legs : number } } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt b/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt index c6f44d4f152..ee651e82e7d 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt @@ -1,8 +1,12 @@ tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(7,20): error TS2339: Property 'global' does not exist on type 'never'. The intersection 'I & RegExp' was reduced to 'never' because property 'global' has conflicting types in some constituents. +tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(36,11): error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. + Property 'onChanges' does not exist on type 'C'. +tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(37,11): error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. + Property 'onChanges' does not exist on type 'C'. -==== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts (1 errors) ==== +==== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts (3 errors) ==== interface I { global: string; } var result!: I; var result2!: I; @@ -36,8 +40,19 @@ tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(7,20) v // Validator & Partial & C } v // Validator & Partial via subtype reduction + + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { + ~~~~~~~~~ +!!! error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. +!!! error TS2339: Property 'onChanges' does not exist on type 'C'. v.onChanges({}); + ~~~~~~~~~ +!!! error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. +!!! error TS2339: Property 'onChanges' does not exist on type 'C'. } } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.js b/tests/baselines/reference/typeGuardsWithInstanceOf.js index 689712ad22e..7e1af310c73 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.js +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.js @@ -29,6 +29,11 @@ function foo() { v // Validator & Partial & C } v // Validator & Partial via subtype reduction + + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { v.onChanges({}); } @@ -58,6 +63,10 @@ function foo() { v; // Validator & Partial & C } v; // Validator & Partial via subtype reduction + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { v.onChanges({}); } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.symbols b/tests/baselines/reference/typeGuardsWithInstanceOf.symbols index 018c6bac6da..eefd3700b64 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.symbols +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.symbols @@ -70,15 +70,15 @@ function foo() { v // Validator & Partial via subtype reduction >v : Symbol(v, Decl(typeGuardsWithInstanceOf.ts, 25, 7)) + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { ->v.onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) >v : Symbol(v, Decl(typeGuardsWithInstanceOf.ts, 25, 7)) ->onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) v.onChanges({}); ->v.onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) >v : Symbol(v, Decl(typeGuardsWithInstanceOf.ts, 25, 7)) ->onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) } } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.types b/tests/baselines/reference/typeGuardsWithInstanceOf.types index 198769effc2..0b57dbff89b 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.types +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.types @@ -65,21 +65,25 @@ function foo() { >C : typeof C v // Validator & Partial & C ->v : Validator & Partial & C +>v : C } v // Validator & Partial via subtype reduction ->v : Validator & Partial +>v : C | (Validator & Partial) + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { ->v.onChanges : ((changes: Record) => void) | undefined ->v : Validator & Partial ->onChanges : ((changes: Record) => void) | undefined +>v.onChanges : any +>v : C | (Validator & Partial) +>onChanges : any v.onChanges({}); ->v.onChanges({}) : void ->v.onChanges : (changes: Record) => void ->v : Validator & Partial ->onChanges : (changes: Record) => void +>v.onChanges({}) : any +>v.onChanges : any +>v : C | (Validator & Partial) +>onChanges : any >{} : {} } } diff --git a/tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts b/tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts new file mode 100644 index 00000000000..adc138d60d4 --- /dev/null +++ b/tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts @@ -0,0 +1,39 @@ +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { + readonly val1: T | ReadonlyArray; + readonly val2: ReadonlyArray; +} + +interface MultiCaseFixture { + cases: T[]; +} + +function subDataFunc(): TestCase[] { + return [ + { val1: "a", val2: ["a", "b", "c"] }, + { val1: 2, val2: [1, 2, 3] }, + { val1: ["a", "z"], val2: ["x", "y", "z"] }, + { val1: [5, 10], val2: [10, 100, 1000] }, + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { + return { cases: subFunc() }; +} + +function testFunc() { + const fixture = dataFunc>(subDataFunc); + fixture.cases.forEach(({ val1, val2 }) => { + if (Array.isArray(val1)) { + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); + console.log(reversedVal1); + } else { + console.log(val1); + } + console.log(val2); + }); +} + +testFunc(); diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts index ec647d9bb7c..a1fee0303f2 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts @@ -30,6 +30,11 @@ function foo() { v // Validator & Partial & C } v // Validator & Partial via subtype reduction + + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { v.onChanges({}); } From 5280ba400c071c87e6ba25c7d8d1ac9c304fe2d4 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 9 Feb 2021 15:23:29 -0800 Subject: [PATCH 25/36] Handle if plugin doesnt specify name (#42717) Fixes microsoft/vscode#116219 --- src/server/project.ts | 4 ++-- src/testRunner/unittests/tsserver/plugins.ts | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/server/project.ts b/src/server/project.ts index 8a8c804ee18..ef1a5119817 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -1581,8 +1581,8 @@ namespace ts.server { protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[], pluginConfigOverrides: Map | undefined) { this.projectService.logger.info(`Enabling plugin ${pluginConfigEntry.name} from candidate paths: ${searchPaths.join(",")}`); - if (parsePackageName(pluginConfigEntry.name).rest) { - this.projectService.logger.info(`Skipped loading plugin ${pluginConfigEntry.name} because only package name is allowed plugin name`); + if (!pluginConfigEntry.name || parsePackageName(pluginConfigEntry.name).rest) { + this.projectService.logger.info(`Skipped loading plugin ${pluginConfigEntry.name || JSON.stringify(pluginConfigEntry)} because only package name is allowed plugin name`); return; } diff --git a/src/testRunner/unittests/tsserver/plugins.ts b/src/testRunner/unittests/tsserver/plugins.ts index 4b45b24f9a5..68833409a4b 100644 --- a/src/testRunner/unittests/tsserver/plugins.ts +++ b/src/testRunner/unittests/tsserver/plugins.ts @@ -24,7 +24,12 @@ namespace ts.projectSystem { const tsconfig: File = { path: "/tsconfig.json", content: JSON.stringify({ - compilerOptions: { plugins: [...expectedToLoad, ...notToLoad].map(name => ({ name })) } + compilerOptions: { + plugins: [ + ...[...expectedToLoad, ...notToLoad].map(name => ({ name })), + { transform: "some-transform" } + ] + } }) }; const { host, pluginsLoaded } = createHostWithPlugin([aTs, tsconfig, libFile]); From 94747aa4e1c95dd00761f40fbc378d1f70cc006f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 9 Feb 2021 17:07:28 -0800 Subject: [PATCH 26/36] Bump version to 4.3. (#42728) --- package.json | 2 +- src/compiler/corePublic.ts | 2 +- tests/baselines/reference/api/tsserverlibrary.d.ts | 2 +- tests/baselines/reference/api/typescript.d.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2bb9af1f4ba..cc42fb13fd2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "typescript", "author": "Microsoft Corp.", "homepage": "https://www.typescriptlang.org/", - "version": "4.2.0", + "version": "4.3.0", "license": "Apache-2.0", "description": "TypeScript is a language for application scale JavaScript development", "keywords": [ diff --git a/src/compiler/corePublic.ts b/src/compiler/corePublic.ts index 31c852bdee6..871b3558ea8 100644 --- a/src/compiler/corePublic.ts +++ b/src/compiler/corePublic.ts @@ -1,7 +1,7 @@ namespace ts { // WARNING: The script `configurePrerelease.ts` uses a regexp to parse out these values. // If changing the text in this section, be sure to test `configurePrerelease` too. - export const versionMajorMinor = "4.2"; + export const versionMajorMinor = "4.3"; // The following is baselined as a literal template type without intervention /** The version of the TypeScript compiler release */ // eslint-disable-next-line @typescript-eslint/no-inferrable-types diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index be1c47fd86a..1850919780d 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -14,7 +14,7 @@ and limitations under the License. ***************************************************************************** */ declare namespace ts { - const versionMajorMinor = "4.2"; + const versionMajorMinor = "4.3"; /** The version of the TypeScript compiler release */ const version: string; /** diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index bba168d37e7..1fb8c099d50 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -14,7 +14,7 @@ and limitations under the License. ***************************************************************************** */ declare namespace ts { - const versionMajorMinor = "4.2"; + const versionMajorMinor = "4.3"; /** The version of the TypeScript compiler release */ const version: string; /** From 55cd98eaa39737d5a971e8d400134ab566637b29 Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Wed, 10 Feb 2021 06:23:21 +0000 Subject: [PATCH 27/36] Update package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 32c759fbc44..0f03e292e68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "typescript", - "version": "4.2.0", + "version": "4.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { From 290b0ea94d540bb451880cc598a7f1fbf93c848e Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 10 Feb 2021 12:56:22 -0800 Subject: [PATCH 28/36] Pin Node version for Volta users. (#42746) --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index cc42fb13fd2..5b1f2dba5ea 100644 --- a/package.json +++ b/package.json @@ -127,5 +127,8 @@ "source-map-support": false, "inspector": false }, + "volta": { + "node": "14.15.5" + }, "dependencies": {} } From d18b728e0b5491662d3513dd346d039a746212f2 Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Thu, 11 Feb 2021 06:23:23 +0000 Subject: [PATCH 29/36] Update package-lock.json --- package-lock.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f03e292e68..29c20b0adf8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -324,9 +324,9 @@ } }, "@octokit/openapi-types": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-4.0.1.tgz", - "integrity": "sha512-k2hRcfcLRyPJjtYfJLzg404n7HZ6sUpAWAR/uNI8tf96NgatWOpw1ocdF+WFfx/trO1ivBh7ckynO1rn+xAw/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-4.0.2.tgz", + "integrity": "sha512-quqmeGTjcVks8YaatVGCpt7QpUTs2PK0D3mW5aEQqmFKOuIZ/CxwWrgnggPjqP3CNp6eALdQRgf0jUpcG8X1/Q==", "dev": true }, "@octokit/plugin-paginate-rest": { @@ -402,12 +402,12 @@ } }, "@octokit/types": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.8.2.tgz", - "integrity": "sha512-RpG0NJd7OKSkWptiFhy1xCLkThs5YoDIKM21lEtDmUvSpbaIEfrxzckWLUGDFfF8RydSyngo44gDv8m2hHruUg==", + "version": "6.8.3", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.8.3.tgz", + "integrity": "sha512-ZNAy8z77ewKZ5LCX0KaUm4tWdgloWQ6FWJCh06qgahq/MH13sQefIPKSo0dBdPU3bcioltyZUcC0k8oHHfjvnQ==", "dev": true, "requires": { - "@octokit/openapi-types": "^4.0.0", + "@octokit/openapi-types": "^4.0.2", "@types/node": ">= 8" } }, @@ -422,9 +422,9 @@ } }, "@types/chai": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.14.tgz", - "integrity": "sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.15.tgz", + "integrity": "sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ==", "dev": true }, "@types/convert-source-map": { From b7922147d33271fb97ad6266f7450a5f245ca93a Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Thu, 11 Feb 2021 20:46:48 +0200 Subject: [PATCH 30/36] fix(42714): do not show inferFunctionReturnType QF on function body (#42737) --- .../refactors/inferFunctionReturnType.ts | 6 ++- .../refactorInferFunctionReturnType16.ts | 32 ++++++++++++++ .../refactorInferFunctionReturnType17.ts | 42 +++++++++++++++++++ .../refactorInferFunctionReturnType18.ts | 32 ++++++++++++++ .../refactorInferFunctionReturnType19.ts | 32 ++++++++++++++ .../refactorInferFunctionReturnType20.ts | 20 +++++++++ .../refactorInferFunctionReturnType21.ts | 18 ++++++++ .../fourslash/refactorKind_rewriteFunction.ts | 5 +-- 8 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 tests/cases/fourslash/refactorInferFunctionReturnType16.ts create mode 100644 tests/cases/fourslash/refactorInferFunctionReturnType17.ts create mode 100644 tests/cases/fourslash/refactorInferFunctionReturnType18.ts create mode 100644 tests/cases/fourslash/refactorInferFunctionReturnType19.ts create mode 100644 tests/cases/fourslash/refactorInferFunctionReturnType20.ts create mode 100644 tests/cases/fourslash/refactorInferFunctionReturnType21.ts diff --git a/src/services/refactors/inferFunctionReturnType.ts b/src/services/refactors/inferFunctionReturnType.ts index 4fad099cad0..535e25c330b 100644 --- a/src/services/refactors/inferFunctionReturnType.ts +++ b/src/services/refactors/inferFunctionReturnType.ts @@ -59,7 +59,9 @@ namespace ts.refactor.inferFunctionReturnType { if (isInJSFile(context.file) || !refactorKindBeginsWith(inferReturnTypeAction.kind, context.kind)) return; const token = getTokenAtPosition(context.file, context.startPosition); - const declaration = findAncestor(token, isConvertibleDeclaration); + const declaration = findAncestor(token, n => + isBlock(n) || n.parent && isArrowFunction(n.parent) && (n.kind === SyntaxKind.EqualsGreaterThanToken || n.parent.body === n) ? "quit" : + isConvertibleDeclaration(n)) as ConvertibleDeclaration | undefined; if (!declaration || !declaration.body || declaration.type) { return { error: getLocaleSpecificMessage(Diagnostics.Return_type_must_be_inferred_from_a_function) }; } @@ -68,7 +70,7 @@ namespace ts.refactor.inferFunctionReturnType { const returnType = tryGetReturnType(typeChecker, declaration); if (!returnType) { return { error: getLocaleSpecificMessage(Diagnostics.Could_not_determine_function_return_type) }; - }; + } const returnTypeNode = typeChecker.typeToTypeNode(returnType, declaration, NodeBuilderFlags.NoTruncation); if (returnTypeNode) { diff --git a/tests/cases/fourslash/refactorInferFunctionReturnType16.ts b/tests/cases/fourslash/refactorInferFunctionReturnType16.ts new file mode 100644 index 00000000000..d8d281d546a --- /dev/null +++ b/tests/cases/fourslash/refactorInferFunctionReturnType16.ts @@ -0,0 +1,32 @@ +/// + +////function /*a*//*b*/f1() { +//// return { x: 1, y: 1 }; +////} +////func/*c*//*d*/tion f2() { +//// return { x: 1, y: 1 }; +////} +////function f3(/*e*//*f*/) { +//// return { x: 1, y: 1 }; +////} +////function f4() {/*g*//*h*/ +//// return { x: 1, y: 1 }; +////} +////function f5() { +//// return { x: 1, y: 1 /*i*//*j*/}; +////} + +goTo.select("a", "b"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("c", "d"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("e", "f"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("g", "h"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("i", "j"); +verify.not.refactorAvailable("Infer function return type"); diff --git a/tests/cases/fourslash/refactorInferFunctionReturnType17.ts b/tests/cases/fourslash/refactorInferFunctionReturnType17.ts new file mode 100644 index 00000000000..421b7aef2ab --- /dev/null +++ b/tests/cases/fourslash/refactorInferFunctionReturnType17.ts @@ -0,0 +1,42 @@ +/// + +////class F1 { +//// /*a*//*b*/method() { +//// return { x: 1, y: 1 }; +//// } +////} +////class F2 { +//// met/*c*//*d*/hod(){ +//// return { x: 1, y: 1 }; +//// } +////} +////class F3 { +//// method(/*e*//*f*/) { +//// return { x: 1, y: 1 }; +//// } +////} +////class F4 { +//// method() { +//// return { x: 1, y: 1 /*g*//*h*/}; +//// } +////} +////class F5 { +//// method() { +//// return { x: 1, y: 1 /*i*//*j*/}; +//// } +////} + +goTo.select("a", "b"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("c", "d"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("e", "f"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("g", "h"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("i", "j"); +verify.not.refactorAvailable("Infer function return type"); diff --git a/tests/cases/fourslash/refactorInferFunctionReturnType18.ts b/tests/cases/fourslash/refactorInferFunctionReturnType18.ts new file mode 100644 index 00000000000..1006eeff534 --- /dev/null +++ b/tests/cases/fourslash/refactorInferFunctionReturnType18.ts @@ -0,0 +1,32 @@ +/// + +////const f1 = /*a*//*b*/function () { +//// return { x: 1, y: 1 }; +////} +////const f2 = func/*c*//*d*/tion() { +//// return { x: 1, y: 1 }; +////} +////const f3 = function (/*e*//*f*/) { +//// return { x: 1, y: 1 }; +////} +////const f4 = function () {/*g*//*h*/ +//// return { x: 1, y: 1 }; +////} +////const f5 = function () { +//// return { x: 1, y: 1 /*i*//*j*/}; +////} + +goTo.select("a", "b"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("c", "d"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("e", "f"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("g", "h"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("i", "j"); +verify.not.refactorAvailable("Infer function return type"); diff --git a/tests/cases/fourslash/refactorInferFunctionReturnType19.ts b/tests/cases/fourslash/refactorInferFunctionReturnType19.ts new file mode 100644 index 00000000000..8860c1ac739 --- /dev/null +++ b/tests/cases/fourslash/refactorInferFunctionReturnType19.ts @@ -0,0 +1,32 @@ +/// + +////const f1 = /*a*//*b*/() =>{ +//// return { x: 1, y: 1 }; +////} +////const f2 = (/*c*//*d*/) => { +//// return { x: 1, y: 1 }; +////} +////const f3 = () => /*e*//*f*/{ +//// return { x: 1, y: 1 }; +////} +////const f4 = () => {/*g*//*h*/ +//// return { x: 1, y: 1 }; +////} +////const f5 = () => { +//// return { x: 1, y: 1/*i*//*j*/ }; +////} + +goTo.select("a", "b"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("c", "d"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("e", "f"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("g", "h"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("i", "j"); +verify.not.refactorAvailable("Infer function return type"); diff --git a/tests/cases/fourslash/refactorInferFunctionReturnType20.ts b/tests/cases/fourslash/refactorInferFunctionReturnType20.ts new file mode 100644 index 00000000000..b5b29adc4ca --- /dev/null +++ b/tests/cases/fourslash/refactorInferFunctionReturnType20.ts @@ -0,0 +1,20 @@ +/// + +////function f1(/*a*//*b*/x, { y }) { +//// return { x, y: 1 }; +////} +////function f2(x, { /*c*//*d*/y }) { +//// return { x, y: 1 }; +////} +////function f3(x, /*e*//*f*/{ y }) { +//// return { x, y: 1 }; +////} + +goTo.select("a", "b"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("c", "d"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("e", "f"); +verify.refactorAvailable("Infer function return type"); diff --git a/tests/cases/fourslash/refactorInferFunctionReturnType21.ts b/tests/cases/fourslash/refactorInferFunctionReturnType21.ts new file mode 100644 index 00000000000..544be7bc5c8 --- /dev/null +++ b/tests/cases/fourslash/refactorInferFunctionReturnType21.ts @@ -0,0 +1,18 @@ +/// + +////const f1 = /*a*//*b*/(x: number) => x; +////const f2 = (x: number) /*c*//*d*/=> x; +////const f3 = (x: number) => /*e*//*f*/x +////const f4= (x: number) => x/*g*//*h*/ + +goTo.select("a", "b"); +verify.refactorAvailable("Infer function return type"); + +goTo.select("c", "d"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("e", "f"); +verify.not.refactorAvailable("Infer function return type"); + +goTo.select("g", "h"); +verify.not.refactorAvailable("Infer function return type"); diff --git a/tests/cases/fourslash/refactorKind_rewriteFunction.ts b/tests/cases/fourslash/refactorKind_rewriteFunction.ts index 56fe42cd9a4..b6946a99fa3 100644 --- a/tests/cases/fourslash/refactorKind_rewriteFunction.ts +++ b/tests/cases/fourslash/refactorKind_rewriteFunction.ts @@ -1,10 +1,9 @@ /// -//// const arrow = () /*a*/=>/*b*/ 1; +//// const arrow = /*a*//*b*/() => 1; goTo.select("a", "b"); -verify.refactorKindAvailable("refactor.rewrite", -[ +verify.refactorKindAvailable("refactor.rewrite", [ "refactor.rewrite.arrow.braces.add", "refactor.rewrite.function.named", "refactor.rewrite.function.anonymous", From 4fc9c8446dac94aa13a9ef999020fcdb994a49c5 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Tue, 9 Feb 2021 13:16:37 -0500 Subject: [PATCH 31/36] Refactor the tracing namespace organization Also changes the `tracingEnabled.Mode.*` enum to a string union. --- src/compiler/tracing.ts | 518 +++++++++---------- src/executeCommandLine/executeCommandLine.ts | 2 +- src/tsserver/nodeServer.ts | 2 +- 3 files changed, 257 insertions(+), 265 deletions(-) diff --git a/src/compiler/tracing.ts b/src/compiler/tracing.ts index 87c2abf4f48..2894e2a8bf7 100644 --- a/src/compiler/tracing.ts +++ b/src/compiler/tracing.ts @@ -5,299 +5,291 @@ namespace ts { // eslint-disable-line one-namespace-per-file // should be used as tracing?.___ export let tracing: typeof tracingEnabled | undefined; // enable the above using startTracing() -} -// `tracingEnabled` should never be used directly, only through the above -/* @internal */ -namespace ts.tracingEnabled { // eslint-disable-line one-namespace-per-file - export const enum Mode { - Project, - Build, - Server, - } + // `tracingEnabled` should never be used directly, only through the above + namespace tracingEnabled { // eslint-disable-line one-namespace-per-file + type Mode = "project" | "build" | "server"; - let fs: typeof import("fs"); + let fs: typeof import("fs"); - let traceCount = 0; - let traceFd = 0; + let traceCount = 0; + let traceFd = 0; - let mode: Mode; + let mode: Mode; - let legendPath: string | undefined; - const legend: TraceRecord[] = []; + let legendPath: string | undefined; + const legend: TraceRecord[] = []; - // The actual constraint is that JSON.stringify be able to serialize it without throwing. - interface Args { - [key: string]: string | number | boolean | null | undefined | Args | readonly (string | number | boolean | null | undefined | Args)[]; - }; - - /** Starts tracing for the given project. */ - export function startTracing(tracingMode: Mode, traceDir: string, configFilePath?: string) { - Debug.assert(!tracing, "Tracing already started"); - - if (fs === undefined) { - try { - fs = require("fs"); - } - catch (e) { - throw new Error(`tracing requires having fs\n(original error: ${e.message || e})`); - } - } - - mode = tracingMode; - - if (legendPath === undefined) { - legendPath = combinePaths(traceDir, "legend.json"); - } - - // Note that writing will fail later on if it exists and is not a directory - if (!fs.existsSync(traceDir)) { - fs.mkdirSync(traceDir, { recursive: true }); - } - - const countPart = - mode === Mode.Build ? `.${process.pid}-${++traceCount}` - : mode === Mode.Server ? `.${process.pid}` - : ``; - const tracePath = combinePaths(traceDir, `trace${countPart}.json`); - const typesPath = combinePaths(traceDir, `types${countPart}.json`); - - legend.push({ - configFilePath, - tracePath, - typesPath, - }); - - traceFd = fs.openSync(tracePath, "w"); - tracing = tracingEnabled; // only when traceFd is properly set - - // Start with a prefix that contains some metadata that the devtools profiler expects (also avoids a warning on import) - const meta = { cat: "__metadata", ph: "M", ts: 1000 * timestamp(), pid: 1, tid: 1 }; - fs.writeSync(traceFd, - "[\n" - + [{ name: "process_name", args: { name: "tsc" }, ...meta }, - { name: "thread_name", args: { name: "Main" }, ...meta }, - { name: "TracingStartedInBrowser", ...meta, cat: "disabled-by-default-devtools.timeline" }] - .map(v => JSON.stringify(v)).join(",\n")); - } - - /** Stops tracing for the in-progress project and dumps the type catalog. */ - export function stopTracing(typeCatalog?: readonly Type[]) { - Debug.assert(tracing, "Tracing is not in progress"); - Debug.assert(!!typeCatalog === (mode !== Mode.Server)); // Have a type catalog iff not in server mode - - fs.writeSync(traceFd, `\n]\n`); - fs.closeSync(traceFd); - tracing = undefined; - - if (typeCatalog) { - dumpTypes(typeCatalog); - } - else { - // We pre-computed this path for convenience, but clear it - // now that the file won't be created. - legend[legend.length - 1].typesPath = undefined; - } - } - - export const enum Phase { - Parse = "parse", - Program = "program", - Bind = "bind", - Check = "check", // Before we get into checking types (e.g. checkSourceFile) - CheckTypes = "checkTypes", - Emit = "emit", - Session = "session", - } - - export function instant(phase: Phase, name: string, args?: Args) { - writeEvent("I", phase, name, args, `"s":"g"`); - } - - const eventStack: { phase: Phase, name: string, args?: Args, time: number, separateBeginAndEnd: boolean }[] = []; - - /** - * @param separateBeginAndEnd - used for special cases where we need the trace point even if the event - * never terminates (typically for reducing a scenario too big to trace to one that can be completed). - * In the future we might implement an exit handler to dump unfinished events which would deprecate - * these operations. - */ - export function push(phase: Phase, name: string, args?: Args, separateBeginAndEnd = false) { - if (separateBeginAndEnd) { - writeEvent("B", phase, name, args); - } - eventStack.push({ phase, name, args, time: 1000 * timestamp(), separateBeginAndEnd }); - } - export function pop() { - Debug.assert(eventStack.length > 0); - writeStackEvent(eventStack.length - 1, 1000 * timestamp()); - eventStack.length--; - } - export function popAll() { - const endTime = 1000 * timestamp(); - for (let i = eventStack.length - 1; i >= 0; i--) { - writeStackEvent(i, endTime); - } - eventStack.length = 0; - } - // sample every 10ms - const sampleInterval = 1000 * 10; - function writeStackEvent(index: number, endTime: number) { - const { phase, name, args, time, separateBeginAndEnd } = eventStack[index]; - if (separateBeginAndEnd) { - writeEvent("E", phase, name, args, /*extras*/ undefined, endTime); - } - // test if [time,endTime) straddles a sampling point - else if (sampleInterval - (time % sampleInterval) <= endTime - time) { - writeEvent("X", phase, name, args, `"dur":${endTime - time}`, time); - } - } - - function writeEvent(eventType: string, phase: Phase, name: string, args: Args | undefined, extras?: string, - time: number = 1000 * timestamp()) { - - // In server mode, there's no easy way to dump type information, so we drop events that would require it. - if (mode === Mode.Server && phase === Phase.CheckTypes) return; - - performance.mark("beginTracing"); - fs.writeSync(traceFd, `,\n{"pid":1,"tid":1,"ph":"${eventType}","cat":"${phase}","ts":${time},"name":"${name}"`); - if (extras) fs.writeSync(traceFd, `,${extras}`); - if (args) fs.writeSync(traceFd, `,"args":${JSON.stringify(args)}`); - fs.writeSync(traceFd, `}`); - performance.mark("endTracing"); - performance.measure("Tracing", "beginTracing", "endTracing"); - } - - function indexFromOne(lc: LineAndCharacter): LineAndCharacter { - return { - line: lc.line + 1, - character: lc.character + 1, + // The actual constraint is that JSON.stringify be able to serialize it without throwing. + interface Args { + [key: string]: string | number | boolean | null | undefined | Args | readonly (string | number | boolean | null | undefined | Args)[]; }; - } - function dumpTypes(types: readonly Type[]) { - performance.mark("beginDumpTypes"); + /** Starts tracing for the given project. */ + export function startTracing(tracingMode: Mode, traceDir: string, configFilePath?: string) { + Debug.assert(!tracing, "Tracing already started"); - const typesPath = legend[legend.length - 1].typesPath!; - const typesFd = fs.openSync(typesPath, "w"); - - const recursionIdentityMap = new Map(); - - // Cleverness: no line break here so that the type ID will match the line number - fs.writeSync(typesFd, "["); - - const numTypes = types.length; - for (let i = 0; i < numTypes; i++) { - const type = types[i]; - const objectFlags = (type as any).objectFlags; - const symbol = type.aliasSymbol ?? type.symbol; - const firstDeclaration = symbol?.declarations?.[0]; - const firstFile = firstDeclaration && getSourceFileOfNode(firstDeclaration); - - // It's slow to compute the display text, so skip it unless it's really valuable (or cheap) - let display: string | undefined; - if ((objectFlags & ObjectFlags.Anonymous) | (type.flags & TypeFlags.Literal)) { + if (fs === undefined) { try { - display = type.checker?.typeToString(type); + fs = require("fs"); } - catch { - display = undefined; + catch (e) { + throw new Error(`tracing requires having fs\n(original error: ${e.message || e})`); } } - let indexedAccessProperties: object = {}; - if (type.flags & TypeFlags.IndexedAccess) { - const indexedAccessType = type as IndexedAccessType; - indexedAccessProperties = { - indexedAccessObjectType: indexedAccessType.objectType?.id, - indexedAccessIndexType: indexedAccessType.indexType?.id, - }; + mode = tracingMode; + + if (legendPath === undefined) { + legendPath = combinePaths(traceDir, "legend.json"); } - let referenceProperties: object = {}; - if (objectFlags & ObjectFlags.Reference) { - const referenceType = type as TypeReference; - referenceProperties = { - instantiatedType: referenceType.target?.id, - typeArguments: referenceType.resolvedTypeArguments?.map(t => t.id), - }; + // Note that writing will fail later on if it exists and is not a directory + if (!fs.existsSync(traceDir)) { + fs.mkdirSync(traceDir, { recursive: true }); } - let conditionalProperties: object = {}; - if (type.flags & TypeFlags.Conditional) { - const conditionalType = type as ConditionalType; - conditionalProperties = { - conditionalCheckType: conditionalType.checkType?.id, - conditionalExtendsType: conditionalType.extendsType?.id, - conditionalTrueType: conditionalType.resolvedTrueType?.id ?? -1, - conditionalFalseType: conditionalType.resolvedFalseType?.id ?? -1, - }; - } + const countPart = + mode === "build" ? `.${process.pid}-${++traceCount}` + : mode === "server" ? `.${process.pid}` + : ``; + const tracePath = combinePaths(traceDir, `trace${countPart}.json`); + const typesPath = combinePaths(traceDir, `types${countPart}.json`); - // We can't print out an arbitrary object, so just assign each one a unique number. - // Don't call it an "id" so people don't treat it as a type id. - let recursionToken: number | undefined; - const recursionIdentity = type.checker.getRecursionIdentity(type); - if (recursionIdentity) { - recursionToken = recursionIdentityMap.get(recursionIdentity); - if (!recursionToken) { - recursionToken = recursionIdentityMap.size; - recursionIdentityMap.set(recursionIdentity, recursionToken); - } - } + legend.push({ + configFilePath, + tracePath, + typesPath, + }); - const descriptor = { - id: type.id, - intrinsicName: (type as any).intrinsicName, - symbolName: symbol?.escapedName && unescapeLeadingUnderscores(symbol.escapedName), - recursionId: recursionToken, - unionTypes: (type.flags & TypeFlags.Union) ? (type as UnionType).types?.map(t => t.id) : undefined, - intersectionTypes: (type.flags & TypeFlags.Intersection) ? (type as IntersectionType).types.map(t => t.id) : undefined, - aliasTypeArguments: type.aliasTypeArguments?.map(t => t.id), - keyofType: (type.flags & TypeFlags.Index) ? (type as IndexType).type?.id : undefined, - ...indexedAccessProperties, - ...referenceProperties, - ...conditionalProperties, - firstDeclaration: firstDeclaration && { - path: firstFile.path, - start: indexFromOne(getLineAndCharacterOfPosition(firstFile, firstDeclaration.pos)), - end: indexFromOne(getLineAndCharacterOfPosition(getSourceFileOfNode(firstDeclaration), firstDeclaration.end)), - }, - flags: Debug.formatTypeFlags(type.flags).split("|"), - display, + traceFd = fs.openSync(tracePath, "w"); + tracing = tracingEnabled; // only when traceFd is properly set + + // Start with a prefix that contains some metadata that the devtools profiler expects (also avoids a warning on import) + const meta = { cat: "__metadata", ph: "M", ts: 1000 * timestamp(), pid: 1, tid: 1 }; + fs.writeSync(traceFd, + "[\n" + + [{ name: "process_name", args: { name: "tsc" }, ...meta }, + { name: "thread_name", args: { name: "Main" }, ...meta }, + { name: "TracingStartedInBrowser", ...meta, cat: "disabled-by-default-devtools.timeline" }] + .map(v => JSON.stringify(v)).join(",\n")); + } + + /** Stops tracing for the in-progress project and dumps the type catalog. */ + export function stopTracing(typeCatalog?: readonly Type[]) { + Debug.assert(tracing, "Tracing is not in progress"); + Debug.assert(!!typeCatalog === (mode !== "server")); // Have a type catalog iff not in server mode + + fs.writeSync(traceFd, `\n]\n`); + fs.closeSync(traceFd); + tracing = undefined; + + if (typeCatalog) { + dumpTypes(typeCatalog); + } + else { + // We pre-computed this path for convenience, but clear it + // now that the file won't be created. + legend[legend.length - 1].typesPath = undefined; + } + } + + export const enum Phase { + Parse = "parse", + Program = "program", + Bind = "bind", + Check = "check", // Before we get into checking types (e.g. checkSourceFile) + CheckTypes = "checkTypes", + Emit = "emit", + Session = "session", + } + + export function instant(phase: Phase, name: string, args?: Args) { + writeEvent("I", phase, name, args, `"s":"g"`); + } + + const eventStack: { phase: Phase, name: string, args?: Args, time: number, separateBeginAndEnd: boolean }[] = []; + + /** + * @param separateBeginAndEnd - used for special cases where we need the trace point even if the event + * never terminates (typically for reducing a scenario too big to trace to one that can be completed). + * In the future we might implement an exit handler to dump unfinished events which would deprecate + * these operations. + */ + export function push(phase: Phase, name: string, args?: Args, separateBeginAndEnd = false) { + if (separateBeginAndEnd) { + writeEvent("B", phase, name, args); + } + eventStack.push({ phase, name, args, time: 1000 * timestamp(), separateBeginAndEnd }); + } + export function pop() { + Debug.assert(eventStack.length > 0); + writeStackEvent(eventStack.length - 1, 1000 * timestamp()); + eventStack.length--; + } + export function popAll() { + const endTime = 1000 * timestamp(); + for (let i = eventStack.length - 1; i >= 0; i--) { + writeStackEvent(i, endTime); + } + eventStack.length = 0; + } + // sample every 10ms + const sampleInterval = 1000 * 10; + function writeStackEvent(index: number, endTime: number) { + const { phase, name, args, time, separateBeginAndEnd } = eventStack[index]; + if (separateBeginAndEnd) { + writeEvent("E", phase, name, args, /*extras*/ undefined, endTime); + } + // test if [time,endTime) straddles a sampling point + else if (sampleInterval - (time % sampleInterval) <= endTime - time) { + writeEvent("X", phase, name, args, `"dur":${endTime - time}`, time); + } + } + + function writeEvent(eventType: string, phase: Phase, name: string, args: Args | undefined, extras?: string, + time: number = 1000 * timestamp()) { + + // In server mode, there's no easy way to dump type information, so we drop events that would require it. + if (mode === "server" && phase === Phase.CheckTypes) return; + + performance.mark("beginTracing"); + fs.writeSync(traceFd, `,\n{"pid":1,"tid":1,"ph":"${eventType}","cat":"${phase}","ts":${time},"name":"${name}"`); + if (extras) fs.writeSync(traceFd, `,${extras}`); + if (args) fs.writeSync(traceFd, `,"args":${JSON.stringify(args)}`); + fs.writeSync(traceFd, `}`); + performance.mark("endTracing"); + performance.measure("Tracing", "beginTracing", "endTracing"); + } + + function indexFromOne(lc: LineAndCharacter): LineAndCharacter { + return { + line: lc.line + 1, + character: lc.character + 1, }; + } - fs.writeSync(typesFd, JSON.stringify(descriptor)); - if (i < numTypes - 1) { - fs.writeSync(typesFd, ",\n"); + function dumpTypes(types: readonly Type[]) { + performance.mark("beginDumpTypes"); + + const typesPath = legend[legend.length - 1].typesPath!; + const typesFd = fs.openSync(typesPath, "w"); + + const recursionIdentityMap = new Map(); + + // Cleverness: no line break here so that the type ID will match the line number + fs.writeSync(typesFd, "["); + + const numTypes = types.length; + for (let i = 0; i < numTypes; i++) { + const type = types[i]; + const objectFlags = (type as any).objectFlags; + const symbol = type.aliasSymbol ?? type.symbol; + const firstDeclaration = symbol?.declarations?.[0]; + const firstFile = firstDeclaration && getSourceFileOfNode(firstDeclaration); + + // It's slow to compute the display text, so skip it unless it's really valuable (or cheap) + let display: string | undefined; + if ((objectFlags & ObjectFlags.Anonymous) | (type.flags & TypeFlags.Literal)) { + try { + display = type.checker?.typeToString(type); + } + catch { + display = undefined; + } + } + + let indexedAccessProperties: object = {}; + if (type.flags & TypeFlags.IndexedAccess) { + const indexedAccessType = type as IndexedAccessType; + indexedAccessProperties = { + indexedAccessObjectType: indexedAccessType.objectType?.id, + indexedAccessIndexType: indexedAccessType.indexType?.id, + }; + } + + let referenceProperties: object = {}; + if (objectFlags & ObjectFlags.Reference) { + const referenceType = type as TypeReference; + referenceProperties = { + instantiatedType: referenceType.target?.id, + typeArguments: referenceType.resolvedTypeArguments?.map(t => t.id), + }; + } + + let conditionalProperties: object = {}; + if (type.flags & TypeFlags.Conditional) { + const conditionalType = type as ConditionalType; + conditionalProperties = { + conditionalCheckType: conditionalType.checkType?.id, + conditionalExtendsType: conditionalType.extendsType?.id, + conditionalTrueType: conditionalType.resolvedTrueType?.id ?? -1, + conditionalFalseType: conditionalType.resolvedFalseType?.id ?? -1, + }; + } + + // We can't print out an arbitrary object, so just assign each one a unique number. + // Don't call it an "id" so people don't treat it as a type id. + let recursionToken: number | undefined; + const recursionIdentity = type.checker.getRecursionIdentity(type); + if (recursionIdentity) { + recursionToken = recursionIdentityMap.get(recursionIdentity); + if (!recursionToken) { + recursionToken = recursionIdentityMap.size; + recursionIdentityMap.set(recursionIdentity, recursionToken); + } + } + + const descriptor = { + id: type.id, + intrinsicName: (type as any).intrinsicName, + symbolName: symbol?.escapedName && unescapeLeadingUnderscores(symbol.escapedName), + recursionId: recursionToken, + unionTypes: (type.flags & TypeFlags.Union) ? (type as UnionType).types?.map(t => t.id) : undefined, + intersectionTypes: (type.flags & TypeFlags.Intersection) ? (type as IntersectionType).types.map(t => t.id) : undefined, + aliasTypeArguments: type.aliasTypeArguments?.map(t => t.id), + keyofType: (type.flags & TypeFlags.Index) ? (type as IndexType).type?.id : undefined, + ...indexedAccessProperties, + ...referenceProperties, + ...conditionalProperties, + firstDeclaration: firstDeclaration && { + path: firstFile.path, + start: indexFromOne(getLineAndCharacterOfPosition(firstFile, firstDeclaration.pos)), + end: indexFromOne(getLineAndCharacterOfPosition(getSourceFileOfNode(firstDeclaration), firstDeclaration.end)), + }, + flags: Debug.formatTypeFlags(type.flags).split("|"), + display, + }; + + fs.writeSync(typesFd, JSON.stringify(descriptor)); + if (i < numTypes - 1) { + fs.writeSync(typesFd, ",\n"); + } } + + fs.writeSync(typesFd, "]\n"); + + fs.closeSync(typesFd); + + performance.mark("endDumpTypes"); + performance.measure("Dump types", "beginDumpTypes", "endDumpTypes"); } - fs.writeSync(typesFd, "]\n"); + export function dumpLegend() { + if (!legendPath) { + return; + } - fs.closeSync(typesFd); - - performance.mark("endDumpTypes"); - performance.measure("Dump types", "beginDumpTypes", "endDumpTypes"); - } - - export function dumpLegend() { - if (!legendPath) { - return; + fs.writeFileSync(legendPath, JSON.stringify(legend)); } - fs.writeFileSync(legendPath, JSON.stringify(legend)); + interface TraceRecord { + configFilePath?: string; + tracePath: string; + typesPath?: string; + } } - interface TraceRecord { - configFilePath?: string; - tracePath: string; - typesPath?: string; - } -} - -/*@internal*/ -namespace ts { // eslint-disable-line one-namespace-per-file // define after tracingEnabled is initialized export const startTracing = tracingEnabled.startTracing; } diff --git a/src/executeCommandLine/executeCommandLine.ts b/src/executeCommandLine/executeCommandLine.ts index 09f5230ab8a..bfe40e661cd 100644 --- a/src/executeCommandLine/executeCommandLine.ts +++ b/src/executeCommandLine/executeCommandLine.ts @@ -666,7 +666,7 @@ namespace ts { } if (canTrace(system, compilerOptions)) { - startTracing(isBuildMode ? tracingEnabled.Mode.Build : tracingEnabled.Mode.Project, + startTracing(isBuildMode ? "build" : "project", compilerOptions.generateTrace!, compilerOptions.configFilePath); } } diff --git a/src/tsserver/nodeServer.ts b/src/tsserver/nodeServer.ts index 97aa0a198e8..c879ea1b5f4 100644 --- a/src/tsserver/nodeServer.ts +++ b/src/tsserver/nodeServer.ts @@ -861,7 +861,7 @@ namespace ts.server { ? stripQuotes(commandLineTraceDir) : process.env.TSS_TRACE; if (traceDir) { - startTracing(tracingEnabled.Mode.Server, traceDir); + startTracing("server", traceDir); } const ioSession = new IOSession(); From a3ead92046141ea1be1aa975ceea297d7ea5af5d Mon Sep 17 00:00:00 2001 From: Masato Urai Date: Tue, 26 Jan 2021 19:54:36 +0900 Subject: [PATCH 32/36] Improve error message for overload that takes spread arguments The original error message on the last line I have added to in functionParameterArityMismatch.ts was No overload expects 5 arguments, but overloads do exist that expect either 4 or Infinity arguments. even if we do not define a function that takes Infinity arguments. This PR changes it to this: Expected 0-6 arguments, but got 5 or more. I feel it is still a bit strange but much more understandable. Fixes #42418 --- src/compiler/checker.ts | 7 ++++--- .../functionParameterArityMismatch.errors.txt | 6 +++++- .../reference/functionParameterArityMismatch.js | 7 +++++++ .../reference/functionParameterArityMismatch.symbols | 3 +++ .../reference/functionParameterArityMismatch.types | 12 ++++++++++++ .../cases/compiler/functionParameterArityMismatch.ts | 1 + 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3de21bebf76..3756e5076bf 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -27709,6 +27709,10 @@ namespace ts { max = Math.max(max, maxCount); } + if (min < argCount && argCount < max) { + return getDiagnosticForCallNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, argCount, belowArgCount, aboveArgCount); + } + const hasRestParameter = some(signatures, hasEffectiveRestParameter); const paramRange = hasRestParameter ? min : min < max ? min + "-" + max : @@ -27742,9 +27746,6 @@ namespace ts { ); } } - if (min < argCount && argCount < max) { - return getDiagnosticForCallNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, argCount, belowArgCount, aboveArgCount); - } if (!hasSpreadArgument && argCount < min) { const diagnostic = getDiagnosticForCallNode(node, error, paramRange, argCount); diff --git a/tests/baselines/reference/functionParameterArityMismatch.errors.txt b/tests/baselines/reference/functionParameterArityMismatch.errors.txt index aa870c23028..1182ecb58ab 100644 --- a/tests/baselines/reference/functionParameterArityMismatch.errors.txt +++ b/tests/baselines/reference/functionParameterArityMismatch.errors.txt @@ -5,9 +5,10 @@ tests/cases/compiler/functionParameterArityMismatch.ts(11,1): error TS2575: No o tests/cases/compiler/functionParameterArityMismatch.ts(12,1): error TS2575: No overload expects 3 arguments, but overloads do exist that expect either 2 or 4 arguments. tests/cases/compiler/functionParameterArityMismatch.ts(13,1): error TS2575: No overload expects 5 arguments, but overloads do exist that expect either 4 or 6 arguments. tests/cases/compiler/functionParameterArityMismatch.ts(14,22): error TS2554: Expected 0-6 arguments, but got 7. +tests/cases/compiler/functionParameterArityMismatch.ts(15,12): error TS2556: Expected 0-6 arguments, but got 5 or more. -==== tests/cases/compiler/functionParameterArityMismatch.ts (7 errors) ==== +==== tests/cases/compiler/functionParameterArityMismatch.ts (8 errors) ==== declare function f1(a: number); declare function f1(a: number, b: number, c: number); f1(); @@ -37,4 +38,7 @@ tests/cases/compiler/functionParameterArityMismatch.ts(14,22): error TS2554: Exp f2(1, 2, 3, 4, 5, 6, 7); ~ !!! error TS2554: Expected 0-6 arguments, but got 7. + f2(...[1], 2, 3, 4, 5, 6); + ~~~~~~~~~~~~~ +!!! error TS2556: Expected 0-6 arguments, but got 5 or more. \ No newline at end of file diff --git a/tests/baselines/reference/functionParameterArityMismatch.js b/tests/baselines/reference/functionParameterArityMismatch.js index cfbe27d5f29..ec8809a517f 100644 --- a/tests/baselines/reference/functionParameterArityMismatch.js +++ b/tests/baselines/reference/functionParameterArityMismatch.js @@ -13,9 +13,15 @@ f2(1); f2(1, 2, 3); f2(1, 2, 3, 4, 5); f2(1, 2, 3, 4, 5, 6, 7); +f2(...[1], 2, 3, 4, 5, 6); //// [functionParameterArityMismatch.js] +var __spreadArray = (this && this.__spreadArray) || function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +}; f1(); f1(1, 2); f1(1, 2, 3, 4); @@ -23,3 +29,4 @@ f2(1); f2(1, 2, 3); f2(1, 2, 3, 4, 5); f2(1, 2, 3, 4, 5, 6, 7); +f2.apply(void 0, __spreadArray(__spreadArray([], [1]), [2, 3, 4, 5, 6])); diff --git a/tests/baselines/reference/functionParameterArityMismatch.symbols b/tests/baselines/reference/functionParameterArityMismatch.symbols index 5615ac694ef..638b7c8c58d 100644 --- a/tests/baselines/reference/functionParameterArityMismatch.symbols +++ b/tests/baselines/reference/functionParameterArityMismatch.symbols @@ -54,3 +54,6 @@ f2(1, 2, 3, 4, 5); f2(1, 2, 3, 4, 5, 6, 7); >f2 : Symbol(f2, Decl(functionParameterArityMismatch.ts, 4, 15), Decl(functionParameterArityMismatch.ts, 6, 22), Decl(functionParameterArityMismatch.ts, 7, 42), Decl(functionParameterArityMismatch.ts, 8, 64)) +f2(...[1], 2, 3, 4, 5, 6); +>f2 : Symbol(f2, Decl(functionParameterArityMismatch.ts, 4, 15), Decl(functionParameterArityMismatch.ts, 6, 22), Decl(functionParameterArityMismatch.ts, 7, 42), Decl(functionParameterArityMismatch.ts, 8, 64)) + diff --git a/tests/baselines/reference/functionParameterArityMismatch.types b/tests/baselines/reference/functionParameterArityMismatch.types index f7117a2eef3..9de4e8d2601 100644 --- a/tests/baselines/reference/functionParameterArityMismatch.types +++ b/tests/baselines/reference/functionParameterArityMismatch.types @@ -83,3 +83,15 @@ f2(1, 2, 3, 4, 5, 6, 7); >6 : 6 >7 : 7 +f2(...[1], 2, 3, 4, 5, 6); +>f2(...[1], 2, 3, 4, 5, 6) : any +>f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } +>...[1] : number +>[1] : number[] +>1 : 1 +>2 : 2 +>3 : 3 +>4 : 4 +>5 : 5 +>6 : 6 + diff --git a/tests/cases/compiler/functionParameterArityMismatch.ts b/tests/cases/compiler/functionParameterArityMismatch.ts index 738568012d2..7231dcc3d37 100644 --- a/tests/cases/compiler/functionParameterArityMismatch.ts +++ b/tests/cases/compiler/functionParameterArityMismatch.ts @@ -12,3 +12,4 @@ f2(1); f2(1, 2, 3); f2(1, 2, 3, 4, 5); f2(1, 2, 3, 4, 5, 6, 7); +f2(...[1], 2, 3, 4, 5, 6); From c7bac6f2e688fcce24b5956b3bcbf77ec359d19c Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 11 Feb 2021 15:22:06 -0500 Subject: [PATCH 33/36] Avoid getting undefined `callSignatures`/`constructSignatures` in `getPropertyOfType` e350c357 (#40228) introduced a subtle bug: it switched the flags to an alias, dropping `SymbolFlags.Property` --- and that makes `symbolIsValue()` get to the `resolveAlias(symbol)` call, which leads to `getPropertyOfType()` with`resolved.callSignatures`+`constructSignatures` being `undefined`. So initialize them in `setStructuredTypeMembers` before calling `getNamedMembers()`. Fixes #42350 --- src/compiler/checker.ts | 17 ++++++++------ .../moduleExportsAliasLoop1.errors.txt | 9 ++++++++ .../reference/moduleExportsAliasLoop1.symbols | 12 ++++++++++ .../reference/moduleExportsAliasLoop1.types | 16 ++++++++++++++ .../moduleExportsAliasLoop2.errors.txt | 10 +++++++++ .../reference/moduleExportsAliasLoop2.symbols | 16 ++++++++++++++ .../reference/moduleExportsAliasLoop2.types | 22 +++++++++++++++++++ .../salsa/moduleExportsAliasLoop1.ts | 6 +++++ .../salsa/moduleExportsAliasLoop2.ts | 7 ++++++ 9 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 tests/baselines/reference/moduleExportsAliasLoop1.errors.txt create mode 100644 tests/baselines/reference/moduleExportsAliasLoop1.symbols create mode 100644 tests/baselines/reference/moduleExportsAliasLoop1.types create mode 100644 tests/baselines/reference/moduleExportsAliasLoop2.errors.txt create mode 100644 tests/baselines/reference/moduleExportsAliasLoop2.symbols create mode 100644 tests/baselines/reference/moduleExportsAliasLoop2.types create mode 100644 tests/cases/conformance/salsa/moduleExportsAliasLoop1.ts create mode 100644 tests/cases/conformance/salsa/moduleExportsAliasLoop2.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3756e5076bf..d33b94f4285 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3846,13 +3846,16 @@ namespace ts { } function setStructuredTypeMembers(type: StructuredType, members: SymbolTable, callSignatures: readonly Signature[], constructSignatures: readonly Signature[], stringIndexInfo: IndexInfo | undefined, numberIndexInfo: IndexInfo | undefined): ResolvedType { - (type).members = members; - (type).properties = members === emptySymbols ? emptyArray : getNamedMembers(members); - (type).callSignatures = callSignatures; - (type).constructSignatures = constructSignatures; - (type).stringIndexInfo = stringIndexInfo; - (type).numberIndexInfo = numberIndexInfo; - return type; + const resolved = type; + resolved.members = members; + resolved.properties = emptyArray; + resolved.callSignatures = callSignatures; + resolved.constructSignatures = constructSignatures; + resolved.stringIndexInfo = stringIndexInfo; + resolved.numberIndexInfo = numberIndexInfo; + // This can loop back to getPropertyOfType() which would crash if `callSignatures` & `constructSignatures` are not initialized. + if (members !== emptySymbols) resolved.properties = getNamedMembers(members); + return resolved; } function createAnonymousType(symbol: Symbol | undefined, members: SymbolTable, callSignatures: readonly Signature[], constructSignatures: readonly Signature[], stringIndexInfo: IndexInfo | undefined, numberIndexInfo: IndexInfo | undefined): ResolvedType { diff --git a/tests/baselines/reference/moduleExportsAliasLoop1.errors.txt b/tests/baselines/reference/moduleExportsAliasLoop1.errors.txt new file mode 100644 index 00000000000..7975da40a1e --- /dev/null +++ b/tests/baselines/reference/moduleExportsAliasLoop1.errors.txt @@ -0,0 +1,9 @@ +tests/cases/conformance/salsa/x.js(1,9): error TS2339: Property 'fn1' does not exist on type 'typeof import("tests/cases/conformance/salsa/x")'. + + +==== tests/cases/conformance/salsa/x.js (1 errors) ==== + exports.fn1(); + ~~~ +!!! error TS2339: Property 'fn1' does not exist on type 'typeof import("tests/cases/conformance/salsa/x")'. + exports.fn2 = Math.min; + \ No newline at end of file diff --git a/tests/baselines/reference/moduleExportsAliasLoop1.symbols b/tests/baselines/reference/moduleExportsAliasLoop1.symbols new file mode 100644 index 00000000000..7668de62d30 --- /dev/null +++ b/tests/baselines/reference/moduleExportsAliasLoop1.symbols @@ -0,0 +1,12 @@ +=== tests/cases/conformance/salsa/x.js === +exports.fn1(); +>exports : Symbol("tests/cases/conformance/salsa/x", Decl(x.js, 0, 0)) + +exports.fn2 = Math.min; +>exports.fn2 : Symbol(fn2, Decl(x.js, 0, 14)) +>exports : Symbol(fn2, Decl(x.js, 0, 14)) +>fn2 : Symbol(fn2, Decl(x.js, 0, 14)) +>Math.min : Symbol(fn2, Decl(lib.es5.d.ts, --, --)) +>Math : Symbol(Math, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>min : Symbol(fn2, Decl(lib.es5.d.ts, --, --)) + diff --git a/tests/baselines/reference/moduleExportsAliasLoop1.types b/tests/baselines/reference/moduleExportsAliasLoop1.types new file mode 100644 index 00000000000..126a0d7de49 --- /dev/null +++ b/tests/baselines/reference/moduleExportsAliasLoop1.types @@ -0,0 +1,16 @@ +=== tests/cases/conformance/salsa/x.js === +exports.fn1(); +>exports.fn1() : any +>exports.fn1 : any +>exports : typeof import("tests/cases/conformance/salsa/x") +>fn1 : any + +exports.fn2 = Math.min; +>exports.fn2 = Math.min : (...values: number[]) => number +>exports.fn2 : (...values: number[]) => number +>exports : typeof import("tests/cases/conformance/salsa/x") +>fn2 : (...values: number[]) => number +>Math.min : (...values: number[]) => number +>Math : Math +>min : (...values: number[]) => number + diff --git a/tests/baselines/reference/moduleExportsAliasLoop2.errors.txt b/tests/baselines/reference/moduleExportsAliasLoop2.errors.txt new file mode 100644 index 00000000000..ae57d97560b --- /dev/null +++ b/tests/baselines/reference/moduleExportsAliasLoop2.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/salsa/x.js(2,9): error TS2339: Property 'fn1' does not exist on type 'typeof import("tests/cases/conformance/salsa/x")'. + + +==== tests/cases/conformance/salsa/x.js (1 errors) ==== + const Foo = { min: 3 }; + exports.fn1(); + ~~~ +!!! error TS2339: Property 'fn1' does not exist on type 'typeof import("tests/cases/conformance/salsa/x")'. + exports.fn2 = Foo.min; + \ No newline at end of file diff --git a/tests/baselines/reference/moduleExportsAliasLoop2.symbols b/tests/baselines/reference/moduleExportsAliasLoop2.symbols new file mode 100644 index 00000000000..e19f3f24a5f --- /dev/null +++ b/tests/baselines/reference/moduleExportsAliasLoop2.symbols @@ -0,0 +1,16 @@ +=== tests/cases/conformance/salsa/x.js === +const Foo = { min: 3 }; +>Foo : Symbol(Foo, Decl(x.js, 0, 5)) +>min : Symbol(min, Decl(x.js, 0, 13)) + +exports.fn1(); +>exports : Symbol("tests/cases/conformance/salsa/x", Decl(x.js, 0, 0)) + +exports.fn2 = Foo.min; +>exports.fn2 : Symbol(fn2, Decl(x.js, 1, 14)) +>exports : Symbol(fn2, Decl(x.js, 1, 14)) +>fn2 : Symbol(fn2, Decl(x.js, 1, 14)) +>Foo.min : Symbol(fn2, Decl(x.js, 0, 13)) +>Foo : Symbol(Foo, Decl(x.js, 0, 5)) +>min : Symbol(fn2, Decl(x.js, 0, 13)) + diff --git a/tests/baselines/reference/moduleExportsAliasLoop2.types b/tests/baselines/reference/moduleExportsAliasLoop2.types new file mode 100644 index 00000000000..458fc64e8a5 --- /dev/null +++ b/tests/baselines/reference/moduleExportsAliasLoop2.types @@ -0,0 +1,22 @@ +=== tests/cases/conformance/salsa/x.js === +const Foo = { min: 3 }; +>Foo : { min: number; } +>{ min: 3 } : { min: number; } +>min : number +>3 : 3 + +exports.fn1(); +>exports.fn1() : any +>exports.fn1 : any +>exports : typeof import("tests/cases/conformance/salsa/x") +>fn1 : any + +exports.fn2 = Foo.min; +>exports.fn2 = Foo.min : number +>exports.fn2 : number +>exports : typeof import("tests/cases/conformance/salsa/x") +>fn2 : number +>Foo.min : number +>Foo : { min: number; } +>min : number + diff --git a/tests/cases/conformance/salsa/moduleExportsAliasLoop1.ts b/tests/cases/conformance/salsa/moduleExportsAliasLoop1.ts new file mode 100644 index 00000000000..7a4dd7015a4 --- /dev/null +++ b/tests/cases/conformance/salsa/moduleExportsAliasLoop1.ts @@ -0,0 +1,6 @@ +// @noEmit: true +// @allowJs: true +// @checkJs: true +// @filename: x.js +exports.fn1(); +exports.fn2 = Math.min; diff --git a/tests/cases/conformance/salsa/moduleExportsAliasLoop2.ts b/tests/cases/conformance/salsa/moduleExportsAliasLoop2.ts new file mode 100644 index 00000000000..233266bccce --- /dev/null +++ b/tests/cases/conformance/salsa/moduleExportsAliasLoop2.ts @@ -0,0 +1,7 @@ +// @noEmit: true +// @allowJs: true +// @checkJs: true +// @filename: x.js +const Foo = { min: 3 }; +exports.fn1(); +exports.fn2 = Foo.min; From 475036950e768893474093215bbb0c5eaa19ea31 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Fri, 12 Feb 2021 03:07:14 +0200 Subject: [PATCH 34/36] fix(42133): fix instantiated undefined type from JS initializer (#42662) --- src/compiler/checker.ts | 4 ++-- .../typeFromJSInitializer.errors.txt | 7 ++++++ .../reference/typeFromJSInitializer.symbols | 19 +++++++++++++++ .../reference/typeFromJSInitializer.types | 24 +++++++++++++++++++ .../salsa/typeFromJSInitializer.ts | 7 ++++++ 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d33b94f4285..9d089eb7299 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -19489,8 +19489,8 @@ namespace ts { } function isEmptyArrayLiteralType(type: Type): boolean { - const elementType = isArrayType(type) ? getTypeArguments(type)[0] : undefined; - return elementType === undefinedWideningType || elementType === implicitNeverType; + const elementType = getElementTypeOfArrayType(type); + return strictNullChecks ? elementType === implicitNeverType : elementType === undefinedWideningType; } function isTupleLikeType(type: Type): boolean { diff --git a/tests/baselines/reference/typeFromJSInitializer.errors.txt b/tests/baselines/reference/typeFromJSInitializer.errors.txt index 08d66a2a9f3..45ed31d6895 100644 --- a/tests/baselines/reference/typeFromJSInitializer.errors.txt +++ b/tests/baselines/reference/typeFromJSInitializer.errors.txt @@ -72,4 +72,11 @@ tests/cases/conformance/salsa/a.js(37,5): error TS2322: Type '"error"' is not as u = 'ok' l.push('ok') + + /** @type {(v: unknown) => v is undefined} */ + const isUndef = v => v === undefined; + const e = [1, undefined]; + + // should be undefined[] + const g = e.filter(isUndef); \ No newline at end of file diff --git a/tests/baselines/reference/typeFromJSInitializer.symbols b/tests/baselines/reference/typeFromJSInitializer.symbols index 2de03afed25..98c921e1cc1 100644 --- a/tests/baselines/reference/typeFromJSInitializer.symbols +++ b/tests/baselines/reference/typeFromJSInitializer.symbols @@ -175,3 +175,22 @@ l.push('ok') >l : Symbol(l, Decl(a.js, 45, 3)) >push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --)) +/** @type {(v: unknown) => v is undefined} */ +const isUndef = v => v === undefined; +>isUndef : Symbol(isUndef, Decl(a.js, 55, 5)) +>v : Symbol(v, Decl(a.js, 55, 15)) +>v : Symbol(v, Decl(a.js, 55, 15)) +>undefined : Symbol(undefined) + +const e = [1, undefined]; +>e : Symbol(e, Decl(a.js, 56, 5)) +>undefined : Symbol(undefined) + +// should be undefined[] +const g = e.filter(isUndef); +>g : Symbol(g, Decl(a.js, 59, 5)) +>e.filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>e : Symbol(e, Decl(a.js, 56, 5)) +>filter : Symbol(Array.filter, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>isUndef : Symbol(isUndef, Decl(a.js, 55, 5)) + diff --git a/tests/baselines/reference/typeFromJSInitializer.types b/tests/baselines/reference/typeFromJSInitializer.types index 2ed82388598..1dd46220044 100644 --- a/tests/baselines/reference/typeFromJSInitializer.types +++ b/tests/baselines/reference/typeFromJSInitializer.types @@ -239,3 +239,27 @@ l.push('ok') >push : (...items: any[]) => number >'ok' : "ok" +/** @type {(v: unknown) => v is undefined} */ +const isUndef = v => v === undefined; +>isUndef : (v: unknown) => v is undefined +>v => v === undefined : (v: unknown) => v is undefined +>v : unknown +>v === undefined : boolean +>v : unknown +>undefined : undefined + +const e = [1, undefined]; +>e : (number | undefined)[] +>[1, undefined] : (number | undefined)[] +>1 : 1 +>undefined : undefined + +// should be undefined[] +const g = e.filter(isUndef); +>g : undefined[] +>e.filter(isUndef) : undefined[] +>e.filter : { (predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => unknown, thisArg?: any): (number | undefined)[]; } +>e : (number | undefined)[] +>filter : { (predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | undefined, index: number, array: (number | undefined)[]) => unknown, thisArg?: any): (number | undefined)[]; } +>isUndef : (v: unknown) => v is undefined + diff --git a/tests/cases/conformance/salsa/typeFromJSInitializer.ts b/tests/cases/conformance/salsa/typeFromJSInitializer.ts index 39d2edb39b3..fc6a08822fb 100644 --- a/tests/cases/conformance/salsa/typeFromJSInitializer.ts +++ b/tests/cases/conformance/salsa/typeFromJSInitializer.ts @@ -57,3 +57,10 @@ u = {} u = 'ok' l.push('ok') + +/** @type {(v: unknown) => v is undefined} */ +const isUndef = v => v === undefined; +const e = [1, undefined]; + +// should be undefined[] +const g = e.filter(isUndef); From ff5ae3561fe02dc9de29633e16d1067ec904fe59 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Fri, 12 Feb 2021 03:14:55 +0200 Subject: [PATCH 35/36] feat(42735): add single line comments to selection ranges (#42763) --- src/services/smartSelection.ts | 16 ++++++++++++++++ .../reference/smartSelection_comment1.baseline | 5 +++++ .../reference/smartSelection_comment2.baseline | 5 +++++ tests/cases/fourslash/smartSelection_comment1.ts | 5 +++++ tests/cases/fourslash/smartSelection_comment2.ts | 5 +++++ 5 files changed, 36 insertions(+) create mode 100644 tests/baselines/reference/smartSelection_comment1.baseline create mode 100644 tests/baselines/reference/smartSelection_comment2.baseline create mode 100644 tests/cases/fourslash/smartSelection_comment1.ts create mode 100644 tests/cases/fourslash/smartSelection_comment2.ts diff --git a/src/services/smartSelection.ts b/src/services/smartSelection.ts index 3fcab166959..6cd5c8f94d8 100644 --- a/src/services/smartSelection.ts +++ b/src/services/smartSelection.ts @@ -13,10 +13,16 @@ namespace ts.SmartSelectionRange { const prevNode: Node | undefined = children[i - 1]; const node: Node = children[i]; const nextNode: Node | undefined = children[i + 1]; + if (getTokenPosOfNode(node, sourceFile, /*includeJsDoc*/ true) > pos) { break outer; } + const comment = singleOrUndefined(getTrailingCommentRanges(sourceFile.text, node.end)); + if (comment && comment.kind === SyntaxKind.SingleLineCommentTrivia) { + pushSelectionCommentRange(comment.pos, comment.end); + } + if (positionShouldSnapToNode(sourceFile, pos, node)) { // 1. Blocks are effectively redundant with SyntaxLists. // 2. TemplateSpans, along with the SyntaxLists containing them, are a somewhat unintuitive grouping @@ -89,6 +95,16 @@ namespace ts.SmartSelectionRange { } } } + + function pushSelectionCommentRange(start: number, end: number): void { + pushSelectionRange(start, end); + + let pos = start; + while (sourceFile.text.charCodeAt(pos) === CharacterCodes.slash) { + pos++; + } + pushSelectionRange(pos, end); + } } /** diff --git a/tests/baselines/reference/smartSelection_comment1.baseline b/tests/baselines/reference/smartSelection_comment1.baseline new file mode 100644 index 00000000000..2e541c0b230 --- /dev/null +++ b/tests/baselines/reference/smartSelection_comment1.baseline @@ -0,0 +1,5 @@ +const a = 1; ///**/comment content + + comment content + //comment content +const a = 1; //comment content \ No newline at end of file diff --git a/tests/baselines/reference/smartSelection_comment2.baseline b/tests/baselines/reference/smartSelection_comment2.baseline new file mode 100644 index 00000000000..ccb5286f0b5 --- /dev/null +++ b/tests/baselines/reference/smartSelection_comment2.baseline @@ -0,0 +1,5 @@ +const a = 1; //a b/**/c d + + a bc d + //a bc d +const a = 1; //a bc d \ No newline at end of file diff --git a/tests/cases/fourslash/smartSelection_comment1.ts b/tests/cases/fourslash/smartSelection_comment1.ts new file mode 100644 index 00000000000..dbd2aa6a163 --- /dev/null +++ b/tests/cases/fourslash/smartSelection_comment1.ts @@ -0,0 +1,5 @@ +/// + +////const a = 1; ///**/comment content + +verify.baselineSmartSelection(); diff --git a/tests/cases/fourslash/smartSelection_comment2.ts b/tests/cases/fourslash/smartSelection_comment2.ts new file mode 100644 index 00000000000..1da1b56cf0f --- /dev/null +++ b/tests/cases/fourslash/smartSelection_comment2.ts @@ -0,0 +1,5 @@ +/// + +////const a = 1; //a b/**/c d + +verify.baselineSmartSelection(); From e72c015bca07e7f2dee9e6ea4fe59793400d9fee Mon Sep 17 00:00:00 2001 From: TypeScript Bot Date: Fri, 12 Feb 2021 06:23:08 +0000 Subject: [PATCH 36/36] Update package-lock.json --- package-lock.json | 316 +++++++++++++++++++--------------------------- 1 file changed, 131 insertions(+), 185 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29c20b0adf8..692a1b2d782 100644 --- a/package-lock.json +++ b/package-lock.json @@ -585,9 +585,9 @@ "dev": true }, "@types/node": { - "version": "14.14.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", - "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==", + "version": "14.14.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.26.tgz", + "integrity": "sha512-skWxepWOs+VArEBWd2S/VR3wUavioIIx9/HzW+UJiIjtwa6+kNXdsOeq7FfxDXf56hIcL0ieo2brwMgBJ1+lhw==", "dev": true }, "@types/node-fetch": { @@ -1555,12 +1555,12 @@ }, "dependencies": { "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } } @@ -2748,6 +2748,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5335,35 +5341,35 @@ "dev": true }, "mocha": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", - "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.0.tgz", + "integrity": "sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.4.3", - "debug": "4.2.0", - "diff": "4.0.2", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.14.0", + "js-yaml": "4.0.0", "log-symbols": "4.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", - "nanoid": "3.1.12", + "ms": "2.1.3", + "nanoid": "3.1.20", "serialize-javascript": "5.0.1", "strip-json-comments": "3.1.1", - "supports-color": "7.2.0", + "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.2", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { @@ -5373,21 +5379,6 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -5398,6 +5389,12 @@ "picomatch": "^2.0.4" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -5413,21 +5410,15 @@ "fill-range": "^7.0.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -5436,40 +5427,45 @@ } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -5496,9 +5492,9 @@ } }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -5526,12 +5522,27 @@ "binary-extensions": "^2.0.0" } }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5541,12 +5552,6 @@ "p-locate": "^5.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5565,12 +5570,6 @@ "p-limit": "^3.0.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5586,19 +5585,24 @@ "picomatch": "^2.2.1" } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "to-regex-range": { @@ -5619,101 +5623,43 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", "dev": true }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true } } }, @@ -5765,12 +5711,12 @@ } }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -5806,9 +5752,9 @@ "optional": true }, "nanoid": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", - "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true }, "nanomatch": { @@ -8428,9 +8374,9 @@ "dev": true }, "workerpool": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", - "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", "dev": true }, "wrap-ansi": {