From 73639e5b104731863cb822535a3e09e0459e18f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 9 Jun 2023 00:02:24 +0200 Subject: [PATCH 1/6] Adding the "outExtension" option --- src/compiler/commandLineParser.ts | 14 ++++++++++++++ src/compiler/diagnosticMessages.json | 8 ++++++++ src/compiler/emitter.ts | 6 ++++++ src/compiler/types.ts | 1 + 4 files changed, 29 insertions(+) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 20f5d7a6b4876..43f6683d11cd3 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -696,6 +696,20 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [ category: Diagnostics.Emit, description: Diagnostics.Specify_an_output_folder_for_all_emitted_files, }, + { + name: "outExtension", + type: new Map(Object.entries({ + cjs: Extension.Cjs, + mjs: Extension.Mjs, + js: Extension.Js, + infer: "infer", + })), + defaultValueDescription: Diagnostics.undefined_will_determine_extension_based_on_the_input_file, + affectsEmit: true, + affectsBuildInfo: true, + category: Diagnostics.Emit, + description: Diagnostics.Specify_the_output_extension_for_all_emitted_files_infer_will_determine_extension_based_on_the_module_option, + }, { name: "rootDir", type: "string", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 102be920acf0e..2502fbec77fa5 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -6099,6 +6099,14 @@ "category": "Message", "code": 6718 }, + "Specify the output extension for all emitted files. 'infer' will determine extension based on the `module` option.": { + "category": "Message", + "code": 6719 + }, + "`undefined` will determine extension based on the input file.": { + "category": "Message", + "code": 6720 + }, "Default catch clause variables as 'unknown' instead of 'any'.": { "category": "Message", "code": 6803 diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 6f34ec688fc63..1af00a7ceb829 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -574,6 +574,12 @@ function getSourceMapFilePath(jsFilePath: string, options: CompilerOptions) { export function getOutputExtension(fileName: string, options: CompilerOptions): Extension { return fileExtensionIs(fileName, Extension.Json) ? Extension.Json : options.jsx === JsxEmit.Preserve && fileExtensionIsOneOf(fileName, [Extension.Jsx, Extension.Tsx]) ? Extension.Jsx : + options.outExtension === "infer" ? ( + options.module === ModuleKind.CommonJS ? Extension.Cjs : + options.module && options.module >= ModuleKind.ES2015 && options.module <= ModuleKind.ESNext ? Extension.Mjs : + Extension.Js + ) : + options.outExtension ? options.outExtension : fileExtensionIsOneOf(fileName, [Extension.Mts, Extension.Mjs]) ? Extension.Mjs : fileExtensionIsOneOf(fileName, [Extension.Cts, Extension.Cjs]) ? Extension.Cjs : Extension.Js; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index d5c402ea30784..9b9dfb4fe854d 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -7171,6 +7171,7 @@ export interface CompilerOptions { noUncheckedIndexedAccess?: boolean; out?: string; outDir?: string; + outExtension?: Extension.Mjs | Extension.Cjs | Extension.Js | "infer"; outFile?: string; paths?: MapLike; /** From d2c161d6ad949efe0428895c2600569dab2cbf74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 9 Jun 2023 00:02:36 +0200 Subject: [PATCH 2/6] Updating existing tests --- tests/baselines/reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 56c4b49ff6df2..9a2f42de2dbd7 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -7231,6 +7231,7 @@ declare namespace ts { noUncheckedIndexedAccess?: boolean; out?: string; outDir?: string; + outExtension?: Extension.Mjs | Extension.Cjs | Extension.Js | "infer"; outFile?: string; paths?: MapLike; preserveConstEnums?: boolean; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 2b642a091ce2e..7f33ef5a8266d 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -3178,6 +3178,7 @@ declare namespace ts { noUncheckedIndexedAccess?: boolean; out?: string; outDir?: string; + outExtension?: Extension.Mjs | Extension.Cjs | Extension.Js | "infer"; outFile?: string; paths?: MapLike; preserveConstEnums?: boolean; From 1db7f6046d6b09ee35bce5ffa1642beae499b888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 9 Jun 2023 00:16:26 +0200 Subject: [PATCH 3/6] Using a numeric enum (OutExtensionKind) An assert was failing in "prepareConvertersForEnumLikeCompilerOptions" --- src/compiler/commandLineParser.ts | 9 +++++---- src/compiler/emitter.ts | 6 ++++-- src/compiler/types.ts | 10 +++++++++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 43f6683d11cd3..7f9f0628a2c73 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -90,6 +90,7 @@ import { normalizeSlashes, NumericLiteral, ObjectLiteralExpression, + OutExtensionKind, ParseConfigHost, ParsedCommandLine, parseJsonText, @@ -699,10 +700,10 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [ { name: "outExtension", type: new Map(Object.entries({ - cjs: Extension.Cjs, - mjs: Extension.Mjs, - js: Extension.Js, - infer: "infer", + infer: OutExtensionKind.InferFromModule, + js: OutExtensionKind.Js, + cjs: OutExtensionKind.Cjs, + mjs: OutExtensionKind.Mjs, })), defaultValueDescription: Diagnostics.undefined_will_determine_extension_based_on_the_input_file, affectsEmit: true, diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 1af00a7ceb829..c700a2fb51fa1 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -574,12 +574,14 @@ function getSourceMapFilePath(jsFilePath: string, options: CompilerOptions) { export function getOutputExtension(fileName: string, options: CompilerOptions): Extension { return fileExtensionIs(fileName, Extension.Json) ? Extension.Json : options.jsx === JsxEmit.Preserve && fileExtensionIsOneOf(fileName, [Extension.Jsx, Extension.Tsx]) ? Extension.Jsx : - options.outExtension === "infer" ? ( + options.outExtension === ts.OutExtensionKind.InferFromModule ? ( options.module === ModuleKind.CommonJS ? Extension.Cjs : options.module && options.module >= ModuleKind.ES2015 && options.module <= ModuleKind.ESNext ? Extension.Mjs : Extension.Js ) : - options.outExtension ? options.outExtension : + options.outExtension === ts.OutExtensionKind.Cjs ? Extension.Cjs : + options.outExtension === ts.OutExtensionKind.Mjs ? Extension.Mjs : + options.outExtension === ts.OutExtensionKind.Js ? Extension.Js : fileExtensionIsOneOf(fileName, [Extension.Mts, Extension.Mjs]) ? Extension.Mjs : fileExtensionIsOneOf(fileName, [Extension.Cts, Extension.Cjs]) ? Extension.Cjs : Extension.Js; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 9b9dfb4fe854d..bde78d41e0930 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -7171,7 +7171,7 @@ export interface CompilerOptions { noUncheckedIndexedAccess?: boolean; out?: string; outDir?: string; - outExtension?: Extension.Mjs | Extension.Cjs | Extension.Js | "infer"; + outExtension?: OutExtensionKind; outFile?: string; paths?: MapLike; /** @@ -7710,6 +7710,14 @@ export const enum Extension { Dcts = ".d.cts", } +export const enum OutExtensionKind { + InferFromInput = 0, + InferFromModule = 1, + Js = 2, + Cjs = 3, + Mjs = 4, +} + export interface ResolvedModuleWithFailedLookupLocations { readonly resolvedModule: ResolvedModuleFull | undefined; /** @internal */ From 71ebf57a2bb502c8bdea486908e37c1849048180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 9 Jun 2023 00:29:23 +0200 Subject: [PATCH 4/6] Adding "InferFromInput" as an explicit enum value and renamed "infer" --- src/compiler/commandLineParser.ts | 7 ++++--- src/compiler/diagnosticMessages.json | 6 +----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 7f9f0628a2c73..af008f19042ed 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -700,16 +700,17 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [ { name: "outExtension", type: new Map(Object.entries({ - infer: OutExtensionKind.InferFromModule, + input: OutExtensionKind.InferFromInput, + module: OutExtensionKind.InferFromModule, js: OutExtensionKind.Js, cjs: OutExtensionKind.Cjs, mjs: OutExtensionKind.Mjs, })), - defaultValueDescription: Diagnostics.undefined_will_determine_extension_based_on_the_input_file, + defaultValueDescription: "input", affectsEmit: true, affectsBuildInfo: true, category: Diagnostics.Emit, - description: Diagnostics.Specify_the_output_extension_for_all_emitted_files_infer_will_determine_extension_based_on_the_module_option, + description: Diagnostics.Specify_the_output_extension_for_all_emitted_files_input_will_determine_extension_based_on_the_extension_of_the_input_file_module_will_determine_extension_based_on_the_module_option, }, { name: "rootDir", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 2502fbec77fa5..58676956624b0 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -6099,14 +6099,10 @@ "category": "Message", "code": 6718 }, - "Specify the output extension for all emitted files. 'infer' will determine extension based on the `module` option.": { + "Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option.": { "category": "Message", "code": 6719 }, - "`undefined` will determine extension based on the input file.": { - "category": "Message", - "code": 6720 - }, "Default catch clause variables as 'unknown' instead of 'any'.": { "category": "Message", "code": 6803 From 80e0927b3a6317c9ee9097fa435cd0edafe2ca86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 9 Jun 2023 00:30:40 +0200 Subject: [PATCH 5/6] Updated existing tests --- tests/baselines/reference/api/tsserverlibrary.d.ts | 9 ++++++++- tests/baselines/reference/api/typescript.d.ts | 9 ++++++++- .../Default initialized TSConfig/tsconfig.json | 1 + .../Initialized TSConfig with --help/tsconfig.json | 1 + .../Initialized TSConfig with --watch/tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../outExtension/tsconfig.json | 5 +++++ 14 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 tests/baselines/reference/config/showConfig/Shows tsconfig for single option/outExtension/tsconfig.json diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 9a2f42de2dbd7..daef1f9266976 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -7231,7 +7231,7 @@ declare namespace ts { noUncheckedIndexedAccess?: boolean; out?: string; outDir?: string; - outExtension?: Extension.Mjs | Extension.Cjs | Extension.Js | "infer"; + outExtension?: OutExtensionKind; outFile?: string; paths?: MapLike; preserveConstEnums?: boolean; @@ -7469,6 +7469,13 @@ declare namespace ts { Cts = ".cts", Dcts = ".d.cts" } + enum OutExtensionKind { + InferFromInput = 0, + InferFromModule = 1, + Js = 2, + Cjs = 3, + Mjs = 4 + } interface ResolvedModuleWithFailedLookupLocations { readonly resolvedModule: ResolvedModuleFull | undefined; } diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 7f33ef5a8266d..5204f5f7c3850 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -3178,7 +3178,7 @@ declare namespace ts { noUncheckedIndexedAccess?: boolean; out?: string; outDir?: string; - outExtension?: Extension.Mjs | Extension.Cjs | Extension.Js | "infer"; + outExtension?: OutExtensionKind; outFile?: string; paths?: MapLike; preserveConstEnums?: boolean; @@ -3416,6 +3416,13 @@ declare namespace ts { Cts = ".cts", Dcts = ".d.cts" } + enum OutExtensionKind { + InferFromInput = 0, + InferFromModule = 1, + Js = 2, + Cjs = 3, + Mjs = 4 + } interface ResolvedModuleWithFailedLookupLocations { readonly resolvedModule: ResolvedModuleFull | undefined; } diff --git a/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json index e075f973c4d28..a5cf96903a2a1 100644 --- a/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json index e075f973c4d28..a5cf96903a2a1 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json index e075f973c4d28..a5cf96903a2a1 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json index 3379ad1a3b576..a9141e2d42cf4 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json index e9e873054b703..5700230a0d109 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json index 178abdeca2791..b399433a3ecaf 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json index 6136a0e0ce953..fe50bec66c1b5 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json index 84bdc4354ee70..eba27cc54dff6 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json index e075f973c4d28..a5cf96903a2a1 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json index 8b051d2b3dd93..3919e292ffe38 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json index c0c664e0d7c8a..d438d0fbfdb37 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json @@ -56,6 +56,7 @@ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "outExtension": "input", /* Specify the output extension for all emitted files. 'input' will determine extension based on the extension of the input file. 'module' will determine extension based on the `module` option. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/outExtension/tsconfig.json b/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/outExtension/tsconfig.json new file mode 100644 index 0000000000000..dda74dd5e96cf --- /dev/null +++ b/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/outExtension/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "outExtension": "input" + } +} From 1547bff555f3929e1053dbc16609cd00b5b6dc5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Fri, 9 Jun 2023 01:07:00 +0200 Subject: [PATCH 6/6] Adding tests and baselines --- tests/baselines/reference/outExtensionCjs.js | 51 +++++++++++++++++++ .../reference/outExtensionCjs.symbols | 24 +++++++++ .../baselines/reference/outExtensionCjs.types | 30 +++++++++++ .../reference/outExtensionInferFromInput.js | 51 +++++++++++++++++++ .../outExtensionInferFromInput.symbols | 24 +++++++++ .../outExtensionInferFromInput.types | 30 +++++++++++ .../outExtensionInferFromModuleCJS.js | 51 +++++++++++++++++++ .../outExtensionInferFromModuleCJS.symbols | 24 +++++++++ .../outExtensionInferFromModuleCJS.types | 30 +++++++++++ .../outExtensionInferFromModuleESM.js | 33 ++++++++++++ .../outExtensionInferFromModuleESM.symbols | 24 +++++++++ .../outExtensionInferFromModuleESM.types | 30 +++++++++++ tests/baselines/reference/outExtensionMjs.js | 51 +++++++++++++++++++ .../reference/outExtensionMjs.symbols | 24 +++++++++ .../baselines/reference/outExtensionMjs.types | 30 +++++++++++ tests/cases/compiler/outExtensionCjs.ts | 21 ++++++++ .../compiler/outExtensionInferFromInput.ts | 21 ++++++++ .../outExtensionInferFromModuleCJS.ts | 22 ++++++++ .../outExtensionInferFromModuleESM.ts | 22 ++++++++ tests/cases/compiler/outExtensionMjs.ts | 21 ++++++++ 20 files changed, 614 insertions(+) create mode 100644 tests/baselines/reference/outExtensionCjs.js create mode 100644 tests/baselines/reference/outExtensionCjs.symbols create mode 100644 tests/baselines/reference/outExtensionCjs.types create mode 100644 tests/baselines/reference/outExtensionInferFromInput.js create mode 100644 tests/baselines/reference/outExtensionInferFromInput.symbols create mode 100644 tests/baselines/reference/outExtensionInferFromInput.types create mode 100644 tests/baselines/reference/outExtensionInferFromModuleCJS.js create mode 100644 tests/baselines/reference/outExtensionInferFromModuleCJS.symbols create mode 100644 tests/baselines/reference/outExtensionInferFromModuleCJS.types create mode 100644 tests/baselines/reference/outExtensionInferFromModuleESM.js create mode 100644 tests/baselines/reference/outExtensionInferFromModuleESM.symbols create mode 100644 tests/baselines/reference/outExtensionInferFromModuleESM.types create mode 100644 tests/baselines/reference/outExtensionMjs.js create mode 100644 tests/baselines/reference/outExtensionMjs.symbols create mode 100644 tests/baselines/reference/outExtensionMjs.types create mode 100644 tests/cases/compiler/outExtensionCjs.ts create mode 100644 tests/cases/compiler/outExtensionInferFromInput.ts create mode 100644 tests/cases/compiler/outExtensionInferFromModuleCJS.ts create mode 100644 tests/cases/compiler/outExtensionInferFromModuleESM.ts create mode 100644 tests/cases/compiler/outExtensionMjs.ts diff --git a/tests/baselines/reference/outExtensionCjs.js b/tests/baselines/reference/outExtensionCjs.js new file mode 100644 index 0000000000000..2c10f7fcc9526 --- /dev/null +++ b/tests/baselines/reference/outExtensionCjs.js @@ -0,0 +1,51 @@ +//// [tests/cases/compiler/outExtensionCjs.ts] //// + +//// [input-1.ts] +export const ts = "foo"; + +//// [input-2.mts] +export const mts = "foo"; + +//// [input-3.cts] +export const cts = "foo"; + +//// [input-4.js] +export const js = "foo"; + +//// [input-5.mjs] +export const mjs = "foo"; + +//// [input-6.cjs] +export const cjs = "foo"; + + +//// [input-1.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ts = void 0; +exports.ts = "foo"; +//// [input-2.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mts = void 0; +exports.mts = "foo"; +//// [input-3.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cts = void 0; +exports.cts = "foo"; +//// [input-4.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.js = void 0; +exports.js = "foo"; +//// [input-5.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mjs = void 0; +exports.mjs = "foo"; +//// [input-6.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cjs = void 0; +exports.cjs = "foo"; diff --git a/tests/baselines/reference/outExtensionCjs.symbols b/tests/baselines/reference/outExtensionCjs.symbols new file mode 100644 index 0000000000000..163ecb5e7627f --- /dev/null +++ b/tests/baselines/reference/outExtensionCjs.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : Symbol(ts, Decl(input-1.ts, 0, 12)) + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : Symbol(mts, Decl(input-2.mts, 0, 12)) + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : Symbol(cts, Decl(input-3.cts, 0, 12)) + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : Symbol(js, Decl(input-4.js, 0, 12)) + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : Symbol(mjs, Decl(input-5.mjs, 0, 12)) + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : Symbol(cjs, Decl(input-6.cjs, 0, 12)) + diff --git a/tests/baselines/reference/outExtensionCjs.types b/tests/baselines/reference/outExtensionCjs.types new file mode 100644 index 0000000000000..4686cbb6905f3 --- /dev/null +++ b/tests/baselines/reference/outExtensionCjs.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : "foo" +>"foo" : "foo" + diff --git a/tests/baselines/reference/outExtensionInferFromInput.js b/tests/baselines/reference/outExtensionInferFromInput.js new file mode 100644 index 0000000000000..23b5a47d9592c --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromInput.js @@ -0,0 +1,51 @@ +//// [tests/cases/compiler/outExtensionInferFromInput.ts] //// + +//// [input-1.ts] +export const ts = "foo"; + +//// [input-2.mts] +export const mts = "foo"; + +//// [input-3.cts] +export const cts = "foo"; + +//// [input-4.js] +export const js = "foo"; + +//// [input-5.mjs] +export const mjs = "foo"; + +//// [input-6.cjs] +export const cjs = "foo"; + + +//// [input-1.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ts = void 0; +exports.ts = "foo"; +//// [input-2.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mts = void 0; +exports.mts = "foo"; +//// [input-3.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cts = void 0; +exports.cts = "foo"; +//// [input-4.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.js = void 0; +exports.js = "foo"; +//// [input-5.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mjs = void 0; +exports.mjs = "foo"; +//// [input-6.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cjs = void 0; +exports.cjs = "foo"; diff --git a/tests/baselines/reference/outExtensionInferFromInput.symbols b/tests/baselines/reference/outExtensionInferFromInput.symbols new file mode 100644 index 0000000000000..163ecb5e7627f --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromInput.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : Symbol(ts, Decl(input-1.ts, 0, 12)) + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : Symbol(mts, Decl(input-2.mts, 0, 12)) + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : Symbol(cts, Decl(input-3.cts, 0, 12)) + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : Symbol(js, Decl(input-4.js, 0, 12)) + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : Symbol(mjs, Decl(input-5.mjs, 0, 12)) + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : Symbol(cjs, Decl(input-6.cjs, 0, 12)) + diff --git a/tests/baselines/reference/outExtensionInferFromInput.types b/tests/baselines/reference/outExtensionInferFromInput.types new file mode 100644 index 0000000000000..4686cbb6905f3 --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromInput.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : "foo" +>"foo" : "foo" + diff --git a/tests/baselines/reference/outExtensionInferFromModuleCJS.js b/tests/baselines/reference/outExtensionInferFromModuleCJS.js new file mode 100644 index 0000000000000..abaf2fe3b7bb2 --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromModuleCJS.js @@ -0,0 +1,51 @@ +//// [tests/cases/compiler/outExtensionInferFromModuleCJS.ts] //// + +//// [input-1.ts] +export const ts = "foo"; + +//// [input-2.mts] +export const mts = "foo"; + +//// [input-3.cts] +export const cts = "foo"; + +//// [input-4.js] +export const js = "foo"; + +//// [input-5.mjs] +export const mjs = "foo"; + +//// [input-6.cjs] +export const cjs = "foo"; + + +//// [input-1.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ts = void 0; +exports.ts = "foo"; +//// [input-2.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mts = void 0; +exports.mts = "foo"; +//// [input-3.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cts = void 0; +exports.cts = "foo"; +//// [input-4.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.js = void 0; +exports.js = "foo"; +//// [input-5.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mjs = void 0; +exports.mjs = "foo"; +//// [input-6.cjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cjs = void 0; +exports.cjs = "foo"; diff --git a/tests/baselines/reference/outExtensionInferFromModuleCJS.symbols b/tests/baselines/reference/outExtensionInferFromModuleCJS.symbols new file mode 100644 index 0000000000000..163ecb5e7627f --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromModuleCJS.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : Symbol(ts, Decl(input-1.ts, 0, 12)) + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : Symbol(mts, Decl(input-2.mts, 0, 12)) + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : Symbol(cts, Decl(input-3.cts, 0, 12)) + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : Symbol(js, Decl(input-4.js, 0, 12)) + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : Symbol(mjs, Decl(input-5.mjs, 0, 12)) + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : Symbol(cjs, Decl(input-6.cjs, 0, 12)) + diff --git a/tests/baselines/reference/outExtensionInferFromModuleCJS.types b/tests/baselines/reference/outExtensionInferFromModuleCJS.types new file mode 100644 index 0000000000000..4686cbb6905f3 --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromModuleCJS.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : "foo" +>"foo" : "foo" + diff --git a/tests/baselines/reference/outExtensionInferFromModuleESM.js b/tests/baselines/reference/outExtensionInferFromModuleESM.js new file mode 100644 index 0000000000000..e0e60f8cff60c --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromModuleESM.js @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/outExtensionInferFromModuleESM.ts] //// + +//// [input-1.ts] +export const ts = "foo"; + +//// [input-2.mts] +export const mts = "foo"; + +//// [input-3.cts] +export const cts = "foo"; + +//// [input-4.js] +export const js = "foo"; + +//// [input-5.mjs] +export const mjs = "foo"; + +//// [input-6.cjs] +export const cjs = "foo"; + + +//// [input-1.mjs] +export var ts = "foo"; +//// [input-2.mjs] +export var mts = "foo"; +//// [input-3.mjs] +export var cts = "foo"; +//// [input-4.mjs] +export var js = "foo"; +//// [input-5.mjs] +export var mjs = "foo"; +//// [input-6.mjs] +export var cjs = "foo"; diff --git a/tests/baselines/reference/outExtensionInferFromModuleESM.symbols b/tests/baselines/reference/outExtensionInferFromModuleESM.symbols new file mode 100644 index 0000000000000..163ecb5e7627f --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromModuleESM.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : Symbol(ts, Decl(input-1.ts, 0, 12)) + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : Symbol(mts, Decl(input-2.mts, 0, 12)) + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : Symbol(cts, Decl(input-3.cts, 0, 12)) + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : Symbol(js, Decl(input-4.js, 0, 12)) + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : Symbol(mjs, Decl(input-5.mjs, 0, 12)) + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : Symbol(cjs, Decl(input-6.cjs, 0, 12)) + diff --git a/tests/baselines/reference/outExtensionInferFromModuleESM.types b/tests/baselines/reference/outExtensionInferFromModuleESM.types new file mode 100644 index 0000000000000..4686cbb6905f3 --- /dev/null +++ b/tests/baselines/reference/outExtensionInferFromModuleESM.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : "foo" +>"foo" : "foo" + diff --git a/tests/baselines/reference/outExtensionMjs.js b/tests/baselines/reference/outExtensionMjs.js new file mode 100644 index 0000000000000..fbae73685373b --- /dev/null +++ b/tests/baselines/reference/outExtensionMjs.js @@ -0,0 +1,51 @@ +//// [tests/cases/compiler/outExtensionMjs.ts] //// + +//// [input-1.ts] +export const ts = "foo"; + +//// [input-2.mts] +export const mts = "foo"; + +//// [input-3.cts] +export const cts = "foo"; + +//// [input-4.js] +export const js = "foo"; + +//// [input-5.mjs] +export const mjs = "foo"; + +//// [input-6.cjs] +export const cjs = "foo"; + + +//// [input-1.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ts = void 0; +exports.ts = "foo"; +//// [input-2.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mts = void 0; +exports.mts = "foo"; +//// [input-3.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cts = void 0; +exports.cts = "foo"; +//// [input-4.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.js = void 0; +exports.js = "foo"; +//// [input-5.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mjs = void 0; +exports.mjs = "foo"; +//// [input-6.mjs] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cjs = void 0; +exports.cjs = "foo"; diff --git a/tests/baselines/reference/outExtensionMjs.symbols b/tests/baselines/reference/outExtensionMjs.symbols new file mode 100644 index 0000000000000..163ecb5e7627f --- /dev/null +++ b/tests/baselines/reference/outExtensionMjs.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : Symbol(ts, Decl(input-1.ts, 0, 12)) + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : Symbol(mts, Decl(input-2.mts, 0, 12)) + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : Symbol(cts, Decl(input-3.cts, 0, 12)) + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : Symbol(js, Decl(input-4.js, 0, 12)) + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : Symbol(mjs, Decl(input-5.mjs, 0, 12)) + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : Symbol(cjs, Decl(input-6.cjs, 0, 12)) + diff --git a/tests/baselines/reference/outExtensionMjs.types b/tests/baselines/reference/outExtensionMjs.types new file mode 100644 index 0000000000000..4686cbb6905f3 --- /dev/null +++ b/tests/baselines/reference/outExtensionMjs.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/input-1.ts === +export const ts = "foo"; +>ts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-2.mts === +export const mts = "foo"; +>mts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-3.cts === +export const cts = "foo"; +>cts : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-4.js === +export const js = "foo"; +>js : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-5.mjs === +export const mjs = "foo"; +>mjs : "foo" +>"foo" : "foo" + +=== tests/cases/compiler/input-6.cjs === +export const cjs = "foo"; +>cjs : "foo" +>"foo" : "foo" + diff --git a/tests/cases/compiler/outExtensionCjs.ts b/tests/cases/compiler/outExtensionCjs.ts new file mode 100644 index 0000000000000..b342df405d05b --- /dev/null +++ b/tests/cases/compiler/outExtensionCjs.ts @@ -0,0 +1,21 @@ +// @allowJs: true +// @outExtension: cjs +// @outDir: dist + +// @filename: input-1.ts +export const ts = "foo"; + +// @filename: input-2.mts +export const mts = "foo"; + +// @filename: input-3.cts +export const cts = "foo"; + +// @filename: input-4.js +export const js = "foo"; + +// @filename: input-5.mjs +export const mjs = "foo"; + +// @filename: input-6.cjs +export const cjs = "foo"; diff --git a/tests/cases/compiler/outExtensionInferFromInput.ts b/tests/cases/compiler/outExtensionInferFromInput.ts new file mode 100644 index 0000000000000..726e0f37fe24c --- /dev/null +++ b/tests/cases/compiler/outExtensionInferFromInput.ts @@ -0,0 +1,21 @@ +// @allowJs: true +// @outExtension: input +// @outDir: dist + +// @filename: input-1.ts +export const ts = "foo"; + +// @filename: input-2.mts +export const mts = "foo"; + +// @filename: input-3.cts +export const cts = "foo"; + +// @filename: input-4.js +export const js = "foo"; + +// @filename: input-5.mjs +export const mjs = "foo"; + +// @filename: input-6.cjs +export const cjs = "foo"; diff --git a/tests/cases/compiler/outExtensionInferFromModuleCJS.ts b/tests/cases/compiler/outExtensionInferFromModuleCJS.ts new file mode 100644 index 0000000000000..cad1895b78e63 --- /dev/null +++ b/tests/cases/compiler/outExtensionInferFromModuleCJS.ts @@ -0,0 +1,22 @@ +// @module: commonjs +// @allowJs: true +// @outExtension: module +// @outDir: dist + +// @filename: input-1.ts +export const ts = "foo"; + +// @filename: input-2.mts +export const mts = "foo"; + +// @filename: input-3.cts +export const cts = "foo"; + +// @filename: input-4.js +export const js = "foo"; + +// @filename: input-5.mjs +export const mjs = "foo"; + +// @filename: input-6.cjs +export const cjs = "foo"; diff --git a/tests/cases/compiler/outExtensionInferFromModuleESM.ts b/tests/cases/compiler/outExtensionInferFromModuleESM.ts new file mode 100644 index 0000000000000..9cab1b1449794 --- /dev/null +++ b/tests/cases/compiler/outExtensionInferFromModuleESM.ts @@ -0,0 +1,22 @@ +// @module: esnext +// @allowJs: true +// @outExtension: module +// @outDir: dist + +// @filename: input-1.ts +export const ts = "foo"; + +// @filename: input-2.mts +export const mts = "foo"; + +// @filename: input-3.cts +export const cts = "foo"; + +// @filename: input-4.js +export const js = "foo"; + +// @filename: input-5.mjs +export const mjs = "foo"; + +// @filename: input-6.cjs +export const cjs = "foo"; diff --git a/tests/cases/compiler/outExtensionMjs.ts b/tests/cases/compiler/outExtensionMjs.ts new file mode 100644 index 0000000000000..16a08eb789c54 --- /dev/null +++ b/tests/cases/compiler/outExtensionMjs.ts @@ -0,0 +1,21 @@ +// @allowJs: true +// @outExtension: mjs +// @outDir: dist + +// @filename: input-1.ts +export const ts = "foo"; + +// @filename: input-2.mts +export const mts = "foo"; + +// @filename: input-3.cts +export const cts = "foo"; + +// @filename: input-4.js +export const js = "foo"; + +// @filename: input-5.mjs +export const mjs = "foo"; + +// @filename: input-6.cjs +export const cjs = "foo";